aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <marussy@mit.bme.hu>2020-06-27 17:56:46 +0200
committerLibravatar Kristóf Marussy <marussy@mit.bme.hu>2020-06-27 17:56:46 +0200
commit957082776dbb7efed53a783c5e5be6b443a9bb86 (patch)
tree6b88701d4b1b3928b7d3e7de49d177ca8c93ffad
parentMerge branch 'kris' (diff)
downloadVIATRA-Generator-957082776dbb7efed53a783c5e5be6b443a9bb86.tar.gz
VIATRA-Generator-957082776dbb7efed53a783c5e5be6b443a9bb86.tar.zst
VIATRA-Generator-957082776dbb7efed53a783c5e5be6b443a9bb86.zip
Fix scope + numerical propagation WIP
-rw-r--r--Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbinbin1701 -> 1701 bytes
-rw-r--r--Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbinbin2526 -> 2526 bytes
-rw-r--r--Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbinbin5334 -> 5334 bytes
-rw-r--r--Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbinbin4902 -> 4902 bytes
-rw-r--r--Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbinbin1717 -> 1717 bytes
-rw-r--r--Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/parser/antlr/.SolverLanguageTokenDefInjectingParser.xtendbinbin2742 -> 2742 bytes
-rw-r--r--Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/serializer/.SolverLanguageSyntheticTokenSyntacticSequencer.xtendbinbin2758 -> 2758 bytes
-rw-r--r--Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.classpath6
-rw-r--r--Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.settings/org.eclipse.jdt.core.prefs8
-rwxr-xr-xSolvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/lib/libviatracbc.sobin33944 -> 46416 bytes
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/MultiplicityGoalConstraintCalculator.xtend15
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/PolyhedronScopePropagator.xtend8
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend14
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend3
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend150
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend29
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend5
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java22
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend2
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend2
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/.gitignore1
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.run/inputs/SatelliteInstance.xmi2
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/run/RunGeneratorConfig.xtend6
23 files changed, 136 insertions, 137 deletions
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
index b5a7c99c..94c786eb 100644
--- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
+++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
Binary files differ
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
index 9274eee0..46ab9b95 100644
--- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
+++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
Binary files differ
diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbin b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbin
index 8e8e8c70..27dc1dd4 100644
--- a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbin
+++ b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbin
Binary files differ
diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbin b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbin
index 741776d1..d71f4f21 100644
--- a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbin
+++ b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbin
Binary files differ
diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbin b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbin
index 73356e7f..801783da 100644
--- a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbin
+++ b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbin
Binary files differ
diff --git a/Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/parser/antlr/.SolverLanguageTokenDefInjectingParser.xtendbin b/Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/parser/antlr/.SolverLanguageTokenDefInjectingParser.xtendbin
index 24f61d80..30c2ff9e 100644
--- a/Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/parser/antlr/.SolverLanguageTokenDefInjectingParser.xtendbin
+++ b/Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/parser/antlr/.SolverLanguageTokenDefInjectingParser.xtendbin
Binary files differ
diff --git a/Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/serializer/.SolverLanguageSyntheticTokenSyntacticSequencer.xtendbin b/Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/serializer/.SolverLanguageSyntheticTokenSyntacticSequencer.xtendbin
index eae3bd77..261f466c 100644
--- a/Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/serializer/.SolverLanguageSyntheticTokenSyntacticSequencer.xtendbin
+++ b/Application/org.eclipse.viatra.solver.language/xtend-gen/org/eclipse/viatra/solver/language/serializer/.SolverLanguageSyntheticTokenSyntacticSequencer.xtendbin
Binary files differ
diff --git a/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.classpath b/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.classpath
index e19039ae..93829d26 100644
--- a/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.classpath
+++ b/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.classpath
@@ -1,10 +1,6 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<classpath> 2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> 3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <attributes>
5 <attribute name="module" value="true"/>
6 </attributes>
7 </classpathentry>
8 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> 4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
9 <classpathentry kind="src" path="src"> 5 <classpathentry kind="src" path="src">
10 <attributes> 6 <attributes>
diff --git a/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.settings/org.eclipse.jdt.core.prefs b/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..9f6ece88
--- /dev/null
+++ b/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.release=disabled
8org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/lib/libviatracbc.so b/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/lib/libviatracbc.so
index 96289216..ba3cdc06 100755
--- a/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/lib/libviatracbc.so
+++ b/Solvers/ILP-Solver/hu.bme.mit.inf.dslreasoner.ilp.cbc/lib/libviatracbc.so
Binary files differ
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/MultiplicityGoalConstraintCalculator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/MultiplicityGoalConstraintCalculator.xtend
index 034420d6..b28cd584 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/MultiplicityGoalConstraintCalculator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/MultiplicityGoalConstraintCalculator.xtend
@@ -10,15 +10,13 @@ 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
14 val boolean containment 13 val boolean containment
15 val int cost 14 val int cost
16 15
17 public new(String targetRelationName, IQuerySpecification<?> querySpecification, int minValue, boolean containment, int cost) { 16 public new(String targetRelationName, IQuerySpecification<?> querySpecification, boolean containment, int cost) {
18 this.targetRelationName = targetRelationName 17 this.targetRelationName = targetRelationName
19 this.querySpecification = querySpecification 18 this.querySpecification = querySpecification
20 this.matcher = null 19 this.matcher = null
21 this.minValue = minValue
22 this.containment = containment 20 this.containment = containment
23 this.cost = cost 21 this.cost = cost
24 } 22 }
@@ -27,7 +25,6 @@ class MultiplicityGoalConstraintCalculator {
27 this.targetRelationName = other.targetRelationName 25 this.targetRelationName = other.targetRelationName
28 this.querySpecification = other.querySpecification 26 this.querySpecification = other.querySpecification
29 this.matcher = null 27 this.matcher = null
30 this.minValue = other.minValue
31 this.containment = other.containment 28 this.containment = other.containment
32 this.cost = other.cost 29 this.cost = other.cost
33 } 30 }
@@ -49,14 +46,8 @@ class MultiplicityGoalConstraintCalculator {
49 var res = 0 46 var res = 0
50 val allMatches = this.matcher.allMatches 47 val allMatches = this.matcher.allMatches
51 for(match : allMatches) { 48 for(match : allMatches) {
52 val existingMultiplicity = match.get(4) as Integer 49 val missingMultiplicity = match.get(2) as Integer
53 if(existingMultiplicity < this.minValue) { 50 res += missingMultiplicity
54 val missingMultiplicity = this.minValue-existingMultiplicity
55 res += missingMultiplicity
56 }
57// if(missingMultiplicity!=0) {
58// println(targetRelationName+ " missing multiplicity: "+missingMultiplicity)
59// }
60 } 51 }
61// if(res>0) 52// if(res>0)
62// println(targetRelationName+ " all missing multiplicities: "+res + "*"+cost+"="+res*cost) 53// println(targetRelationName+ " all missing multiplicities: "+res + "*"+cost+"="+res*cost)
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/PolyhedronScopePropagator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/PolyhedronScopePropagator.xtend
index 120fb18a..9b4dff0f 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/PolyhedronScopePropagator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/PolyhedronScopePropagator.xtend
@@ -88,6 +88,7 @@ class PolyhedronScopePropagator extends TypeHierarchyScopePropagator {
88 val result = operator.saturate() 88 val result = operator.saturate()
89 if (result == PolyhedronSaturationResult.EMPTY) { 89 if (result == PolyhedronSaturationResult.EMPTY) {
90 cache.put(signature, PolyhedronSignature.EMPTY) 90 cache.put(signature, PolyhedronSignature.EMPTY)
91// println("INVALID")
91 setScopesInvalid() 92 setScopesInvalid()
92 } else { 93 } else {
93 val resultSignature = polyhedron.createSignature 94 val resultSignature = polyhedron.createSignature
@@ -110,11 +111,8 @@ class PolyhedronScopePropagator extends TypeHierarchyScopePropagator {
110 } 111 }
111 } 112 }
112 113
113 override propagateAdditionToRelation(Relation r) { 114 override isPropagationNeededAfterAdditionToRelation(Relation r) {
114 super.propagateAdditionToRelation(r) 115 relevantRelations.contains(r) || super.isPropagationNeededAfterAdditionToRelation(r)
115 if (relevantRelations.contains(r)) {
116 propagateAllScopeConstraints()
117 }
118 } 116 }
119 117
120 def resetBounds() { 118 def resetBounds() {
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend
index 8f3a5bb0..8350c7f4 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/cardinality/ScopePropagator.xtend
@@ -114,21 +114,21 @@ class ScopePropagator {
114 } 114 }
115 } 115 }
116 116
117 def void propagateAdditionToRelation(Relation r) { 117 def isPropagationNeededAfterAdditionToRelation(Relation r) {
118 // Nothing to propagate. 118 false
119 } 119 }
120 120
121 private def removeOne(Scope scope) { 121 private def removeOne(Scope scope) {
122 if (scope.maxNewElements === 0) {
123 throw new IllegalArgumentException('''Inconsistent object creation: «scope.targetTypeInterpretation»''')
124 } else if (scope.maxNewElements > 0) {
125 scope.maxNewElements = scope.maxNewElements - 1
126 }
127 if (scope.minNewElements > 0) { 122 if (scope.minNewElements > 0) {
128 scope.minNewElements = scope.minNewElements - 1 123 scope.minNewElements = scope.minNewElements - 1
129 } 124 }
130 if (scope.minNewElementsHeuristic > 0) { 125 if (scope.minNewElementsHeuristic > 0) {
131 scope.minNewElementsHeuristic = scope.minNewElementsHeuristic - 1 126 scope.minNewElementsHeuristic = scope.minNewElementsHeuristic - 1
132 } 127 }
128 if (scope.maxNewElements > 0) {
129 scope.maxNewElements = scope.maxNewElements - 1
130 } else if (scope.maxNewElements === 0) {
131 setScopesInvalid()
132 }
133 } 133 }
134} 134}
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 238ade5b..d2ee80dc 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
@@ -15,9 +15,8 @@ class GoalConstraintProvider {
15 val queries = entry.value 15 val queries = entry.value
16 val targetRelationName = constraint.relation.name 16 val targetRelationName = constraint.relation.name
17 val query = queries.unfinishedMultiplicityQuery 17 val query = queries.unfinishedMultiplicityQuery
18 val minValue = constraint.lowerBound
19 val containment = constraint.containment 18 val containment = constraint.containment
20 res += new MultiplicityGoalConstraintCalculator(targetRelationName, query, minValue, containment, 1) 19 res += new MultiplicityGoalConstraintCalculator(targetRelationName, query, containment, 1)
21 } 20 }
22 } 21 }
23 return res 22 return res
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend
index 0b8a9019..863ee18b 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend
@@ -32,9 +32,12 @@ import java.util.LinkedHashMap
32import java.util.LinkedList 32import java.util.LinkedList
33import java.util.List 33import java.util.List
34import java.util.Map 34import java.util.Map
35import org.eclipse.viatra.query.runtime.api.AdvancedViatraQueryEngine
35import org.eclipse.viatra.query.runtime.api.GenericPatternMatch 36import org.eclipse.viatra.query.runtime.api.GenericPatternMatch
36import org.eclipse.viatra.query.runtime.api.IQuerySpecification 37import org.eclipse.viatra.query.runtime.api.IQuerySpecification
38import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
37import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher 39import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
40import org.eclipse.viatra.query.runtime.emf.EMFScope
38import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule 41import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule
39import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRuleFactory 42import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRuleFactory
40import org.eclipse.xtend.lib.annotations.Data 43import org.eclipse.xtend.lib.annotations.Data
@@ -45,6 +48,8 @@ class RefinementRuleProvider {
45 val extension PartialinterpretationFactory factory2 = PartialinterpretationFactory.eINSTANCE 48 val extension PartialinterpretationFactory factory2 = PartialinterpretationFactory.eINSTANCE
46 val extension LogiclanguageFactory factory3 = LogiclanguageFactory.eINSTANCE 49 val extension LogiclanguageFactory factory3 = LogiclanguageFactory.eINSTANCE
47 50
51 var AdvancedViatraQueryEngine queryEngine
52
48 def canonizeName(String name) { 53 def canonizeName(String name) {
49 return name.replace(' ','_') 54 return name.replace(' ','_')
50 } 55 }
@@ -60,6 +65,7 @@ class RefinementRuleProvider {
60 { 65 {
61 val res = new LinkedHashMap 66 val res = new LinkedHashMap
62 val recursiveObjectCreation = recursiveObjectCreation(p,i) 67 val recursiveObjectCreation = recursiveObjectCreation(p,i)
68 queryEngine = ViatraQueryEngine.on(new EMFScope(i)) as AdvancedViatraQueryEngine
63 for(LHSEntry: patterns.refineObjectQueries.entrySet) { 69 for(LHSEntry: patterns.refineObjectQueries.entrySet) {
64 val containmentRelation = LHSEntry.key.containmentRelation 70 val containmentRelation = LHSEntry.key.containmentRelation
65 val inverseRelation = LHSEntry.key.inverseContainment 71 val inverseRelation = LHSEntry.key.inverseContainment
@@ -90,8 +96,7 @@ class RefinementRuleProvider {
90 if(inverseRelation!== null) { 96 if(inverseRelation!== null) {
91 ruleBuilder.action[match | 97 ruleBuilder.action[match |
92 statistics.incrementTransformationCount 98 statistics.incrementTransformationCount
93// println(name) 99// println(name)
94 val startTime = System.nanoTime
95 //val problem = match.get(0) as LogicProblem 100 //val problem = match.get(0) as LogicProblem
96 val interpretation = match.get(1) as PartialInterpretation 101 val interpretation = match.get(1) as PartialInterpretation
97 val relationInterpretation = match.get(2) as PartialRelationInterpretation 102 val relationInterpretation = match.get(2) as PartialRelationInterpretation
@@ -99,79 +104,89 @@ class RefinementRuleProvider {
99 val typeInterpretation = match.get(4) as PartialComplexTypeInterpretation 104 val typeInterpretation = match.get(4) as PartialComplexTypeInterpretation
100 val container = match.get(5) as DefinedElement 105 val container = match.get(5) as DefinedElement
101 106
102 createObjectActionWithContainmentAndInverse( 107 queryEngine.delayUpdatePropagation [
103 nameNewElement, 108 val startTime = System.nanoTime
104 interpretation, 109 createObjectActionWithContainmentAndInverse(
105 typeInterpretation, 110 nameNewElement,
106 container, 111 interpretation,
107 relationInterpretation, 112 typeInterpretation,
108 inverseRelationInterpretation, 113 container,
109 [createDefinedElement], 114 relationInterpretation,
110 recursiceObjectCreations, 115 inverseRelationInterpretation,
111 scopePropagator 116 [createDefinedElement],
112 ) 117 recursiceObjectCreations,
113 118 scopePropagator
114 val propagatorStartTime = System.nanoTime 119 )
115 statistics.addExecutionTime(propagatorStartTime-startTime) 120 statistics.addExecutionTime(System.nanoTime-startTime)
121 ]
116 122
117 // Scope propagation 123 // Scope propagation
118 scopePropagator.propagateAllScopeConstraints() 124 queryEngine.delayUpdatePropagation [
119 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime) 125 val propagatorStartTime = System.nanoTime
126 scopePropagator.propagateAllScopeConstraints()
127 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime)
128 ]
120 ] 129 ]
121 } else { 130 } else {
122 ruleBuilder.action[match | 131 ruleBuilder.action[match |
123 statistics.incrementTransformationCount 132 statistics.incrementTransformationCount
124// println(name) 133// println(name)
125 val startTime = System.nanoTime
126 //val problem = match.get(0) as LogicProblem 134 //val problem = match.get(0) as LogicProblem
127 val interpretation = match.get(1) as PartialInterpretation 135 val interpretation = match.get(1) as PartialInterpretation
128 val relationInterpretation = match.get(2) as PartialRelationInterpretation 136 val relationInterpretation = match.get(2) as PartialRelationInterpretation
129 val typeInterpretation = match.get(3) as PartialComplexTypeInterpretation 137 val typeInterpretation = match.get(3) as PartialComplexTypeInterpretation
130 val container = match.get(4) as DefinedElement 138 val container = match.get(4) as DefinedElement
131 139
132 createObjectActionWithContainment( 140 queryEngine.delayUpdatePropagation [
133 nameNewElement, 141 val startTime = System.nanoTime
134 interpretation, 142 createObjectActionWithContainment(
135 typeInterpretation, 143 nameNewElement,
136 container, 144 interpretation,
137 relationInterpretation, 145 typeInterpretation,
138 [createDefinedElement], 146 container,
139 recursiceObjectCreations, 147 relationInterpretation,
140 scopePropagator 148 [createDefinedElement],
141 ) 149 recursiceObjectCreations,
142 150 scopePropagator
143 val propagatorStartTime = System.nanoTime 151 )
144 statistics.addExecutionTime(propagatorStartTime-startTime) 152 statistics.addExecutionTime(System.nanoTime-startTime)
153 ]
145 154
146 // Scope propagation 155 // Scope propagation
147 scopePropagator.propagateAllScopeConstraints() 156 queryEngine.delayUpdatePropagation [
148 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime) 157 val propagatorStartTime = System.nanoTime
158 scopePropagator.propagateAllScopeConstraints()
159 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime)
160 ]
149 ] 161 ]
150 } 162 }
151 } else { 163 } else {
152 ruleBuilder.action[match | 164 ruleBuilder.action[match |
153 statistics.incrementTransformationCount 165 statistics.incrementTransformationCount
154// println(name) 166// println(name)
155 val startTime = System.nanoTime
156 //val problem = match.get(0) as LogicProblem 167 //val problem = match.get(0) as LogicProblem
157 val interpretation = match.get(1) as PartialInterpretation 168 val interpretation = match.get(1) as PartialInterpretation
158 val typeInterpretation = match.get(2) as PartialComplexTypeInterpretation 169 val typeInterpretation = match.get(2) as PartialComplexTypeInterpretation
159 170
160 createObjectAction( 171 queryEngine.delayUpdatePropagation [
161 nameNewElement, 172 val startTime = System.nanoTime
162 interpretation, 173 createObjectAction(
163 typeInterpretation, 174 nameNewElement,
164 [createDefinedElement], 175 interpretation,
165 recursiceObjectCreations, 176 typeInterpretation,
166 scopePropagator 177 [createDefinedElement],
167 ) 178 recursiceObjectCreations,
168 179 scopePropagator
169 val propagatorStartTime = System.nanoTime 180 )
170 statistics.addExecutionTime(propagatorStartTime-startTime) 181 statistics.addExecutionTime(System.nanoTime-startTime)
182 ]
171 183
172 // Scope propagation 184 // Scope propagation
173 scopePropagator.propagateAllScopeConstraints() 185 queryEngine.delayUpdatePropagation [
174 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime) 186 val propagatorStartTime = System.nanoTime
187 scopePropagator.propagateAllScopeConstraints()
188 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime)
189 ]
175 ] 190 ]
176 } 191 }
177 return ruleBuilder.build 192 return ruleBuilder.build
@@ -342,7 +357,7 @@ class RefinementRuleProvider {
342 if (inverseRelation === null) { 357 if (inverseRelation === null) {
343 ruleBuilder.action [ match | 358 ruleBuilder.action [ match |
344 statistics.incrementTransformationCount 359 statistics.incrementTransformationCount
345 val startTime = System.nanoTime 360
346// println(name) 361// println(name)
347 // val problem = match.get(0) as LogicProblem 362 // val problem = match.get(0) as LogicProblem
348 // val interpretation = match.get(1) as PartialInterpretation 363 // val interpretation = match.get(1) as PartialInterpretation
@@ -350,19 +365,24 @@ class RefinementRuleProvider {
350 val src = match.get(3) as DefinedElement 365 val src = match.get(3) as DefinedElement
351 val trg = match.get(4) as DefinedElement 366 val trg = match.get(4) as DefinedElement
352 367
353 createRelationLinkAction(src, trg, relationInterpretation) 368 queryEngine.delayUpdatePropagation [
354 369 val startTime = System.nanoTime
355 val propagatorStartTime = System.nanoTime 370 createRelationLinkAction(src, trg, relationInterpretation)
356 statistics.addExecutionTime(propagatorStartTime-startTime) 371 statistics.addExecutionTime(System.nanoTime-startTime)
372 ]
357 373
358 // Scope propagation 374 // Scope propagation
359 scopePropagator.propagateAdditionToRelation(declaration) 375 if (scopePropagator.isPropagationNeededAfterAdditionToRelation(declaration)) {
360 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime) 376 queryEngine.delayUpdatePropagation [
377 val propagatorStartTime = System.nanoTime
378 scopePropagator.propagateAllScopeConstraints()
379 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime)
380 ]
381 }
361 ] 382 ]
362 } else { 383 } else {
363 ruleBuilder.action [ match | 384 ruleBuilder.action [ match |
364 statistics.incrementTransformationCount 385 statistics.incrementTransformationCount
365 val startTime = System.nanoTime
366// println(name) 386// println(name)
367 // val problem = match.get(0) as LogicProblem 387 // val problem = match.get(0) as LogicProblem
368 // val interpretation = match.get(1) as PartialInterpretation 388 // val interpretation = match.get(1) as PartialInterpretation
@@ -371,14 +391,20 @@ class RefinementRuleProvider {
371 val src = match.get(4) as DefinedElement 391 val src = match.get(4) as DefinedElement
372 val trg = match.get(5) as DefinedElement 392 val trg = match.get(5) as DefinedElement
373 393
374 createRelationLinkWithInverse(src, trg, relationInterpretation, inverseInterpretation) 394 queryEngine.delayUpdatePropagation [
375 395 val startTime = System.nanoTime
376 val propagatorStartTime = System.nanoTime 396 createRelationLinkWithInverse(src, trg, relationInterpretation, inverseInterpretation)
377 statistics.addExecutionTime(propagatorStartTime-startTime) 397 statistics.addExecutionTime(System.nanoTime-startTime)
398 ]
378 399
379 // Scope propagation 400 // Scope propagation
380 scopePropagator.propagateAdditionToRelation(declaration) 401 if (scopePropagator.isPropagationNeededAfterAdditionToRelation(declaration)) {
381 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime) 402 queryEngine.delayUpdatePropagation [
403 val propagatorStartTime = System.nanoTime
404 scopePropagator.propagateAllScopeConstraints()
405 statistics.addScopePropagationTime(System.nanoTime-propagatorStartTime)
406 ]
407 }
382 ] 408 ]
383 } 409 }
384 410
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
index d37acb6d..20ff58f2 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
@@ -2,19 +2,24 @@ package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage
2 2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput 3import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.TypeScopes 4import hu.bme.mit.inf.dslreasoner.logic.model.builder.TypeScopes
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.And
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.BoolLiteral
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement 7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.IntLiteral
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory 9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealLiteral
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration 11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
13import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.StringLiteral
14import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.SymbolicValue
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type 15import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration 16import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition 17import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
11import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 18import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
12import hu.bme.mit.inf.dslreasoner.logic.model.patterns.SupertypeStar 19import hu.bme.mit.inf.dslreasoner.logic.model.patterns.SupertypeStar
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partial2logicannotations.PartialModelRelation2Assertion 20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partial2logicannotations.PartialModelRelation2Assertion
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
15import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BooleanElement 21import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BooleanElement
16import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.IntegerElement 22import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.IntegerElement
17import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink
18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialBooleanInterpretation 23import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialBooleanInterpretation
19import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialComplexTypeInterpretation 24import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialComplexTypeInterpretation
20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialIntegerInterpretation 25import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialIntegerInterpretation
@@ -22,10 +27,10 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.par
22import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRealInterpretation 27import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRealInterpretation
23import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation 28import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
24import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialStringInterpretation 29import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialStringInterpretation
30import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
25import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory 31import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory
26import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RealElement 32import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RealElement
27import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.StringElement 33import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.StringElement
28import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink
29import java.math.BigDecimal 34import java.math.BigDecimal
30import java.util.HashMap 35import java.util.HashMap
31import java.util.Map 36import java.util.Map
@@ -35,14 +40,6 @@ import org.eclipse.viatra.query.runtime.emf.EMFScope
35import org.eclipse.xtend.lib.annotations.Data 40import org.eclipse.xtend.lib.annotations.Data
36 41
37import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 42import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
38import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.SymbolicValue
39import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.And
40import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.BoolLiteral
41import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.IntLiteral
42import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealLiteral
43import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.StringLiteral
44import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
45import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
46 43
47@Data class Problem2PartialInterpretationTrace { 44@Data class Problem2PartialInterpretationTrace {
48 Map<TypeDeclaration, PartialComplexTypeInterpretation> type2Interpretation 45 Map<TypeDeclaration, PartialComplexTypeInterpretation> type2Interpretation
@@ -194,7 +191,7 @@ class PartialInterpretationInitialiser {
194 interpretation.minNewElements = minNewElements 191 interpretation.minNewElements = minNewElements
195 interpretation.maxNewElements = maxNewElements 192 interpretation.maxNewElements = maxNewElements
196 // elements from problem are included 193 // elements from problem are included
197 if(maxNewElements>0) { 194 if(maxNewElements != 0) {
198 val newElements = createDefinedElement => [it.name = "New Objects"] 195 val newElements = createDefinedElement => [it.name = "New Objects"]
199 interpretation.openWorldElements += newElements 196 interpretation.openWorldElements += newElements
200 } 197 }
@@ -213,12 +210,8 @@ class PartialInterpretationInitialiser {
213 def private initialiseTypeScope(PartialTypeInterpratation interpretation, Integer min, Integer max) { 210 def private initialiseTypeScope(PartialTypeInterpratation interpretation, Integer min, Integer max) {
214 val res = createScope 211 val res = createScope
215 res.targetTypeInterpretation = interpretation 212 res.targetTypeInterpretation = interpretation
216 if(min !== null) { 213 res.minNewElements = min ?: 0
217 res.minNewElements = min 214 res.maxNewElements = max ?: -1
218 }
219 if(max !== null) {
220 res.maxNewElements = max
221 }
222 return res 215 return res
223 } 216 }
224 217
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend
index ddd25aac..e33a2590 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend
@@ -58,13 +58,14 @@ class ViatraReasonerConfiguration extends LogicSolverConfiguration {
58 public var runIntermediateNumericalConsistencyChecks = true 58 public var runIntermediateNumericalConsistencyChecks = true
59 59
60 public var punishSize = true 60 public var punishSize = true
61 public var scopeWeight = 1 61 public var scopeWeight = 2
62 public var conaintmentWeight = 2 62 public var conaintmentWeight = 1
63 public var nonContainmentWeight = 1 63 public var nonContainmentWeight = 1
64 public var unfinishedWFWeight = 1 64 public var unfinishedWFWeight = 1
65 65
66 public var ScopePropagatorStrategy scopePropagatorStrategy = new ScopePropagatorStrategy.Polyhedral( 66 public var ScopePropagatorStrategy scopePropagatorStrategy = new ScopePropagatorStrategy.Polyhedral(
67 PolyhedralScopePropagatorConstraints.Relational, PolyhedralScopePropagatorSolver.Clp) 67 PolyhedralScopePropagatorConstraints.Relational, PolyhedralScopePropagatorSolver.Clp)
68// public var ScopePropagatorStrategy scopePropagatorStrategy = ScopePropagatorStrategy.BasicTypeHierarchy
68 69
69 public var List<LinearTypeConstraintHint> hints = newArrayList 70 public var List<LinearTypeConstraintHint> hints = newArrayList
70 71
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 e529892c..09575384 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
@@ -18,6 +18,7 @@ import java.util.List;
18import java.util.PriorityQueue; 18import java.util.PriorityQueue;
19import java.util.Random; 19import java.util.Random;
20 20
21import org.apache.log4j.Level;
21import org.apache.log4j.Logger; 22import org.apache.log4j.Logger;
22import org.eclipse.emf.ecore.EObject; 23import org.eclipse.emf.ecore.EObject;
23import org.eclipse.emf.ecore.util.EcoreUtil; 24import org.eclipse.emf.ecore.util.EcoreUtil;
@@ -76,7 +77,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
76 private volatile boolean isInterrupted = false; 77 private volatile boolean isInterrupted = false;
77 private ModelResult modelResultByInternalSolver = null; 78 private ModelResult modelResultByInternalSolver = null;
78 private Random random = new Random(); 79 private Random random = new Random();
79 //private Collection<ViatraQueryMatcher<? extends IPatternMatch>> matchers; 80// private Collection<ViatraQueryMatcher<? extends IPatternMatch>> matchers;
80 public ActivationSelector activationSelector = new EvenActivationSelector(random); 81 public ActivationSelector activationSelector = new EvenActivationSelector(random);
81 public ViatraReasonerSolutionSaver solutionSaver; 82 public ViatraReasonerSolutionSaver solutionSaver;
82 public NumericSolver numericSolver; 83 public NumericSolver numericSolver;
@@ -100,7 +101,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
100 this.method = method; 101 this.method = method;
101 this.solutionSaver = solutionSaver; 102 this.solutionSaver = solutionSaver;
102 this.numericSolver = numericSolver; 103 this.numericSolver = numericSolver;
103 //logger.setLevel(Level.DEBUG); 104// logger.setLevel(Level.DEBUG);
104 } 105 }
105 106
106 public int getNumberOfStatecoderFail() { 107 public int getNumberOfStatecoderFail() {
@@ -136,7 +137,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
136// ViatraQueryEngine engine = context.getQueryEngine(); 137// ViatraQueryEngine engine = context.getQueryEngine();
137// matchers = new LinkedList<ViatraQueryMatcher<? extends IPatternMatch>>(); 138// matchers = new LinkedList<ViatraQueryMatcher<? extends IPatternMatch>>();
138// for(IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>> p : this.method.getAllPatterns()) { 139// for(IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>> p : this.method.getAllPatterns()) {
139// //System.out.println(p.getSimpleName());
140// ViatraQueryMatcher<? extends IPatternMatch> matcher = p.getMatcher(engine); 140// ViatraQueryMatcher<? extends IPatternMatch> matcher = p.getMatcher(engine);
141// matchers.add(matcher); 141// matchers.add(matcher);
142// } 142// }
@@ -154,13 +154,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
154 154
155 @Override 155 @Override
156 public void explore() { 156 public void explore() {
157// System.out.println("press enter");
158// try {
159// new BufferedReader(new InputStreamReader(System.in)).readLine();
160// } catch (IOException e) {
161// // TODO Auto-generated catch block
162// e.printStackTrace();
163// }
164 this.explorationStarted=System.nanoTime(); 157 this.explorationStarted=System.nanoTime();
165 if (!checkGlobalConstraints()) { 158 if (!checkGlobalConstraints()) {
166 logger.info("Global contraint is not satisifed in the first state. Terminate."); 159 logger.info("Global contraint is not satisifed in the first state. Terminate.");
@@ -219,10 +212,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
219 212
220 while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) { 213 while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) {
221 final Object nextActivation = iterator.next(); 214 final Object nextActivation = iterator.next();
222// if (!iterator.hasNext()) {
223// logger.debug("Last untraversed activation of the state.");
224// trajectoiresToExplore.remove(currentTrajectoryWithfitness);
225// }
226 logger.debug("Executing new activation: " + nextActivation); 215 logger.debug("Executing new activation: " + nextActivation);
227 context.executeAcitvationId(nextActivation); 216 context.executeAcitvationId(nextActivation);
228 method.getStatistics().incrementDecisionCount(); 217 method.getStatistics().incrementDecisionCount();
@@ -230,10 +219,9 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
230 visualiseCurrentState(); 219 visualiseCurrentState();
231// for(ViatraQueryMatcher<? extends IPatternMatch> matcher : matchers) { 220// for(ViatraQueryMatcher<? extends IPatternMatch> matcher : matchers) {
232// int c = matcher.countMatches(); 221// int c = matcher.countMatches();
233// if(c>=100) { 222// if(c>=1) {
234// System.out.println(c+ " " +matcher.getPatternName()); 223// System.out.println(c+ " " +matcher.getPatternName());
235// } 224// }
236//
237// } 225// }
238 226
239 boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFitness); 227 boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFitness);
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
index d2faaa65..481f4ce1 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
@@ -112,7 +112,7 @@ class ModelGenerationCompositeObjective implements IThreeValuedObjective {
112 112
113 override isHardObjective() { true } 113 override isHardObjective() { true }
114 114
115 override satisifiesHardObjective(Double fitness) { fitness <= 0.001 } 115 override satisifiesHardObjective(Double fitness) { fitness <= 0.9 }
116 116
117 override setComparator(Comparator<Double> comparator) { 117 override setComparator(Comparator<Double> comparator) {
118 throw new UnsupportedOperationException("Model generation objective comparator cannot be set.") 118 throw new UnsupportedOperationException("Model generation objective comparator cannot be set.")
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend
index 69a734f8..7abc5cb8 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend
@@ -25,7 +25,7 @@ class ScopeObjective implements IObjective{
25 val interpretation = context.model as PartialInterpretation 25 val interpretation = context.model as PartialInterpretation
26 var res = interpretation.minNewElementsHeuristic.doubleValue 26 var res = interpretation.minNewElementsHeuristic.doubleValue
27 for(scope : interpretation.scopes) { 27 for(scope : interpretation.scopes) {
28 res += scope.minNewElementsHeuristic*2 28 res += scope.minNewElementsHeuristic
29 } 29 }
30 return res 30 return res
31 } 31 }
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/.gitignore
deleted file mode 100644
index 7050a7e3..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
1/queries/
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/inputs/SatelliteInstance.xmi b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/inputs/SatelliteInstance.xmi
index 3d07a199..66512878 100644
--- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/inputs/SatelliteInstance.xmi
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/inputs/SatelliteInstance.xmi
@@ -4,4 +4,4 @@
4 xmlns:xmi="http://www.omg.org/XMI" 4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xmlns:satellite="http://www.example.org/satellite" 6 xmlns:satellite="http://www.example.org/satellite"
7 xsi:schemaLocation="http://www.example.org/satellite ../model/satellite.ecore"/> 7 xsi:schemaLocation="http://www.example.org/satellite ../../hu.bme.mit.inf.dslreasoner.domains.satellite/model/satellite.ecore"/>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/run/RunGeneratorConfig.xtend b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/run/RunGeneratorConfig.xtend
index 20eed2e2..e4d6fe9f 100644
--- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/run/RunGeneratorConfig.xtend
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/run/RunGeneratorConfig.xtend
@@ -12,7 +12,9 @@ import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.RuntimeEn
12import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ScopeSpecification 12import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ScopeSpecification
13import hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor 13import hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor
14import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor 14import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor
15import hu.bme.mit.inf.dslreasoner.application.execution.StandardOutputBasedScriptConsole
15import java.io.File 16import java.io.File
17import java.io.PrintWriter
16import java.text.SimpleDateFormat 18import java.text.SimpleDateFormat
17import java.util.Date 19import java.util.Date
18import org.apache.commons.cli.BasicParser 20import org.apache.commons.cli.BasicParser
@@ -23,8 +25,6 @@ import org.apache.commons.cli.Option
23import org.apache.commons.cli.Options 25import org.apache.commons.cli.Options
24import org.apache.commons.cli.ParseException 26import org.apache.commons.cli.ParseException
25import org.eclipse.core.runtime.NullProgressMonitor 27import org.eclipse.core.runtime.NullProgressMonitor
26import com.google.common.io.Files
27import java.io.PrintWriter
28 28
29class RunGeneratorConfig { 29class RunGeneratorConfig {
30 static var SIZE_LB = 20 30 static var SIZE_LB = 20
@@ -102,7 +102,7 @@ class RunGeneratorConfig {
102 val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm") 102 val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm")
103 val formattedDate = format.format(date) 103 val formattedDate = format.format(date)
104 104
105 val executor = new ScriptExecutor 105 val executor = new ScriptExecutor(StandardOutputBasedScriptConsole.FACTORY)
106 val path = "config//generic" + DOMAIN + ".vsconfig" 106 val path = "config//generic" + DOMAIN + ".vsconfig"
107 var ConfigurationScript config = StandaloneScriptExecutor.loadScript(path) 107 var ConfigurationScript config = StandaloneScriptExecutor.loadScript(path)
108 108