Boolean Variable Ordering optimizations
[satune.git] / src / Tuner / tunable.h
index 5816d7e7b2e8612d598210e1c96d8f95a68bb6fc..d8385477e84198be6fe67534210d0b319275907d 100644 (file)
@@ -1,23 +1,35 @@
 #ifndef TUNABLE_H
 #define TUNABLE_H
 #include "classlist.h"
-
+#include "common.h"
 
 class Tuner {
- public:
-       Tuner();
-       int getTunable(TunableParam param, TunableDesc * descriptor);
-       int getVarTunable(VarType vartype, TunableParam param, TunableDesc * descriptor);
-       MEMALLOC;
+public:
+       virtual int getTunable(TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
+       virtual int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
+       virtual int getVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
+       virtual ~Tuner() {}
+       CMEMALLOC;
+};
+
+class DefaultTuner : public Tuner {
+public:
+       DefaultTuner();
+       int getTunable(TunableParam param, TunableDesc *descriptor);
+       int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor);
+       int getVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor);
+       CMEMALLOC;
 };
 
+
+
 class TunableDesc {
- public:
- TunableDesc(int _lowValue, int _highValue, int _defaultValue) : lowValue(_lowValue), highValue(_highValue), defaultValue(_defaultValue) {}
+public:
      TunableDesc(int _lowValue, int _highValue, int _defaultValue) : lowValue(_lowValue), highValue(_highValue), defaultValue(_defaultValue) {}
        int lowValue;
        int highValue;
        int defaultValue;
-       MEMALLOC;
+       CMEMALLOC;
 };
 
 
@@ -26,7 +38,15 @@ class TunableDesc {
 
 static TunableDesc onoff(0, 1, 1);
 static TunableDesc offon(0, 1, 0);
+static TunableDesc proxyparameter(1, 5, 2);
+static TunableDesc mustValueBinaryIndex(5, 9, 8);
+static TunableDesc NodeEncodingDesc(ELEM_UNASSIGNED, BINARYINDEX, ELEM_UNASSIGNED);
+static TunableDesc NaiveEncodingDesc(ONEHOT, BINARYINDEX, ONEHOT);
+static TunableDesc boolVarOrderingDesc(CONSTRAINTORDERING, REVERSEORDERING, REVERSEORDERING);
 
-enum Tunables {DECOMPOSEORDER, MUSTREACHGLOBAL, MUSTREACHLOCAL, MUSTREACHPRUNE, OPTIMIZEORDERSTRUCTURE, ORDERINTEGERENCODING};
+enum Tunables {DECOMPOSEORDER, MUSTREACHGLOBAL, MUSTREACHLOCAL, MUSTREACHPRUNE, OPTIMIZEORDERSTRUCTURE, ORDERINTEGERENCODING, PREPROCESS, NODEENCODING, EDGEENCODING, MUSTEDGEPRUNE, ELEMENTOPT, 
+        ENCODINGGRAPHOPT, ELEMENTOPTSETS, PROXYVARIABLE, MUSTVALUE, NAIVEENCODER, VARIABLEORDER};
 typedef enum Tunables Tunables;
+
+const char *tunableParameterToString(Tunables tunable);
 #endif