aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java
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/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.java39
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;
14import java.util.Collection; 14import java.util.Collection;
15import java.util.Collections; 15import java.util.Collections;
16import java.util.Comparator; 16import java.util.Comparator;
17import java.util.HashMap;
18import java.util.Iterator; 17import java.util.Iterator;
19import java.util.LinkedList; 18import java.util.LinkedList;
20import java.util.List; 19import java.util.List;
21import java.util.Map;
22import java.util.PriorityQueue; 20import java.util.PriorityQueue;
23import java.util.Random; 21import java.util.Random;
24 22
23import org.apache.log4j.Level;
25import org.apache.log4j.Logger; 24import org.apache.log4j.Logger;
26import org.eclipse.emf.ecore.util.EcoreUtil; 25import org.eclipse.emf.ecore.util.EcoreUtil;
27import org.eclipse.viatra.dse.api.strategy.interfaces.IStrategy; 26import org.eclipse.viatra.dse.api.strategy.interfaces.IStrategy;
28import org.eclipse.viatra.dse.base.ThreadContext; 27import org.eclipse.viatra.dse.base.ThreadContext;
29import org.eclipse.viatra.dse.objectives.Fitness; 28import org.eclipse.viatra.dse.objectives.Fitness;
29import org.eclipse.viatra.dse.objectives.IObjective;
30import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper; 30import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper;
31import org.eclipse.viatra.dse.solutionstore.SolutionStore; 31import org.eclipse.viatra.dse.solutionstore.SolutionStore;
32import org.eclipse.viatra.query.runtime.api.IPatternMatch; 32import org.eclipse.viatra.query.runtime.api.IPatternMatch;
@@ -34,8 +34,6 @@ import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
34import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; 34import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
35import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; 35import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
36 36
37import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.MetricDistanceGroup;
38import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.PartialInterpretationMetric;
39import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; 37import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel;
40import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; 38import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner;
41import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; 39import 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) {