From dedcd4117e44ee85fb7e67754906554dd852e239 Mon Sep 17 00:00:00 2001 From: Hamed Gorjiara Date: Wed, 17 Oct 2018 21:38:55 -0700 Subject: [PATCH] Bug fix: besttime for each problem --- src/Tuner/multituner.cc | 17 +++++++++-------- src/Tuner/multituner.h | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Tuner/multituner.cc b/src/Tuner/multituner.cc index 2d823fe..e872fac 100644 --- a/src/Tuner/multituner.cc +++ b/src/Tuner/multituner.cc @@ -7,10 +7,11 @@ #include #include #include +#include #define UNSETVALUE -1 -Problem::Problem(const char *_problem) : problemnumber(-1), result(UNSETVALUE) { +Problem::Problem(const char *_problem) : problemnumber(-1), result(UNSETVALUE) , besttime(std::numeric_limits::infinity()){ uint len = strlen(_problem); problem = (char *) ourmalloc(len + 1); memcpy(problem, _problem, len + 1); @@ -39,7 +40,7 @@ TunerRecord *TunerRecord::changeTuner(SearchTuner *_newtuner) { } MultiTuner::MultiTuner(uint _budget, uint _rounds, uint _timeout) : - budget(_budget), rounds(_rounds), timeout(_timeout), besttime(_timeout), execnum(0) { + budget(_budget), rounds(_rounds), timeout(_timeout), execnum(0) { } MultiTuner::~MultiTuner() { @@ -193,7 +194,7 @@ long long MultiTuner::evaluate(Problem *problem, TunerRecord *tuner) { myfile >> sat; myfile.close(); } - updateTimeout(metric); + updateTimeout(problem, metric); snprintf(buffer, sizeof(buffer), "tuner%uused", execnum); tuner->getTuner()->addUsed(buffer); } @@ -211,14 +212,14 @@ long long MultiTuner::evaluate(Problem *problem, TunerRecord *tuner) { return metric; } -void MultiTuner::updateTimeout(long long metric){ +void MultiTuner::updateTimeout(Problem *problem, long long metric){ double currentTime= metric / NANOSEC; - if(currentTime < besttime){ - besttime = currentTime; + if(currentTime < problem->besttime){ + problem->besttime = currentTime; } uint adoptive; - if(besttime > 30){ - adoptive = besttime * 5; + if(problem->besttime > 30){ + adoptive = problem->besttime * 5; }else { adoptive = 150; } diff --git a/src/Tuner/multituner.h b/src/Tuner/multituner.h index f566828..95354c8 100644 --- a/src/Tuner/multituner.h +++ b/src/Tuner/multituner.h @@ -15,6 +15,7 @@ private: int problemnumber; int result; char *problem; + double besttime; friend class MultiTuner; }; @@ -42,7 +43,7 @@ public: void addProblem(const char *filename); void addTuner(SearchTuner *tuner); void readData(uint numRuns); - void updateTimeout(long long metric); + void updateTimeout(Problem *problem, long long metric); void tuneK(); void tuneComp(); void printData(); @@ -61,7 +62,6 @@ protected: uint budget; uint rounds; uint timeout; - double besttime; int execnum; }; #endif -- 2.34.1