aboutsummaryrefslogtreecommitdiffstats
path: root/Domains/ca.mcgill.rtgmrt.example.modes3/src/modes3/run/Modes3ModelGenerator.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Domains/ca.mcgill.rtgmrt.example.modes3/src/modes3/run/Modes3ModelGenerator.xtend')
-rw-r--r--Domains/ca.mcgill.rtgmrt.example.modes3/src/modes3/run/Modes3ModelGenerator.xtend30
1 files changed, 18 insertions, 12 deletions
diff --git a/Domains/ca.mcgill.rtgmrt.example.modes3/src/modes3/run/Modes3ModelGenerator.xtend b/Domains/ca.mcgill.rtgmrt.example.modes3/src/modes3/run/Modes3ModelGenerator.xtend
index 71d1798f..fac7c496 100644
--- a/Domains/ca.mcgill.rtgmrt.example.modes3/src/modes3/run/Modes3ModelGenerator.xtend
+++ b/Domains/ca.mcgill.rtgmrt.example.modes3/src/modes3/run/Modes3ModelGenerator.xtend
@@ -8,6 +8,7 @@ import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
8import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor 8import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
9import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsFactory 9import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsFactory
10import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage 10import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage
11import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
11import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder 12import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage 13import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage
13import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition 14import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
@@ -22,6 +23,7 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.Polyhedr
22import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.PolyhedralScopePropagatorSolver 23import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.PolyhedralScopePropagatorSolver
23import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy 24import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy
24import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic 25import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
26import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
25import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialComplexTypeInterpretation 27import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialComplexTypeInterpretation
26import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation 28import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
27import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage 29import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage
@@ -44,8 +46,6 @@ import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions
44import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchEMFBackendFactory 46import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchEMFBackendFactory
45import org.eclipse.viatra.query.runtime.rete.matcher.ReteBackendFactory 47import org.eclipse.viatra.query.runtime.rete.matcher.ReteBackendFactory
46import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor 48import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor
47import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
48import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
49 49
50@FinalFieldsConstructor 50@FinalFieldsConstructor
51class Modes3ModelGenerator { 51class Modes3ModelGenerator {
@@ -92,22 +92,32 @@ class Modes3ModelGenerator {
92 minNewElements = modelSize 92 minNewElements = modelSize
93 maxNewElements = modelSize 93 maxNewElements = modelSize
94 minNewElementsByType => [ 94 minNewElementsByType => [
95 put(ecore2Logic.TypeofEClass(metamodelLogic.trace, Modes3Package.eINSTANCE.turnout), 1) 95// put(ecore2Logic.TypeofEClass(metamodelLogic.trace, Modes3Package.eINSTANCE.turnout), 5)
96 ] 96 ]
97 maxNewElementsByType => [ 97 maxNewElementsByType => [
98 put(ecore2Logic.TypeofEClass(metamodelLogic.trace, Modes3Package.eINSTANCE.train), 5) 98 put(ecore2Logic.TypeofEClass(metamodelLogic.trace, Modes3Package.eINSTANCE.train), 5)
99 put(ecore2Logic.TypeofEClass(metamodelLogic.trace, Modes3Package.eINSTANCE.turnout), 5)
99 ] 100 ]
100 ] 101 ]
101 solutionScope.numberOfRequiredSolutions = 1 102 solutionScope => [
103 numberOfRequiredSolutions = 1
104 ]
105 scopeWeight = 5
102 nameNewElements = false 106 nameNewElements = false
103 typeInferenceMethod = TypeInferenceMethod.PreliminaryAnalysis 107 typeInferenceMethod = TypeInferenceMethod.PreliminaryAnalysis
104 stateCoderStrategy = StateCoderStrategy::Neighbourhood 108 stateCoderStrategy = StateCoderStrategy.PairwiseNeighbourhood
105 scopePropagatorStrategy = new ScopePropagatorStrategy.Polyhedral( 109 scopePropagatorStrategy = new ScopePropagatorStrategy.Polyhedral(
106 PolyhedralScopePropagatorConstraints.Relational, PolyhedralScopePropagatorSolver.Clp) 110 PolyhedralScopePropagatorConstraints.Relational, PolyhedralScopePropagatorSolver.Clp)
107// unitPropagationPatternGenerators += new Modes3UnitPropagationGenerator(ecore2Logic, metamodelLogic.trace) 111 hints += new Modes3TypeScopeHint(ecore2Logic, metamodelLogic.trace)
108 debugConfiguration.partialInterpretatioVisualiser = null 112 unitPropagationPatternGenerators += new Modes3UnitPropagationGenerator(ecore2Logic, metamodelLogic.trace)
113 debugConfiguration => [
114 partialInterpretatioVisualiser = new GraphvizVisualiser
115// partalInterpretationVisualisationFrequency = 50
116 ]
117 documentationLevel = DocumentationLevel.NORMAL
109 ] 118 ]
110 val workspace = new FileSystemWorkspace("output/", "") 119 val workspace = new FileSystemWorkspace("output/", "")
120 workspace.writeModel(logic.output, "problem.logicproblem")
111 val solution = solver.solve(logic.output, config, workspace) 121 val solution = solver.solve(logic.output, config, workspace)
112 if (solution instanceof ModelResult) { 122 if (solution instanceof ModelResult) {
113 println("Saving generated solutions") 123 println("Saving generated solutions")
@@ -122,7 +132,6 @@ class Modes3ModelGenerator {
122 workspace.writeText('''solutionĀ«representationNumberĀ».gml''', gml) 132 workspace.writeText('''solutionĀ«representationNumberĀ».gml''', gml)
123 if (representation.newElements.size < 160) { 133 if (representation.newElements.size < 160) {
124 if (representation instanceof PartialInterpretation) { 134 if (representation instanceof PartialInterpretation) {
125 representation.problem.types.forEach[println(name)]
126 val rootType = (representation.problem.types.findFirst [ 135 val rootType = (representation.problem.types.findFirst [
127 name == "Modes3ModelRoot class DefinedPart" 136 name == "Modes3ModelRoot class DefinedPart"
128 ] as TypeDefinition) 137 ] as TypeDefinition)
@@ -198,10 +207,7 @@ class Modes3ModelGenerator {
198 PartialinterpretationPackage.eINSTANCE.class 207 PartialinterpretationPackage.eINSTANCE.class
199 Ecore2logicannotationsPackage.eINSTANCE.class 208 Ecore2logicannotationsPackage.eINSTANCE.class
200 Viatra2LogicAnnotationsPackage.eINSTANCE.class 209 Viatra2LogicAnnotationsPackage.eINSTANCE.class
201 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("ecore", new XMIResourceFactoryImpl) 210 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("*", new XMIResourceFactoryImpl)
202 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("logicproblem", new XMIResourceFactoryImpl)
203 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("partialinterpretation",
204 new XMIResourceFactoryImpl)
205 } 211 }
206 212
207 def static void main(String[] args) { 213 def static void main(String[] args) {