8 virtual int getTunable(TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
9 virtual int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
10 virtual int getVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
15 class DefaultTuner : public Tuner {
18 int getTunable(TunableParam param, TunableDesc *descriptor);
19 int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor);
20 int getVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor);
28 TunableDesc(int _lowValue, int _highValue, int _defaultValue) : lowValue(_lowValue), highValue(_highValue), defaultValue(_defaultValue) {}
36 #define GETTUNABLE(This, param, descriptor) This->getTunable(param, descriptor)
37 #define GETVARTUNABLE(This, vartype, param, descriptor) This->getTunable(param, descriptor)
39 static TunableDesc onoff(0, 1, 1);
40 static TunableDesc offon(0, 1, 0);
41 static TunableDesc proxyparameter(1, 5, 2);
42 static TunableDesc mustValueBinaryIndex(0, 6, 3);
43 static TunableDesc NodeEncodingDesc(ELEM_UNASSIGNED, BINARYINDEX, ELEM_UNASSIGNED);
44 static TunableDesc NaiveEncodingDesc(ONEHOT, BINARYINDEX, BINARYINDEX);
45 static TunableDesc boolVarOrderingDesc(CONSTRAINTORDERING, REVERSEORDERING, REVERSEORDERING);
47 enum Tunables {DECOMPOSEORDER, MUSTREACHGLOBAL, MUSTREACHLOCAL, MUSTREACHPRUNE, OPTIMIZEORDERSTRUCTURE, ORDERINTEGERENCODING, PREPROCESS, NODEENCODING, EDGEENCODING, MUSTEDGEPRUNE, ELEMENTOPT,
48 ENCODINGGRAPHOPT, ELEMENTOPTSETS, PROXYVARIABLE, MUSTVALUE, NAIVEENCODER, VARIABLEORDER};
49 typedef enum Tunables Tunables;
51 const char *tunableParameterToString(Tunables tunable);