diff options
author | OszkarSemerath <oszkar.semerath@gmail.com> | 2018-03-03 02:02:21 -0500 |
---|---|---|
committer | OszkarSemerath <oszkar.semerath@gmail.com> | 2018-03-03 02:02:21 -0500 |
commit | a575e7d063ef1776d620fe6318b8ba2f30d82a11 (patch) | |
tree | 98e252632ce04fc0ec80cd0e204f58dbcdb91130 /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend | |
parent | +SolverProcessMonitor to (optionally) report process and request cancel (diff) | |
download | VIATRA-Generator-a575e7d063ef1776d620fe6318b8ba2f30d82a11.tar.gz VIATRA-Generator-a575e7d063ef1776d620fe6318b8ba2f30d82a11.tar.zst VIATRA-Generator-a575e7d063ef1776d620fe6318b8ba2f30d82a11.zip |
ViatraSolver reports progress and stops at cancel
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 | 22 |
1 files changed, 10 insertions, 12 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 613c68b3..198beabb 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 | |||
@@ -29,6 +29,7 @@ import org.eclipse.viatra.dse.api.DesignSpaceExplorer | |||
29 | import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel | 29 | import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel |
30 | import org.eclipse.viatra.dse.solutionstore.SolutionStore | 30 | import org.eclipse.viatra.dse.solutionstore.SolutionStore |
31 | import org.eclipse.viatra.dse.statecode.IStateCoderFactory | 31 | import org.eclipse.viatra.dse.statecode.IStateCoderFactory |
32 | import javax.security.auth.login.Configuration.Parameters | ||
32 | 33 | ||
33 | class ViatraReasoner extends LogicReasoner{ | 34 | class ViatraReasoner extends LogicReasoner{ |
34 | val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser() | 35 | val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser() |
@@ -79,7 +80,7 @@ class ViatraReasoner extends LogicReasoner{ | |||
79 | 80 | ||
80 | dse.setInitialModel(emptySolution,false) | 81 | dse.setInitialModel(emptySolution,false) |
81 | 82 | ||
82 | var IStateCoderFactory statecoder = if(viatraConfig.stateCoderStrategy == StateCoderStrategy.Neighbourhood) { | 83 | val IStateCoderFactory statecoder = if(viatraConfig.stateCoderStrategy == StateCoderStrategy.Neighbourhood) { |
83 | new NeighbourhoodBasedStateCoderFactory | 84 | new NeighbourhoodBasedStateCoderFactory |
84 | } else { | 85 | } else { |
85 | new IdentifierBasedStateCoderFactory | 86 | new IdentifierBasedStateCoderFactory |
@@ -98,11 +99,12 @@ class ViatraReasoner extends LogicReasoner{ | |||
98 | dse.addTransformationRule(rule) | 99 | dse.addTransformationRule(rule) |
99 | } | 100 | } |
100 | 101 | ||
101 | val strategy = new BestFirstStrategyForModelGeneration( | 102 | val strategy = new BestFirstStrategyForModelGeneration(workspace,viatraConfig) |
102 | workspace,viatraConfig) | 103 | viatraConfig.progressMonitor.workedForwardTransformation |
103 | 104 | ||
104 | val transformationTime = System.nanoTime - transformationStartTime | 105 | val transformationTime = System.nanoTime - transformationStartTime |
105 | val solverStartTime = System.nanoTime | 106 | val solverStartTime = System.nanoTime |
107 | |||
106 | var boolean stoppedByTimeout | 108 | var boolean stoppedByTimeout |
107 | var boolean stoppedByException | 109 | var boolean stoppedByException |
108 | try{ | 110 | try{ |
@@ -112,10 +114,9 @@ class ViatraReasoner extends LogicReasoner{ | |||
112 | stoppedByTimeout = false | 114 | stoppedByTimeout = false |
113 | stoppedByException = true | 115 | stoppedByException = true |
114 | } | 116 | } |
115 | |||
116 | val solverTime = System.nanoTime - solverStartTime | 117 | val solverTime = System.nanoTime - solverStartTime |
118 | viatraConfig.progressMonitor.workedSearchFinished | ||
117 | 119 | ||
118 | val statecoderFinal = statecoder | ||
119 | //additionalMatches = strategy.solutionStoreWithCopy.additionalMatches | 120 | //additionalMatches = strategy.solutionStoreWithCopy.additionalMatches |
120 | val statistics = createStatistics => [ | 121 | val statistics = createStatistics => [ |
121 | //it.solverTime = viatraConfig.runtimeLimit | 122 | //it.solverTime = viatraConfig.runtimeLimit |
@@ -134,7 +135,7 @@ class ViatraReasoner extends LogicReasoner{ | |||
134 | it.name = "TypeAnalysisTime" it.value = (method.statistics.PreliminaryTypeAnalisisTime/1000000) as int | 135 | it.name = "TypeAnalysisTime" it.value = (method.statistics.PreliminaryTypeAnalisisTime/1000000) as int |
135 | ] | 136 | ] |
136 | it.entries += createIntStatisticEntry => [ | 137 | it.entries += createIntStatisticEntry => [ |
137 | it.name = "StateCoderTime" it.value = (statecoderFinal.runtime/1000000) as int | 138 | it.name = "StateCoderTime" it.value = (statecoder.runtime/1000000) as int |
138 | ] | 139 | ] |
139 | it.entries += createIntStatisticEntry => [ | 140 | it.entries += createIntStatisticEntry => [ |
140 | it.name = "StateCoderFailCount" it.value = strategy.numberOfStatecoderFail | 141 | it.name = "StateCoderFailCount" it.value = strategy.numberOfStatecoderFail |
@@ -152,6 +153,8 @@ class ViatraReasoner extends LogicReasoner{ | |||
152 | } | 153 | } |
153 | ] | 154 | ] |
154 | 155 | ||
156 | viatraConfig.progressMonitor.workedBackwardTransformationFinished | ||
157 | |||
155 | if(stoppedByTimeout) { | 158 | if(stoppedByTimeout) { |
156 | return createInsuficientResourcesResult=>[ | 159 | return createInsuficientResourcesResult=>[ |
157 | it.problem = problem | 160 | it.problem = problem |
@@ -165,12 +168,7 @@ class ViatraReasoner extends LogicReasoner{ | |||
165 | it.statistics = statistics | 168 | it.statistics = statistics |
166 | ] | 169 | ] |
167 | } else { | 170 | } else { |
168 | 171 | return createModelResult => [ | |
169 | /*solutionStore.solutions.head.trajectories.head | ||
170 | solutionTrajectory.doTransformation(emptySolution) | ||
171 | * | ||
172 | */ | ||
173 | return factory.createModelResult => [ | ||
174 | it.problem = problem | 172 | it.problem = problem |
175 | it.trace = strategy.solutionStoreWithCopy.copyTraces | 173 | it.trace = strategy.solutionStoreWithCopy.copyTraces |
176 | it.representation += strategy.solutionStoreWithCopy.solutions | 174 | it.representation += strategy.solutionStoreWithCopy.solutions |