kleiner Fix, bevor evaluiert wird müssen noch die Ergebnisse geholt werden.

This commit is contained in:
Armin Wolf 2017-08-02 07:40:08 +02:00
parent 49fdc3e21c
commit 2f51b22d38
4 changed files with 48 additions and 34 deletions

View File

@ -364,6 +364,12 @@ public class LeastMedianOfSquaresEstimator extends Observable implements Algorit
String[] result = {"lms", m+"", b+""};
notifyObservers(result);
} else {
double m = (getSigmaMin().getX2() + getSigmaMin().getX1()) * 0.5;
double b = (getSigmaMin().getY2() + getSigmaMin().getY1()) * -0.5;
slope = m;
yInterception = b;
}
}

View File

@ -283,6 +283,11 @@ public class RepeatedMedianEstimator extends Observable implements Algorithm {
yInterception = b;
String[] result = new String[]{"rm", m+"", b+""};
notifyObservers(result);
}else {
double m = thetaLow;
double b = (-1)*((linesInCenterSlab.get(0).getM() * (thetaLow)) + linesInCenterSlab.get(0).getB());
slope = m;
yInterception = b;
}
}

View File

@ -224,9 +224,6 @@ public class TheilSenEstimator extends Observable implements Algorithm {
@Override
public void getResult() {
if (presenter != null) {
setChanged();
double m, x;
double b, y;
@ -254,6 +251,9 @@ public class TheilSenEstimator extends Observable implements Algorithm {
slope = m;
yInterception = b;
if (presenter != null) {
setChanged();
String[] result = new String[]{"ts", m + "", b + ""};
notifyObservers(result);
}

View File

@ -24,6 +24,7 @@ public class EvaluateAlgorithms {
private Double[] rmResult;
private Double[] tsResult;
private String[] names = {"MSE:\n", "RMSE:\n", "MAE:\n", "MdAE:\n"};
public EvaluateAlgorithms(){
this.arrangement = new Arrangement();
@ -56,20 +57,21 @@ public class EvaluateAlgorithms {
LeastMedianOfSquaresEstimator lmsAlg = new LeastMedianOfSquaresEstimator(arrangement.getLines()
,arrangement.getNodes());
lmsAlg.run();
lmsAlg.getResult();
List<Double> errors = sampsonError(arrangement.getLines(), lmsAlg.getSlope(), lmsAlg.getyInterception());
lmsResult = getResults(errors);
});
Thread rm = new Thread(() -> {
RepeatedMedianEstimator rmAlg = new RepeatedMedianEstimator(arrangement.getLines());
rmAlg.run();
rmAlg.getResult();
List<Double> errors = sampsonError(arrangement.getLines(), rmAlg.getSlope(), rmAlg.getyInterception());
rmResult = getResults(errors);
});
Thread ts = new Thread(() -> {
TheilSenEstimator tsAlg = new TheilSenEstimator(arrangement.getLines(), arrangement.getNodes());
tsAlg.run();
tsAlg.getResult();
List<Double> errors = sampsonError(arrangement.getLines(), tsAlg.getSlope(), tsAlg.getyInterception());
tsResult = getResults(errors);
});
@ -82,7 +84,8 @@ public class EvaluateAlgorithms {
ts.join();
for (int i=0;i<4;i++){
System.out.println("LMS: "+ lmsResult[i] + "\tTS: " + tsResult[i] + "\tRM: " + rmResult[i] + "\t");
System.out.print(names[i]);
System.out.println("LMS: "+ lmsResult[i] + "\tTS: " + tsResult[i] + "\tRM: " + rmResult[i] + "\n\n");
}
}
@ -133,17 +136,17 @@ public class EvaluateAlgorithms {
}
public List<Double> sampsonError(LinkedList<Line> lines, Double m, Double b){
public List<Double> sampsonError(final LinkedList<Line> lines, Double m, Double b){
//Liste mit den Fehler zu jedem Punkt
List<Double> sampsonrror = new ArrayList<>();
List<Double> sampsonerror = new ArrayList<>();
for (Line line : lines){
Double error = Math.pow(m * line.getM() - line.getB() + b, 2) / (Math.pow(m,2) + 1);
sampsonrror.add(error);
sampsonerror.add(error);
}
return sampsonrror;
return sampsonerror;
}
}