Information Technology Reference
In-Depth Information
de. Das boolesche Flag fired wird gesetzt, um anzuzeigen, dass die Regel gefeuert hat.
Die Regelvariable auf der linken Seite der Konsequenz wird auf den Wert der rechten
Seite gesetzt. Danach wird die Methode checkRule() aufgerufen, um die Regeln zu
überprüfen, die auf die Variable der Konsequenz zugreifen. Die Methode checkRule()
der Klasse Produktionsregel überprüft jede Klausel, die auf die Regelvariable zu-
greift, welche durch das Feuern geändert wurde. Weil die Regelvariable nun einen Wert
hat, können alle Prämissen auf wahr oder falsch gesetzt werden, die auf sie zurückgegrif-
fen haben und einen nichtdefinierten oder Nullwert hatten. Dies bedeutet, dass die Regeln,
die auf jene Klauseln verwiesen haben, nun als wahr oder falsch eingeschätzt werden
können. Die Methode display() der Klasse Rule dient zur Darstellung der Regel auf
einer entsprechenden gestalteten Bedieneroberfläche. Dies ermöglicht es dem Anwender,
die boolesche Regelbasis zu untersuchen, um eine Schlussfolgerungskette zu verfolgen.
Die Rückwärtsverkettung erfolgt in der Methode backwardChain() der Klasse
BooleanRuleSet , indem diese lediglich einen einzelnen Parameter in Form eines
Strings, der den Namen der Zielvariablen aufnimmt, übergeben werden muss. Mit diesem
Namen wird die Instanz der Regelvariablen des Ziels abgerufen. Alle Klauseln, die auf
die Regelvariable zugreifen, werden nummeriert. Für die Verarbeitung der Objekte aller
Klauseln wird das Konstrukt einer while-Schleife gewählt. Wenn die einzelne Klausel
keine Konklusion darstellt, wird sie einfach ignoriert und die Schleife fortgesetzt, um die
nächste Zielklausel ( goalClause ) zu untersuchen. Wenn sie hingegen Konklusion ist,
wird sie in den goalClauseStack übertragen. Damit erhält man einen Verweis auf die
Regel, die diese Klausel als Konklusion aufweist. Daran anschließend wird die Methode
backChain() der Klasse Rule auf diese Regel angewendet, um zu sehen, ob sie wahr
ist oder nicht. Die Methode backChain() ruft, sofern nötig, rekursiv backward-
Chain() auf, um eine Schlussfolgerungskette durch die Regelbasis zu verfolgen und um
damit herauszufinden, ob die ursprüngliche Zielklausel wahr oder falsch ist. Die Methode
backChain() gibt dann den Wahrheitswert der Regel zurück. Dabei gilt:
• Wenn der Wahrheitswert der Regel null ist, kann nicht festgestellt werden, ob die aktu-
elle Zielklausel wahr ist oder nicht. Entweder ist die Regelbasis nicht vollständig oder
der Anwender hat einen ungültigen Wert eingegeben, als er um eine Eingabe gebeten
wurde.
• Wenn sich die Regel als wahr herausstellt, feuert sie, indem die aktuelle Zielvariable
auf den Wert der rechten Seite der Zielklausel gesetzt wird. Dabei wird der Variablen
ein Verweis hinzugefügt, um ihr zu zeigen, welche Regel ihren Wert ergeben hat. Da-
nach wird die Klausel aus dem goalClauseStack entfernt und eine entsprechende
Erfolgsmeldung ausgegeben. Wenn der goalClauseStack leer ist, ist die Rück-
wärtsverkettung abgeschlossen, also wird auch in diesem Fall eine Erfolgsmeldung
ausgegeben und danach die Schleife abgebrochen.
• Wenn die Regel falsch war, wird die Zielklausel aus dem goalClauseStack ent-
fernt, eine Fehlermeldung ausgegeben und die while-Schleife mit der nächsten Ziel-
klausel fortgesetzt.
Search WWH ::




Custom Search