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:
authorLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-04-09 23:11:20 +0200
committerLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-04-09 23:11:20 +0200
commitec11efe9e0c3863be32e740b28e124499ad653f9 (patch)
tree7e4c5b1c6d501aa3ac53e66546a1625f91d11572 /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java
parentFix solution store for optimization (diff)
downloadVIATRA-Generator-ec11efe9e0c3863be32e740b28e124499ad653f9.tar.gz
VIATRA-Generator-ec11efe9e0c3863be32e740b28e124499ad653f9.tar.zst
VIATRA-Generator-ec11efe9e0c3863be32e740b28e124499ad653f9.zip
Make diversity checking work with optimization
Proof of concept implementation, mixing diversity checking and optimization may not be very effective in practice
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.java19
1 files changed, 2 insertions, 17 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 1234d54b..6ff867d7 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
@@ -75,7 +75,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
75 // Running 75 // Running
76 private PriorityQueue<TrajectoryWithFitness> trajectoiresToExplore; 76 private PriorityQueue<TrajectoryWithFitness> trajectoiresToExplore;
77 private SolutionStore solutionStore; 77 private SolutionStore solutionStore;
78 private SolutionStoreWithDiversityDescriptor solutionStoreWithDiversityDescriptor;
79 private volatile boolean isInterrupted = false; 78 private volatile boolean isInterrupted = false;
80 private ModelResult modelResultByInternalSolver = null; 79 private ModelResult modelResultByInternalSolver = null;
81 private Random random = new Random(); 80 private Random random = new Random();
@@ -96,9 +95,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
96 this.method = method; 95 this.method = method;
97 } 96 }
98 97
99 public SolutionStoreWithDiversityDescriptor getSolutionStoreWithDiversityDescriptor() {
100 return solutionStoreWithDiversityDescriptor;
101 }
102 public int getNumberOfStatecoderFail() { 98 public int getNumberOfStatecoderFail() {
103 return numberOfStatecoderFail; 99 return numberOfStatecoderFail;
104 } 100 }
@@ -117,8 +113,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
117 matchers.add(matcher); 113 matchers.add(matcher);
118 } 114 }
119 115
120 this.solutionStoreWithDiversityDescriptor = new SolutionStoreWithDiversityDescriptor(configuration.diversityRequirement);
121
122 final ObjectiveComparatorHelper objectiveComparatorHelper = context.getObjectiveComparatorHelper(); 116 final ObjectiveComparatorHelper objectiveComparatorHelper = context.getObjectiveComparatorHelper();
123 this.comparator = new Comparator<TrajectoryWithFitness>() { 117 this.comparator = new Comparator<TrajectoryWithFitness>() {
124 @Override 118 @Override
@@ -142,7 +136,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
142 } 136 }
143 137
144 final Fitness firstfitness = context.calculateFitness(); 138 final Fitness firstfitness = context.calculateFitness();
145 checkForSolution(firstfitness); 139 solutionStore.newSolution(context);
146 140
147 final ObjectiveComparatorHelper objectiveComparatorHelper = context.getObjectiveComparatorHelper(); 141 final ObjectiveComparatorHelper objectiveComparatorHelper = context.getObjectiveComparatorHelper();
148 final Object[] firstTrajectory = context.getTrajectory().toArray(new Object[0]); 142 final Object[] firstTrajectory = context.getTrajectory().toArray(new Object[0]);
@@ -215,7 +209,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
215 context.backtrack(); 209 context.backtrack();
216 } else { 210 } else {
217 final Fitness nextFitness = context.calculateFitness(); 211 final Fitness nextFitness = context.calculateFitness();
218 checkForSolution(nextFitness); 212 solutionStore.newSolution(context);
219 if (context.getDepth() > configuration.searchSpaceConstraints.maxDepth) { 213 if (context.getDepth() > configuration.searchSpaceConstraints.maxDepth) {
220 logger.debug("Reached max depth."); 214 logger.debug("Reached max depth.");
221 context.backtrack(); 215 context.backtrack();
@@ -264,15 +258,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
264 return activationIds; 258 return activationIds;
265 } 259 }
266 260
267 private void checkForSolution(final Fitness fitness) {
268 if (fitness.isSatisifiesHardObjectives()) {
269 if (solutionStoreWithDiversityDescriptor.isDifferent(context)) {
270 solutionStoreWithDiversityDescriptor.newSolution(context);
271 solutionStore.newSolution(context);
272 }
273 }
274 }
275
276 @Override 261 @Override
277 public void interruptStrategy() { 262 public void interruptStrategy() {
278 isInterrupted = true; 263 isInterrupted = true;