diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend index 6435806d..05ce4f6e 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend | |||
@@ -10,13 +10,15 @@ class MultiplicityGoalConstraintCalculator { | |||
10 | val String targetRelationName; | 10 | val String targetRelationName; |
11 | val IQuerySpecification<?> querySpecification; | 11 | val IQuerySpecification<?> querySpecification; |
12 | var ViatraQueryMatcher<?> matcher; | 12 | var ViatraQueryMatcher<?> matcher; |
13 | val int minValue | ||
13 | val boolean containment | 14 | val boolean containment |
14 | val int cost | 15 | val int cost |
15 | 16 | ||
16 | public new(String targetRelationName, IQuerySpecification<?> querySpecification, boolean containment, int cost) { | 17 | public new(String targetRelationName, IQuerySpecification<?> querySpecification, int minValue, boolean containment, int cost) { |
17 | this.targetRelationName = targetRelationName | 18 | this.targetRelationName = targetRelationName |
18 | this.querySpecification = querySpecification | 19 | this.querySpecification = querySpecification |
19 | this.matcher = null | 20 | this.matcher = null |
21 | this.minValue = minValue | ||
20 | this.containment = containment | 22 | this.containment = containment |
21 | this.cost = cost | 23 | this.cost = cost |
22 | } | 24 | } |
@@ -25,6 +27,7 @@ class MultiplicityGoalConstraintCalculator { | |||
25 | this.targetRelationName = other.targetRelationName | 27 | this.targetRelationName = other.targetRelationName |
26 | this.querySpecification = other.querySpecification | 28 | this.querySpecification = other.querySpecification |
27 | this.matcher = null | 29 | this.matcher = null |
30 | this.minValue = other.minValue | ||
28 | this.containment = other.containment | 31 | this.containment = other.containment |
29 | this.cost = other.cost | 32 | this.cost = other.cost |
30 | } | 33 | } |
@@ -47,13 +50,17 @@ class MultiplicityGoalConstraintCalculator { | |||
47 | val allMatches = this.matcher.allMatches | 50 | val allMatches = this.matcher.allMatches |
48 | for(match : allMatches) { | 51 | for(match : allMatches) { |
49 | 52 | ||
50 | val missingMultiplicity = match.get(4) as Integer | 53 | val existingMultiplicity = match.get(4) as Integer |
51 | res += missingMultiplicity | 54 | if(existingMultiplicity < this.minValue) { |
55 | val missingMultiplicity = this.minValue-existingMultiplicity | ||
56 | res += missingMultiplicity | ||
57 | } | ||
52 | // if(missingMultiplicity!=0) { | 58 | // if(missingMultiplicity!=0) { |
53 | // println(targetRelationName+ " missing multiplicity: "+missingMultiplicity) | 59 | // println(targetRelationName+ " missing multiplicity: "+missingMultiplicity) |
54 | // } | 60 | // } |
55 | } | 61 | } |
56 | //println(targetRelationName+ " all missing multiplicities: "+res) | 62 | // if(res>0) |
63 | // println(targetRelationName+ " all missing multiplicities: "+res + "*"+cost+"="+res*cost) | ||
57 | return res*cost | 64 | return res*cost |
58 | } | 65 | } |
59 | } \ No newline at end of file | 66 | } \ No newline at end of file |