aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend22
1 files changed, 15 insertions, 7 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
index b79039cb..56beacfa 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
@@ -1,6 +1,7 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra 1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2 2
3import com.google.common.collect.ImmutableMap 3import com.google.common.collect.ImmutableMap
4import com.google.common.collect.ImmutableSet
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel 5import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 6import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
6import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery 7import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery
@@ -57,7 +58,7 @@ class ModelGenerationStatistics {
57 } 58 }
58 59
59 public var int transformationInvocations 60 public var int transformationInvocations
60 61
61 synchronized def incrementTransformationCount() { 62 synchronized def incrementTransformationCount() {
62 transformationInvocations++ 63 transformationInvocations++
63 } 64 }
@@ -67,7 +68,7 @@ class ModelGenerationStatistics {
67 synchronized def incrementScopePropagationCount() { 68 synchronized def incrementScopePropagationCount() {
68 scopePropagatorInvocations++ 69 scopePropagatorInvocations++
69 } 70 }
70 71
71 public var int scopePropagatorSolverInvocations 72 public var int scopePropagatorSolverInvocations
72 73
73 synchronized def incrementScopePropagationSolverCount() { 74 synchronized def incrementScopePropagationSolverCount() {
@@ -126,9 +127,7 @@ class ModelGenerationMethodProvider {
126 val relationConstraints = relationConstraintCalculator.calculateRelationConstraints(logicProblem) 127 val relationConstraints = relationConstraintCalculator.calculateRelationConstraints(logicProblem)
127 val queries = patternProvider.generateQueries(logicProblem, emptySolution, statistics, existingQueries, 128 val queries = patternProvider.generateQueries(logicProblem, emptySolution, statistics, existingQueries,
128 workspace, typeInferenceMethod, scopePropagatorStrategy, relationConstraints, hints, writeFiles) 129 workspace, typeInferenceMethod, scopePropagatorStrategy, relationConstraints, hints, writeFiles)
129 val queryEngine = ViatraQueryEngine.on(new EMFScope(emptySolution)) 130
130 GenericQueryGroup.of(queries.allQueries).prepare(queryEngine)
131
132 val scopePropagator = createScopePropagator(scopePropagatorStrategy, emptySolution, hints, queries, statistics) 131 val scopePropagator = createScopePropagator(scopePropagatorStrategy, emptySolution, hints, queries, statistics)
133 scopePropagator.propagateAllScopeConstraints 132 scopePropagator.propagateAllScopeConstraints
134 val objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(logicProblem, emptySolution, 133 val objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(logicProblem, emptySolution,
@@ -136,7 +135,8 @@ class ModelGenerationMethodProvider {
136 val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries, scopePropagator, 135 val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries, scopePropagator,
137 statistics) 136 statistics)
138 137
139 val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(logicProblem,queries,calculateObjectCreationCosts) 138 val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(logicProblem, queries,
139 calculateObjectCreationCosts)
140 140
141 val unfinishedWF = queries.getUnfinishedWFQueries.values 141 val unfinishedWF = queries.getUnfinishedWFQueries.values
142 142
@@ -150,10 +150,18 @@ class ModelGenerationMethodProvider {
150 val modalRelationQueries = modalRelationQueriesBuilder.build 150 val modalRelationQueries = modalRelationQueriesBuilder.build
151 151
152 val invalidWF = queries.getInvalidWFQueries.values 152 val invalidWF = queries.getInvalidWFQueries.values
153 153
154 val mustUnitPropagationPreconditions = queries.getMustUnitPropagationPreconditionPatterns 154 val mustUnitPropagationPreconditions = queries.getMustUnitPropagationPreconditionPatterns
155 val currentUnitPropagationPreconditions = queries.getCurrentUnitPropagationPreconditionPatterns 155 val currentUnitPropagationPreconditions = queries.getCurrentUnitPropagationPreconditionPatterns
156 156
157 val queriesToPrepare = ImmutableSet.builder.addAll(queries.refineObjectQueries.values).addAll(
158 queries.refineTypeQueries.values).addAll(queries.refinerelationQueries.values).addAll(queries.
159 multiplicityConstraintQueries.values.flatMap[allQueries]).addAll(queries.unfinishedWFQueries.values).addAll(
160 queries.invalidWFQueries.values).addAll(queries.mustUnitPropagationPreconditionPatterns.values).addAll(
161 queries.currentUnitPropagationPreconditionPatterns.values).add(queries.hasElementInContainmentQuery).build
162 val queryEngine = ViatraQueryEngine.on(new EMFScope(emptySolution))
163 GenericQueryGroup.of(queriesToPrepare).prepare(queryEngine)
164
157 return new ModelGenerationMethod( 165 return new ModelGenerationMethod(
158 statistics, 166 statistics,
159 objectRefinementRules.values, 167 objectRefinementRules.values,