diff options
author | 20001LastOrder <boqi.chen@mail.mcgill.ca> | 2019-05-27 16:20:40 -0400 |
---|---|---|
committer | 20001LastOrder <boqi.chen@mail.mcgill.ca> | 2019-05-27 16:20:40 -0400 |
commit | 7595605950a45892af9e19cb8a5968da127479f4 (patch) | |
tree | 459803af05a916cd9d2e991358a816b242a44029 /Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src | |
parent | add project for metric calculator (diff) | |
download | VIATRA-Generator-7595605950a45892af9e19cb8a5968da127479f4.tar.gz VIATRA-Generator-7595605950a45892af9e19cb8a5968da127479f4.tar.zst VIATRA-Generator-7595605950a45892af9e19cb8a5968da127479f4.zip |
modify generation to log metrics measurements
Diffstat (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src')
-rw-r--r-- | Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend index 5f958cfa..425c9d84 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend | |||
@@ -17,33 +17,41 @@ import org.eclipse.viatra.dse.api.Solution | |||
17 | 17 | ||
18 | class PartialInterpretationMetric { | 18 | class PartialInterpretationMetric { |
19 | var static state = 0; | 19 | var static state = 0; |
20 | def static void calculateMetric(PartialInterpretation partial, String path, int id, String currentStateId){ | 20 | |
21 | // calculate the metrics for a state | ||
22 | def static void calculateMetric(PartialInterpretation partial, String path, String currentStateId){ | ||
21 | val metrics = new ArrayList<Metric>(); | 23 | val metrics = new ArrayList<Metric>(); |
22 | metrics.add(new OutDegreeMetric()); | 24 | metrics.add(new OutDegreeMetric()); |
23 | metrics.add(new NodeActivityMetric()); | 25 | metrics.add(new NodeActivityMetric()); |
24 | metrics.add(new MultiplexParticipationCoefficientMetric()); | 26 | metrics.add(new MultiplexParticipationCoefficientMetric()); |
25 | 27 | ||
28 | //make dir since the folder can be none existing | ||
26 | new File(path).mkdir(); | 29 | new File(path).mkdir(); |
27 | val filename = path + "/state_"+state+".csv"; | 30 | val filename = path + "/state_"+currentStateId+".csv"; |
28 | state++; | 31 | state++; |
29 | val metricCalculator = new PartialInterpretationGraph(partial, metrics, currentStateId); | 32 | val metricCalculator = new PartialInterpretationGraph(partial, metrics, currentStateId); |
30 | 33 | ||
31 | CsvFileWriter.write(metricCalculator.evaluateAllMetrics(), filename); | 34 | CsvFileWriter.write(metricCalculator.evaluateAllMetrics(), filename); |
32 | } | 35 | } |
33 | 36 | ||
34 | def static void outputTrajectories(PartialInterpretation empty, List<Solution> solutions){ | 37 | def static void outputTrajectories(PartialInterpretation empty, List<Solution> solutions){ |
35 | |||
36 | for(solution : solutions){ | 38 | for(solution : solutions){ |
39 | //need to copy the empty solution because the transition directly worked on the graph | ||
37 | val emptySolutionCopy = EcoreUtil.copy(empty) | 40 | val emptySolutionCopy = EcoreUtil.copy(empty) |
38 | val trajectory = solution.shortestTrajectory; | 41 | val trajectory = solution.shortestTrajectory; |
39 | trajectory.modelWithEditingDomain = emptySolutionCopy | 42 | trajectory.modelWithEditingDomain = emptySolutionCopy |
43 | |||
44 | // state codes that will record the trajectory | ||
40 | val stateCodes = newArrayList() | 45 | val stateCodes = newArrayList() |
41 | 46 | ||
47 | //transform and record the state codes for each state | ||
42 | while(trajectory.doNextTransformation){ | 48 | while(trajectory.doNextTransformation){ |
43 | println(trajectory.stateCoder.createStateCode) | 49 | //println(trajectory.stateCoder.createStateCode) |
44 | stateCodes.add(trajectory.stateCoder.createStateCode.toString) | 50 | stateCodes.add(trajectory.stateCoder.createStateCode.toString) |
45 | } | 51 | } |
46 | 52 | ||
53 | |||
54 | //output the trajectory | ||
47 | try{ | 55 | try{ |
48 | val path = "debug/metric/trajectories/trajectory"+trajectory.stateCoder.createStateCode.toString+".csv" | 56 | val path = "debug/metric/trajectories/trajectory"+trajectory.stateCoder.createStateCode.toString+".csv" |
49 | val PrintWriter writer = new PrintWriter(new File(path)) | 57 | val PrintWriter writer = new PrintWriter(new File(path)) |