Information Technology Reference
In-Depth Information
Verfügung gestellt, um
value
festzulegen und den Wert der Variable auszulesen. Mit
der Methode
setLabels()
werden die gültigen symbolischen Werte der kategorischen
Variablen bestimmt. Die Methode
getIndex()
gibt den Index zurück, der einer sym-
bolischen Variable gegeben wurde. Ein Beispiel für die Funktion dieser Methoden ist im
Abschnitt über die Implementierung der Regelbasis
Fahrzeugkonfiguration
ge-
geben, in dem die Variablen definiert werden.
Für die Regelverarbeitung wird die Klasse
RuleVariable
zur Verfügung gestellt,
in der das regelspezifische Verhalten abgebildet wird. Die Klasse
RuleVariable
bietet
die Unterstützung für die zu der Schlussfolgerung erforderlichen Variablen. Die Regel-
variablen erben dabei das diskrete symbolische Verhalten der basalen Grundklasse
Va-
riable
. Ein neues Datenelement ist der Vektor
clauseReference
, der Verweise auf
alle Klauseln bereithält, die auf diese Variable zugreifen. Instanzen der Klasse
Clause
registrieren sich durch den Aufruf der Methode
addClauseReference()
. Es gibt
verschiedene Methoden, die überschrieben werden und einige neue, die für die Regelver-
arbeitung hinzugefügt wurden. Die Methode
setValue()
richtet nicht nur den Wert der
Variable ein, sondern ruft auch die Methode
updateClause()
auf, die alle Klauseln
durchgeht, die auf diese Regelvariable zugreifen und ihren Wahrheitswert mit der Metho-
de
check()
überprüft. Die Variable
promptString
enthält den Text, der ausgegeben
wird, wenn der Anwender aufgefordert wird, einen Wert für diese Variable während der
Rückwärtsverkettung einzugeben und
ruleName
den Namen der Regel, die den Wert
dieser Regelvariablen bestimmt. Wenn die Regel feuert, ruft sie die Methode
setRule-
Name()
auf. Die Methode
askUser()
ruft den Dialog
RuleVarDialog
auf, um den
Anwender aufzufordern, einen entsprechenden Wert einzugeben, da er unter Umständen
nicht berechnet werden konnte. Der Dialog ist dabei bewusst modal gestaltet, so dass
es nur dann weitergeht, wenn der Anwender auch wirklich antwortet. Die Antwort wird
dann mit der Methode
setValue()
als Regelvariable weitergegeben. Dadurch werden
wiederum alle Klauseln aktualisiert, die auf diese Regelvariable zugreifen. Diese Methode
wird nur durch den rückwärtsverkettenden Algorithmus benutzt.
Die Klasse
BooleanRuleSet
implementiert eine Reihe von Regelvariablen und Re-
geln sowie höhere Methoden für die Vorwärts- und Rückwärtsverkettung. Die
Boolean-
RuleSet
hat einen Namen, eine Liste (
variableList
) aller Regelvariablen, auf die
die Regeln zugreifen, und eine Liste aller Regeln namens
ruleList
. Die Klasse
Boo-
leanRuleSet
implementiert die Schnittstelle
BooleanRuleSet
. Diese Schnittstelle
definiert das allgemeine Verhalten, so dass Anwendungen sowohl mit booleschen als auch
mit Fuzzy-Regelbasen umgehen können. Sie definiert eine Reihe von Methoden, die auf
einer grafischen Anwenderoberfläche beruhen, wie etwa
setDisplay()
,
display-
Variables()
,
displayRules()
und
getGoalVariables()
, und einige Ver-
arbeitungsmethoden, darunter auch
reset()
,
backwardChain()
und
forward-
Chain()
.
Die Implementierung der Vorwärtsverkettung greift auf Methoden der Klassen
Boo-
leanRuleSet
und
Rule
zurück. Die Methode
forwardChain()
der Klasse
Boo-
leanRuleSet
enthält die Hauptsteuerungslogik der Vorwärtsverkettung. Zuerst legt