Finding the 3 best tuners after the learning process
[satune.git] / src / Tuner / staticautotuner.cc
1 #include "staticautotuner.h"
2 #include "csolver.h"
3 #include "staticsearchtuner.h"
4 #include <math.h>
5 #include <stdlib.h>
6 #include <float.h>
7
8 #define UNSETVALUE -1
9 #define TIMEOUTSEC 5000
10 StaticAutoTuner::StaticAutoTuner(uint _budget) : AutoTuner(_budget) {
11 }
12
13 StaticSearchTuner *StaticAutoTuner::mutateTuner(StaticSearchTuner *oldTuner) {
14         StaticSearchTuner *newTuner = oldTuner->copyUsed();
15         result = newTuner->nextStaticTuner();
16         return result == EXIT_FAILURE ? newTuner : NULL;
17 }
18
19 void StaticAutoTuner::tune() {
20         StaticSearchTuner *bestTuner = NULL;
21         double bestScore = DBL_MAX;
22
23         StaticSearchTuner *oldTuner = new StaticSearchTuner();
24         double base_temperature = evaluateAll(oldTuner);
25         double oldScore = base_temperature;
26
27         while (true) {
28                 StaticSearchTuner *newTuner = mutateTuner(oldTuner);
29                 if (newTuner == NULL)
30                         return;
31                 double newScore = evaluateAll(newTuner);
32                 newTuner->printUsed();
33                 model_print("Received score %f\n", newScore);
34                 delete oldTuner;
35                 oldScore = newScore;
36                 oldTuner = newTuner;
37         }
38 }