aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Lili <Lili@192.168.10.124>2018-05-15 17:14:45 +0200
committerLibravatar Lili <Lili@192.168.10.124>2018-05-15 17:14:45 +0200
commite85a9395120a2c4033c8b4bb1629de9d2ce3c6d4 (patch)
tree57e86cbcc7e310ae1bc727dc2131859b454eefb1
parentMoved partial model management is moved to one project (+1 PM edge fix) (diff)
downloadVIATRA-Generator-e85a9395120a2c4033c8b4bb1629de9d2ce3c6d4.tar.gz
VIATRA-Generator-e85a9395120a2c4033c8b4bb1629de9d2ce3c6d4.tar.zst
VIATRA-Generator-e85a9395120a2c4033c8b4bb1629de9d2ce3c6d4.zip
Initial implementation of cardinality calculator
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java8
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/CardinalityCalculator.java25
2 files changed, 33 insertions, 0 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 63697887..5be332fd 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
@@ -62,6 +62,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
62 private PartialInterpretation2Logic partialInterpretation2Logic = new PartialInterpretation2Logic(); 62 private PartialInterpretation2Logic partialInterpretation2Logic = new PartialInterpretation2Logic();
63 private Comparator<TrajectoryWithFitness> comparator; 63 private Comparator<TrajectoryWithFitness> comparator;
64 private Logger logger = Logger.getLogger(IStrategy.class); 64 private Logger logger = Logger.getLogger(IStrategy.class);
65 private CardinalityCalculator cardinalityCalculator = new CardinalityCalculator();
65 66
66 // Running 67 // Running
67 private PriorityQueue<TrajectoryWithFitness> trajectoiresToExplore; 68 private PriorityQueue<TrajectoryWithFitness> trajectoiresToExplore;
@@ -119,6 +120,10 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
119 logger.info("Global contraint is not satisifed in the first state. Terminate."); 120 logger.info("Global contraint is not satisifed in the first state. Terminate.");
120 return; 121 return;
121 } 122 }
123 if(cardinalityCalculator.isViolated((PartialInterpretation) (context.getModel()), configuration.typeScopes)) {
124 logger.info("Cardinality constraint is violated in the first state. Terminate.");
125 return;
126 }
122 if (configuration.searchSpaceConstraints.maxDepth == 0) { 127 if (configuration.searchSpaceConstraints.maxDepth == 0) {
123 logger.info("Maximal depth is reached in the initial solution. Terminate."); 128 logger.info("Maximal depth is reached in the initial solution. Terminate.");
124 return; 129 return;
@@ -176,6 +181,9 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
176 } else if (!context.checkGlobalConstraints()) { 181 } else if (!context.checkGlobalConstraints()) {
177 logger.debug("Global contraint is not satisifed."); 182 logger.debug("Global contraint is not satisifed.");
178 context.backtrack(); 183 context.backtrack();
184 } else if (cardinalityCalculator.isViolated((PartialInterpretation) (context.getModel()), configuration.typeScopes)) {
185 logger.debug("Cardinality constraint is violated.");
186 context.backtrack();
179 } else { 187 } else {
180 final Fitness nextFitness = context.calculateFitness(); 188 final Fitness nextFitness = context.calculateFitness();
181 checkForSolution(nextFitness); 189 checkForSolution(nextFitness);
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/CardinalityCalculator.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/CardinalityCalculator.java
new file mode 100644
index 00000000..3dd2157e
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/CardinalityCalculator.java
@@ -0,0 +1,25 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse;
2
3import org.eclipse.emf.common.util.EList;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.builder.TypeScopes;
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type;
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation;
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation;
10
11public class CardinalityCalculator {
12 public boolean isViolated(PartialInterpretation partialInterpretation, TypeScopes typeScopes) {
13// LogicProblem problem = partialInterpretation.getProblem();
14// EList<Type> types = problem.getTypes();
15// for (Type type : types) {
16// type.isIsAbstract()
17// }
18// problem.getAnnotations().
19// EList<PartialTypeInterpratation> partialtypeinterpratation = partialInterpretation.getPartialtypeinterpratation();
20//
21//
22// typeScopes.minNewElementsByType
23 return false;
24 }
25}