diff options
Diffstat (limited to 'Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java')
-rw-r--r-- | Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java index 612e93a6..0799953f 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java | |||
@@ -1,6 +1,5 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.viatra2logic; | 1 | package hu.bme.mit.inf.dslreasoner.viatra2logic; |
2 | 2 | ||
3 | import java.io.File; | ||
4 | import java.util.ArrayList; | 3 | import java.util.ArrayList; |
5 | import java.util.HashMap; | 4 | import java.util.HashMap; |
6 | import java.util.List; | 5 | import java.util.List; |
@@ -20,6 +19,7 @@ import com.microsoft.z3.Context; | |||
20 | import com.microsoft.z3.Expr; | 19 | import com.microsoft.z3.Expr; |
21 | import com.microsoft.z3.IntExpr; | 20 | import com.microsoft.z3.IntExpr; |
22 | import com.microsoft.z3.Model; | 21 | import com.microsoft.z3.Model; |
22 | import com.microsoft.z3.Params; | ||
23 | import com.microsoft.z3.RealExpr; | 23 | import com.microsoft.z3.RealExpr; |
24 | import com.microsoft.z3.Solver; | 24 | import com.microsoft.z3.Solver; |
25 | import com.microsoft.z3.Status; | 25 | import com.microsoft.z3.Status; |
@@ -36,7 +36,7 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{ | |||
36 | private Solver s; | 36 | private Solver s; |
37 | private Map<Object, Expr> varMap; | 37 | private Map<Object, Expr> varMap; |
38 | 38 | ||
39 | public NumericZ3ProblemSolver() { | 39 | public NumericZ3ProblemSolver(int timeout) { |
40 | //FOR LINUX VM | 40 | //FOR LINUX VM |
41 | //Not Elegant, but this is working for now | 41 | //Not Elegant, but this is working for now |
42 | // String root = "/home/models/VIATRA-Generator"; | 42 | // String root = "/home/models/VIATRA-Generator"; |
@@ -50,6 +50,11 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{ | |||
50 | ctx = new Context(cfg); | 50 | ctx = new Context(cfg); |
51 | ctx.setPrintMode(Z3_ast_print_mode.Z3_PRINT_SMTLIB_FULL); | 51 | ctx.setPrintMode(Z3_ast_print_mode.Z3_PRINT_SMTLIB_FULL); |
52 | s = ctx.mkSolver(); | 52 | s = ctx.mkSolver(); |
53 | if (timeout != -1) { | ||
54 | Params p = ctx.mkParams(); | ||
55 | p.add("timeout", timeout); | ||
56 | s.setParameters(p); | ||
57 | } | ||
53 | varMap = new HashMap<Object, Expr>(); | 58 | varMap = new HashMap<Object, Expr>(); |
54 | } | 59 | } |
55 | 60 | ||
@@ -82,7 +87,11 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{ | |||
82 | s.add(problemInstance); | 87 | s.add(problemInstance); |
83 | endformingProblem = System.nanoTime()-startformingProblem; | 88 | endformingProblem = System.nanoTime()-startformingProblem; |
84 | long startSolvingProblem = System.nanoTime(); | 89 | long startSolvingProblem = System.nanoTime(); |
85 | boolean result = (s.check() == Status.SATISFIABLE); | 90 | // System.out.print("start - "); |
91 | Status soln = s.check(); | ||
92 | boolean result = (soln == Status.SATISFIABLE); | ||
93 | if (soln == Status.UNKNOWN) System.err.println("TIMEOUT"); | ||
94 | // System.out.println("end"); | ||
86 | endSolvingProblem = System.nanoTime()-startSolvingProblem; | 95 | endSolvingProblem = System.nanoTime()-startSolvingProblem; |
87 | this.ctx.close(); | 96 | this.ctx.close(); |
88 | return result; | 97 | return result; |