X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FTuner%2Fmultituner.h;h=69430cc7408617776816ad9342bf82885def7d0b;hp=fffc5c26affed1e54fc81283c2790a4b714e0ef9;hb=298685f6683d3a323968cb22810b134472dacdfa;hpb=8b5be625244b8a2764d254885fad5c67a825caa3 diff --git a/src/Tuner/multituner.h b/src/Tuner/multituner.h index fffc5c2..69430cc 100644 --- a/src/Tuner/multituner.h +++ b/src/Tuner/multituner.h @@ -20,27 +20,42 @@ private: 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); - virtual 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; };