diff options
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.xtend | 30 |
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 | |||
8 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor | 8 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor |
9 | import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsFactory | 9 | import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsFactory |
10 | import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage | 10 | import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage |
11 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel | ||
11 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder | 12 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder |
12 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage | 13 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage |
13 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition | 14 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition |
@@ -22,6 +23,7 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.Polyhedr | |||
22 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.PolyhedralScopePropagatorSolver | 23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.PolyhedralScopePropagatorSolver |
23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy | 24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy |
24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | 25 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic |
26 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink | ||
25 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialComplexTypeInterpretation | 27 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialComplexTypeInterpretation |
26 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | 28 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation |
27 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage | 29 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage |
@@ -44,8 +46,6 @@ import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions | |||
44 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchEMFBackendFactory | 46 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchEMFBackendFactory |
45 | import org.eclipse.viatra.query.runtime.rete.matcher.ReteBackendFactory | 47 | import org.eclipse.viatra.query.runtime.rete.matcher.ReteBackendFactory |
46 | import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor | 48 | import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor |
47 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition | ||
48 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink | ||
49 | 49 | ||
50 | @FinalFieldsConstructor | 50 | @FinalFieldsConstructor |
51 | class Modes3ModelGenerator { | 51 | class 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) { |