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

Methode extrahiert

parent 3b041239
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ public final class FuzzySet {
        return t4;
    }

    public boolean isRunderWertebereich() {
    public boolean ueberschneidetAnfangUndEndeDesWertebereichs() {
        return t1 <= t2 && t2 >= t3 && t3 <= t4;
    }

+9 −5
Original line number Diff line number Diff line
@@ -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) {