ourfree(problem);
}
-MultiTuner::MultiTuner(uint _budget, uint _timeout) :
- budget(_budget), timeout(_timeout), execnum(0) {
+MultiTuner::MultiTuner(uint _budget, uint _rounds, uint _timeout) :
+ budget(_budget), rounds(_rounds), timeout(_timeout), execnum(0) {
}
MultiTuner::~MultiTuner() {
void MultiTuner::tuneK() {
Vector<TunerRecord *> *tunerV = new Vector<TunerRecord *>(&tuners);
- while (true) {
+ for (uint i = 0; i < rounds; i++) {
clearVector(tunerV);
mapProblemsToTuners(tunerV);
improveTuners(tunerV);
}
-
+ model_print("Best tuners\n");
+ for (uint j = 0; j < tunerV->getSize(); j++) {
+ TunerRecord *tuner = tunerV->get(j);
+ char buffer[256];
+ sprintf(buffer, "tuner%u.conf", j);
+ tuner->getTuner()->serialize(buffer);
+ tuner->getTuner()->print();
+ }
delete tunerV;
}
class MultiTuner {
public:
- MultiTuner(uint budget, uint timeout);
+ MultiTuner(uint budget, uint rounds, uint timeout);
~MultiTuner();
void addProblem(const char *filename);
void addTuner(SearchTuner *tuner);
Vector<Problem *> problems;
Vector<TunerRecord *> tuners;
uint budget;
+ uint rounds;
uint timeout;
int execnum;
};