diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner')
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 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse; | ||
2 | |||
3 | import org.eclipse.emf.common.util.EList; | ||
4 | |||
5 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.TypeScopes; | ||
6 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; | ||
7 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; | ||
8 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; | ||
9 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation; | ||
10 | |||
11 | public 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 | } | ||