char *problem;
long long besttime;
friend class MultiTuner;
+ friend class RandomTuner;
};
class TunerRecord {
public:
TunerRecord(SearchTuner *_tuner) : tuner(_tuner), tunernumber(-1) {}
+ TunerRecord(SearchTuner *_tuner, int _tunernumber) : tuner(_tuner), tunernumber(_tunernumber) {}
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);
+ void print();
private:
SearchTuner *tuner;
Vector<Problem *> problems;
Hashtable<Problem *, long long, uint64_t> timetaken;
int tunernumber;
friend class MultiTuner;
+ friend class RandomTuner;
friend void clearVector(Vector<TunerRecord *> *tunerV);
};
void readData(uint numRuns);
void updateTimeout(Problem *problem, long long metric);
void tuneK();
+ bool finishTunerExist(TunerRecord *tuner);
void tuneComp();
void printData();
void findBestThreeTuners();
long long evaluate(Problem *problem, TunerRecord *tuner);
double evaluateAll(TunerRecord *tuner);
SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
+ bool hasExplored(SearchTuner *newTuner);
void mapProblemsToTuners(Vector<TunerRecord *> *tunerV);
void improveTuners(Vector<TunerRecord *> *tunerV);
TunerRecord *tune(TunerRecord *tuner);
Vector<TunerRecord *> allTuners;
+ Vector<TunerRecord *> explored;
Vector<Problem *> problems;
Vector<TunerRecord *> tuners;
uint budget;