diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend index 87f7e339..0e8d341a 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend | |||
@@ -19,38 +19,40 @@ import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher | |||
19 | import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* | 19 | import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* |
20 | 20 | ||
21 | class GoalConstraintProvider { | 21 | class GoalConstraintProvider { |
22 | val calculateObjectCost = true | 22 | val calculateObjectCost = false |
23 | 23 | ||
24 | def public getUnfinishedMultiplicityQueries(LogicProblem p, GeneratedPatterns patterns) { | 24 | def public getUnfinishedMultiplicityQueries(LogicProblem p, GeneratedPatterns patterns) { |
25 | val res = new ArrayList() | 25 | val res = new ArrayList() |
26 | 26 | ||
27 | res.addAll(patterns.unfinishedContainmentMulticiplicityQueries,true) | 27 | res.addAll(patterns.unfinishedNonContainmentMulticiplicityQueries,false) |
28 | if(calculateObjectCost) { | 28 | if(calculateObjectCost) { |
29 | val middingObjectCost = calculateMissingObjectCost(p) | 29 | val missingObjectCost = calculateMissingObjectCost(p) |
30 | res.addAll(patterns.unfinishedNonContainmentMulticiplicityQueries,false) | 30 | res.addAll(patterns.unfinishedContainmentMulticiplicityQueries,true,missingObjectCost) |
31 | } else { | 31 | } else { |
32 | res.addAll(patterns.unfinishedNonContainmentMulticiplicityQueries,false) | 32 | res.addAll(patterns.unfinishedContainmentMulticiplicityQueries,true) |
33 | } | 33 | } |
34 | return res | 34 | return res |
35 | } | 35 | } |
36 | 36 | ||
37 | def addAll(ArrayList<MultiplicityGoalConstraintCalculator> res, Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> queries, boolean containment) { | 37 | def addAll(ArrayList<MultiplicityGoalConstraintCalculator> res, Map<Relation, Pair<IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>,Integer>> queries, boolean containment) { |
38 | for(multiplicityQuery : queries.entrySet) { | 38 | for(multiplicityQuery : queries.entrySet) { |
39 | val targetRelationName = multiplicityQuery.key.name | 39 | val targetRelationName = multiplicityQuery.key.name |
40 | val query = multiplicityQuery.value | 40 | val query = multiplicityQuery.value.key |
41 | res += new MultiplicityGoalConstraintCalculator(targetRelationName,query,containment,1); | 41 | val minValue = multiplicityQuery.value.value |
42 | res += new MultiplicityGoalConstraintCalculator(targetRelationName,query,minValue,containment,1); | ||
42 | } | 43 | } |
43 | } | 44 | } |
44 | def addAll( | 45 | def addAll( |
45 | ArrayList<MultiplicityGoalConstraintCalculator> res, | 46 | ArrayList<MultiplicityGoalConstraintCalculator> res, |
46 | Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> queries, | 47 | Map<Relation, Pair<IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>,Integer>> queries, |
47 | boolean containment, | 48 | boolean containment, |
48 | Map<Relation, Integer> cost | 49 | Map<Relation, Integer> cost |
49 | ) { | 50 | ) { |
50 | for(multiplicityQuery : queries.entrySet) { | 51 | for(multiplicityQuery : queries.entrySet) { |
51 | val targetRelationName = multiplicityQuery.key.name | 52 | val targetRelationName = multiplicityQuery.key.name |
52 | val query = multiplicityQuery.value | 53 | val query = multiplicityQuery.value.key |
53 | res += new MultiplicityGoalConstraintCalculator(targetRelationName,query,containment,multiplicityQuery.key.lookup(cost)) | 54 | val minValue = multiplicityQuery.value.value |
55 | res += new MultiplicityGoalConstraintCalculator(targetRelationName,query,minValue,containment,multiplicityQuery.key.lookup(cost)) | ||
54 | } | 56 | } |
55 | } | 57 | } |
56 | 58 | ||
@@ -80,7 +82,7 @@ class GoalConstraintProvider { | |||
80 | for(containment : containments) { | 82 | for(containment : containments) { |
81 | val key = containment | 83 | val key = containment |
82 | val value = (containment.parameters.get(1) as ComplexTypeReference).referred.count(type2NewCost) | 84 | val value = (containment.parameters.get(1) as ComplexTypeReference).referred.count(type2NewCost) |
83 | //println('''«key.name» --> «value» new''') | 85 | // println('''«key.name» --> «value» new''') |
84 | res.put(key,value) | 86 | res.put(key,value) |
85 | } | 87 | } |
86 | return res | 88 | return res |