10Regelbasierte Shell, Diagnose
Lösungen
10.1Regelbasierte Shell (backward reasoning)
Schreiben Sie eine einfache Shell für regelbasierte Experten-systeme. Das Wissen wird in if-then-Regeln formuliert, die die folgende Syntax haben:
Rule : if Premise then Conclusion.
Premise kann aus einfacheren Premises mit and, or, not zusammengesetzt werden. Die Regelsyntax wird durch Operatordefinitionen gegeben (s. Bemerkung).
Die Shell arbeitet rückwärts nach dem Prolog-Beweisverfahren: Ein Goal G wird bewiesen, wenn es bekannt ist, oder wenn der Benützer es so sagt, oder wenn es eine Regel
R: if G1 then G.
gibt, und G1 bewiesen wird. Zu einem Goal soll der Benützer nicht mehrmals gefragt werden (seine Antworten müssen also gespeichert werden).
Lösung 10.1
10.2Regelbasierte Diagnose (Testen von Hypothesen)
Verwenden Sie die regelbasierte Shell aus der Aufgabe 1 zur Fehlerdiagnose nach der Methode des Hypothesentestens. Die Regeln werden so formuliert, das sie von Symptomen auf Ursachen (Diagnosen) schliessen. Eine mögliche Diagnose wird geraten und dann getestet, ob sie durch backward chaining bewiesen werden kann.
Testen Sie diese Methode am Beispiel einer eigenen Anwendung oder am folgenden Beispiel eines Dampfbügeleisens:
- Wenn der Stoff verbrennt, dann ist die Temperatur zu hoch.
- Wenn die Temperatur zu hoch oder zu niedrig ist, dann ist die Temperatur falsch.
- Wenn die Temperatur falsch ist und der Thermostat richtig eingestellt ist, dann ist der Thermostat defekt.
- Wenn die Temperatur falsch ist und der Thermostat nicht richtig eingestellt ist, dann soll der Thermostat richtig eingestellt werden.
- Wenn kein Dampf kommt, dann ist die Temperatur zu niedrig oder es gibt ein Problem im Dampfsystem.
- Wenn ein Problem im Dampfsystem ist, dann gibt es kein Wasser oder die Düse ist verstopft.
- Wenn die Bügelwirkung schlecht ist, dann ist die Temperatur zu niedrig.
- Wenn das Bügeleisen kalt ist und die Kontrolllampe leuchtet, dann muss gewartet werden.
- Wenn das Bügeleisen kalt ist und die Kontrolllampe leuchtet nicht, dann fliesst kein Strom.
Fangen Sie mit nur einigen Regeln an. Ergänzen Sie und präzisieren Sie diese Regeln nach Belieben.
Bemerkungen:
- Die benötigten Operatoren können im konsultierten File definiert werden:
define_operators :- op( 920, xfy, and), op( 930, xfy, or), op( 950, xfx, then), op( 960, fx, if), op( 970, xfx, ':'). ?- define_operators.
- Die Regel 5 wird durch zwei Regeln approximativ repräsentiert:
5a) Wenn kein Dampf kommt, dann ist die Temperatur zu niedrig.
5b) Wenn kein Dampf kommt, dann gibt es ein Problem im Dampfsystem.
Die Interpretation des Implikationsteils ist: "Es kann sein, dass ...".