diff options
Diffstat (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend')
1 files changed, 38 insertions, 4 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend index 45986ecf..cdce185a 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend | |||
@@ -1,5 +1,6 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app | 1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app |
2 | 2 | ||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.EuclideanDistance | ||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.JSDistance | 4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.JSDistance |
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance | 5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance |
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.StateData | 6 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.StateData |
@@ -8,6 +9,7 @@ import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric | |||
8 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric | 9 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric |
9 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric | 10 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric |
10 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric | 11 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric |
12 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.TypedOutDegree | ||
11 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.predictor.LinearModel | 13 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.predictor.LinearModel |
12 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | 14 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation |
13 | import java.util.ArrayList | 15 | import java.util.ArrayList |
@@ -21,6 +23,7 @@ class PartialInterpretationMetricDistance { | |||
21 | 23 | ||
22 | var KSDistance ks; | 24 | var KSDistance ks; |
23 | var JSDistance js; | 25 | var JSDistance js; |
26 | var EuclideanDistance ed; | ||
24 | var Map<Object, StateData> stateAndHistory; | 27 | var Map<Object, StateData> stateAndHistory; |
25 | var OLSMultipleLinearRegression regression; | 28 | var OLSMultipleLinearRegression regression; |
26 | List<StateData> samples; | 29 | List<StateData> samples; |
@@ -32,6 +35,7 @@ class PartialInterpretationMetricDistance { | |||
32 | new(){ | 35 | new(){ |
33 | ks = new KSDistance(Domain.Yakinduum); | 36 | ks = new KSDistance(Domain.Yakinduum); |
34 | js = new JSDistance(Domain.Yakinduum); | 37 | js = new JSDistance(Domain.Yakinduum); |
38 | ed = new EuclideanDistance(Domain.Yakinduum); | ||
35 | regression = new OLSMultipleLinearRegression(); | 39 | regression = new OLSMultipleLinearRegression(); |
36 | regression.noIntercept = false; | 40 | regression.noIntercept = false; |
37 | stateAndHistory = new HashMap<Object, StateData>(); | 41 | stateAndHistory = new HashMap<Object, StateData>(); |
@@ -44,6 +48,7 @@ class PartialInterpretationMetricDistance { | |||
44 | metrics.add(new OutDegreeMetric()); | 48 | metrics.add(new OutDegreeMetric()); |
45 | metrics.add(new NodeActivityMetric()); | 49 | metrics.add(new NodeActivityMetric()); |
46 | metrics.add(new MultiplexParticipationCoefficientMetric()); | 50 | metrics.add(new MultiplexParticipationCoefficientMetric()); |
51 | metrics.add(new TypedOutDegree()); | ||
47 | 52 | ||
48 | val metricCalculator = new PartialInterpretationGraph(partial, metrics, null); | 53 | val metricCalculator = new PartialInterpretationGraph(partial, metrics, null); |
49 | var metricSamples = metricCalculator.evaluateAllMetricsToSamples(); | 54 | var metricSamples = metricCalculator.evaluateAllMetricsToSamples(); |
@@ -51,6 +56,24 @@ class PartialInterpretationMetricDistance { | |||
51 | var mpc = ks.mpcDistance(metricSamples.mpcSamples); | 56 | var mpc = ks.mpcDistance(metricSamples.mpcSamples); |
52 | var na = ks.naDistance(metricSamples.naSamples); | 57 | var na = ks.naDistance(metricSamples.naSamples); |
53 | var outDegree = ks.outDegreeDistance(metricSamples.outDegreeSamples); | 58 | var outDegree = ks.outDegreeDistance(metricSamples.outDegreeSamples); |
59 | var typedOutDegree = ks.typedOutDegreeDistance(metricSamples.typedOutDegreeSamples); | ||
60 | |||
61 | return new MetricDistanceGroup(mpc, na, outDegree, typedOutDegree); | ||
62 | } | ||
63 | |||
64 | def MetricDistanceGroup calculateMetricEuclidean(PartialInterpretation partial){ | ||
65 | val metrics = new ArrayList<Metric>(); | ||
66 | metrics.add(new OutDegreeMetric()); | ||
67 | metrics.add(new NodeActivityMetric()); | ||
68 | metrics.add(new MultiplexParticipationCoefficientMetric()); | ||
69 | metrics.add(new TypedOutDegree()); | ||
70 | |||
71 | val metricCalculator = new PartialInterpretationGraph(partial, metrics, null); | ||
72 | var metricSamples = metricCalculator.evaluateAllMetricsToSamples(); | ||
73 | |||
74 | var mpc = ed.mpcDistance(metricSamples.mpcSamples); | ||
75 | var na = ed.naDistance(metricSamples.naSamples); | ||
76 | var outDegree = ed.outDegreeDistance(metricSamples.outDegreeSamples); | ||
54 | 77 | ||
55 | return new MetricDistanceGroup(mpc, na, outDegree); | 78 | return new MetricDistanceGroup(mpc, na, outDegree); |
56 | } | 79 | } |
@@ -132,14 +155,13 @@ class PartialInterpretationMetricDistance { | |||
132 | } | 155 | } |
133 | 156 | ||
134 | def double[] calculateFeature(int step, int violations){ | 157 | def double[] calculateFeature(int step, int violations){ |
135 | var features = newDoubleArrayOfSize(5); | 158 | var features = newDoubleArrayOfSize(2); |
136 | //constant term | 159 | //constant term |
137 | features.set(0, 1); | 160 | features.set(0, 1); |
138 | 161 | ||
139 | features.set(1, 1.0 / step); | 162 | features.set(1, 1.0 / step); |
140 | features.set(2, violations); | 163 | // features.set(2, violations); |
141 | features.set(3, Math.pow(violations, 2)); | 164 | // features.set(3, Math.pow(violations, 2)); |
142 | features.set(4, Math.pow(violations, 0.5)); | ||
143 | 165 | ||
144 | return features; | 166 | return features; |
145 | } | 167 | } |
@@ -149,6 +171,14 @@ class MetricDistanceGroup{ | |||
149 | var double mpcDistance; | 171 | var double mpcDistance; |
150 | var double naDistance; | 172 | var double naDistance; |
151 | var double outDegreeDistance; | 173 | var double outDegreeDistance; |
174 | var double typedOutDegreeDistance; | ||
175 | |||
176 | new(double mpcDistance, double naDistance, double outDegreeDistance, double typedOutDegreeDistance){ | ||
177 | this.mpcDistance = mpcDistance; | ||
178 | this.naDistance = naDistance; | ||
179 | this.outDegreeDistance = outDegreeDistance; | ||
180 | this.typedOutDegreeDistance = typedOutDegreeDistance; | ||
181 | } | ||
152 | 182 | ||
153 | new(double mpcDistance, double naDistance, double outDegreeDistance){ | 183 | new(double mpcDistance, double naDistance, double outDegreeDistance){ |
154 | this.mpcDistance = mpcDistance; | 184 | this.mpcDistance = mpcDistance; |
@@ -156,6 +186,10 @@ class MetricDistanceGroup{ | |||
156 | this.outDegreeDistance = outDegreeDistance; | 186 | this.outDegreeDistance = outDegreeDistance; |
157 | } | 187 | } |
158 | 188 | ||
189 | def double getTypedOutDegreeDistance(){ | ||
190 | return this.typedOutDegreeDistance; | ||
191 | } | ||
192 | |||
159 | def double getMPCDistance(){ | 193 | def double getMPCDistance(){ |
160 | return this.mpcDistance | 194 | return this.mpcDistance |
161 | } | 195 | } |