diff options
Diffstat (limited to 'Solvers/VIATRA-Solver')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java | 29 |
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; | |||
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; | ||
17 | import java.util.Iterator; | 18 | import java.util.Iterator; |
18 | import java.util.LinkedList; | 19 | import java.util.LinkedList; |
19 | import java.util.List; | 20 | import java.util.List; |
21 | import java.util.Map; | ||
20 | import java.util.PriorityQueue; | 22 | import java.util.PriorityQueue; |
21 | import java.util.Random; | 23 | import java.util.Random; |
22 | 24 | ||
@@ -32,6 +34,7 @@ import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | |||
32 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; | 34 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; |
33 | import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; | 35 | import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; |
34 | 36 | ||
37 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.MetricDistanceGroup; | ||
35 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.PartialInterpretationMetric; | 38 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.PartialInterpretationMetric; |
36 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; | 39 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; |
37 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; | 40 | import 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 { |