Rule-Based Programming
Georg Kotschy
Überblick
Grundlagen (4)– KI, CBR, ES
Procedural vs declarative programming (5)– Vergleich, Eigenschaften von RBPs
Rule-based systems (8)– Regeln, Architektur
Jess (7)– Installation, Anwendungsgebiete, Performance
Grundlagen (1/4)- Einführung
Systeme die rule-based programming verwenden sind auch bekannt als Experten Systeme
Experten Systeme sind ein Teilbereich des Case Based Reasoning
Case Based Reasoning ist ein kleiner Teilbereich der künstlichen Intelligenz
Grundlagen (2/4)- Künstliche Intelligenz
Künstliche Intelligenz will als ultimatives Ziel menschliches Denken nachahmen
Probleme sollen nur durch die Prinzipien der Logik gelöst werden
kein vorausgehendes Wissen über den Bereich des Problems oder Lösungen zu ähnlichen Problemen soll erforderlich sein
Grundlagen (3/4)- Case Based Reasoning
Case Based Reasoning versucht ungelöste Probleme mithilfe von bestehenden Lösungen für ähnliche Probleme zu lösen
Basiert auf menschlicher Fähigkeit Lösungen aus vorheriger Erfahrung mit ähnlichen Problemen abzuleiten
Zusätzlich werden zu einem kleinen Anteil die Prinzipien der Logik genutzt
Grundlagen (4/4)- Experten Systeme
Experten Systeme deduzieren eine Lösung für ein Problem in einem bestimmten, abgegrenzten Bereich
Die rules repräsentieren das Fachwissen eines human expert
Die facts repräsentiert den aktuellen Zustand des Problembereichs
Procedural vs Declarative (1/5)- Traditionelle Programme
linear, vorhersehbar, deterministisch Jeder mögliche Fall im Problembereich muß
mit Schleifen und IF-THEN-ELSE Bedingungen modelliert werden
Mit jeder Problemvariation wächst der Aufwand der bedingten Logik
Nachträgliche Änderungen beeinflussen Integrität der bereits existierenden bedingten Logik
Procedural vs Declarative (2/5) - Rule-based Programs
nicht-linear, unvorhersehbar, komplex Unabhängige IF-THEN Regeln werden
automatisch in eine einzige, effiziente bedingte Logik integriert
Diese Logik bleibt unverändert auch wenn Regeln verändert, hinzugefügt oder entfernt werden
RBPs erfordern ein runtime environment daß diese Logik zur Verfügung stellt
Procedural vs Declarative (3/5)- Funktionelle Eigenschaften von RBPs
„...a computer program that behaves like a human expert in some useful ways“
– Winston & Prendergast, 1984, S.6
„...solve problems efficiently and effectively in a narrow problem area.“
– Waterman, 1986, S.17
„...programs that mimic the adive-giving capabilities of human experts.“
– Brule, 1986, S.6
Procedural vs Declarative (4/5)- Strukturelle Eigenschaften von RBPs
„The knowledge of an expert system consists of facts and heuristics. The facts constitute a body of information that is widely shared, publicly available, and generally agreed upon by experts in the field.“
– Edward Feigenbaum in Harmon & King, 1985, S.5
„[separation of knowledge and control] make domain knowledge explicit and separate from the rest of the system“
– Waterman, 1986, S.18
Procedural vs Declarative (5/5) - Zusammenfassung
RBPs sind kein Allheilmittel Prozedurale Programme beinhalten was sie
tun, wie sie es tun und in welcher Reihenfolge sie es tun– zB mathematische Gleichung, Grafik
Deklarative Programme beinhalten was sie tun, aber nicht wie oder in welcher Reihenfolge sie es tun– zB Agenten KI, ERP
Rule-Based Systems (1/8)- Regeln
left-hand side (LHS) IF Behauptung Bedingung
right-hand side (RHS) THEN Schlussfolgerung Handlung
Rule-Based Systems (2/8)- Architektur
Rule-Based Systems (3/8)- Rule Base (Knowledge Base)
procedural knowledge Enthält alle dem System bekannten Regeln Die ursprüngliche Textform wird zur
effizienteren Verarbeitung kompiliert Dabei können Regeln hinzugefügt oder
neugeordnet werden Kann in einer externen oder integriert sein Jess verwendet ein integriertes Rete
Netzwerk
Rule-Based Systems (4/8)- Working Memory (Fact Base)
declarative knowledge Enthält alle Informationen über den
aktuellen Zustand des Problembereichs Kann sowohl Behauptungen als auch
Schlußfolgerungen enthalten Mögliche Objekttypen von rule engine zu rule
engine unterschiedlich Indizierung für Suche ähnelt relationalen
Datenbanken
Rule-Based Systems (5/8)- Inference Engine
Kernstück einer rule engine Kontrolliert die Anwendung der rule base
auf das working memory1. Der pattern matcher erstellt conflict set
bestehend aus ungeordneter Liste von zu aktivierenden Regeln
2. Durch conflict resolution wird geordnete agenda erstellt
3. Die erste Regel in der agenda wird gefeuert, rinse and repeat
Rule-Based Systems (6/8)- Pattern Matcher
Entscheidet welche Regeln wann gefeuert werden
Meistens der aufwendigste Prozeß einer rule engine da sämtliche Kombinationen von Fakten untersucht werden müssen, ob sie die Regeln erfüllen
Hauptauschlaggebend für Effizienz der rule engine und des Programmierprozesses
Rule-Based Systems (7/8)- Agenda
Enthält die Reihenfolge in der die ausgewählten Regeln gefeuert werden
Entscheidend ist die spezifische conflict strategy der rule engine
Einflußfaktoren sind zB Genauigkeit, Komplexität, relatives Alter im working memory oder spezifische Priorität
„A Robot may not injure a human being or, through inaction, allow a human being to come to harm.“
– The first law of Robot
Rule-Based Systems (8/8)- Execution Engine
Führt assoziierte Handlungen für gefeuerte Regeln aus
Kann in klassischen rule engines auf das ändern, hinzufügen oder entfernen von Fakten beschränkt sein
Moderne rule engines wie Jess stellen eine komplette Programmiersprache bereit
Jess (1/7)- Einführung
Jess ist rule engine und scripting environment
geschrieben von Ernest Friedman-Hill (Sandia National Laboratories)
basiert stark auf CLIPS ermöglicht Software deduktives Denken zu
beherrschen
Jess (2/7)- Installation
Testversion erhältlich auf http://herzberg.ca.sandia.gov/jess
Kommerzielle und akademische Lizenzen erhältlich auf Anfrage
Erfordert Java2 Platform jess.jar zum CLASSPATH hinzufügen
Jess (3/7)- Ausführung
code ausführen> java jess.Main test.clp
command prompt> java jess.Main
Jess Konsole> java jess.Console
JessWinfrei verfügbares GUI von Bill Wheeler
Jess (4/7)- als rule engine
typisches Anwendungsgebiet Regeln repräsentieren Fachkenntnisse eines
human experts Fakten repräsentiert den aktuellen Zustand
einer Situation Beliebige Funktionen können ausgeführt
werden wenn Regeln feuern
Jess (5/7)- als scripting environment
alternatives Anwendungsgebiet kann auf alle Java Klassen und
Bibliotheken zugreifen muss vor dem Ausführen nicht kompiliert
werden kann durch neue in Jess oder Java
geschriebene Funktionen für spezialisierte Anwendungen angepaßt werden
Jess (6/7)- Performance
Benchmark Test durch Ernest Friedman-Hill im März 2000
Problemstellung: Sitzarrangement
männlich/weiblich alternierend
1-3 Hobbies zusammen
Jess überholt CLIPS ab 25 Objekten
Jess (7/7)- Jess in Action
das Referenzwerk zu Jess
© 2003 by Ernest Friedman-Hill
erhältlich auf www.manning.com oder beim Buchhändler ihres Vertrauens