allTuners.push(t);
}
-long long MultiTuner::evaluate(Problem *problem, SearchTuner *tuner) {
+long long MultiTuner::evaluate(Problem *problem, TunerRecord *tuner) {
char buffer[512];
//Write out the tuner
snprintf(buffer, sizeof(buffer), "tuner%u", execnum);
- tuner->serialize(buffer);
+ tuner->getTuner()->serialize(buffer);
//Do run
snprintf(buffer, sizeof(buffer), "./run.sh deserializerun %s %u tuner%u result%s%u > log%u", problem->getProblem(), timeout, execnum, problem->getProblem(), execnum, execnum);
long long metric = -1;
int sat = IS_INDETER;
+
if (status == 0) {
//Read data in from results file
snprintf(buffer, sizeof(buffer), "result%s%u", problem->getProblem(), execnum);
myfile >> sat;
myfile.close();
}
+
+ snprintf(buffer, sizeof(buffer), "tuner%uused", execnum);
+ SearchTuner *usedtuner = new SearchTuner(buffer);
+ delete tuner->getTuner();
+ tuner->updateTuner(usedtuner);
+
}
//Increment execution count
execnum++;
TunerRecord *tuner = tunerV->get(j);
long long metric = tuner->getTime(problem);
if (metric == -1) {
- metric = evaluate(problem, tuner->getTuner());
+ metric = evaluate(problem, tuner);
if (metric != -1)
tuner->setTime(problem, metric);
}
TunerRecord *tuner = tunerV->get(j);
long long metric = tuner->getTime(problem);
if (metric == -1) {
- metric = evaluate(problem, tuner->getTuner());
+ metric = evaluate(problem, tuner);
if (metric != -1)
tuner->setTime(problem, metric);
}
Problem *problem = tuner->problems.get(i);
long long metric = tuner->getTime(problem);
if (metric == -1) {
- metric = evaluate(problem, tuner->getTuner());
+ metric = evaluate(problem, tuner);
if (metric != -1)
tuner->setTime(problem, metric);
}
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:
void tuneComp();
CMEMALLOC;
protected:
- long long evaluate(Problem *problem, SearchTuner *tuner);
+ long long evaluate(Problem *problem, TunerRecord *tuner);
double evaluateAll(TunerRecord *tuner);
SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
void mapProblemsToTuners(Vector<TunerRecord *> *tunerV);