#include "orderedge.h"
#include "orderanalysis.h"
#include "elementopt.h"
+#include "varorderingopt.h"
#include <time.h>
#include <stdarg.h>
boolTrue(BooleanEdge(new BooleanConst(true))),
boolFalse(boolTrue.negate()),
unsat(false),
+ booleanVarUsed(false),
tuner(NULL),
elapsedTime(0),
satsolverTimeout(NOTIMEOUT)
boolTrue = BooleanEdge(new BooleanConst(true));
boolFalse = boolTrue.negate();
unsat = false;
+ booleanVarUsed = false;
elapsedTime = 0;
tuner = NULL;
satEncoder->resetSATEncoder();
}
CSolver *CSolver::deserialize(const char *file) {
- model_print("deserializing ...\n");
+ model_print("deserializing %s ...\n", file);
Deserializer deserializer(file);
return deserializer.deserialize();
}
BooleanEdge CSolver::getBooleanVar(VarType type) {
Boolean *boolean = new BooleanVar(type);
allBooleans.push(boolean);
+ if(!booleanVarUsed)
+ booleanVarUsed = true;
return BooleanEdge(boolean);
}
}
}
-#define NANOSEC 1000000000.0
int CSolver::solve() {
long long startTime = getTimeNano();
bool deleteTuner = false;
naiveEncodingDecision(this);
// eg.validate();
-
+
+ VarOrderingOpt bor(this, satEncoder);
+ bor.doTransform();
+
time2 = getTimeNano();
model_print("Encoding Graph Time: %f\n", (time2 - time1) / NANOSEC);
satEncoder->encodeAllSATEncoder(this);
time1 = getTimeNano();
- model_print("Elapse Encode time: %f\n", (time1- startTime) / NANOSEC);
-
+ model_print("Elapse Encode time: %f\n", (time1 - startTime) / NANOSEC);
+
model_print("Is problem UNSAT after encoding: %d\n", unsat);
int result = unsat ? IS_UNSAT : satEncoder->solve(satsolverTimeout);
- model_print("Result Computed in SAT solver:\t%s\n", result == IS_SAT? "SAT" : result == IS_INDETER? "INDETERMINATE" : " UNSAT");
+ model_print("Result Computed in SAT solver:\t%s\n", result == IS_SAT ? "SAT" : result == IS_INDETER ? "INDETERMINATE" : " UNSAT");
time2 = getTimeNano();
elapsedTime = time2 - startTime;
model_print("CSOLVER solve time: %f\n", elapsedTime / NANOSEC);