1 #include "staticsearchtuner.h"
6 StaticSearchTuner::StaticSearchTuner() {
8 naiveEncoding = ELEM_UNASSIGNED;
10 myfile.open (TUNEFILE, ios::in);
11 if (myfile.is_open()) {
20 while (myfile >> hasVar >> type1 >> type2 >> param >> lowValue >> highValue >> defaultValue >> selectedValue) {
21 TunableSetting *setting;
24 setting = new TunableSetting(type1, type2, param);
26 setting = new TunableSetting(param);
28 setting->setDecision(lowValue, highValue, defaultValue, selectedValue);
29 usedSettings.add(setting);
35 StaticSearchTuner *StaticSearchTuner::copyUsed() {
36 StaticSearchTuner *tuner = new StaticSearchTuner();
37 SetIteratorTunableSetting *iterator = usedSettings.iterator();
38 while (iterator->hasNext()) {
39 TunableSetting *setting = iterator->next();
40 TunableSetting *copy = new TunableSetting(setting);
41 tuner->settings.add(copy);
43 if (naiveEncoding != ELEM_UNASSIGNED) {
44 tuner->graphEncoding = graphEncoding;
45 tuner->naiveEncoding = naiveEncoding;
51 StaticSearchTuner::~StaticSearchTuner() {
52 SetIteratorTunableSetting *iterator = settings.iterator();
53 while (iterator->hasNext()) {
54 TunableSetting *setting = iterator->next();
60 int StaticSearchTuner::nextStaticTuner() {
61 if (naiveEncoding == ELEM_UNASSIGNED) {
62 naiveEncoding = ONEHOT;
63 SetIteratorTunableSetting *iter = settings.iterator();
64 while (iter->hasNext()) {
65 TunableSetting *setting = iter->next();
66 if (setting->param == NAIVEENCODER) {
67 setting->selectedValue = ONEHOT;
68 } else if (setting->param == ENCODINGGRAPHOPT) {
69 setting->selectedValue = false;
75 int result = EXIT_FAILURE;
76 if (naiveEncoding == BINARYINDEX && graphEncoding) {
77 model_print("Best tuner\n");
79 } else if (naiveEncoding == BINARYINDEX && !graphEncoding) {
80 naiveEncoding = ONEHOT;
83 naiveEncoding = (ElementEncodingType)((int)naiveEncoding + 1);
85 SetIteratorTunableSetting *iter = settings.iterator();
87 while (iter->hasNext()) {
88 TunableSetting *setting = iter->next();
89 if (setting->param == NAIVEENCODER) {
90 setting->selectedValue = naiveEncoding;
92 } else if (setting->param == ENCODINGGRAPHOPT) {
93 setting->selectedValue = graphEncoding;
97 model_print("Mutating %u settings\n", count);