projects
/
satune.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Random Tuner
[satune.git]
/
src
/
Tuner
/
multituner.h
diff --git
a/src/Tuner/multituner.h
b/src/Tuner/multituner.h
index 1c2a1fe7f5a61c4db02ae3402c40f869496d5af0..aaed01399fdaffaa9c4953ff7b9b9c0188fe8bfd 100644
(file)
--- a/
src/Tuner/multituner.h
+++ b/
src/Tuner/multituner.h
@@
-12,19
+12,31
@@
public:
~Problem();
CMEMALLOC;
private:
~Problem();
CMEMALLOC;
private:
+ int problemnumber;
int result;
char *problem;
int result;
char *problem;
+ long long besttime;
friend class MultiTuner;
friend class MultiTuner;
+ friend class RandomTuner;
};
class TunerRecord {
public:
};
class TunerRecord {
public:
- TunerRecord(SearchTuner *_tuner) : tuner(_tuner) {}
+ TunerRecord(SearchTuner *_tuner) : tuner(_tuner), tunernumber(-1) {}
+ TunerRecord(SearchTuner *_tuner, int _tunernumber) : tuner(_tuner), tunernumber(_tunernumber) {}
SearchTuner *getTuner() {return tuner;}
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);
+ void print();
private:
SearchTuner *tuner;
Vector<Problem *> problems;
private:
SearchTuner *tuner;
Vector<Problem *> problems;
+ Hashtable<Problem *, long long, uint64_t> timetaken;
+ int tunernumber;
friend class MultiTuner;
friend class MultiTuner;
+ friend class RandomTuner;
friend void clearVector(Vector<TunerRecord *> *tunerV);
};
friend void clearVector(Vector<TunerRecord *> *tunerV);
};
@@
-34,18
+46,24
@@
public:
~MultiTuner();
void addProblem(const char *filename);
void addTuner(SearchTuner *tuner);
~MultiTuner();
void addProblem(const char *filename);
void addTuner(SearchTuner *tuner);
-
+ void readData(uint numRuns);
+ void updateTimeout(Problem *problem, long long metric);
void tuneK();
void tuneK();
+ bool finishTunerExist(TunerRecord *tuner);
+ void tuneComp();
+ void printData();
+ void findBestThreeTuners();
CMEMALLOC;
protected:
CMEMALLOC;
protected:
- long long evaluate(Problem *problem,
SearchTuner
*tuner);
- double evaluateAll(
SearchTuner *tuner, Vector<Problem *> *tProblems
);
+ long long evaluate(Problem *problem,
TunerRecord
*tuner);
+ double evaluateAll(
TunerRecord *tuner
);
SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
SearchTuner *mutateTuner(SearchTuner *oldTuner, uint k);
+ bool hasExplored(SearchTuner *newTuner);
void mapProblemsToTuners(Vector<TunerRecord *> *tunerV);
void improveTuners(Vector<TunerRecord *> *tunerV);
void mapProblemsToTuners(Vector<TunerRecord *> *tunerV);
void improveTuners(Vector<TunerRecord *> *tunerV);
-
SearchTuner *tune(SearchTuner *tuner, Vector<Problem *> *tProblems
);
-
-
+
TunerRecord *tune(TunerRecord *tuner
);
+ Vector<TunerRecord *> allTuners;
+ Vector<TunerRecord *> explored;
Vector<Problem *> problems;
Vector<TunerRecord *> tuners;
uint budget;
Vector<Problem *> problems;
Vector<TunerRecord *> tuners;
uint budget;
@@
-53,4
+71,10
@@
protected:
uint timeout;
int execnum;
};
uint timeout;
int execnum;
};
+
+inline long long min(long long num1, long long num2, long long num3) {
+ return num1 < num2 && num1 < num3 ? num1 :
+ num2 < num3 ? num2 : num3;
+}
+
#endif
#endif