fix in der Visualisierung der Evaluation
This commit is contained in:
parent
634d9361ea
commit
c4cb0ca3e7
|
@ -3,6 +3,7 @@ package presenter.evaluation;
|
|||
import model.Interval;
|
||||
import model.Line;
|
||||
import model.LineModel;
|
||||
import model.Point;
|
||||
import presenter.algorithms.IntersectionCounter;
|
||||
import presenter.algorithms.LeastMedianOfSquaresEstimator;
|
||||
import presenter.algorithms.RepeatedMedianEstimator;
|
||||
|
@ -24,6 +25,13 @@ public class EvaluateAlgorithms extends Observable {
|
|||
|
||||
private LineModel arrangement;
|
||||
|
||||
private LinkedList<Line> lmsL;
|
||||
private LinkedList<Line> rmL;
|
||||
private LinkedList<Line> tsL;
|
||||
|
||||
private LinkedList<Point> lmsP;
|
||||
private LinkedList<Point> tsP;
|
||||
|
||||
private Thread lmsThread;
|
||||
private Thread rmThread;
|
||||
private Thread tsThread;
|
||||
|
@ -34,7 +42,7 @@ public class EvaluateAlgorithms extends Observable {
|
|||
|
||||
private DatasetGenerator generator;
|
||||
|
||||
private String[][] names = {{"MSE", "RMSE", "MAE", "MDAE"}, {"MAPE", "MDAPE", "RMSPE", "RMDSPE"}};
|
||||
private String[][] names = {{"MSE", "RMSE", "MAE", "MDAE","Steigung","y-Achsenabschnitt"}, {"MAPE", "MDAPE", "RMSPE", "RMDSPE","Steigung","y-Achsenabschnitt"}};
|
||||
|
||||
//übergebene Parameter
|
||||
private int type;
|
||||
|
@ -75,19 +83,28 @@ public class EvaluateAlgorithms extends Observable {
|
|||
IntersectionCounter counter = new IntersectionCounter();
|
||||
counter.run(arrangement.getLines(), new Interval(-99999, 99999));
|
||||
counter.calculateIntersectionAbscissas(arrangement);
|
||||
|
||||
|
||||
lmsL = new LinkedList<>(arrangement.getLines());
|
||||
rmL = new LinkedList<>(arrangement.getLines());
|
||||
tsL = new LinkedList<>(arrangement.getLines());
|
||||
|
||||
lmsP = new LinkedList<>(arrangement.getNodes());
|
||||
tsP = new LinkedList<>(arrangement.getNodes());
|
||||
}
|
||||
|
||||
public void run() throws InterruptedException {
|
||||
|
||||
setChanged();
|
||||
String[] msg = {"eval-dataset-generated"};
|
||||
notifyObservers(msg);
|
||||
ArrayList<String> result;
|
||||
ArrayList<ArrayList<String>> multipleResults = new ArrayList<>();
|
||||
|
||||
startLMS();
|
||||
startRM();
|
||||
startTS();
|
||||
switch (type) {
|
||||
case 0:
|
||||
result = new ArrayList<>();
|
||||
//der alg der gewählt wurde
|
||||
if (alg == 0) {
|
||||
startLMS();
|
||||
|
@ -106,12 +123,9 @@ public class EvaluateAlgorithms extends Observable {
|
|||
sendTableApproximationData(result, alg);
|
||||
break;
|
||||
case 1:
|
||||
result = new ArrayList<>();
|
||||
ArrayList<Double[]> lineRes;
|
||||
switch (alg) {
|
||||
case 3:
|
||||
startLMS();
|
||||
startRM();
|
||||
|
||||
result = getPercentigeErrorBasedMeasure(arrangement.getLines(), lmsRes[0], lmsRes[1]);
|
||||
multipleResults.add(result);
|
||||
|
@ -123,12 +137,10 @@ public class EvaluateAlgorithms extends Observable {
|
|||
lineRes = new ArrayList<>();
|
||||
lineRes.add(lmsRes);
|
||||
lineRes.add(rmRes);
|
||||
sendPloteLineResults(lineRes, new Integer[]{0, 1});
|
||||
sendPloteLineResults(lineRes, new Integer[]{0,1});
|
||||
|
||||
break;
|
||||
case 4:
|
||||
startLMS();
|
||||
startTS();
|
||||
|
||||
result = getPercentigeErrorBasedMeasure(arrangement.getLines(), lmsRes[0], lmsRes[1]);
|
||||
multipleResults.add(result);
|
||||
result = fillPseudoResults();
|
||||
|
@ -142,9 +154,6 @@ public class EvaluateAlgorithms extends Observable {
|
|||
sendPloteLineResults(lineRes, new Integer[]{0, 2});
|
||||
break;
|
||||
case 5:
|
||||
startRM();
|
||||
startTS();
|
||||
|
||||
result = fillPseudoResults();
|
||||
multipleResults.add(result);
|
||||
result = getPercentigeErrorBasedMeasure(arrangement.getLines(), rmRes[0], rmRes[1]);
|
||||
|
@ -158,10 +167,6 @@ public class EvaluateAlgorithms extends Observable {
|
|||
sendPloteLineResults(lineRes, new Integer[]{1, 2});
|
||||
break;
|
||||
case 6:
|
||||
startLMS();
|
||||
startRM();
|
||||
startTS();
|
||||
|
||||
result = getPercentigeErrorBasedMeasure(arrangement.getLines(), lmsRes[0], lmsRes[1]);
|
||||
multipleResults.add(result);
|
||||
result = getPercentigeErrorBasedMeasure(arrangement.getLines(), rmRes[0], rmRes[1]);
|
||||
|
@ -266,8 +271,9 @@ public class EvaluateAlgorithms extends Observable {
|
|||
}
|
||||
|
||||
public void startLMS() throws InterruptedException {
|
||||
|
||||
lmsThread = new Thread(() -> {
|
||||
LeastMedianOfSquaresEstimator lmsAlg = new LeastMedianOfSquaresEstimator(arrangement.getLines(), arrangement.getNodes());
|
||||
LeastMedianOfSquaresEstimator lmsAlg = new LeastMedianOfSquaresEstimator(lmsL,lmsP);
|
||||
lmsAlg.run();
|
||||
lmsAlg.getResult();
|
||||
lmsRes[0] = lmsAlg.getSlope();
|
||||
|
@ -279,7 +285,7 @@ public class EvaluateAlgorithms extends Observable {
|
|||
|
||||
public void startRM() throws InterruptedException {
|
||||
rmThread = new Thread(() -> {
|
||||
RepeatedMedianEstimator rmAlg = new RepeatedMedianEstimator(arrangement.getLines());
|
||||
RepeatedMedianEstimator rmAlg = new RepeatedMedianEstimator(rmL);
|
||||
rmAlg.run();
|
||||
rmAlg.getResult();
|
||||
rmRes[0] = rmAlg.getSlope();
|
||||
|
@ -287,11 +293,12 @@ public class EvaluateAlgorithms extends Observable {
|
|||
});
|
||||
rmThread.start();
|
||||
rmThread.join();
|
||||
|
||||
}
|
||||
|
||||
public void startTS() throws InterruptedException {
|
||||
tsThread = new Thread(() -> {
|
||||
TheilSenEstimator tsAlg = new TheilSenEstimator(arrangement.getLines(), arrangement.getNodes());
|
||||
TheilSenEstimator tsAlg = new TheilSenEstimator(tsL,tsP);
|
||||
tsAlg.run();
|
||||
tsAlg.getResult();
|
||||
tsRes[0] = tsAlg.getSlope();
|
||||
|
@ -302,34 +309,40 @@ public class EvaluateAlgorithms extends Observable {
|
|||
}
|
||||
|
||||
|
||||
public ArrayList<String> getScaleDependentMeasure(LinkedList<Line> lines, Double m, Double b) {
|
||||
public ArrayList<String> getScaleDependentMeasure(final LinkedList<Line> lines, final Double m, final Double b) {
|
||||
ScaleDependentMeasure scaleDependentMeasure = new ScaleDependentMeasure(lines, m, b);
|
||||
ArrayList<String> ret = new ArrayList<>();
|
||||
ret.add(scaleDependentMeasure.mse().toString());
|
||||
ret.add(scaleDependentMeasure.rmse().toString());
|
||||
ret.add(scaleDependentMeasure.mae().toString());
|
||||
ret.add(scaleDependentMeasure.mdae().toString());
|
||||
ret.add(m.toString());
|
||||
ret.add(b.toString());
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public ArrayList<String> getPercentigeErrorBasedMeasure(LinkedList<Line> lines, Double m, Double b) {
|
||||
public ArrayList<String> getPercentigeErrorBasedMeasure(final LinkedList<Line> lines, final Double m, final Double b) {
|
||||
PercentageErrorBasedMeasure percentageErrorBasedMeasure = new PercentageErrorBasedMeasure(lines, m, b);
|
||||
ArrayList<String> ret = new ArrayList<>();
|
||||
ret.add(percentageErrorBasedMeasure.mape().toString());
|
||||
ret.add(percentageErrorBasedMeasure.mdape().toString());
|
||||
ret.add(percentageErrorBasedMeasure.rmspe().toString());
|
||||
ret.add(percentageErrorBasedMeasure.rmdspe().toString());
|
||||
ret.add(m.toString());
|
||||
ret.add(b.toString());
|
||||
return ret;
|
||||
}
|
||||
|
||||
public ArrayList<String> getScaledErrorBasedMeasure(LinkedList<Line> lines, Double m, Double b) {
|
||||
public ArrayList<String> getScaledErrorBasedMeasure(final LinkedList<Line> lines, final Double m, final Double b) {
|
||||
ScaledErrorBasedMeasure scaledErrorBasedMeasure = new ScaledErrorBasedMeasure(lines, m, b);
|
||||
ArrayList<String> ret = new ArrayList<>();
|
||||
ret.add(scaledErrorBasedMeasure.mse().toString());
|
||||
ret.add(scaledErrorBasedMeasure.rmse().toString());
|
||||
ret.add(scaledErrorBasedMeasure.mae().toString());
|
||||
ret.add(scaledErrorBasedMeasure.mdae().toString());
|
||||
ret.add(m.toString());
|
||||
ret.add(b.toString());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -339,10 +352,11 @@ public class EvaluateAlgorithms extends Observable {
|
|||
result.add(" ");
|
||||
result.add(" ");
|
||||
result.add(" ");
|
||||
result.add(" ");
|
||||
result.add(" ");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public LinkedList<Line> getData() {
|
||||
return arrangement.getLines();
|
||||
}
|
||||
|
|
|
@ -149,7 +149,6 @@ public class EvaluationPanel extends JPanel {
|
|||
|
||||
|
||||
//Tabelle
|
||||
|
||||
model.setColumnIdentifiers(selections);
|
||||
table.setDragEnabled(true);
|
||||
JScrollPane scrollPane = new JScrollPane(table);
|
||||
|
@ -293,9 +292,9 @@ public class EvaluationPanel extends JPanel {
|
|||
String[] name = {"LMS", "RM", "TS"};
|
||||
|
||||
for (Double[] o : alg) {
|
||||
Double m = o[1];
|
||||
Double b = o[1];
|
||||
int i = o[0].intValue();
|
||||
Double m = o[1];
|
||||
Double b = o[2];
|
||||
plotPanel.addLineToPlot(m, b, color[i], name[i]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue