diff options
Diffstat (limited to 'Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend')
-rw-r--r-- | Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend | 95 |
1 files changed, 46 insertions, 49 deletions
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend index 863a91c8..b65826ad 100644 --- a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend +++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend | |||
@@ -1,41 +1,42 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.run | 1 | package hu.bme.mit.inf.dslreasoner.run |
2 | 2 | ||
3 | import functionalarchitecture.FunctionalarchitecturePackage | ||
4 | import hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns | ||
5 | import hu.bme.mit.inf.dslreasoner.domains.transima.fam.Model | ||
6 | import hu.bme.mit.inf.dslreasoner.domains.transima.fam.Type | ||
7 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic | ||
8 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration | ||
9 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor | ||
10 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel | ||
11 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner | ||
12 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult | ||
13 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult | ||
14 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore | ||
15 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic | ||
16 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration | ||
17 | import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor | ||
18 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy | ||
19 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | ||
20 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | ||
21 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml | ||
22 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner | ||
23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration | ||
24 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualiser | ||
3 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace | 25 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace |
4 | import hu.bme.mit.inf.dslreasomer.domains.transima.fam.FunctionalArchitecture.FunctionalArchitecturePackage | 26 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace |
27 | import java.util.LinkedHashMap | ||
28 | import java.util.LinkedList | ||
5 | import java.util.List | 29 | import java.util.List |
30 | import org.eclipse.emf.ecore.EAttribute | ||
6 | import org.eclipse.emf.ecore.EClass | 31 | import org.eclipse.emf.ecore.EClass |
7 | import org.eclipse.emf.ecore.EEnumLiteral | ||
8 | import org.eclipse.emf.ecore.EReference | ||
9 | import org.eclipse.emf.ecore.EEnum | 32 | import org.eclipse.emf.ecore.EEnum |
10 | import org.eclipse.emf.ecore.EAttribute | 33 | import org.eclipse.emf.ecore.EEnumLiteral |
11 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor | ||
12 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace | ||
13 | import org.eclipse.emf.ecore.EObject | 34 | import org.eclipse.emf.ecore.EObject |
14 | import java.util.LinkedHashMap | 35 | import org.eclipse.emf.ecore.EReference |
15 | import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor | ||
16 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic | ||
17 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic | ||
18 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | ||
19 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration | ||
20 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration | ||
21 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration | ||
22 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeInferenceMethod | ||
23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.StateCoderStrategy | ||
24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner | ||
25 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult | ||
26 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | ||
27 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult | ||
28 | import org.eclipse.emf.ecore.resource.Resource | 36 | import org.eclipse.emf.ecore.resource.Resource |
29 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl | 37 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl |
30 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml | 38 | import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageStandaloneSetup |
31 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration | 39 | import org.eclipse.viatra.query.runtime.rete.matcher.ReteEngine |
32 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver | ||
33 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore | ||
34 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner | ||
35 | import java.util.LinkedList | ||
36 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualisation | ||
37 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder | ||
38 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder | ||
39 | 40 | ||
40 | class SimpleRun { | 41 | class SimpleRun { |
41 | 42 | ||
@@ -59,7 +60,8 @@ class SimpleRun { | |||
59 | 60 | ||
60 | val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration()) | 61 | val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration()) |
61 | val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel) | 62 | val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel) |
62 | val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration) | 63 | val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelExtensionProblem,new Viatra2LogicConfiguration) |
64 | // workspace.writeModel(validModelExtensionProblem.output, "generation.logicproblem") | ||
63 | 65 | ||
64 | val logicProblem = validModelExtensionProblem.output | 66 | val logicProblem = validModelExtensionProblem.output |
65 | 67 | ||
@@ -71,11 +73,11 @@ class SimpleRun { | |||
71 | val viatraConfig = new ViatraReasonerConfiguration => [ | 73 | val viatraConfig = new ViatraReasonerConfiguration => [ |
72 | it.typeScopes.maxNewElements = 40 | 74 | it.typeScopes.maxNewElements = 40 |
73 | it.typeScopes.minNewElements = 40 | 75 | it.typeScopes.minNewElements = 40 |
74 | it.solutionScope.numberOfRequiredSolution = 1 | 76 | it.solutionScope.numberOfRequiredSolutions = 1 |
75 | it.existingQueries = queries.patterns.map[it.internalQueryRepresentation] | 77 | // it.scopePropagatorStrategy = ScopePropagatorStrategy.BasicTypeHierarchy |
76 | it.debugCongiguration.logging = false | 78 | it.documentationLevel = DocumentationLevel.NONE |
77 | it.debugCongiguration.partalInterpretationVisualisationFrequency = 1 | 79 | it.debugConfiguration.partalInterpretationVisualisationFrequency = 1 |
78 | it.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualisation | 80 | it.debugConfiguration.partialInterpretatioVisualiser = new GraphvizVisualiser |
79 | ] | 81 | ] |
80 | solution = reasoner.solve(logicProblem,viatraConfig,workspace) | 82 | solution = reasoner.solve(logicProblem,viatraConfig,workspace) |
81 | /*/ | 83 | /*/ |
@@ -92,23 +94,20 @@ class SimpleRun { | |||
92 | 94 | ||
93 | println("Problem solved") | 95 | println("Problem solved") |
94 | 96 | ||
95 | val interpretations = reasoner.getInterpretations(solution as ModelResult) | 97 | val result = solution as ModelResult |
98 | val interpretations = reasoner.getInterpretations(result) | ||
96 | val models = new LinkedList | 99 | val models = new LinkedList |
97 | for(interpretation : interpretations) { | 100 | for(interpretation : interpretations) { |
98 | val extension b = new LogicStructureBuilder | ||
99 | val extension a = new LogicProblemBuilder | ||
100 | |||
101 | |||
102 | |||
103 | val instanceModel = logic2Ecore.transformInterpretation(interpretation,modelGenerationProblem.trace) | 101 | val instanceModel = logic2Ecore.transformInterpretation(interpretation,modelGenerationProblem.trace) |
104 | models+=instanceModel | 102 | models+=instanceModel |
105 | } | 103 | } |
104 | println(result.statistics.solverTime) | ||
106 | 105 | ||
107 | solution.writeSolution(workspace, #[]) | 106 | solution.writeSolution(workspace, #[]) |
108 | } | 107 | } |
109 | 108 | ||
110 | def private static loadMetamodel() { | 109 | def private static loadMetamodel() { |
111 | val pckg = FunctionalArchitecturePackage.eINSTANCE | 110 | val pckg = FunctionalarchitecturePackage.eINSTANCE |
112 | val List<EClass> classes = pckg.EClassifiers.filter(EClass).toList | 111 | val List<EClass> classes = pckg.EClassifiers.filter(EClass).toList |
113 | val List<EEnum> enums = pckg.EClassifiers.filter(EEnum).toList | 112 | val List<EEnum> enums = pckg.EClassifiers.filter(EEnum).toList |
114 | val List<EEnumLiteral> literals = enums.map[ELiterals].flatten.toList | 113 | val List<EEnumLiteral> literals = enums.map[ELiterals].flatten.toList |
@@ -118,12 +117,12 @@ class SimpleRun { | |||
118 | } | 117 | } |
119 | 118 | ||
120 | def private static loadQueries(EcoreMetamodelDescriptor metamodel) { | 119 | def private static loadQueries(EcoreMetamodelDescriptor metamodel) { |
121 | val i = hu.bme.mit.inf.dslreasoner.domains.transima.fam.patterns.Pattern.instance | 120 | val i = FamPatterns.instance |
122 | val patterns = i.specifications.toList | 121 | val patterns = i.specifications.toList |
123 | val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet | 122 | val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet |
124 | val derivedFeatures = new LinkedHashMap | 123 | val derivedFeatures = new LinkedHashMap |
125 | derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head) | 124 | derivedFeatures.put(Type.instance,metamodel.attributes.filter[it.name == "type"].head) |
126 | derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head) | 125 | derivedFeatures.put(Model.instance,metamodel.references.filter[it.name == "model"].head) |
127 | val res = new ViatraQuerySetDescriptor( | 126 | val res = new ViatraQuerySetDescriptor( |
128 | patterns, | 127 | patterns, |
129 | wfPatterns, | 128 | wfPatterns, |
@@ -133,6 +132,8 @@ class SimpleRun { | |||
133 | } | 132 | } |
134 | 133 | ||
135 | def static loadPartialModel(ReasonerWorkspace inputs) { | 134 | def static loadPartialModel(ReasonerWorkspace inputs) { |
135 | EMFPatternLanguageStandaloneSetup.doSetup | ||
136 | ReteEngine.getClass | ||
136 | Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); | 137 | Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); |
137 | inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList | 138 | inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList |
138 | } | 139 | } |
@@ -160,8 +161,4 @@ class SimpleRun { | |||
160 | println("Solution saved and visualised") | 161 | println("Solution saved and visualised") |
161 | } | 162 | } |
162 | } | 163 | } |
163 | |||
164 | def static visualizeSolution() { | ||
165 | |||
166 | } | ||
167 | } \ No newline at end of file | 164 | } \ No newline at end of file |