Information Technology Reference
In-Depth Information
die Methode den Vektor conflictRuleSet fest. Die Methode match() wird mit
einem booleschen Wahrheitsparameter aufgerufen, um eine anfängliche Überprüfung aller
Regeln der Regelbasis herbeizuführen. Das Ergebnis hiervon stellt den Anfangsvektor
conflictRuleSet dar, der die Regeln anzeigt, die bereit sind zu feuern. Daraufhin
wird in eine while() -Schleife gesprungen, die solange andauert, bis die Konfliktmenge
leer ist. Innerhalb der Schleife wird zuerst die Methode selectRule() aufgerufen,
der der Vektor conflictRuleSet als Parameter übergeben wird. Diese Methode führt
die Konfliktauflösungsstrategie aus und gibt eine einzelne Regel zum Feuern zurück. Da-
bei wird die Methode fire() der Klasse Rule aufgerufen, um die Schlussfolgerung
durchzuführen und um eine Überprüfung auf alle Klauseln und Regeln vorzunehmen,
die auf die aktualisierte Variable zugreifen. Mit der aktualisierten variableList wird
wiederum match() aufgerufen, um die Wahrheitswerte zu betrachten und nicht um jede
Regel überprüfen zu müssen. Die Methode match() der Klasse BooleanRuleSet
übernimmt einen einzelnen Parameter und geht die Liste der Variablen durch. Wenn der
Parameter test wahr ist, ruft sie die Methode check() der Klasse Rule auf, um alle
Prämissen der Regel zu überprüfen und die Wahrheitswerte der Regel zu setzen. Wenn
test jedoch falsch sein sollte, betrachtet match() einfach den aktuellen Wahrheits-
wert der Regel. Wenn diese Regel wahr ist und noch nicht gefeuert hat, wird sie dem
Vektor matchList hinzugefügt. Andernfalls wird auf die nächste Regel der Regelliste
ruleList zugegriffen. Um den Ablauf verfolgen zu können, wird die jeweils aktuelle
Konfliktmenge angezeigt. Die Methode selectRule() der Klasse BooleanRule-
Set übernimmt einen Vektor von Regeln, nämlich die der aktuellen Konfliktmenge, als
Eingabeparameter. Dabei wird als Hauptmethode die Genauigkeit verwendet, das heißt
die Anzahl der Prämissen, um eine zu feuernde Regel auszuwählen. Wenn zwei oder mehr
Regeln gleich viele Prämissen aufweisen, wird die erste Regel ausgewählt. Diese erste
Regel wird demnach in die Liste aufgenommen und als „beste“ bestRule bezeichnet.
Die Anzahl der Prämissen wird als höchster max -Wert festgehalten. In einer while() -
Schleife erfolgt die Abarbeitung der restlichen Regeln aus der Konfliktmenge. Wenn dabei
eine Regel entdeckt wird, die mehr Prämissen hat als der vorherige max -Wert angibt, wird
diese Regel zur bestRule ernannt und die neue Höchstzahl dem max -Wert entspre-
chend zugeordnet. Nachdem alle Regeln der Konfliktmenge überprüft wurden, wird die
endgültige bestRule zum Feuern zurückgeliefert.
Die Methode check() der Klasse Rule wird während der Vorwärtsverkettung ver-
wendet, um die Prämissen der einzelnen Regeln zu überprüfen. Wenn eine dieser Prä-
missen einen nicht definierten Wahrheitswert hat, gibt check() einen Nullwert zurück.
Wenn eine der Prämissen falsch ist, wird der Wahrheitswert der Regel auf falsch gesetzt
und der entsprechende Wert false zurückgegeben. Wenn alle Prämissen wahr sind, wird
der Wahrheitswert der Regel auf wahr gesetzt und der Wert true zurückgegeben. In
dieser Implementierungsvariante sind zwischen den Prämissen nur Konjunktionen ( and )
erlaubt, aber keine Disjunktionen ( or ).
Die Methode fire() der Klasse Rule wird während der Vorwärtsverkettung ver-
wendet, wenn eine Regel mit einem wahren Wahrheitswert zum Feuern ausgewählt wur-
Search WWH ::




Custom Search