Information Technology Reference
In-Depth Information
Die Methoden
createClause()
und
getFuzzySet()
der Klasse
FuzzyRule
werden verwendet, wenn neue Fuzzy-Regeln erstellt werden. Durch diese indirekte Art,
Fuzzy- Regeln zu erstellen, können die Fuzzy-Sets und ihre Hedge-Ausdrücke von der
Instanz der
FuzzyRule
eingesehen werden. Mit der Methode
createClause()
wird
das Fuzzy-Set auf der Grundlage seines Namens und seiner Hedge-Ausdrücke abgerufen.
Die Implementierung der Vorwärtsverkettung verwendet Methoden in den Klassen
FuzzyRule
,
FuzzyClause
,
FuzzyOperator
und
WorkingFuzzySet
. Die
Methode
forwardChain()
der Klasse
FuzzyRule
setzt automatisch die Regeln zu-
rück (aber nicht die Variablen, deren Werte der Anwender vielleicht eingegeben hat). Die
factBasis
wird auf einen
BitSet
initialisiert, dessen Bits alle gelöscht sind. Sie wird
benutzt, um die Variablen zu verfolgen, die berechnet oder denen Werte zugewiesen wur-
den. Danach werden die unbedingten Regeln (Behauptungen) verarbeitet. Behauptungen
zu haben, ist ein anderer Weg, um Werte von Variablen zu initialisieren. Schließlich wird
in der Methode
prozessConditionRule()
die Vorwärtsverkettung mit der Fuzzy-
Logik ausgeführt. Die Methode
processAssertionRules()
geht einfach die Liste
der unbedingten Regeln durch und bringt jede Regel zum Feuern. Da keine Regel eine
Prämisse hat, besteht die Wirkung des Feuerns darin, die Zuweisung der rechten Seite des
Fuzzy-Sets auf die kontinuierliche Fuzzy-Regelvariable auf der linken Seite auszuführen.
Die Methode
prozessConditionRule()
ist ein wenig komplizierter. Die Fuzzy-
Regel-Basis kann eine Schlussfolgerung in mehreren Schritten durchführen. Das bedeutet,
dass bei einem vorgegebenen Regelsatz eine Teilmenge vorhanden sein kann, die den
Wert der Variablen X berechnet, auf den dann in der Prämisse einer anderen Regel C zuge-
griffen wird. Es muss in diesem Fall die Regel verarbeitet werden, die X berechnet, bevor
C zur Verarbeitung ansteht. Um dies zu bewerkstelligen, wird ein Java-Bit-Set verwendet.
Ein Bit-Set ist ein Objekt, das einen großen Bit-String kaum darstellen kann. Jeder Va-
riablen in der Fuzzy-Regelbasis wird jeweils der zugehörige Integerwert
Id
zugewiesen.
Sobald eine Zuweisung zu einer Variablen durchgeführt wurde, wird deren Bit im Bit-Set
gesetzt. Dies macht sichtbar, welche Variablen berechnet wurden. Dieser Mechanismus
wird benutzt, um eine Reihe von Teilmengen von zu verarbeitenden Regeln festzustellen.
Dabei wird der boolesche Wert
moreRules
verwendet, um anzuzeigen, dass eine andere
Teilmenge von Fuzzy-Regeln auf die Verarbeitung wartet. Er steuert, wann die Schluss-
folgerungsschleife verlassen werden kann.
moreRules
ist dabei auf wahr gesetzt, wenn
in die Schleife eingetreten wird. Als Nächstes erfolgt eine Aufzählung aller bedingten
Regeln der Regelbasis. Jede Regel, die noch nicht gefeuert hat, kann den id-Bits Ver-
weisen auf die linksseitigen Variablen entnommen und in zwei Bit-Sets platziert werden.
Weiterhin kommt es zu einer Verknüpfung der bekannten Variablen (
factBasis
) und
die von der
Ihs
benötigten Variablen (
tempFacts
) mit einem logischen
and.
Wenn
das Ergebnis denselben Bits entspricht, die die Regel benötigt (
ruleTempFacts
), kann
die Regel der Liste der zu verarbeitenden Regeln (
tmpRuleSet
) hinzugefügt werden.
Wenn auf diese Weise jede Regel in der Regelbasis verarbeitet wurde, liefert der Algorith-
mus eine erste Teilmenge der zu verarbeitenden Regeln zurück. Wenn
tmpRuleSet
leer
ist, ist der Algorithmus abgeschlossen, der booleschen Wert
moreRules
wird auf falsch