Commit dd6f356e authored by Falko Schumann's avatar Falko Schumann 💩

Methode extrahiert

parent 3b041239
......@@ -122,7 +122,7 @@ public final class FuzzySet {
return t4;
}
public boolean isRunderWertebereich() {
public boolean ueberschneidetAnfangUndEndeDesWertebereichs() {
return t1 <= t2 && t2 >= t3 && t3 <= t4;
}
......
......@@ -127,19 +127,23 @@ public final class LinguistischeVariable {
public FuzzyVariable fuzzyfiziere(double wert) {
// TODO Wenn nur t2 und t3 der Fuzzy-Sets angegeben sind, t1 und t4 so berechnen, das fließende Übergänge entstehen
// TODO Wenn nur t2 und t3 der Fuzzy-Sets angegeben sind, für erstes und letztes Fuzzy-Set im Wertebereich Rampen annehmen
// TODO Spezialfall runder Wertebreich: Aus einem Fuzzy-Set, dass beide Wertebereichsgrenzen schneidet, werden zwei Fuzyy-Sets erzeugt
List<FuzzySet> fuzzySets = zerlegeFuzzySetsDieAnfangUndEndeDesWertebereichsUeberschneiden();
List<Term> terme = fuzzyfiziere(fuzzySets, wert);
terme = fasseGleicheTermeZusammen(terme);
return new FuzzyVariable(name, terme);
}
private List<FuzzySet> zerlegeFuzzySetsDieAnfangUndEndeDesWertebereichsUeberschneiden() {
List<FuzzySet> fuzzySets = new ArrayList<>(this.fuzzySets);
for (int i = 0; i < fuzzySets.size(); i++) {
FuzzySet fs = fuzzySets.get(i);
if (fs.isRunderWertebereich()) {
if (fs.ueberschneidetAnfangUndEndeDesWertebereichs()) {
fuzzySets.set(i, FuzzySet.aufsteigendeRampe(fs.getName(), fs.getT1(), fs.getT2(), wertebereich.getMaximum()));
fuzzySets.add(FuzzySet.abfallendeRampe(fs.getName(), wertebereich.getMinimum(), fs.getT3(), fs.getT4()));
}
}
List<Term> terme = fuzzyfiziere(fuzzySets, wert);
terme = fasseGleicheTermeZusammen(terme);
return new FuzzyVariable(name, terme);
return fuzzySets;
}
private static List<Term> fuzzyfiziere(List<FuzzySet> fuzzySets, double wert) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment