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 | 41 |
1 files changed, 38 insertions, 3 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 5a6fee2c..862ba245 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 | |||
@@ -11,12 +11,17 @@ package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse; | |||
11 | 11 | ||
12 | import java.util.ArrayList; | 12 | import java.util.ArrayList; |
13 | import java.util.Arrays; | 13 | import java.util.Arrays; |
14 | import java.util.Collection; | ||
14 | import java.util.Collections; | 15 | import java.util.Collections; |
15 | import java.util.Comparator; | 16 | import java.util.Comparator; |
16 | import java.util.Iterator; | 17 | import java.util.Iterator; |
18 | import java.util.LinkedList; | ||
17 | import java.util.List; | 19 | import java.util.List; |
18 | import java.util.PriorityQueue; | 20 | import java.util.PriorityQueue; |
19 | import java.util.Random; | 21 | import java.util.Random; |
22 | import java.util.SortedMap; | ||
23 | import java.util.TreeMap; | ||
24 | import java.util.TreeSet; | ||
20 | 25 | ||
21 | import org.apache.log4j.Logger; | 26 | import org.apache.log4j.Logger; |
22 | import org.eclipse.viatra.dse.api.strategy.interfaces.IStrategy; | 27 | import org.eclipse.viatra.dse.api.strategy.interfaces.IStrategy; |
@@ -24,6 +29,10 @@ import org.eclipse.viatra.dse.base.ThreadContext; | |||
24 | import org.eclipse.viatra.dse.objectives.Fitness; | 29 | import org.eclipse.viatra.dse.objectives.Fitness; |
25 | import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper; | 30 | import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper; |
26 | import org.eclipse.viatra.dse.solutionstore.SolutionStore; | 31 | import org.eclipse.viatra.dse.solutionstore.SolutionStore; |
32 | import org.eclipse.viatra.query.runtime.api.IPatternMatch; | ||
33 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | ||
34 | import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; | ||
35 | import org.eclipse.viatra.query.runtime.exception.ViatraQueryException; | ||
27 | 36 | ||
28 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; | 37 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; |
29 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration; | 38 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration; |
@@ -57,12 +66,15 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
57 | private SolutionStoreWithCopy solutionStoreWithCopy; | 66 | private SolutionStoreWithCopy solutionStoreWithCopy; |
58 | private SolutionStoreWithDiversityDescriptor solutionStoreWithDiversityDescriptor; | 67 | private SolutionStoreWithDiversityDescriptor solutionStoreWithDiversityDescriptor; |
59 | private int numberOfStatecoderFail=0; | 68 | private int numberOfStatecoderFail=0; |
69 | //Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> additionalPatterns = null; | ||
70 | //List<ViatraQueryMatcher<? extends IPatternMatch>> additionalMatchers = new LinkedList<ViatraQueryMatcher<? extends IPatternMatch>>(); | ||
60 | 71 | ||
61 | private int maxDepth = Integer.MAX_VALUE; | 72 | private int maxDepth = Integer.MAX_VALUE; |
62 | private boolean isInterrupted = false; | 73 | private boolean isInterrupted = false; |
63 | //private boolean backTrackIfSolution = true; | 74 | //private boolean backTrackIfSolution = true; |
64 | private boolean onlyBetterFirst = false; | 75 | private boolean onlyBetterFirst = false; |
65 | 76 | ||
77 | |||
66 | private PriorityQueue<TrajectoryWithFitness> trajectoiresToExplore; | 78 | private PriorityQueue<TrajectoryWithFitness> trajectoiresToExplore; |
67 | private Logger logger = Logger.getLogger(IStrategy.class); | 79 | private Logger logger = Logger.getLogger(IStrategy.class); |
68 | 80 | ||
@@ -84,12 +96,15 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
84 | 96 | ||
85 | } | 97 | } |
86 | 98 | ||
87 | public BestFirstStrategyForModelGeneration(ReasonerWorkspace workspace, LogicReasoner reasoner, LogicSolverConfiguration configuration, DiversityDescriptor descriptor) { | 99 | public BestFirstStrategyForModelGeneration( |
88 | this.maxDepth = Integer.MAX_VALUE; | 100 | ReasonerWorkspace workspace, LogicReasoner reasoner, LogicSolverConfiguration configuration, DiversityDescriptor descriptor/*, |
101 | Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> additionalPatterns*/) { | ||
102 | this.maxDepth = Integer.MAX_VALUE; | ||
89 | this.workspace = workspace; | 103 | this.workspace = workspace; |
90 | this.reasoner = reasoner; | 104 | this.reasoner = reasoner; |
91 | this.configuration = configuration; | 105 | this.configuration = configuration; |
92 | this.solutionStoreWithDiversityDescriptor = new SolutionStoreWithDiversityDescriptor(descriptor); | 106 | this.solutionStoreWithDiversityDescriptor = new SolutionStoreWithDiversityDescriptor(descriptor); |
107 | //this.additionalPatterns = additionalPatterns; | ||
93 | } | 108 | } |
94 | 109 | ||
95 | @Override | 110 | @Override |
@@ -108,6 +123,8 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
108 | return objectiveComparatorHelper.compare(o2.fitness, o1.fitness); | 123 | return objectiveComparatorHelper.compare(o2.fitness, o1.fitness); |
109 | } | 124 | } |
110 | }; | 125 | }; |
126 | |||
127 | |||
111 | 128 | ||
112 | trajectoiresToExplore = new PriorityQueue<TrajectoryWithFitness>(11, comparator); | 129 | trajectoiresToExplore = new PriorityQueue<TrajectoryWithFitness>(11, comparator); |
113 | 130 | ||
@@ -127,6 +144,18 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
127 | 144 | ||
128 | @Override | 145 | @Override |
129 | public void explore() { | 146 | public void explore() { |
147 | |||
148 | /*if(this.additionalPatterns!=null) { | ||
149 | for (IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>> additionalPattern : additionalPatterns) { | ||
150 | try { | ||
151 | this.additionalMatchers.add(additionalPattern.getMatcher(context.getQueryEngine())); | ||
152 | } catch (ViatraQueryException e) { | ||
153 | // TODO Auto-generated catch block | ||
154 | e.printStackTrace(); | ||
155 | } | ||
156 | } | ||
157 | }*/ | ||
158 | |||
130 | final ObjectiveComparatorHelper objectiveComparatorHelper = context.getObjectiveComparatorHelper(); | 159 | final ObjectiveComparatorHelper objectiveComparatorHelper = context.getObjectiveComparatorHelper(); |
131 | 160 | ||
132 | boolean globalConstraintsAreSatisfied = context.checkGlobalConstraints(); | 161 | boolean globalConstraintsAreSatisfied = context.checkGlobalConstraints(); |
@@ -210,9 +239,15 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
210 | final Fitness nextFitness = context.calculateFitness(); | 239 | final Fitness nextFitness = context.calculateFitness(); |
211 | if (nextFitness.isSatisifiesHardObjectives()) { | 240 | if (nextFitness.isSatisifiesHardObjectives()) { |
212 | if(solutionStoreWithDiversityDescriptor.isDifferent(context)) { | 241 | if(solutionStoreWithDiversityDescriptor.isDifferent(context)) { |
213 | solutionStoreWithCopy.newSolution(context); | 242 | /*SortedMap<String, Integer> x = new TreeMap<String, Integer>(); |
243 | for(ViatraQueryMatcher<? extends IPatternMatch> additioanMatcher : this.additionalMatchers) { | ||
244 | x.put(additioanMatcher.getPatternName(),additioanMatcher.countMatches()); | ||
245 | }*/ | ||
246 | |||
247 | solutionStoreWithCopy.newSolution(context/*,x*/); | ||
214 | solutionStoreWithDiversityDescriptor.newSolution(context); | 248 | solutionStoreWithDiversityDescriptor.newSolution(context); |
215 | solutionStore.newSolution(context); | 249 | solutionStore.newSolution(context); |
250 | |||
216 | logger.debug("Found a solution."); | 251 | logger.debug("Found a solution."); |
217 | } | 252 | } |
218 | } | 253 | } |