X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FTuner%2Fmultituner.h;h=69430cc7408617776816ad9342bf82885def7d0b;hp=f14dbccf47341341ea89f1782bfe82ffdb2cd57e;hb=298685f6683d3a323968cb22810b134472dacdfa;hpb=64e16ee8bdb6887cd8ffa7da100042c975d1c21c;ds=sidebyside diff --git a/src/Tuner/multituner.h b/src/Tuner/multituner.h index f14dbcc..69430cc 100644 --- a/src/Tuner/multituner.h +++ b/src/Tuner/multituner.h @@ -21,30 +21,41 @@ class TunerRecord { 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 problems; + Hashtable timetaken; friend class MultiTuner; + friend void clearVector(Vector *tunerV); }; 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); - void tune(); void tuneK(); + void tuneComp(); 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 *tunerV); + void improveTuners(Vector *tunerV); + TunerRecord *tune(TunerRecord *tuner); + + Vector allTuners; Vector problems; Vector tuners; uint budget; + uint rounds; uint timeout; int execnum; };