Random Tuner
[satune.git] / src / Tuner / multituner.h
index deb980b143205d77710e9b78b14a84bdbaf7632c..aaed01399fdaffaa9c4953ff7b9b9c0188fe8bfd 100644 (file)
@@ -17,22 +17,26 @@ private:
        char *problem;
        long long besttime;
        friend class MultiTuner;
+        friend class RandomTuner;
 };
 
 class TunerRecord {
 public:
        TunerRecord(SearchTuner *_tuner) : tuner(_tuner), tunernumber(-1) {}
+       TunerRecord(SearchTuner *_tuner, int _tunernumber) : tuner(_tuner), tunernumber(_tunernumber) {}
        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);
+        void print();
 private:
        SearchTuner *tuner;
        Vector<Problem *> problems;
        Hashtable<Problem *, long long, uint64_t> timetaken;
        int tunernumber;
        friend class MultiTuner;
+        friend class RandomTuner;
        friend void clearVector(Vector<TunerRecord *> *tunerV);
 };
 
@@ -45,6 +49,7 @@ public:
        void readData(uint numRuns);
        void updateTimeout(Problem *problem, long long metric);
        void tuneK();
+       bool finishTunerExist(TunerRecord *tuner);
        void tuneComp();
        void printData();
        void findBestThreeTuners();
@@ -53,10 +58,12 @@ protected:
        long long evaluate(Problem *problem, TunerRecord *tuner);
        double evaluateAll(TunerRecord *tuner);
        SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
+       bool hasExplored(SearchTuner *newTuner);
        void mapProblemsToTuners(Vector<TunerRecord *> *tunerV);
        void improveTuners(Vector<TunerRecord *> *tunerV);
        TunerRecord *tune(TunerRecord *tuner);
        Vector<TunerRecord *> allTuners;
+       Vector<TunerRecord *> explored;
        Vector<Problem *> problems;
        Vector<TunerRecord *> tuners;
        uint budget;