Bug fix for tuner timeout
[satune.git] / src / Tuner / multituner.h
index 1162e821c7c8ce38f91b41c0ccc544938c9b3f14..85b028bc930b3e137eb586ba6ea5975239af8674 100644 (file)
@@ -7,27 +7,32 @@
 
 class Problem {
 public:
-       Problem(const char *problem);
+       Problem(const char *problem, uint timeout);
        char *getProblem() {return problem;}
        ~Problem();
        CMEMALLOC;
 private:
+       int problemnumber;
        int result;
        char *problem;
+        double besttime;
+        uint timeout;
        friend class MultiTuner;
 };
 
 class TunerRecord {
 public:
-       TunerRecord(SearchTuner *_tuner) : tuner(_tuner) {}
+       TunerRecord(SearchTuner *_tuner) : tuner(_tuner), tunernumber(-1) {}
        SearchTuner *getTuner() {return tuner;}
        TunerRecord *changeTuner(SearchTuner *_newtuner);
+       void updateTuner(SearchTuner *_newtuner) {tuner = _newtuner;}
        long long getTime(Problem *problem);
        void setTime(Problem *problem, long long time);
 private:
        SearchTuner *tuner;
        Vector<Problem *> problems;
        Hashtable<Problem *, long long, uint64_t> timetaken;
+       int tunernumber;
        friend class MultiTuner;
        friend void clearVector(Vector<TunerRecord *> *tunerV);
 };
@@ -38,18 +43,20 @@ public:
        ~MultiTuner();
        void addProblem(const char *filename);
        void addTuner(SearchTuner *tuner);
+       void readData(uint numRuns);
+        void updateTimeout(Problem *problem, long long metric);
        void tuneK();
        void tuneComp();
+       void printData();
        CMEMALLOC;
 protected:
-       long long evaluate(Problem *problem, SearchTuner *tuner);
+       long long evaluate(Problem *problem, TunerRecord *tuner);
        double evaluateAll(TunerRecord *tuner);
        SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
        void mapProblemsToTuners(Vector<TunerRecord *> *tunerV);
        void improveTuners(Vector<TunerRecord *> *tunerV);
        TunerRecord *tune(TunerRecord *tuner);
 
-
        Vector<TunerRecord *> allTuners;
        Vector<Problem *> problems;
        Vector<TunerRecord *> tuners;