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
Search WWH ::




Custom Search