Loom als Regelsystem Loom:... Kombination von Beschreibungslogik und Regelsystem mit Defaults und oo-paradigma... Systemmeldungen von Loom deuten darauf hin, dass intern eine Art von Rete-Algorithmus abläuft. starke Ähnlichkeiten zwischen Klassifikations- und Retealgorithmus. Effiziente Instanzklassifikation: Minimierung der Tests zur Bestimmung der Zugehörigkeit von Individuen. Einf. in die KI Regeln in Loom 1-1
Regeln in Loom Syntax zur Definition von Regeln: (defproduction <name> :when <Bedingung> [ :perform <Aktion> :do (<Lisp-Code>) ] ) <Bedingung> ist eine production expression in dem mindestens ein Transitionstest, d.h. ein Ausdruck in einer der folgenden Formen vorkommen muss: :detects <expr> : <expr> ist nun ableitbar :undetects <expr> : <expr> ist nicht mehr ableitbar :changes <expr> : <expr> hat seinen Wert verändert (Jeweils bezogen auf den letzten Zustandsübergang) :do (<Lisp-Code>) beliebiges Lisp-Programmfragment Einf. in die KI Regeln in Loom 1-2
Beispielregel in Loom (defconcept Person) (defconcept Student :is-primitive Person) (defrelation aufgaben) (defconcept Übungen-gemacht :is (:and Person (:at-least 2 aufgaben))) (defproduction Schein :when (:and (Student?x) (:detects (Übungen-gemacht?x))) :do ((format t "Schein ausstellen für ~s"?x))) (tell (:about Fritz Person Student (aufgaben a1))) (tell (aufgaben Fritz a2)) Rete match changes for state 2 in context BUILT-IN-THEORY: > entry: I FRITZ C ÜBUNGEN-GEMACHT Schein ausstellen für I FRITZ Einf. in die KI Regeln in Loom 1-3
Alternativ: Aktionen & Methoden (1) Alternative zu :do: Aufrufe von überladenen Methoden, die z.b. Attribute von Objekten verändern. (defproduction Schein :when... :perfom (note-eintragen?x)) Aktionen definieren generische Operationen (analog CLOS), die durch eine oder mehrere Loom-Methoden implementiert sind. (defaction note-eintragen (?stud) :filters (:most-specific :last-one) :missing-method :warning) ; default ; default Filter: :overrides (Priorisierung) :most-specific (spezifischste) :last-one (zuletzt definierte) :select-one (zufällig) :select-all (alle) :warning Einf. in die KI Regeln in Loom 1-4
Alternativ: Aktionen & Methoden (2) Anpassung des Beispiels: (defproduction Schein :when (:and (Student?x) (:detects (Übungen-gemacht?x))) :perform (note-eintragen?x)) (defrelation matr-nr :domain Matrikel :range Student) (defconcept Matrikel) (defrelation punkte :domain Student) (defrelation note) (tell (punkte Fritz 18)) (tell (:about eins-zwei-drei matrikel (matr-nr Fritz))) (defaction note-eintragen (?stud) :filters (:most-specific :last-one) :missing-method :warning) Einf. in die KI Regeln in Loom 1-5
Alternativ: Aktionen & Methoden (3) (defmethod <name> (<params>) &key :title <string> :with <retrieve-stat> :response <Lisp-Code>) :situation <retrieve-stat> :overrides <method-title> :title Unterscheidet die verschiedenen Methoden symbolisch (vgl. mit Loom-Ausgabe) :situation :with Drückt mit Hilfe einer Anfrage (wie in retrieve) die Situation aus, in der diese Methode anwendbar ist. Gibt die Möglichkeit einer weiteren Bindung ohne Auswahlrelevanz. :overrides :response Priorisierung der Methode durch Angabe von schwächer gewerteten Methoden(-titeln) Liste von Lisp-Ausdrücken die ausgeführt werden. Einf. in die KI Regeln in Loom 1-6
Zurück zum Beispiel (defmethod note-eintragen (?stud) :title "sehr gut" :situation (> (punkte?stud) 18) :with (matr-nr?mat?stud) :response ((tell (note?mat 1)))) (defmethod note-eintragen (?stud) :title "gut" :situation (:and (> (punkte?stud) 10) (<= (punkte?stud) 18)) :with (matr-nr?mat?stud) :response ((tell (note?mat 2)))) (pi fritz) -> (TELL (:ABOUT FRITZ... (AUFGABEN A1) (AUFGABEN A2))) (pi eins-zwei-drei) -> (TELL (:ABOUT EINS-ZWEI-DREI... MATRIKEL (MATR-NR FRITZ) (NOTE 2))) Einf. in die KI Regeln in Loom 1-7
Nützliches Bemerkungen: Aktionen werden bei Bedarf automatisch (mit defaults) erzeugt. Konzepte und Relationen in :situation, :with und :when Klauseln müssen bei der Definition der Methode bereits vorhanden sein. Hilfsfunktionen: (list-productions) Auflistung aller Regeln (pb <ACTIONorMETHODorPRODUCTION>) Gibt die entsprechende Definition (list-methods (fb <method>)) Listet alle Methoden mit diesem Bezeichner auf Einf. in die KI Regeln in Loom 1-8