Add tuner components
[satune.git] / src / Tuner / multituner.h
1 #ifndef MULTITUNER_H
2 #define MULTITUNER_H
3 #include "classlist.h"
4 #include "structs.h"
5
6 #define AUTOTUNERFACTOR 0.3
7
8 class Problem {
9 public:
10         Problem(const char *problem);
11         char *getProblem() {return problem;}
12         ~Problem();
13         CMEMALLOC;
14 private:
15         int result;
16         char *problem;
17         friend class MultiTuner;
18 };
19
20 class TunerRecord {
21 public:
22         TunerRecord(SearchTuner *_tuner) : tuner(_tuner) {}
23
24 private:
25         SearchTuner *tuner;
26         friend class MultiTuner;
27 };
28
29 class MultiTuner {
30 public:
31         MultiTuner(uint budget, uint timeout);
32         ~MultiTuner();
33         void addProblem(const char *filename);
34         void addTuner(SearchTuner *tuner);
35         virtual void tune();
36         CMEMALLOC;
37 protected:
38         long long evaluate(Problem *problem, SearchTuner *tuner);
39         double evaluateAll(SearchTuner *tuner);
40         SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
41         Vector<Problem *> problems;
42         Vector<TunerRecord *> tuners;
43         uint budget;
44         uint timeout;
45         int execnum;
46 };
47 #endif