aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar 20001LastOrder <boqi.chen@mail.mcgill.ca>2019-06-05 14:28:59 -0400
committerLibravatar 20001LastOrder <boqi.chen@mail.mcgill.ca>2019-06-05 14:28:59 -0400
commitb58804680cedf3e1c75c824636a23cdb0bed6fcd (patch)
tree641974cae5993556010325bd48f491f80818cc15
parentclean up metric directory (diff)
downloadVIATRA-Generator-b58804680cedf3e1c75c824636a23cdb0bed6fcd.tar.gz
VIATRA-Generator-b58804680cedf3e1c75c824636a23cdb0bed6fcd.tar.zst
VIATRA-Generator-b58804680cedf3e1c75c824636a23cdb0bed6fcd.zip
add hill climbing to best first strategy
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java29
1 files changed, 24 insertions, 5 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 4a5b9bc5..81b551fb 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,9 +14,11 @@ 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;
17import java.util.Iterator; 18import java.util.Iterator;
18import java.util.LinkedList; 19import java.util.LinkedList;
19import java.util.List; 20import java.util.List;
21import java.util.Map;
20import java.util.PriorityQueue; 22import java.util.PriorityQueue;
21import java.util.Random; 23import java.util.Random;
22 24
@@ -32,6 +34,7 @@ import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
32import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; 34import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
33import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; 35import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
34 36
37import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.MetricDistanceGroup;
35import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.PartialInterpretationMetric; 38import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.PartialInterpretationMetric;
36import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; 39import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel;
37import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; 40import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner;
@@ -189,8 +192,24 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
189// } 192// }
190 193
191 List<Object> activationIds = selectActivation(); 194 List<Object> activationIds = selectActivation();
195 PartialInterpretation model = (PartialInterpretation) context.getModel();
196 System.out.println(model.getNewElements().size() );
197 PartialInterpretationMetric.initPaths();
198 if(model.getNewElements().size() >= 10) {
199 Map<Object, Double> valueMap = new HashMap<Object, Double>();
200 System.out.println(PartialInterpretationMetric.calculateMetricDistance(model).getMPCDistance());
201 for(Object id : activationIds) {
202 context.executeAcitvationId(id);
203 model = (PartialInterpretation) context.getModel();
204 MetricDistanceGroup g = PartialInterpretationMetric.calculateMetricDistance(model);
205 valueMap.put(id, g.getMPCDistance());
206 context.backtrack();
207 }
208 Collections.sort(activationIds, Comparator.comparing(li -> valueMap.get(li)));
209 }
210
211
192 Iterator<Object> iterator = activationIds.iterator(); 212 Iterator<Object> iterator = activationIds.iterator();
193
194 213
195 while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) { 214 while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) {
196 final Object nextActivation = iterator.next(); 215 final Object nextActivation = iterator.next();
@@ -217,10 +236,10 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
217 boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFittness); 236 boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFittness);
218 if(consistencyCheckResult == true) { continue mainLoop; } 237 if(consistencyCheckResult == true) { continue mainLoop; }
219 238
220 if (context.isCurrentStateAlreadyTraversed()) { 239/* if (context.isCurrentStateAlreadyTraversed()) {
221 logger.info("The new state is already visited."); 240// logger.info("The new state is already visited.");
222 context.backtrack(); 241// context.backtrack();
223 } else if (!context.checkGlobalConstraints()) { 242// } else*/ if (!context.checkGlobalConstraints()) {
224 logger.debug("Global contraint is not satisifed."); 243 logger.debug("Global contraint is not satisifed.");
225 context.backtrack(); 244 context.backtrack();
226 } else { 245 } else {