diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend | 70 |
1 files changed, 38 insertions, 32 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend index 8e992741..a6fa627d 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend | |||
@@ -9,6 +9,7 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem | |||
9 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage | 9 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage |
10 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory | 10 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory |
11 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult | 11 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult |
12 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ScopePropagator | ||
12 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy | 13 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy |
13 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.PartialInterpretationInitialiser | 14 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.PartialInterpretationInitialiser |
14 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | 15 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation |
@@ -18,7 +19,7 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.sta | |||
18 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.NeighbourhoodBasedHashStateCoderFactory | 19 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.NeighbourhoodBasedHashStateCoderFactory |
19 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.PairwiseNeighbourhoodBasedStateCoderFactory | 20 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.PairwiseNeighbourhoodBasedStateCoderFactory |
20 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.BasicScopeGlobalConstraint | 21 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.BasicScopeGlobalConstraint |
21 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.BestFirstStrategyForModelGeneration | 22 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.HillClimbingOnRealisticMetricStrategyForModelGeneration |
22 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.InconsistentScopeGlobalConstraint | 23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.InconsistentScopeGlobalConstraint |
23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.LoggerSolutionFoundHandler | 24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.LoggerSolutionFoundHandler |
24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.ModelGenerationCompositeObjective | 25 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.ModelGenerationCompositeObjective |
@@ -34,6 +35,7 @@ import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace | |||
34 | import java.util.List | 35 | import java.util.List |
35 | import java.util.Map | 36 | import java.util.Map |
36 | import org.eclipse.emf.ecore.EObject | 37 | import org.eclipse.emf.ecore.EObject |
38 | import org.eclipse.emf.ecore.util.EcoreUtil | ||
37 | import org.eclipse.viatra.dse.api.DesignSpaceExplorer | 39 | import org.eclipse.viatra.dse.api.DesignSpaceExplorer |
38 | import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel | 40 | import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel |
39 | import org.eclipse.viatra.dse.solutionstore.SolutionStore | 41 | import org.eclipse.viatra.dse.solutionstore.SolutionStore |
@@ -69,6 +71,11 @@ class ViatraReasoner extends LogicReasoner { | |||
69 | } | 71 | } |
70 | 72 | ||
71 | emptySolution.problemConainer = problem | 73 | emptySolution.problemConainer = problem |
74 | val emptySolutionCopy = EcoreUtil.copy(emptySolution) | ||
75 | |||
76 | val ScopePropagator scopePropagator = new ScopePropagator(emptySolution) | ||
77 | scopePropagator.propagateAllScopeConstraints | ||
78 | |||
72 | var BasicScopeGlobalConstraint basicScopeGlobalConstraint = null | 79 | var BasicScopeGlobalConstraint basicScopeGlobalConstraint = null |
73 | if (viatraConfig.scopePropagatorStrategy == ScopePropagatorStrategy.None) { | 80 | if (viatraConfig.scopePropagatorStrategy == ScopePropagatorStrategy.None) { |
74 | basicScopeGlobalConstraint = new BasicScopeGlobalConstraint(emptySolution) | 81 | basicScopeGlobalConstraint = new BasicScopeGlobalConstraint(emptySolution) |
@@ -147,9 +154,8 @@ class ViatraReasoner extends LogicReasoner { | |||
147 | for (rule : method.objectRefinementRules) { | 154 | for (rule : method.objectRefinementRules) { |
148 | dse.addTransformationRule(rule) | 155 | dse.addTransformationRule(rule) |
149 | } | 156 | } |
150 | 157 | ||
151 | val strategy = new BestFirstStrategyForModelGeneration(workspace, viatraConfig, method, solutionSaver, | 158 | val strategy = new HillClimbingOnRealisticMetricStrategyForModelGeneration(workspace,viatraConfig,method) |
152 | numericSolver) | ||
153 | viatraConfig.progressMonitor.workedForwardTransformation | 159 | viatraConfig.progressMonitor.workedForwardTransformation |
154 | val transformationFinished = System.nanoTime | 160 | val transformationFinished = System.nanoTime |
155 | val transformationTime = transformationFinished - transformationStartTime | 161 | val transformationTime = transformationFinished - transformationStartTime |
@@ -257,34 +263,34 @@ class ViatraReasoner extends LogicReasoner { | |||
257 | it.name = "ScopePropagationsSolverCalls" | 263 | it.name = "ScopePropagationsSolverCalls" |
258 | it.value = method.statistics.scopePropagatorSolverInvocations | 264 | it.value = method.statistics.scopePropagatorSolverInvocations |
259 | ] | 265 | ] |
260 | it.entries += createIntStatisticEntry => [ | 266 | // it.entries += createIntStatisticEntry => [ |
261 | it.name = "NumericalSolverSumTime" | 267 | // it.name = "NumericalSolverSumTime" |
262 | it.value = (strategy.numericSolver.runtime / 1000000) as int | 268 | // it.value = (strategy.numericSolver.runtime / 1000000) as int |
263 | ] | 269 | // ] |
264 | it.entries += createIntStatisticEntry => [ | 270 | // it.entries += createIntStatisticEntry => [ |
265 | it.name = "NumericalSolverProblemFormingTime" | 271 | // it.name = "NumericalSolverProblemFormingTime" |
266 | it.value = (strategy.numericSolver.solverFormingProblem / 1000000) as int | 272 | // it.value = (strategy.numericSolver.solverFormingProblem / 1000000) as int |
267 | ] | 273 | // ] |
268 | it.entries += createIntStatisticEntry => [ | 274 | // it.entries += createIntStatisticEntry => [ |
269 | it.name = "NumericalSolverSolvingTime" | 275 | // it.name = "NumericalSolverSolvingTime" |
270 | it.value = (strategy.numericSolver.solverSolvingProblem / 1000000) as int | 276 | // it.value = (strategy.numericSolver.solverSolvingProblem / 1000000) as int |
271 | ] | 277 | // ] |
272 | it.entries += createIntStatisticEntry => [ | 278 | // it.entries += createIntStatisticEntry => [ |
273 | it.name = "NumericalSolverInterpretingSolution" | 279 | // it.name = "NumericalSolverInterpretingSolution" |
274 | it.value = (strategy.numericSolver.solverSolution / 1000000) as int | 280 | // it.value = (strategy.numericSolver.solverSolution / 1000000) as int |
275 | ] | 281 | // ] |
276 | it.entries += createIntStatisticEntry => [ | 282 | // it.entries += createIntStatisticEntry => [ |
277 | it.name = "NumericalSolverCachingTime" | 283 | // it.name = "NumericalSolverCachingTime" |
278 | it.value = (strategy.numericSolver.cachingTime / 1000000) as int | 284 | // it.value = (strategy.numericSolver.cachingTime / 1000000) as int |
279 | ] | 285 | // ] |
280 | it.entries += createIntStatisticEntry => [ | 286 | // it.entries += createIntStatisticEntry => [ |
281 | it.name = "NumericalSolverCallNumber" | 287 | // it.name = "NumericalSolverCallNumber" |
282 | it.value = strategy.numericSolver.numberOfSolverCalls | 288 | // it.value = strategy.numericSolver.numberOfSolverCalls |
283 | ] | 289 | // ] |
284 | it.entries += createIntStatisticEntry => [ | 290 | // it.entries += createIntStatisticEntry => [ |
285 | it.name = "NumericalSolverCachedAnswerNumber" | 291 | // it.name = "NumericalSolverCachedAnswerNumber" |
286 | it.value = strategy.numericSolver.numberOfCachedSolverCalls | 292 | // it.value = strategy.numericSolver.numberOfCachedSolverCalls |
287 | ] | 293 | // ] |
288 | if (diversityChecker.active) { | 294 | if (diversityChecker.active) { |
289 | it.entries += createIntStatisticEntry => [ | 295 | it.entries += createIntStatisticEntry => [ |
290 | it.name = "SolutionDiversityCheckTime" | 296 | it.name = "SolutionDiversityCheckTime" |