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