12Property-based Shell, Strukturbasierte Diagnose
Lösungen
12.1Property-based Shell
Das Problemwissen wird durch Strukturierung in Objekte mit Eigenschaften dargestellt:
G
-- question : Q
-- answers : A
-- reasons : R
-- explanation : E .
Dabei ist:
- G:
- Name des Objektes.
- Q:
- Frage an den Benützer (oder ein Test).
- A = [ 1: A1, 2: A2... ]:
- Ai = mögliche Antwort (oder Resultat des Tests).
- R = [ i: Gi, j: Gj, ...]:
- Gi = mögliche Begründung für G, wenn Ai zutrifft.
Falls i geantwortet wurde und Gi = true, dann ist G bewiesen. - R = [ G1, G2, ...]:
- G1, G2, ... sind mögliche Begründungen für G,
wenn kein Question-Attribut vorhanden ist. - E:
- Erklärung (Text), wenn G bewiesen ist.
Die Attribute question und answers sind optional; das Attribut reasons ist obligatorisch; das Attribut explanation ist obligatorisch für bewiesene Goals.
Implementieren Sie das Prädikat
solve( G, X).
/* X ist die Begründung für Goal G */
nach den Vorlesungsunterlagen. Der Benützer sollte zu jeder Frage höchstens einmal gefragt werden.
Lösung 12.1
12.2Strukturbasierte Diagnose
Das Prädikat solve der Aufgabe 1 kann für strukturbasierte Diagnose verwendet werden. Die Inferenz geschieht von Symptomen zu Diagnosen. Dabei bedeutet:
object : | Symptom oder Diagnose |
question: | Frage oder Test (Text) |
reasons: | Ursachen für ein Symptom (einfachere Symptome oder Diagnosen) |
explanation: | Erklärung bei einer Diagnose (Text) |
Testen Sie die Shell am Beispiel der Diagnose eines Velo:
Symptom: | Einfacheres Symptom oder Diagnose: |
---|---|
Velo | Fahren (Fahreigenschaften), Elektrik (Lampe) |
Fahren | Räder (Fahrt: schwer, unregelmässig), Antrieb (Geräusche), Bremsen |
Räder | Reifen (platt), Lauf (nicht ausgewuchtet; Diagnose) |
Reifen | Ventil (locker, fehlt; Diagnose), Loch (Diagnose) |
Antrieb | Kette (rostig; Diagnose), Schaltung (Diagnose) |
Bremsen | Kabel (Diagnose), Bremsklötze ( Diagnose) |
Elektrik | Lampe (Diagnose), Kabel (Diagnose), Dynamokontakt (Diagnose) |
Beispiel:
velo
-- question : 'Welche Probleme haben Sie mit Ihrem Velo ?'
-- answers : [ 1 : 'Fahreigenschaften', 2 : 'Lampe' ]
-- reasons : [ 1: fahren, 2 : elektrik ].
fahren
-- question : ... .
platte_reifen
-- reasons : [ luft, ventil, loch ].
loch
-- question: 'Ist ein Loch im Schlauch?'
-- answers: [ 1: ja, 2: nein]
-- reasons: [ 1: true]
-- explanation: 'Es war ein Loch im Schlauch. Kleben Sie es.'.