diff options
author | OszkarSemerath <oszkar.semerath@gmail.com> | 2018-03-04 02:12:52 -0500 |
---|---|---|
committer | OszkarSemerath <oszkar.semerath@gmail.com> | 2018-03-04 02:12:52 -0500 |
commit | d53ce571fc2977bcca2d714a7d19a00b42249780 (patch) | |
tree | e5dfc806386602467b90501b26befe9ea36b077e /Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend | |
parent | Generation is executed in a job (diff) | |
download | VIATRA-Generator-d53ce571fc2977bcca2d714a7d19a00b42249780.tar.gz VIATRA-Generator-d53ce571fc2977bcca2d714a7d19a00b42249780.tar.zst VIATRA-Generator-d53ce571fc2977bcca2d714a7d19a00b42249780.zip |
Consoles
Diffstat (limited to 'Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend')
-rw-r--r-- | Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend index 9ffd33c5..05d4e0c0 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend | |||
@@ -16,12 +16,14 @@ import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration | |||
16 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | 16 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic |
17 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | 17 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation |
18 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml | 18 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml |
19 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualisation; | 19 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualisation |
20 | import hu.bme.mit.inf.dslreasoner.workspace.ProjectWorkspace | 20 | import hu.bme.mit.inf.dslreasoner.workspace.ProjectWorkspace |
21 | import java.util.Optional | 21 | import java.util.Optional |
22 | import org.eclipse.emf.common.util.URI | ||
23 | import org.eclipse.core.runtime.IProgressMonitor | 22 | import org.eclipse.core.runtime.IProgressMonitor |
24 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.SolverProgressMonitor | 23 | import org.eclipse.emf.common.util.URI |
24 | import java.util.LinkedHashMap | ||
25 | import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigurationScript | ||
26 | import hu.bme.mit.inf.dslreasoner.logic.model.statistics.StatisticSections2CSV | ||
25 | 27 | ||
26 | class GenerationTaskExecutor { | 28 | class GenerationTaskExecutor { |
27 | val metamodelLoader = new MetamodelLoader | 29 | val metamodelLoader = new MetamodelLoader |
@@ -29,6 +31,7 @@ class GenerationTaskExecutor { | |||
29 | val queryLoader = new QueryLoader | 31 | val queryLoader = new QueryLoader |
30 | val solverLoader = new SolverLoader | 32 | val solverLoader = new SolverLoader |
31 | val scopeLoader = new ScopeLoader | 33 | val scopeLoader = new ScopeLoader |
34 | val statisticsUtil = new StatisticSections2CSV | ||
32 | 35 | ||
33 | val metamodelValidator = new MetamodelValidator | 36 | val metamodelValidator = new MetamodelValidator |
34 | val queryAndMetamodelValidator = new QueryAndMetamodelValidator | 37 | val queryAndMetamodelValidator = new QueryAndMetamodelValidator |
@@ -57,7 +60,7 @@ class GenerationTaskExecutor { | |||
57 | val memoryLimit = scriptExecutor.getMemoryLimit(configSpecification) | 60 | val memoryLimit = scriptExecutor.getMemoryLimit(configSpecification) |
58 | 61 | ||
59 | // 2. create console | 62 | // 2. create console |
60 | val console = new ScriptConsole(true,true, | 63 | val console = new ScriptConsole(false,true,false, |
61 | if(messageFile!==null) URI.createURI(messageFile.path) else null, | 64 | if(messageFile!==null) URI.createURI(messageFile.path) else null, |
62 | if(debugFolder!==null) URI.createURI('''«debugFolder.path»/errors.txt''') else null, | 65 | if(debugFolder!==null) URI.createURI('''«debugFolder.path»/errors.txt''') else null, |
63 | if(statisticsFile!==null) URI.createURI(statisticsFile.path) else null | 66 | if(statisticsFile!==null) URI.createURI(statisticsFile.path) else null |
@@ -98,6 +101,7 @@ class GenerationTaskExecutor { | |||
98 | 101 | ||
99 | // 4. translate all description to a logic problem | 102 | // 4. translate all description to a logic problem |
100 | monitor.subTask('''Translating all resources to logic''') | 103 | monitor.subTask('''Translating all resources to logic''') |
104 | var domain2LogicTransformationTime = System.nanoTime | ||
101 | val Ecore2Logic ecore2Logic = new Ecore2Logic | 105 | val Ecore2Logic ecore2Logic = new Ecore2Logic |
102 | val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) | 106 | val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) |
103 | val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) | 107 | val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) |
@@ -118,6 +122,7 @@ class GenerationTaskExecutor { | |||
118 | new Viatra2LogicConfiguration | 122 | new Viatra2LogicConfiguration |
119 | ).output | 123 | ).output |
120 | } | 124 | } |
125 | domain2LogicTransformationTime = System.nanoTime-domain2LogicTransformationTime | ||
121 | if(documentationLevel.atLeastNormal) { | 126 | if(documentationLevel.atLeastNormal) { |
122 | reasonerWorkspace.writeModel(problem,"generation.logicproblem") | 127 | reasonerWorkspace.writeModel(problem,"generation.logicproblem") |
123 | } | 128 | } |
@@ -161,7 +166,7 @@ class GenerationTaskExecutor { | |||
161 | solverLoader.setRunIndex(solverConfig,configurationMap,run,console) | 166 | solverLoader.setRunIndex(solverConfig,configurationMap,run,console) |
162 | solverConfig.progressMonitor = new EclipseProgressMonitor(monitor) | 167 | solverConfig.progressMonitor = new EclipseProgressMonitor(monitor) |
163 | val reasonerWorkspaceForRun = if(runs > 1) { | 168 | val reasonerWorkspaceForRun = if(runs > 1) { |
164 | reasonerWorkspace.subWorkspace('''run«run»''',"") => [init] | 169 | reasonerWorkspace.subWorkspace('''run«run»''',"") => [initAndClear] |
165 | } else { | 170 | } else { |
166 | reasonerWorkspace | 171 | reasonerWorkspace |
167 | } | 172 | } |
@@ -171,6 +176,8 @@ class GenerationTaskExecutor { | |||
171 | console.writeMessage(solution.soutionDescription.toString) | 176 | console.writeMessage(solution.soutionDescription.toString) |
172 | 177 | ||
173 | // 8. Solution processing | 178 | // 8. Solution processing |
179 | |||
180 | // 8.1 Visualisation | ||
174 | if(solution instanceof ModelResult) { | 181 | if(solution instanceof ModelResult) { |
175 | val interpretations = solver.getInterpretations(solution) | 182 | val interpretations = solver.getInterpretations(solution) |
176 | val outputWorkspaceForRun = if(runs > 1) { | 183 | val outputWorkspaceForRun = if(runs > 1) { |
@@ -180,7 +187,7 @@ class GenerationTaskExecutor { | |||
180 | } | 187 | } |
181 | 188 | ||
182 | for(interpretationIndex : 0..<interpretations.size) { | 189 | for(interpretationIndex : 0..<interpretations.size) { |
183 | monitor.subTask('''Solving problem«IF runs>0» «run»/«runs»«ENDIF»: Visualising solution «interpretationIndex»/«interpretations.size»''') | 190 | monitor.subTask('''Solving problem«IF runs>0» «run»/«runs»«ENDIF»: Visualising solution «interpretationIndex+1»/«interpretations.size»''') |
184 | val interpretation = interpretations.get(interpretationIndex) | 191 | val interpretation = interpretations.get(interpretationIndex) |
185 | val model = logic2Ecore.transformInterpretation(interpretation,modelGeneration.trace) | 192 | val model = logic2Ecore.transformInterpretation(interpretation,modelGeneration.trace) |
186 | outputWorkspaceForRun.writeModel(model,'''model«IF runs>1»_«run»«ENDIF»_«interpretationIndex+1».xmi''') | 193 | outputWorkspaceForRun.writeModel(model,'''model«IF runs>1»_«run»«ENDIF»_«interpretationIndex+1».xmi''') |
@@ -202,7 +209,20 @@ class GenerationTaskExecutor { | |||
202 | monitor.worked(solverConfig.solutionScope.numberOfRequiredSolution*100) | 209 | monitor.worked(solverConfig.solutionScope.numberOfRequiredSolution*100) |
203 | } | 210 | } |
204 | 211 | ||
212 | // 8.2 Statistics | ||
213 | val statistics = new LinkedHashMap | ||
214 | statistics.put("Task",(task.eContainer as ConfigurationScript).commands.indexOf(task)+1) | ||
215 | statistics.put("Run",run) | ||
216 | statistics.put("Result",solution.class.simpleName) | ||
217 | statistics.put("Domain to logic transformation time",domain2LogicTransformationTime/1000000) | ||
218 | statistics.put("Logic to solver transformation time",solution.statistics.transformationTime) | ||
219 | statistics.put("Solver time",solution.statistics.solverTime) | ||
220 | for(entry: solution.statistics.entries) { | ||
221 | statistics.put(entry.name,statisticsUtil.readValue(entry)) | ||
222 | } | ||
223 | console.addStatistics(statistics) | ||
205 | } | 224 | } |
225 | console.flushStatistics | ||
206 | console.writeMessage("Model generation finished") | 226 | console.writeMessage("Model generation finished") |
207 | } catch(Exception e) { | 227 | } catch(Exception e) { |
208 | console.writeError('''Error occured: «e.message»''') | 228 | console.writeError('''Error occured: «e.message»''') |