X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FTuner%2Fmultituner.h;h=cf42d9fd07b5843f319050aac3af36433d269881;hp=deb980b143205d77710e9b78b14a84bdbaf7632c;hb=ec4122e6d43e951feb8b344bf3511a50e08a3615;hpb=67ab65d6d34fc2d8e66df7c024c7d4b1c8a5e95d diff --git a/src/Tuner/multituner.h b/src/Tuner/multituner.h index deb980b..cf42d9f 100644 --- a/src/Tuner/multituner.h +++ b/src/Tuner/multituner.h @@ -2,67 +2,22 @@ #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 problemnumber; - int result; - char *problem; - long long besttime; - friend class MultiTuner; -}; - -class TunerRecord { -public: - 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 { +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 updateTimeout(Problem *problem, long long metric); void tuneK(); - void tuneComp(); - void printData(); + void tune(); void findBestThreeTuners(); - CMEMALLOC; protected: - 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; }; inline long long min(long long num1, long long num2, long long num3) {