aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend')
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend42
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 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app 1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app
2 2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.EuclideanDistance
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.JSDistance 4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.JSDistance
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance 5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance
5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.StateData 6import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.StateData
@@ -8,6 +9,7 @@ import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
8import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric 9import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric
9import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric 10import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric
10import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric 11import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric
12import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.TypedOutDegree
11import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.predictor.LinearModel 13import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.predictor.LinearModel
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation 14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
13import java.util.ArrayList 15import 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 }