JESS Eine Kurzeinführung

Ähnliche Dokumente
Jess. Jens Haupert 02. November Teil 2. "Wenn die Fakten nicht zur Theorie passen, ändere die Fakten!" Albert Einstein

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Simulation von Wissen Modellierung von Adaptivität

Grundlagen der Informatik Vorlesungsskript

Programmierpraktikum

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

Klausur Grundlagen der Programmierung

Übersicht Shell-Scripten

Schreibweise in IGOR: 6.02E-23

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Programmieren I + II Regeln der Code-Formatierung

Eclipse 3.0 (Windows)

Methoden und Wrapperklassen

Zahlenraten: Ein Spiel in Java.

Theorie zu Übung 8 Implementierung in Java

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

ANT. Kurzvortrag von Manuel Schulze.

Einführung in die C-Programmierung

Java: Eine kurze Einführung an Beispielen

ÜBUNGS-BLOCK 1 LÖSUNGEN

Kurzanleitung zu XML2DB

Programmierkurs Python I

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Wird in Java zwischen Gross- und Kleinschreibung unterschieden?

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Funktionen nur wenn dann

Programmieren in Java -Eingangstest-

Programmieren I + II Regeln der Code-Formatierung

Crashkurs Python und Sage U23 Krypto-Mission

Einstieg in die Informatik mit Java

Java Einführung Vererbung und Polymorphie. Kapitel 13

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Einführung in die Programmierung 1

lex - Eine Einführung

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

Umsetzung einer Klassenkarte in einer Programmiersprache

Algorithmen und Datenstrukturen II

OCP Java SE 8. Lambda

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Programmieren I. Kapitel 5. Kontrollfluss

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Aufgabe 1 (Programmanalyse, Punkte)

WPF Steuerelemente. Dr. Beatrice Amrhein

Klassen als Datenstrukturen

Funktionen in JavaScript

2 Systemadministration

Informationsverarbeitung im Bauwesen

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Eine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

Zwischenbericht Projektarbeit

Syntax der Sprache PASCAL

Praktikum 1: Einführung, BMI Rechner

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

Exceptions. CoMa-Übung VII TU Berlin. CoMa-Übung VII (TU Berlin) Exceptions / 1

AuD-Tafelübung T-B5b

Objektorientierte Programmierung Studiengang Medieninformatik

Mapra: C++ Teil 3. Felix Gruber. 29. April IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29.

Einstieg in die Informatik mit Java

Projekt 3 Variablen und Operatoren

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally

Einführung in die Computerlinguistik

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Funktionen nur wenn dann

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

2 Eine einfache Programmiersprache

Shell. Oder Konsole suchen im Application Finder. Auch Terminal, Bash oder Kommandozeile genannt. Bash nimmt Befehle entgegen und führt diese aus

JAVA-Datentypen und deren Wertebereich

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Arithmetik in der tcsh

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Tutorium für Fortgeschrittene

UNIX Die wichtigsten Befehle

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Transkript:

JESS Eine Kurzeinführung JESS ist ein Expertensystem (regelbasiert) Implementiert in Java Entwickelt seit 1995 an den Sandia National Laboratories Ist CLIPS-kompatibel, insbesondere CLIPS-Syntax System, Manuals und Tutorial unter http://herzberg.ca.sandia.gov/jess/ Interface zur Verwendung von JESS durch Java-Programme Einf. in die KI Kurzeinführung JESS 1-1

Technisches: Aufruf JESS erhält man üblicherweise in gepackter Form zusammen mit der Dokumentation und einigen Beispielen. Nach dem Entpacken gibt die Verzeichnisse docs/ jess/ examples/ JESS Dokumentation evtl. Quellcode des JESS-System und einige Beispiele Beispiele JESS 6.0 (als.jar-datei) starten mit java -classpath jess.jar jess.main JESS verlassen mit Jess> (exit) Einf. in die KI Kurzeinführung JESS 1-2

Technisches 1 Ein wichtiger Befehl ist Jess> (batch examples/fullmab.clp) führt die Anweisungen in der Datei fullmab.clp im Unterverzeichnis examples aus (relativ zum Verzeichnis Jess60). JESS hat eine sehr LISP-ähnliche Syntax, insbesondere sieht JESS-Code wie LISP- Fuktionsaufrufe aus. Funktionen entsprechend in Präfix-Notation: Jess> (* 3 (- 7 5)) 6 Einf. in die KI Kurzeinführung JESS 1-3

Technisches 2 Atome: Sind ähnlich Bezeichnern in anderen Sprachen. Zeichenfolge aus Buchstaben, Zahlen und $*=+/<>?#., keine Zahl am Anfang. Groß-/Kleinschreibung: atom Atom Strings: Werden durch dopplete Hochkommata gekennzeichnet: "Hallo" "Dies ist ein Test" Zeilenumbruch auch bei der Ausgabe Einf. in die KI Kurzeinführung JESS 1-4

Technisches 3 Zahlen: Entsprechend der Java-Klassen Integer und Double, z.b. 5 oder 3.4 Listen: Geklammerte Folge von Atomen, Zahlen, Strings oder Listen: (a "Test" (test b c) 7) Kommentare: Beginnen mit Strichpunkt, gehen bis Zeilenende ; Ein Kommentar (a "Test") ; geht hier weiter Einf. in die KI Kurzeinführung JESS 1-5

Variablen Variablen sind Atome, die mit einem Fragezeichen beginnen. Wertzuweisung durch bind: Jess> (bind?x 34) Die Namen globaler Variablen müssen mit * beginnen und enden: (defglobal?*x* 10) defglobal verhindert zurücksetzen durch reset. Jess> (reset) TRUE Löscht aktuelle Fakten und Regeln, mit Ausnahme von initial-fact. Einf. in die KI Kurzeinführung JESS 1-6

Fakten 1 Geordnete Fakten: Lkiste, erstes Element kategorisiert den Fakt. (person chris mueller 27) (hase osterhase) Erzeugung durch assert: Jess> (assert (hase osterhase)) <Fact-0> Jess> (facts) f-0 (MAIN::hase osterhase) For a total of 1 facts. Jeder Fakt bekommt eine Nummer, facts zeigt alle Fakten an. Einf. in die KI Kurzeinführung JESS 1-7

Fakten 2 Ungeordnete Fakten (Objekte): Die Eigenschaften (slots) eines Objektes (=Template) erhalten Bezeichner. (deftemplate <deftemplate-name> [extends <classname>] [<doc-comment>] [(slot <slot-name> [(default default-dynamic <value>)] [(type <typespec>))]*) <deftemplate-name> ist der Name/ Typ des Fakts (Objekt). slot-name muss ein Atom sein. type gibt einen Typ an. Wird derzeit aber nicht erzwungen. default setzt Default-Wert für einen Slot. Kein default Default-Wert ist nil. Einf. in die KI Kurzeinführung JESS 1-8

Fakten 3 Beispiel: Mit (deftemplate person (slot vorname) (slot nachname) (slot alter (default 20) (type INTEGER)) ) kann ein Fakt erzeugt werden: Jess> (assert (person (vorname chris) (nachname mueller))) <Fact-0> Jess> (facts) f-0 (MAIN::person (vorname chris) (nachname mueller) (alter 20)) For a total of 1 facts. Einf. in die KI Kurzeinführung JESS 1-9

Regeln 1 Eine einfache Regel ist defrule fuelleschachtel (schachtel (fabe gelb) (ort?x) (inhalt leer) (zeug (ort?x)) => (assert (schachtel (inhalt zeug))) (assert (zeug (ort schachtel))) (printout t?x " ist aufgeräumt") ) Passender Fakt für alle Einträge der linken Seite (vor =>) Die Aktionen der rechten Seite werden ausgeführt. Vorkommende Variablen (z.b.?x) werden an die entsprechenden Werte der passenden Fakten gebunden. Einf. in die KI Kurzeinführung JESS 1-10

Regeln 2 Fakten bearbeiten: defrule test?person <- (person (name mueller))?x <- (auto (farbe gruen)) => (retract?person) (modify?x (farbe gelb)) ) Passender Fakt (Muster) auf linker Seite wird durch <- an Variable gebunden. modify überschreibt die angegebenen Slots, die übrigen bleiben unverändert retract löscht den angegebenen Fakt. Einf. in die KI Kurzeinführung JESS 1-11

Regeln 3 Slots vergleichen: defrule test (person (name mueller) (vorname?n1) (alter?x)) (person (name mueller) (vorname?n2~?n1) (alter?y) (person (name mueller) (vorname?n1) (alter?z&:(<?z 20)) (person (name ~nil)) => (printout t "Gefunden!" crlf) ) ~ Negation.?n2~?n1: Die Namen müssen verschieden sein. Tests folgen einer Variable, getrennt durch & (und) oder (oder). : Folgender Funktionsaufruf. Einf. in die KI Kurzeinführung JESS 1-12

Regeln 4 Muster der linken Regelseite sind i.d.r. durch und verknüft. defrule test (or (person (name mueller) (person (name schmidt) (alter?y))) (person (name mueller) (vorname?n1) (alter?x)) (not (person (name mayer))) (test (eq?x?y)) => ) or ist eine Oder-Verknüpfung von Mustern (and Und). not: Trifft zu falls kein passendes Muster gefunden. test: Trifft zu falls folgender Funktionsaufruf TRUE. Nur (eq?x?y) funktioniert nicht! (da kein solcher Fakt existiert) Einf. in die KI Kurzeinführung JESS 1-13

Regeln 5 Priorität: defrule test (declare salience -100) (person (name mueller)) => ) salience ist eine Eigenschaft der Regel. Sind meherere Regeln ausführbar, wird die Regel mit dem höchsten salience- Wert zuerst ausgeführt. (Default ist 0) Jess> (run) Beginnt mit der Anwendung von Regeln. Einf. in die KI Kurzeinführung JESS 1-14

Debugging (facts): Zeigt alle Fakten an. (reset): Löscht (fast) alle Fakten. (clear): Löscht alle Fakten und Regeln. watch: Zeigt zusätzlich Informationen an (watch rules): wenn eine Regel feuert. (watch activations): wenn eine Regel aktiviert wird. (watch facts): Wenn ein Fakt erzeugt oder gelöscht wird. (watch all): wenn etwas passiert. Einf. in die KI Kurzeinführung JESS 1-15