X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=src%2FTuner%2Fmultituner.h;h=cf42d9fd07b5843f319050aac3af36433d269881;hb=ec4122e6d43e951feb8b344bf3511a50e08a3615;hp=40bd5e19463acfa6bcefe6071ef9cd314d6e8687;hpb=c4d487198922b374ba6b2c7d744789c9d1d17735;p=satune.git diff --git a/src/Tuner/multituner.h b/src/Tuner/multituner.h index 40bd5e1..cf42d9f 100644 --- a/src/Tuner/multituner.h +++ b/src/Tuner/multituner.h @@ -2,59 +2,27 @@ #define MULTITUNER_H #include "classlist.h" #include "structs.h" +#include "basictuner.h" -#define AUTOTUNERFACTOR 0.3 -class Problem { -public: - Problem(const char *problem); - char *getProblem() {return problem;} - ~Problem(); - CMEMALLOC; -private: - int result; - char *problem; - friend class MultiTuner; -}; - -class TunerRecord { -public: - TunerRecord(SearchTuner *_tuner) : tuner(_tuner) {} - SearchTuner *getTuner() {return tuner;} - TunerRecord *changeTuner(SearchTuner *_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 { +class MultiTuner : public BasicTuner { public: MultiTuner(uint budget, uint rounds, uint timeout); - ~MultiTuner(); - void addProblem(const char *filename); - void addTuner(SearchTuner *tuner); + void readData(uint numRuns); void tuneK(); - CMEMALLOC; + void tune(); + void findBestThreeTuners(); protected: - long long evaluate(Problem *problem, SearchTuner *tuner); double evaluateAll(TunerRecord *tuner); - SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k); void mapProblemsToTuners(Vector *tunerV); void improveTuners(Vector *tunerV); TunerRecord *tune(TunerRecord *tuner); - void tuneComp(); - - Vector allTuners; - Vector problems; - Vector tuners; - uint budget; uint rounds; - uint timeout; - int execnum; }; + +inline long long min(long long num1, long long num2, long long num3) { + return num1 < num2 && num1 < num3 ? num1 : + num2 < num3 ? num2 : num3; +} + #endif