aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend
diff options
context:
space:
mode:
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.xtend26
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
19import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 19import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
20 20
21class GoalConstraintProvider { 21class 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