Fix tuner issues
[satune.git] / src / Tuner / multituner.h
index f14dbccf47341341ea89f1782bfe82ffdb2cd57e..69430cc7408617776816ad9342bf82885def7d0b 100644 (file)
@@ -21,30 +21,41 @@ class TunerRecord {
 public:
        TunerRecord(SearchTuner *_tuner) : tuner(_tuner) {}
        SearchTuner *getTuner() {return tuner;}
 public:
        TunerRecord(SearchTuner *_tuner) : tuner(_tuner) {}
        SearchTuner *getTuner() {return tuner;}
+       TunerRecord *changeTuner(SearchTuner *_newtuner);
+       void updateTuner(SearchTuner *_newtuner) {tuner = _newtuner;}
+       long long getTime(Problem *problem);
+       void setTime(Problem *problem, long long time);
 private:
        SearchTuner *tuner;
        Vector<Problem *> problems;
 private:
        SearchTuner *tuner;
        Vector<Problem *> problems;
+       Hashtable<Problem *, long long, uint64_t> timetaken;
        friend class MultiTuner;
        friend class MultiTuner;
+       friend void clearVector(Vector<TunerRecord *> *tunerV);
 };
 
 class MultiTuner {
 public:
 };
 
 class MultiTuner {
 public:
-       MultiTuner(uint budget, uint timeout);
+       MultiTuner(uint budget, uint rounds, uint timeout);
        ~MultiTuner();
        void addProblem(const char *filename);
        void addTuner(SearchTuner *tuner);
        ~MultiTuner();
        void addProblem(const char *filename);
        void addTuner(SearchTuner *tuner);
-       void tune();
        void tuneK();
        void tuneK();
+       void tuneComp();
        CMEMALLOC;
 protected:
        CMEMALLOC;
 protected:
-       long long evaluate(Problem *problem, SearchTuner *tuner);
-       double evaluateAll(SearchTuner *tuner);
+       long long evaluate(Problem *problem, TunerRecord *tuner);
+       double evaluateAll(TunerRecord *tuner);
        SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
        void mapProblemsToTuners(Vector<TunerRecord *> *tunerV);
        SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
        void mapProblemsToTuners(Vector<TunerRecord *> *tunerV);
+       void improveTuners(Vector<TunerRecord *> *tunerV);
+       TunerRecord *tune(TunerRecord *tuner);
 
 
+
+       Vector<TunerRecord *> allTuners;
        Vector<Problem *> problems;
        Vector<TunerRecord *> tuners;
        uint budget;
        Vector<Problem *> problems;
        Vector<TunerRecord *> tuners;
        uint budget;
+       uint rounds;
        uint timeout;
        int execnum;
 };
        uint timeout;
        int execnum;
 };