diff options
Diffstat (limited to 'Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse')
4 files changed, 413 insertions, 7 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend index 86c9092a..1559ee3f 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend | |||
@@ -4,11 +4,11 @@ import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver | |||
4 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration | 4 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration |
5 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory | 5 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory |
6 | import functionalarchitecture.Function | 6 | import functionalarchitecture.Function |
7 | import functionalarchitecture.FunctionalInterface | ||
8 | import functionalarchitecture.FunctionalOutput | ||
7 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic | 9 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic |
8 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration | 10 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration |
9 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace | ||
10 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor | 11 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor |
11 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel | ||
12 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner | 12 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner |
13 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type | 13 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type |
14 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult | 14 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult |
@@ -30,8 +30,7 @@ import org.eclipse.emf.ecore.EReference | |||
30 | import org.eclipse.emf.ecore.resource.Resource | 30 | import org.eclipse.emf.ecore.resource.Resource |
31 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl | 31 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl |
32 | import org.eclipse.viatra.query.runtime.api.IQueryGroup | 32 | import org.eclipse.viatra.query.runtime.api.IQueryGroup |
33 | import org.eclipse.emf.ecore.EClassifier | 33 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel |
34 | import functionalarchitecture.FunctionalOutput | ||
35 | 34 | ||
36 | class GeneralTest { | 35 | class GeneralTest { |
37 | def static String createAndSolveProblem(EcoreMetamodelDescriptor metamodel, List<EObject> partialModel, | 36 | def static String createAndSolveProblem(EcoreMetamodelDescriptor metamodel, List<EObject> partialModel, |
@@ -67,7 +66,7 @@ class GeneralTest { | |||
67 | list2MapMin.get(Function.simpleName) | 66 | list2MapMin.get(Function.simpleName) |
68 | ), 1) | 67 | ), 1) |
69 | typeMapMin.put(ecore2Logic.TypeofEClass(modelGenerationProblem.trace, | 68 | typeMapMin.put(ecore2Logic.TypeofEClass(modelGenerationProblem.trace, |
70 | list2MapMin.get(functionalarchitecture.FunctionalInterface.simpleName) | 69 | list2MapMin.get(FunctionalInterface.simpleName) |
71 | ), 2) | 70 | ), 2) |
72 | typeMapMin.put(ecore2Logic.TypeofEClass(modelGenerationProblem.trace, | 71 | typeMapMin.put(ecore2Logic.TypeofEClass(modelGenerationProblem.trace, |
73 | list2MapMin.get(FunctionalOutput.simpleName) | 72 | list2MapMin.get(FunctionalOutput.simpleName) |
@@ -80,7 +79,7 @@ class GeneralTest { | |||
80 | ), 5) | 79 | ), 5) |
81 | typeMapMax.put(ecore2Logic.TypeofEClass( | 80 | typeMapMax.put(ecore2Logic.TypeofEClass( |
82 | modelGenerationProblem.trace, | 81 | modelGenerationProblem.trace, |
83 | list2MapMax.get(functionalarchitecture.FunctionalInterface.simpleName) | 82 | list2MapMax.get(FunctionalInterface.simpleName) |
84 | ), 2) | 83 | ), 2) |
85 | typeMapMax.put(ecore2Logic.TypeofEClass( | 84 | typeMapMax.put(ecore2Logic.TypeofEClass( |
86 | modelGenerationProblem.trace, | 85 | modelGenerationProblem.trace, |
@@ -92,7 +91,7 @@ class GeneralTest { | |||
92 | // add configuration things, in config file first | 91 | // add configuration things, in config file first |
93 | it.documentationLevel = DocumentationLevel::FULL | 92 | it.documentationLevel = DocumentationLevel::FULL |
94 | it.typeScopes.minNewElements = 6 | 93 | it.typeScopes.minNewElements = 6 |
95 | it.typeScopes.maxNewElements = 8 | 94 | it.typeScopes.maxNewElements = 40 |
96 | it.typeScopes.minNewElementsByType = typeMapMin | 95 | it.typeScopes.minNewElementsByType = typeMapMin |
97 | it.typeScopes.maxNewElementsByType = typeMapMax | 96 | it.typeScopes.maxNewElementsByType = typeMapMax |
98 | ] | 97 | ] |
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestAlloy.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestAlloy.xtend new file mode 100644 index 00000000..b0af3f64 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestAlloy.xtend | |||
@@ -0,0 +1,190 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.vampire.icse | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.vampire.queries.Patterns | ||
4 | import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage | ||
5 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver | ||
6 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration | ||
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.logic.model.builder.DocumentationLevel | ||
10 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.IntStatisticEntry | ||
11 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult | ||
12 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.StringStatisticEntry | ||
13 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore | ||
14 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic | ||
15 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration | ||
16 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | ||
17 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace | ||
18 | import java.io.PrintWriter | ||
19 | import java.text.SimpleDateFormat | ||
20 | import java.util.Date | ||
21 | import org.eclipse.emf.ecore.resource.Resource | ||
22 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl | ||
23 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.impl.ModelResultImpl | ||
24 | |||
25 | class YakinduTestAlloy { | ||
26 | def static void main(String[] args) { | ||
27 | val Ecore2Logic ecore2Logic = new Ecore2Logic | ||
28 | val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) | ||
29 | val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) | ||
30 | val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic | ||
31 | |||
32 | // Workspace setup | ||
33 | val Date date = new Date(System.currentTimeMillis) | ||
34 | val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm"); | ||
35 | val formattedDate = format.format(date) | ||
36 | |||
37 | val inputs = new FileSystemWorkspace('''initialModels/''', "") | ||
38 | val dataWorkspace = new FileSystemWorkspace('''output/YakinduTest/''', "") | ||
39 | val workspace = new FileSystemWorkspace('''output/YakinduTest/''' + formattedDate + '''/''', "") | ||
40 | workspace.initAndClear | ||
41 | |||
42 | // Logicproblem writing setup | ||
43 | val reg = Resource.Factory.Registry.INSTANCE | ||
44 | val map = reg.extensionToFactoryMap | ||
45 | map.put("logicproblem", new XMIResourceFactoryImpl) | ||
46 | |||
47 | println("Input and output workspaces are created") | ||
48 | |||
49 | val metamodel = GeneralTest.loadMetamodel(YakindummPackage.eINSTANCE) | ||
50 | val partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/Yakindu.xmi") | ||
51 | val queries = GeneralTest.loadQueries(metamodel, Patterns.instance) | ||
52 | // val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) | ||
53 | // val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi") | ||
54 | // val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) | ||
55 | // val queries = null | ||
56 | println("DSL loaded") | ||
57 | |||
58 | var SZ_TOP = 100 | ||
59 | var SZ_BOT = 100 | ||
60 | var INC = 20 | ||
61 | var REPS = 25 | ||
62 | |||
63 | val RUNTIME = 300 | ||
64 | |||
65 | var solverTimes = newArrayList | ||
66 | var transformationTimes = newArrayList | ||
67 | var LogicResult solution = null | ||
68 | var solver = "Alloy" | ||
69 | |||
70 | for (var k = 0; k < 1; k++) { | ||
71 | |||
72 | for (var i = SZ_BOT; i <= SZ_TOP; i += INC) { | ||
73 | var writer = new PrintWriter( | ||
74 | dataWorkspace.workspaceURI + "//_alloy" + i + "x" + REPS + "-" + formattedDate + ".csv") | ||
75 | writer.append("solver,size,TransformatonTime,sat?,kodkodTime,model?,modelTime\n") | ||
76 | |||
77 | val num = (i - SZ_BOT) / INC | ||
78 | println() | ||
79 | println("SOLVER: " + solver + ", SIZE=" + i) | ||
80 | println() | ||
81 | |||
82 | solverTimes.clear | ||
83 | transformationTimes.clear | ||
84 | for (var j = 0; j < REPS; j++) { | ||
85 | val Date date2 = new Date(System.currentTimeMillis) | ||
86 | val formattedDate2 = format.format(date2) | ||
87 | println(formattedDate2) | ||
88 | println("<<Run number " + j + ">> :") | ||
89 | |||
90 | val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, | ||
91 | new Ecore2LogicConfiguration()) | ||
92 | var modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel) | ||
93 | var validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem, | ||
94 | new Viatra2LogicConfiguration) | ||
95 | |||
96 | var problem = modelGenerationProblem.output | ||
97 | // workspace.writeModel(problem, "Yakindu.logicproblem") | ||
98 | // println("Problem created") | ||
99 | // Start Time | ||
100 | var startTime = System.currentTimeMillis | ||
101 | |||
102 | var AlloySolver reasoner | ||
103 | // * | ||
104 | reasoner = new AlloySolver | ||
105 | |||
106 | // ///////////////////////////////////////////////////// | ||
107 | // Define Config File | ||
108 | val size = i | ||
109 | val inc = INC | ||
110 | val iter = j | ||
111 | val solverConfig = new AlloySolverConfiguration => [ | ||
112 | // add configuration things, in config file first | ||
113 | it.documentationLevel = DocumentationLevel::FULL | ||
114 | // it.iteration = iter | ||
115 | it.runtimeLimit = RUNTIME | ||
116 | // it.typeScopes.maxNewElements = size | ||
117 | it.typeScopes.minNewElements = size | ||
118 | it.typeScopes.maxNewElements = size | ||
119 | ] | ||
120 | solution = reasoner.solve(problem, solverConfig, workspace) | ||
121 | // print((solution as ModelResult).representation.get(0)) | ||
122 | // val soln = ((solution as ModelResult).representation.get(0) as VampireModel) | ||
123 | // println(soln.confirmations) | ||
124 | // println((solution as ModelResult).representation) | ||
125 | // modelFound = !soln.confirmations.filter [ | ||
126 | // class == VLSFiniteModelImpl | ||
127 | // ].isEmpty | ||
128 | // ADD TO CSV | ||
129 | writer.append(solver + ",") | ||
130 | writer.append(size + ",") | ||
131 | writer.append(solution.statistics.transformationTime / 1000.0 + ",") | ||
132 | |||
133 | // val satOut = (solution.statistics.entries.filter[name == "satOut"].get(0) as StringStatisticEntry). | ||
134 | // value | ||
135 | val kodKodTime = (solution.statistics.entries.filter[name == "Alloy2KodKodTransformationTime"]. | ||
136 | get(0) as IntStatisticEntry).value | ||
137 | // print(solution.class) | ||
138 | val modOut = if(solution.class == ModelResultImpl) "FiniteModel" else "no" | ||
139 | val mod = solution.statistics.entries.filter[name == "Answer0Time"] | ||
140 | var modTime = 0.0 | ||
141 | if (!mod.isEmpty) { | ||
142 | modTime = (mod.get(0) as IntStatisticEntry).value / 1000.0 | ||
143 | |||
144 | } | ||
145 | writer.append("-,") | ||
146 | writer.append(kodKodTime.toString + ",") | ||
147 | writer.append(modOut + ",") | ||
148 | writer.append(modTime.toString + "") | ||
149 | writer.append("\n") | ||
150 | |||
151 | println("->" + modOut + " ... " + modTime) | ||
152 | |||
153 | // Run Garbage Collector | ||
154 | val Runtime r = Runtime.getRuntime(); | ||
155 | r.gc(); | ||
156 | r.gc(); | ||
157 | r.gc(); | ||
158 | Thread.sleep(3000) | ||
159 | |||
160 | // print("(" + tTime + "/" + sTime + "s)..") | ||
161 | // solverTimes.add(sTime) | ||
162 | // transformationTimes.add(tTime) | ||
163 | // } else { | ||
164 | // writer.append("MNF" + ",") | ||
165 | //// print("MNF") | ||
166 | // } | ||
167 | // println("Problem solved") | ||
168 | // visualisation, see | ||
169 | // var interpretations = reasoner.getInterpretations(solution as ModelResult) | ||
170 | // for (interpretation : interpretations) { | ||
171 | // val model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.trace) | ||
172 | // workspace.writeModel(model, "model.xmi") | ||
173 | // } | ||
174 | // var totalTimeMin = (System.currentTimeMillis - startTime) / 60000 | ||
175 | // var totalTimeSec = ((System.currentTimeMillis - startTime) / 1000) % 60 | ||
176 | // println("Problem solved") | ||
177 | // println("Time was: " + totalTimeMin + ":" + totalTimeSec) | ||
178 | } | ||
179 | // println() | ||
180 | // var solverMed = solverTimes.sort.get(REPS / 2) | ||
181 | // var transformationMed = transformationTimes.sort.get(REPS / 2) | ||
182 | // writer.append(solverMed.toString + "," + transformationMed.toString) | ||
183 | writer.close | ||
184 | } | ||
185 | |||
186 | } | ||
187 | |||
188 | } | ||
189 | |||
190 | } | ||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestViatra.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestViatra.xtend new file mode 100644 index 00000000..dbc90e97 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestViatra.xtend | |||
@@ -0,0 +1,182 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.vampire.icse | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.vampire.queries.Patterns | ||
4 | import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage | ||
5 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver | ||
6 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration | ||
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.logic.model.builder.DocumentationLevel | ||
10 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.IntStatisticEntry | ||
11 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult | ||
12 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.StringStatisticEntry | ||
13 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore | ||
14 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic | ||
15 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration | ||
16 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | ||
17 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace | ||
18 | import java.io.PrintWriter | ||
19 | import java.text.SimpleDateFormat | ||
20 | import java.util.Date | ||
21 | import org.eclipse.emf.ecore.resource.Resource | ||
22 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl | ||
23 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.impl.ModelResultImpl | ||
24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner | ||
25 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration | ||
26 | |||
27 | class YakinduTestViatra { | ||
28 | def static void main(String[] args) { | ||
29 | val Ecore2Logic ecore2Logic = new Ecore2Logic | ||
30 | val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) | ||
31 | val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) | ||
32 | val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic | ||
33 | |||
34 | // Workspace setup | ||
35 | val Date date = new Date(System.currentTimeMillis) | ||
36 | val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm"); | ||
37 | val formattedDate = format.format(date) | ||
38 | |||
39 | val inputs = new FileSystemWorkspace('''initialModels/''', "") | ||
40 | val dataWorkspace = new FileSystemWorkspace('''output/YakinduTest/''', "") | ||
41 | val workspace = new FileSystemWorkspace('''output/YakinduTest/''' + formattedDate + '''/''', "") | ||
42 | workspace.initAndClear | ||
43 | |||
44 | // Logicproblem writing setup | ||
45 | val reg = Resource.Factory.Registry.INSTANCE | ||
46 | val map = reg.extensionToFactoryMap | ||
47 | map.put("logicproblem", new XMIResourceFactoryImpl) | ||
48 | |||
49 | println("Input and output workspaces are created") | ||
50 | |||
51 | val metamodel = GeneralTest.loadMetamodel(YakindummPackage.eINSTANCE) | ||
52 | val partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/Yakindu.xmi") | ||
53 | val queries = GeneralTest.loadQueries(metamodel, Patterns.instance) | ||
54 | // val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) | ||
55 | // val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi") | ||
56 | // val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) | ||
57 | // val queries = null | ||
58 | println("DSL loaded") | ||
59 | |||
60 | var SZ_TOP = 20 | ||
61 | var SZ_BOT = 20 | ||
62 | var INC = 20 | ||
63 | var REPS = 5 | ||
64 | |||
65 | val RUNTIME = 300 | ||
66 | |||
67 | var solverTimes = newArrayList | ||
68 | var transformationTimes = newArrayList | ||
69 | var LogicResult solution = null | ||
70 | var solver = "Viatra" | ||
71 | var index = 2 | ||
72 | |||
73 | for (var i = SZ_BOT; i <= SZ_TOP; i += INC*index) { | ||
74 | index*=2 | ||
75 | var writer = new PrintWriter( | ||
76 | dataWorkspace.workspaceURI + "//_viatra" + i + "x" + REPS + "-" + formattedDate + ".csv") | ||
77 | writer.append("solver,size,TransformatonTime,sat?,kodkodTime,model?,modelTime\n") | ||
78 | |||
79 | val num = (i - SZ_BOT) / INC | ||
80 | println() | ||
81 | println("SOLVER: " + solver + ", SIZE=" + i) | ||
82 | println() | ||
83 | |||
84 | solverTimes.clear | ||
85 | transformationTimes.clear | ||
86 | for (var j = 0; j < REPS; j++) { | ||
87 | |||
88 | println("<<Run number " + j + ">> :") | ||
89 | |||
90 | val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) | ||
91 | var modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel) | ||
92 | var validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem, | ||
93 | new Viatra2LogicConfiguration) | ||
94 | |||
95 | var problem = modelGenerationProblem.output | ||
96 | workspace.writeModel(problem, "Yakindu.logicproblem") | ||
97 | // println("Problem created") | ||
98 | // Start Time | ||
99 | var startTime = System.currentTimeMillis | ||
100 | |||
101 | var ViatraReasoner reasoner | ||
102 | // * | ||
103 | reasoner = new ViatraReasoner | ||
104 | |||
105 | // ///////////////////////////////////////////////////// | ||
106 | // Define Config File | ||
107 | val size = i | ||
108 | val inc = INC | ||
109 | val iter = j | ||
110 | val solverConfig = new ViatraReasonerConfiguration => [ | ||
111 | // add configuration things, in config file first | ||
112 | // it.documentationLevel = DocumentationLevel::FULL | ||
113 | // it.iteration = iter | ||
114 | it.runtimeLimit = RUNTIME | ||
115 | it.typeScopes.maxNewElements = size | ||
116 | it.typeScopes.minNewElements = size | ||
117 | ] | ||
118 | |||
119 | solution = reasoner.solve(problem, solverConfig, workspace) | ||
120 | // print((solution as ModelResult).representation.get(0)) | ||
121 | // val soln = ((solution as ModelResult).representation.get(0) as VampireModel) | ||
122 | // println(soln.confirmations) | ||
123 | // println((solution as ModelResult).representation) | ||
124 | // modelFound = !soln.confirmations.filter [ | ||
125 | // class == VLSFiniteModelImpl | ||
126 | // ].isEmpty | ||
127 | // ADD TO CSV | ||
128 | writer.append(solver + ",") | ||
129 | writer.append(size + ",") | ||
130 | writer.append(solution.statistics.transformationTime / 1000.0 + ",") | ||
131 | |||
132 | // val satOut = (solution.statistics.entries.filter[name == "satOut"].get(0) as StringStatisticEntry). | ||
133 | // value | ||
134 | val modOut = if(solution.class == ModelResultImpl) "FiniteModel" else "no" | ||
135 | // val modTime = (solution.statistics.entries.filter[name.contains("Answer")]. | ||
136 | // get(0) as StringStatisticEntry).value | ||
137 | val modTime = solution.statistics.solverTime / 1000.0 | ||
138 | |||
139 | writer.append("-,") | ||
140 | writer.append("-,") | ||
141 | writer.append(modOut + ",") | ||
142 | writer.append(modTime.toString + "") | ||
143 | writer.append("\n") | ||
144 | |||
145 | println("->" + modOut + " ... " + modTime) | ||
146 | |||
147 | // Run Garbage Collector | ||
148 | val Runtime r = Runtime.getRuntime(); | ||
149 | r.gc(); | ||
150 | r.gc(); | ||
151 | r.gc(); | ||
152 | Thread.sleep(3000) | ||
153 | |||
154 | // print("(" + tTime + "/" + sTime + "s)..") | ||
155 | // solverTimes.add(sTime) | ||
156 | // transformationTimes.add(tTime) | ||
157 | // } else { | ||
158 | // writer.append("MNF" + ",") | ||
159 | //// print("MNF") | ||
160 | // } | ||
161 | // println("Problem solved") | ||
162 | // visualisation, see | ||
163 | // var interpretations = reasoner.getInterpretations(solution as ModelResult) | ||
164 | // for (interpretation : interpretations) { | ||
165 | // val model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.trace) | ||
166 | // workspace.writeModel(model, "model.xmi") | ||
167 | // } | ||
168 | // var totalTimeMin = (System.currentTimeMillis - startTime) / 60000 | ||
169 | // var totalTimeSec = ((System.currentTimeMillis - startTime) / 1000) % 60 | ||
170 | // println("Problem solved") | ||
171 | // println("Time was: " + totalTimeMin + ":" + totalTimeSec) | ||
172 | } | ||
173 | // println() | ||
174 | // var solverMed = solverTimes.sort.get(REPS / 2) | ||
175 | // var transformationMed = transformationTimes.sort.get(REPS / 2) | ||
176 | // writer.append(solverMed.toString + "," + transformationMed.toString) | ||
177 | writer.close | ||
178 | } | ||
179 | |||
180 | } | ||
181 | |||
182 | } | ||
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/tester.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/tester.xtend new file mode 100644 index 00000000..2bf0c4cc --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/tester.xtend | |||
@@ -0,0 +1,35 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.vampire.icse | ||
2 | |||
3 | import java.io.BufferedReader | ||
4 | import java.io.FileInputStream | ||
5 | import java.io.InputStream | ||
6 | import java.io.InputStreamReader | ||
7 | |||
8 | class tester { | ||
9 | def static void main(String[] args) { | ||
10 | val InputStream is = new FileInputStream("C://Users//Aren Babikian//git//VIATRA-Generator//Tests//ca.mcgill.ecse.dslreasoner.vampire.test//src//ca//mcgill//ecse//dslreasoner//vampire//icse//90-110Z3.txt"); | ||
11 | val BufferedReader buf = new BufferedReader(new InputStreamReader(is)); | ||
12 | var String line = buf.readLine(); | ||
13 | val StringBuilder sb = new StringBuilder(); | ||
14 | while (line != null) { | ||
15 | sb.append(line); | ||
16 | line = buf.readLine(); | ||
17 | } | ||
18 | val String str = sb.toString(); | ||
19 | |||
20 | val satArray = str.split("Model") | ||
21 | |||
22 | val satTimes = newArrayList | ||
23 | |||
24 | for(sat : satArray.subList(1, satArray.length)) { | ||
25 | satTimes.add(sat.substring(2, 8)) | ||
26 | } | ||
27 | |||
28 | for(t : satTimes) { | ||
29 | println(t) | ||
30 | } | ||
31 | |||
32 | |||
33 | |||
34 | } | ||
35 | } | ||