public class LinguistischeVariable extends Object
Die Angabe des Wertebereichs ist optional. Wird keiner angegeben, wird als
Minimum 0 und als Maximum Integer.MAX_VALUE
angenommen. Werden Werte außerhalb des Wertebereichs fuzzyfiziert, ist
die Zugehörigkeit aller Terme 0.
Die Fuzzy-Sets werden nach der zweiten Trapezecke sortiert gesichert. Diese Ordnung wird beim erstmaligen fuzzyfizieren (mit oder ohne Wert) hergestellt.
| Modifier and Type | Class and Description |
|---|---|
(package private) class |
LinguistischeVariable.FuzzySetComparator
Klasse zum Vergleich bzw Sortieren von Fuzzy-Sets.
|
| Modifier and Type | Field and Description |
|---|---|
private List<FuzzySet> |
fuzzySets
Sichert die Fuzzy-Sets der linguistischen Variable.
|
private int |
maximum
Maximum des Wertebereichs der linguistischen Variable.
|
private int |
minimum
Minimum des Wertebereichs der linguistischen Variable.
|
private String |
name
Name der linguistischen Variable.
|
private boolean |
runderWertebereich
true, wenn ein runder Wertebereich angenommen werden soll. |
| Constructor and Description |
|---|
LinguistischeVariable(String name)
Konstruiert eine linguistische Variable.
|
LinguistischeVariable(String name,
int minimum,
int maximum)
Konstruiert eine linguistische Variable.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
addFuzzySet(FuzzySet set)
Fügt der linguistischen Variable ein neues Fuzzy-Set hinzu.
|
private void |
berechneUebergaenge()
Berechnet falls notwendig, die Übergänge zwischen den
Fuzzy-Sets.
|
LinguistischeVariable |
clone() |
Integer |
defuzzyfiziere(FuzzyVariable fv)
Defuzzyfiziert eine Fuzzy-Variable.
|
private Integer |
defuzzyfiziereSpezialfall(Collection<Point2D> kantenzug)
Bestimmt den Schwerpunkt der Fläche unter dem Kantenzug.
|
boolean |
enthaelt(String term)
Prüft ob ein bestimmter vorhanden in der Fuzzy-Variable enthalten
ist.
|
boolean |
equals(Object obj)
Zwei linguistische Variablen sind, wenn sie den gleichen Namen und die
gleiche Menge Fuzzy-Sets besitzen.
|
FuzzyVariable |
fuzzyfiziere()
Erstellt ein Fuzzy-Variable aus der linguistischen Variable.
|
FuzzyVariable |
fuzzyfiziere(int wert)
Fuzzyfiziert den übergebenen Wert.
|
List<FuzzySet> |
getFuzzySet()
Gibt die Liste der Fuzzy-Sets in der linguistischen Variable zurück.
|
FuzzySet |
getFuzzySet(String term)
Gibt das Fuzzy-Set mit dem angegebenen Namen zurück.
|
List<Point2D> |
getLuecken()
Bestimmt falls vorhanden die Definitionslücken.
|
int |
getMaximum()
Gibt das Maximum des Wertebereichs für die Defuzzyfizierung
zurück.
|
int |
getMinimum()
Gibt das Minimum des Wertebereichs für die Defuzzyfizierung
zurück.
|
String |
getName()
Gibt den Namen der linguistischen Variable zurück.
|
List<String> |
getTerme()
Gibt die Liste der Namen der Fuzzy-Sets in der linguistischen Variable
zurück.
|
int |
hashCode() |
boolean |
hatLuecken()
Prüft ob der die Fuzzy-Sets den gesamten Wertebereich
überdecken.
|
boolean |
isRunderWertebereich()
Prü ob die linguistische Variable einen runden Wertebereich besitzt.
|
void |
removeFuzzySet(String term)
Entfernt das Fuzzy-Set mit dem angegebenen Namen.
|
boolean |
replaceFuzzySet(String term,
FuzzySet set)
Ersetzt das Fuzzy-Set mit dem angegebenen Namen.
|
private static List<Point2D> |
scanlineKontur(Collection<Double> punkte,
List<Line2D> kanten)
Benutzt einen Scanline-Algorithmus um die Kontur aller Terme mit
Zugehörigkeit größer 0 zu bestimmen.
|
void |
setMaximum(int maximum)
Setzt das Maximum des Wertebereichs für die Defuzzyfizierung.
|
void |
setMinimum(int minimum)
Setzt das Minimum des Wertebereichs für die Defuzzyfizierung.
|
void |
setRunderWertebereich(boolean runderWertebereich)
Legt fest, ob der Wertebereich rund interpretiert werden soll.
|
String |
toString()
Gibt ein Tupel der Form Variablenname: min-max{FuzzySet, FuzzySet, ...}
|
private final List<FuzzySet> fuzzySets
private final String name
private int minimum
private int maximum
private boolean runderWertebereich
true, wenn ein runder Wertebereich angenommen werden soll.public LinguistischeVariable(String name)
LinguistischeVariable(String, int, int) mit
minimum = 0 und maximum = Integer.MAX_VALUE aufgerufen.name - Name der linguistischen Variablepublic LinguistischeVariable(String name, int minimum, int maximum)
name - Name der linguistischen Variableminimum - Minimum des Wertebereichs der Basisvariable für die
Defuzzyfizierungmaximum - Maximum des Wertebereichs der Basisvariable für die
DefuzzyfizierungIllegalArgumentException - Wenn minimum > maximum oder der Name nicht druckbar ist
bzw. Zeilenumbrüche enthältpublic boolean addFuzzySet(FuzzySet set)
set - Fuzzy-Setfalse, wenn das Fuzzy-Set bereits existiert und
deshalb nicht hinzugefügt wurde, sonst truepublic LinguistischeVariable clone()
clone in class ObjectObject.clone()public Integer defuzzyfiziere(FuzzyVariable fv)
fv - Ein Fuzzy-Wert als Fuzzy-Variablenull, wenn die
Defuzzyfizierung nicht möglich war. Letzteres ist der Fall,
wenn alle Terme die Zugehörigkeit 0.0 haben.IllegalArgumentException - Wenn die Fuzzy-Variable nicht zur linguistischen Variable
gehörtpublic boolean enthaelt(String term)
term - Name des zu suchenden Termstrue, wenn der Term gefunden wurdepublic boolean equals(Object obj)
equals in class ObjectObject.equals(Object)public FuzzyVariable fuzzyfiziere()
null, wenn keine Fuzzy-Sets
existierenpublic FuzzyVariable fuzzyfiziere(int wert)
fuzzyfiziere() erzeugt und
anschließend die Zugehörigkeiten berechnet.wert - Zu fuzzyfiziender Wertpublic List<FuzzySet> getFuzzySet()
public FuzzySet getFuzzySet(String term)
term - Name des Fuzzy-Setsnull, wenn kein Fuzzy-Set mit dem
Namen existiertNoSuchElementException - Wenn kein Fuzzy-Set mit dem Namen existiertpublic List<Point2D> getLuecken()
public int getMaximum()
public int getMinimum()
public String getName()
public List<String> getTerme()
public boolean hatLuecken()
false, wenn es Definitionslücken gibtpublic boolean isRunderWertebereich()
true, wenn ein runder Wertebereich vorliegtFuzzySet.isSpezialfall(),
setRunderWertebereich(boolean)public void removeFuzzySet(String term)
term - Name eines Fuzzy-Setspublic boolean replaceFuzzySet(String term, FuzzySet set)
removeFuzzySet(String) und
addFuzzySet(FuzzySet) auf.term - Name des zu ersetzenden Fuzzy-Setsset - Das neue Fuzzy-Settrue, wenn das Ersetzen erfolgreich warpublic void setMaximum(int maximum)
maximum - Das neue Maximumpublic void setMinimum(int minimum)
minimum - Das neue Minimumpublic void setRunderWertebereich(boolean runderWertebereich)
false ignoriert.runderWertebereich - Wenn true, dann fallen Minimum und Maximum aufeinanderpublic String toString()
toString in class ObjectObject.toString()private void berechneUebergaenge()
IllegalStateException - Wenn sich Fuzzy-Sets überschneiden und dies nicht
aufgelöst werden kann.private Integer defuzzyfiziereSpezialfall(Collection<Point2D> kantenzug)
kantenzug - Liste der Punkte des Kantenzugsprivate static List<Point2D> scanlineKontur(Collection<Double> punkte, List<Line2D> kanten)
punkte - Die Haltepunkte der Scanlinekanten - Die Kanten der geometrischen FigurenCopyright © 2017 BitCtrl Systems GmbH. All rights reserved.