diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java index 71178f3d..d9a1e54c 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java | |||
@@ -14,19 +14,19 @@ import java.util.Arrays; | |||
14 | import java.util.Collection; | 14 | import java.util.Collection; |
15 | import java.util.Collections; | 15 | import java.util.Collections; |
16 | import java.util.Comparator; | 16 | import java.util.Comparator; |
17 | import java.util.HashMap; | ||
18 | import java.util.Iterator; | 17 | import java.util.Iterator; |
19 | import java.util.LinkedList; | 18 | import java.util.LinkedList; |
20 | import java.util.List; | 19 | import java.util.List; |
21 | import java.util.Map; | ||
22 | import java.util.PriorityQueue; | 20 | import java.util.PriorityQueue; |
23 | import java.util.Random; | 21 | import java.util.Random; |
24 | 22 | ||
23 | import org.apache.log4j.Level; | ||
25 | import org.apache.log4j.Logger; | 24 | import org.apache.log4j.Logger; |
26 | import org.eclipse.emf.ecore.util.EcoreUtil; | 25 | import org.eclipse.emf.ecore.util.EcoreUtil; |
27 | import org.eclipse.viatra.dse.api.strategy.interfaces.IStrategy; | 26 | import org.eclipse.viatra.dse.api.strategy.interfaces.IStrategy; |
28 | import org.eclipse.viatra.dse.base.ThreadContext; | 27 | import org.eclipse.viatra.dse.base.ThreadContext; |
29 | import org.eclipse.viatra.dse.objectives.Fitness; | 28 | import org.eclipse.viatra.dse.objectives.Fitness; |
29 | import org.eclipse.viatra.dse.objectives.IObjective; | ||
30 | import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper; | 30 | import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper; |
31 | import org.eclipse.viatra.dse.solutionstore.SolutionStore; | 31 | import org.eclipse.viatra.dse.solutionstore.SolutionStore; |
32 | import org.eclipse.viatra.query.runtime.api.IPatternMatch; | 32 | import org.eclipse.viatra.query.runtime.api.IPatternMatch; |
@@ -34,8 +34,6 @@ import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | |||
34 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; | 34 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; |
35 | import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; | 35 | import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; |
36 | 36 | ||
37 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.MetricDistanceGroup; | ||
38 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.PartialInterpretationMetric; | ||
39 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; | 37 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; |
40 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; | 38 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; |
41 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; | 39 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; |
@@ -115,7 +113,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
115 | public void initStrategy(ThreadContext context) { | 113 | public void initStrategy(ThreadContext context) { |
116 | this.context = context; | 114 | this.context = context; |
117 | this.solutionStore = context.getGlobalContext().getSolutionStore(); | 115 | this.solutionStore = context.getGlobalContext().getSolutionStore(); |
118 | |||
119 | ViatraQueryEngine engine = context.getQueryEngine(); | 116 | ViatraQueryEngine engine = context.getQueryEngine(); |
120 | // // TODO: visualisation | 117 | // // TODO: visualisation |
121 | matchers = new LinkedList<ViatraQueryMatcher<? extends IPatternMatch>>(); | 118 | matchers = new LinkedList<ViatraQueryMatcher<? extends IPatternMatch>>(); |
@@ -191,11 +188,9 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
191 | // continue mainLoop; | 188 | // continue mainLoop; |
192 | // } | 189 | // } |
193 | 190 | ||
194 | |||
195 | |||
196 | List<Object> activationIds = selectActivation(); | 191 | List<Object> activationIds = selectActivation(); |
197 | Iterator<Object> iterator = activationIds.iterator(); | 192 | Iterator<Object> iterator = activationIds.iterator(); |
198 | 193 | ||
199 | while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) { | 194 | while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) { |
200 | final Object nextActivation = iterator.next(); | 195 | final Object nextActivation = iterator.next(); |
201 | // if (!iterator.hasNext()) { | 196 | // if (!iterator.hasNext()) { |
@@ -204,6 +199,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
204 | // } | 199 | // } |
205 | logger.debug("Executing new activation: " + nextActivation); | 200 | logger.debug("Executing new activation: " + nextActivation); |
206 | context.executeAcitvationId(nextActivation); | 201 | context.executeAcitvationId(nextActivation); |
202 | |||
207 | visualiseCurrentState(); | 203 | visualiseCurrentState(); |
208 | // for(ViatraQueryMatcher<? extends IPatternMatch> matcher : matchers) { | 204 | // for(ViatraQueryMatcher<? extends IPatternMatch> matcher : matchers) { |
209 | // System.out.println(matcher.getPatternName()); | 205 | // System.out.println(matcher.getPatternName()); |
@@ -214,16 +210,13 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
214 | // System.out.println("---------"); | 210 | // System.out.println("---------"); |
215 | // } | 211 | // } |
216 | 212 | ||
217 | //calculate the metrics for each state | ||
218 | // logCurrentStateMetric(); | ||
219 | |||
220 | boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFittness); | 213 | boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFittness); |
221 | if(consistencyCheckResult == true) { continue mainLoop; } | 214 | if(consistencyCheckResult == true) { continue mainLoop; } |
222 | 215 | ||
223 | /* if (context.isCurrentStateAlreadyTraversed()) { | 216 | if (context.isCurrentStateAlreadyTraversed()) { |
224 | // logger.info("The new state is already visited."); | 217 | logger.info("The new state is already visited."); |
225 | // context.backtrack(); | 218 | context.backtrack(); |
226 | // } else*/ if (!context.checkGlobalConstraints()) { | 219 | } else if (!context.checkGlobalConstraints()) { |
227 | logger.debug("Global contraint is not satisifed."); | 220 | logger.debug("Global contraint is not satisifed."); |
228 | context.backtrack(); | 221 | context.backtrack(); |
229 | } else { | 222 | } else { |
@@ -256,6 +249,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
256 | } | 249 | } |
257 | } | 250 | } |
258 | } | 251 | } |
252 | |||
259 | logger.debug("State is fully traversed."); | 253 | logger.debug("State is fully traversed."); |
260 | trajectoiresToExplore.remove(currentTrajectoryWithFittness); | 254 | trajectoiresToExplore.remove(currentTrajectoryWithFittness); |
261 | currentTrajectoryWithFittness = null; | 255 | currentTrajectoryWithFittness = null; |
@@ -316,16 +310,17 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
316 | return trajectoiresToExplore.element(); | 310 | return trajectoiresToExplore.element(); |
317 | } | 311 | } |
318 | } | 312 | } |
319 | 313 | ||
320 | // private void logCurrentStateMetric() { | 314 | // private void logCurrentStateMetric() { |
321 | // if(this.configuration.documentationLevel != DocumentationLevel.NONE || workspace == null) { | 315 | // if(this.configuration.documentationLevel != DocumentationLevel.NONE || workspace == null) { |
322 | // return; | 316 | // return; |
323 | // } | ||
324 | // | ||
325 | // PartialInterpretation interpretation = (PartialInterpretation)context.getModel(); //pattern.get("interpretation"); | ||
326 | // PartialInterpretationMetric.calculateMetric(interpretation, "debug/metric/" + context.getModel().hashCode(), context.getCurrentStateId().toString()); | ||
327 | // } | 317 | // } |
318 | // | ||
319 | // PartialInterpretation interpretation = (PartialInterpretation)context.getModel(); //pattern.get("interpretation"); | ||
320 | // PartialInterpretationMetric.calculateMetric(interpretation, "debug/metric/" + context.getModel().hashCode(), context.getCurrentStateId().toString()); | ||
321 | //} | ||
328 | 322 | ||
323 | |||
329 | public void visualiseCurrentState() { | 324 | public void visualiseCurrentState() { |
330 | PartialInterpretationVisualiser partialInterpretatioVisualiser = configuration.debugCongiguration.partialInterpretatioVisualiser; | 325 | PartialInterpretationVisualiser partialInterpretatioVisualiser = configuration.debugCongiguration.partialInterpretatioVisualiser; |
331 | if(partialInterpretatioVisualiser != null && this.configuration.documentationLevel == DocumentationLevel.FULL && workspace != null) { | 326 | if(partialInterpretatioVisualiser != null && this.configuration.documentationLevel == DocumentationLevel.FULL && workspace != null) { |