aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <marussy@mit.bme.hu>2020-06-25 19:55:10 +0200
committerLibravatar Kristóf Marussy <marussy@mit.bme.hu>2020-06-25 19:55:10 +0200
commitc3a6d4b9cf3657070d180aa65ddbf0459e880329 (patch)
tree780c4fc61578dcb309af53fb0c164c7627e51676 /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
parentNew configuration language parser WIP (diff)
parentScope unsat benchmarks (diff)
downloadVIATRA-Generator-c3a6d4b9cf3657070d180aa65ddbf0459e880329.tar.gz
VIATRA-Generator-c3a6d4b9cf3657070d180aa65ddbf0459e880329.tar.zst
VIATRA-Generator-c3a6d4b9cf3657070d180aa65ddbf0459e880329.zip
Merge branch 'kris'
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend17
1 files changed, 12 insertions, 5 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
index 0b0feb1a..066040a0 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
@@ -21,7 +21,8 @@ import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
21import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint 21import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint
22 22
23class NumericSolver { 23class NumericSolver {
24 val ThreadContext threadContext; 24 val ModelGenerationMethod method
25 var ThreadContext threadContext
25 val constraint2MustUnitPropagationPrecondition = new HashMap<PConstraint,ViatraQueryMatcher<? extends IPatternMatch>> 26 val constraint2MustUnitPropagationPrecondition = new HashMap<PConstraint,ViatraQueryMatcher<? extends IPatternMatch>>
26 val constraint2CurrentUnitPropagationPrecondition = new HashMap<PConstraint,ViatraQueryMatcher<? extends IPatternMatch>> 27 val constraint2CurrentUnitPropagationPrecondition = new HashMap<PConstraint,ViatraQueryMatcher<? extends IPatternMatch>>
27 NumericTranslator t = new NumericTranslator 28 NumericTranslator t = new NumericTranslator
@@ -35,8 +36,16 @@ class NumericSolver {
35 var int numberOfSolverCalls = 0 36 var int numberOfSolverCalls = 0
36 var int numberOfCachedSolverCalls = 0 37 var int numberOfCachedSolverCalls = 0
37 38
38 new(ThreadContext threadContext, ModelGenerationMethod method, boolean intermediateConsistencyCheck, boolean caching) { 39 new(ModelGenerationMethod method, boolean intermediateConsistencyCheck, boolean caching) {
39 this.threadContext = threadContext 40 this.method = method
41 this.intermediateConsistencyCheck = intermediateConsistencyCheck
42 this.caching = caching
43 }
44
45 def init(ThreadContext context) {
46 // This makes the NumericSolver single-threaded,
47 // but that's not a problem, because we only use the solver on a single thread anyways.
48 this.threadContext = context
40 val engine = threadContext.queryEngine 49 val engine = threadContext.queryEngine
41 for(entry : method.mustUnitPropagationPreconditions.entrySet) { 50 for(entry : method.mustUnitPropagationPreconditions.entrySet) {
42 val constraint = entry.key 51 val constraint = entry.key
@@ -50,8 +59,6 @@ class NumericSolver {
50 val matcher = querySpec.getMatcher(engine); 59 val matcher = querySpec.getMatcher(engine);
51 constraint2CurrentUnitPropagationPrecondition.put(constraint,matcher) 60 constraint2CurrentUnitPropagationPrecondition.put(constraint,matcher)
52 } 61 }
53 this.intermediateConsistencyCheck = intermediateConsistencyCheck
54 this.caching = caching
55 } 62 }
56 63
57 def getRuntime(){runtime} 64 def getRuntime(){runtime}