2020-04-05 19:11:50 +00:00
|
|
|
package de.wwwu.awolf.presenter.algorithms;
|
|
|
|
|
2020-04-05 20:27:56 +00:00
|
|
|
import de.wwwu.awolf.model.communication.Message;
|
|
|
|
import de.wwwu.awolf.model.dao.Line;
|
2020-04-05 19:11:50 +00:00
|
|
|
import de.wwwu.awolf.presenter.AbstractPresenter;
|
2020-04-05 20:27:56 +00:00
|
|
|
import java.util.Map;
|
2020-04-05 19:11:50 +00:00
|
|
|
import java.util.Set;
|
|
|
|
import java.util.concurrent.Callable;
|
|
|
|
import java.util.concurrent.Flow;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
|
|
|
|
*
|
|
|
|
* @Author: Armin Wolf
|
|
|
|
* @Email: a_wolf28@uni-muenster.de
|
|
|
|
* @Date: 28.05.2017.
|
|
|
|
*/
|
2020-04-05 20:27:56 +00:00
|
|
|
public interface Algorithm extends Callable<Line>, Flow.Publisher<Message> {
|
2020-04-05 19:11:50 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Startet die Berechnung des jeweiligen Algorithmus.
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
Line call();
|
|
|
|
|
|
|
|
void setInput(final Set<Line> lines);
|
|
|
|
|
|
|
|
Algorithm.Type getType();
|
|
|
|
|
|
|
|
void setPresenter(AbstractPresenter presenter);
|
|
|
|
|
2020-04-06 11:07:10 +00:00
|
|
|
Map<String, String> getParameter();
|
2020-04-05 20:27:56 +00:00
|
|
|
|
2020-04-06 11:07:10 +00:00
|
|
|
void setParameter(Map<String, String> parameter);
|
2020-04-05 20:27:56 +00:00
|
|
|
|
2020-04-05 19:11:50 +00:00
|
|
|
enum Type {
|
|
|
|
LMS("Least Median of Squares"),
|
|
|
|
RM("Repeated Median"),
|
|
|
|
TS("Theil-Sen"),
|
|
|
|
NAIVE_LMS("Brute Force (LMS)"),
|
|
|
|
NAIVE_RM("Brute Force (RM)"),
|
|
|
|
NAIVE_TS("Brute Force (TS)");
|
|
|
|
|
|
|
|
public final String label;
|
|
|
|
|
|
|
|
Type(String label) {
|
|
|
|
this.label = label;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getLabel() {
|
|
|
|
return label;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|