diff options
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.xtend | 22 |
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 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra | 1 | package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra |
2 | 2 | ||
3 | import com.google.common.collect.ImmutableMap | 3 | import com.google.common.collect.ImmutableMap |
4 | import com.google.common.collect.ImmutableSet | ||
4 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel | 5 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel |
5 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem | 6 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem |
6 | import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery | 7 | import 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, |