From cdcabb2c8acaa7b997f82b7ba80649b6f9288777 Mon Sep 17 00:00:00 2001 From: Hamed Gorjiara Date: Thu, 17 Oct 2019 21:24:41 -0700 Subject: [PATCH] two best tuner instead of three --- src/Test/analyzemultituner.cc | 2 +- src/Tuner/comptuner.cc | 49 ++++++++++++++++------------------- src/Tuner/comptuner.h | 2 +- 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/src/Test/analyzemultituner.cc b/src/Test/analyzemultituner.cc index f132e74..93487f0 100644 --- a/src/Test/analyzemultituner.cc +++ b/src/Test/analyzemultituner.cc @@ -27,7 +27,7 @@ int main(int argc, char **argv) { printf("Number of Runs: %u\n", numruns); CompTuner *multituner = new CompTuner(0, 0); multituner->readData(numruns); - multituner->findBestThreeTuners(); + multituner->findBestTwoTuners(); delete multituner; return 0; } diff --git a/src/Tuner/comptuner.cc b/src/Tuner/comptuner.cc index 8069915..92a8985 100644 --- a/src/Tuner/comptuner.cc +++ b/src/Tuner/comptuner.cc @@ -15,39 +15,35 @@ CompTuner::~CompTuner() { } -void CompTuner::findBestThreeTuners() { - if (allTuners.getSize() < 3) { +void CompTuner::findBestTwoTuners() { + if (allTuners.getSize() < 2) { printData(); return; } - TunerRecord *bestTuners[3]; + TunerRecord *bestTuners[2]; double score = DBL_MAX; - for (uint i = 0; i < allTuners.getSize() - 2; i++) { - for (uint j = i + 1; j < allTuners.getSize() - 1; j++) { - for (uint k = j + 1; k < allTuners.getSize(); k++) { - TunerRecord *tuner1 = allTuners.get(i); - TunerRecord *tuner2 = allTuners.get(j); - TunerRecord *tuner3 = allTuners.get(k); - double mintimes[problems.getSize()]; - for (uint l = 0; l < problems.getSize(); l++) { - Problem *problem = problems.get(l); - mintimes[l] = pow(min(tuner1->getTime(problem), tuner2->getTime(problem), tuner3->getTime(problem)), (double)1 / problems.getSize()); - } - double result = 1; - for (uint l = 0; l < problems.getSize(); l++) { - result *= mintimes[l]; - } - if (result < score) { - score = result; - bestTuners[0] = tuner1; - bestTuners[1] = tuner2; - bestTuners[2] = tuner3; - } + for (uint j = 0; j < allTuners.getSize() - 1; j++) { + for (uint k = j + 1; k < allTuners.getSize(); k++) { + TunerRecord *tuner1 = allTuners.get(j); + TunerRecord *tuner2 = allTuners.get(k); + double mintimes[problems.getSize()]; + for (uint l = 0; l < problems.getSize(); l++) { + Problem *problem = problems.get(l); + mintimes[l] = pow(min(tuner1->getTime(problem), tuner2->getTime(problem)), (double)1 / problems.getSize()); + } + double result = 1; + for (uint l = 0; l < problems.getSize(); l++) { + result *= mintimes[l]; + } + if (result < score) { + score = result; + bestTuners[0] = tuner1; + bestTuners[1] = tuner2; } } } - model_print("Best 3 tuners:\n"); - for (uint i = 0; i < 3; i++) { + model_print("Best 2 tuners:\n"); + for (uint i = 0; i < 2; i++) { TunerRecord *tuner = bestTuners[i]; SearchTuner *stun = tuner->getTuner(); char buffer[512]; @@ -60,6 +56,7 @@ void CompTuner::findBestThreeTuners() { } } + void CompTuner::readData(uint numRuns) { for (uint i = 0; i < numRuns; i++) { ifstream myfile; diff --git a/src/Tuner/comptuner.h b/src/Tuner/comptuner.h index 39e7946..74183bc 100644 --- a/src/Tuner/comptuner.h +++ b/src/Tuner/comptuner.h @@ -11,7 +11,7 @@ public: virtual ~CompTuner(); void readData(uint numRuns); void tune(); - void findBestThreeTuners(); + void findBestTwoTuners(); protected: }; -- 2.34.1