Information Technology Reference
In-Depth Information
Fuzzy-Set während der Schlussfolgerung verwendet wird. Um einen neuen Wert für die
kontinuierliche Fuzzy-Regelvariable zu erhalten oder zu setzen, sind zwei
setFuzzy-
Value()
-Methoden definiert. Die erste ruft einfach die Methode
setRawValue()
auf, die eine unbedingte Zuweisung des Fuzzy-Sets
valFzy
der Variable vornimmt und
diesen dann defuzzifiziert, so dass der numerische oder präzise Wert
valCrisp
zur Ver-
fügung steht. Während der Schlussfolgerung wird die andere
setFuzzyValue()-
Me-
thode mit einem neuen Fuzzy-Set und einem entsprechenden Wahrheitswert
truthVa-
lue
als Eingabeargumente benutzt.
Die Methode
getOrAddHedgedFuzzySet()
konstruiert zuerst den Set-Namen in
Hedge-Form, indem sie
setName
mit den Hedge-Ausdrücken verknüpft. Danach erstellt
sie in zwei Schritten zunächst ein Duplikat des ursprünglichen Fuzzy-Sets, wendet dann
Hedge-Ausdrücke auf das
Set
an und erzeugt damit das Hedge-Fuzzy-Set
truthVec-
tor
. Die Methoden
addSet()
werden beide zum Erstellen von Instanzen der Klassen
ShoulderFuzzySet
,
TrapezoidFuzzySet
und
TriangleFuzzySet
und dem
anschließenden Hinzufügen zur Klasse
ContinuousFuzzyRuleVariable
verwen-
det. Alle Methoden nehmen den String
setName
, den Parameter
alphaCut
und dann
eine Reihe von Parametern an, die in den jeweiligen FuzzySet-Konstruktoren verwendet
werden. In der Methode
addSetShoulder()
werden der Anfang, ein Endpunkt und
die Richtungen des Sets festgelegt. Mit der Methode
addSetTrapezoid()
werden der
linke und der rechte Endpunkt sowie der linke und rechte Kernpunkt festgelegt. Durch die
Methode
addSetTriangle()
wird entsprechend der linke, der mittlere und der rechte
Punkt festgelegt. All diese Werte müssen allerdings innerhalb des Wertebereichs der kon-
tinuierlichen Fuzzy-Regelvariablen liegen.
Die Klasse
FuzzySet
ist die Grundklasse der Dreieck-, Trapez-, Schulter- und Ar-
beits-Fuzzy-Sets, die in dieser Implementierungsvariante verwendet werden. Sie enthält
den Integerwert
setType
, den String
setName
, die Parameter
alphaCut
,
domain-
Lo
und
domainHi
und das Double-Array
truthVector
, das die Form des Fuzzy-Sets
an 256 Punkten (MAX-VALUES) über den Wertebereich festlegt. Zusätzlich zu den
get
-
und
set
-Methoden für diese Parameter definiert die Klasse
FuzzySet
die Methode
applyHedges()
, die die Grundform des Fuzzy-Sets festlegt, indem sie ihn mit der Me-
thode
applyHedgeConDil()
konzentriert und verdünnt. Zu den unterstützten lingu-
istischen Hedge-Ausdrücken gehören
extremely
,
slightly
,
somewhat
und
very
.
Die Methode zur Defuzzifizierung ruft zuerst die Methode
applyAlphaCut()
auf,
um alle
truthVector
-Werte auf null zu setzen, die kleiner oder gleich dem Parameter
alphaCut
sind. Wenn die Methode
getSetHeight()
den Wert 0 ergibt, waren alle
256
truthVector
-Elemente unter der
alphaCut
-Grenze und es wird ein defuzzifi-
zierter Wert von 0,0 zurückgegeben. Andernfalls kommen die Defuzzifizierungsmethoden
CENTROID
(Schwerpunkt) und
MAXHEIGHT
(Maximalhöhe) auf das Fuzzy-Set zur An-
wendung. Die Zugehörigkeitsmethode verbindet den skalaren Eingabewert mit der Zu-
gehörigkeitsfunktion des Fuzzy-Sets, wie es durch den Wahrheitsvektor
truthVector
mit seinen 256 Elementen dargestellt wird. Wenn der skalare Wert unterhalb des Wertebe-
reichs des Fuzzy-Sets liegt, wird ihm die Höhe des am weitesten links liegenden Elements