X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FTuner%2Fmultituner.h;h=398eb84bb9b3fd3cc1337e1ae5d78bb536e293ae;hp=f14dbccf47341341ea89f1782bfe82ffdb2cd57e;hb=b94774b8783de1b4eabc3ca4b0ef6aeee7a89538;hpb=64e16ee8bdb6887cd8ffa7da100042c975d1c21c diff --git a/src/Tuner/multituner.h b/src/Tuner/multituner.h index f14dbcc..398eb84 100644 --- a/src/Tuner/multituner.h +++ b/src/Tuner/multituner.h @@ -12,39 +12,60 @@ public: ~Problem(); CMEMALLOC; private: + int problemnumber; int result; char *problem; + long long besttime; friend class MultiTuner; }; class TunerRecord { public: - TunerRecord(SearchTuner *_tuner) : tuner(_tuner) {} + TunerRecord(SearchTuner *_tuner) : tuner(_tuner), tunernumber(-1) {} 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; + int tunernumber; 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 readData(uint numRuns); + void updateTimeout(Problem *problem, long long metric); void tuneK(); + void tuneComp(); + void printData(); + void findBestThreeTuners(); 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); + inline long long min(long long num1, long long num2, long long num3){ + return num1 < num2 && num1 < num3? num1: + num2 < num3? num2 : num3; + } + + Vector allTuners; Vector problems; Vector tuners; uint budget; + uint rounds; uint timeout; int execnum; };