aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
diff options
context:
space:
mode:
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.xtend70
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
9import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage 9import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage
10import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory 10import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory
11import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult 11import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
12import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ScopePropagator
12import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy 13import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.PartialInterpretationInitialiser 14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.PartialInterpretationInitialiser
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation 15import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
@@ -18,7 +19,7 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.sta
18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.NeighbourhoodBasedHashStateCoderFactory 19import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.NeighbourhoodBasedHashStateCoderFactory
19import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.PairwiseNeighbourhoodBasedStateCoderFactory 20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.PairwiseNeighbourhoodBasedStateCoderFactory
20import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.BasicScopeGlobalConstraint 21import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.BasicScopeGlobalConstraint
21import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.BestFirstStrategyForModelGeneration 22import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.HillClimbingOnRealisticMetricStrategyForModelGeneration
22import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.InconsistentScopeGlobalConstraint 23import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.InconsistentScopeGlobalConstraint
23import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.LoggerSolutionFoundHandler 24import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.LoggerSolutionFoundHandler
24import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.ModelGenerationCompositeObjective 25import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.ModelGenerationCompositeObjective
@@ -34,6 +35,7 @@ import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
34import java.util.List 35import java.util.List
35import java.util.Map 36import java.util.Map
36import org.eclipse.emf.ecore.EObject 37import org.eclipse.emf.ecore.EObject
38import org.eclipse.emf.ecore.util.EcoreUtil
37import org.eclipse.viatra.dse.api.DesignSpaceExplorer 39import org.eclipse.viatra.dse.api.DesignSpaceExplorer
38import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel 40import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel
39import org.eclipse.viatra.dse.solutionstore.SolutionStore 41import 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"