1 #include "randomtuner.h"
3 #include "searchtuner.h"
11 RandomTuner::RandomTuner(uint _budget, uint _timeout) :
12 BasicTuner(_budget, _timeout) {
15 RandomTuner::~RandomTuner() {
19 void RandomTuner::tune() {
20 for (uint r = 0; r < budget; r++) {
21 model_print("Round %u of %u\n", r, budget);
22 for (uint i = 0; i < tuners.getSize(); i++) {
23 TunerRecord *tuner = tuners.get(i);
25 for (uint j = 0; j < problems.getSize(); j++) {
26 Problem *problem = problems.get(j);
27 long long metric = tuner->getTime(problem);
29 metric = evaluate(problem, tuner);
30 ASSERT(tuner->getTime(problem) == -1);
31 tuner->addProblem(problem);
32 model_print("%u.Problem<%s>\tTuner<%p, %d>\tMetric<%lld>\n", i, problem->getProblem(),tuner, tuner->getTunerNumber(), metric);
34 tuner->setTime(problem, metric);
36 tuner->setTime(problem, -2);
37 if (tunerExists(tuner)) {
38 //Solving the problem and noticing the tuner
50 uint tSize = tuners.getSize();
51 for (uint i = 0; i < tSize; i++) {
52 SearchTuner *tmpTuner = mutateTuner(tuners.get(i)->getTuner(), budget);
53 while (subTunerIndex(tmpTuner) != -1) {
54 tmpTuner->randomMutate();
56 TunerRecord *tmp = new TunerRecord(tmpTuner);
57 tmp->setTunerNumber(allTuners.getSize());
58 model_print("Mutated tuner %u to generate tuner %u\n", tuners.get(i)->getTunerNumber(), tmp->getTunerNumber());