Künstliche Intelligenz und Prolog
Copyright © 2019 Jiri Kriz, www.nosco.ch

12Property-based Shell, Struktur­basierte 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.2Struktur­basierte 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 (Fahr­eigen­schaften), Elektrik (Lampe)
Fahren Räder (Fahrt: schwer, unregel­mä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)
BremsenKabel (Diagnose), Brems­klötze ( Diagnose)
Elektrik Lampe (Diagnose), Kabel (Diagnose), Dynamo­kontakt (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.'.

Lösung 12.2