1 / 23

Agenten-Technologien in Java

Agenten-Technologien in Java. Jochen Hiller jochen.hiller@bauer-partner.de Java Forum Stuttgart, 28.06.2001. Agenten sind Software-Objekte, die sich eigene Modelle von Ihrer Umgebung bilden und aufgrund dieser Entscheidungen treffen, und Handlungen ausführen.

jenna-booth
Télécharger la présentation

Agenten-Technologien in Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Agenten-Technologienin Java Jochen Hiller jochen.hiller@bauer-partner.de Java Forum Stuttgart, 28.06.2001

  2. Agenten sind Software-Objekte, die sich eigene Modelle von Ihrer Umgebung bilden und aufgrund dieser Entscheidungen treffen, und Handlungen ausführen. Diese können zur Beschaffung und/oder Verarbeitung von Informationen eingesetzt werden. Software-Agenten sind: Autonom Kommunikativ Kooperativ Können Wissen verarbeiten Lernfähig Mobil Was sind Software-Agenten ?

  3. Modell eines Agenten Modelle Plausibilität Informationen Entscheidungen Handlungen

  4. Ziele • Wünsche • Intentionen • Erfahrungen SENSOR Inferenz-maschine AKTOR Modell Environment Architektur eines Agenten

  5. Beschaffen Informationen Filtern Modell- bildung Entscheidung Fortschritt Agenten zur Entscheidungs-Unterstützung

  6. Was haben Software-Agenten mit OO / KI zu tun? • Agententechnologien verbinden die Ideen der Künstlichen Intelligenz (KI) mit den Prinzipien der Objekt-Orientierung • Übertragen der realen Welt in ein Software-Paradigma: Einzelne agierende „Personen“ werden durch Agenten repräsentiert, die eigene Ziele verfolgen, ein Modell zugrunde liegen haben (z.B. Reise-Agent, Logistik-Agent, Trader) • Kapselung: Ein Agent kapselt seine eigenen Ziele und Regeln. Damit wird ein Agent zu einer in sich abgeschlossenen, übersichtlichen Einheit • Verteilung: Ein Agentensystem entsteht erst durch eine Reihe von kommunizierenden Agenten. Die Komplexität eines Gesamtsystems liegt dann in der Gesamtarchitektur und in dem entsprechenden „Agenten-Modell“. • Agenten sind in dem Sinne komplexere Objekte, mit eigenständigem, aktivem Verhalten und der Fähigkeit zum Lernen • Agenten werden heute mit OO Technologien implementiert. • Monolithische KI Systeme (wie Expertensysteme) werden mit Agententechnologien aufgebrochen, modularisiert.

  7. Warum werden Agenten-Technologien mit Java umgesetzt ? • Plattformunabhängigkeit: Ein Java-Agent kann auf einer beliebigen Java Plattform ablaufen • Netzwerk-zentriert: Java kann sowohl Daten wie auch Code sehr einfach im Netzwerk nutzen wie auch migrieren (Mobilität) • Security-Konzept: Java arbeitet in einer Sandbox. D.h. Agenten, die auf eine Plattform wechseln, haben eine definierte Laufzeitumgebung, ohne die Sandbox (ohne Rechte) verlassen zu können • Dynamisches Binden: Klassen werden erst zur Laufzeit gebunden. Damit hat man die notwendige Flexibilität, sehr dynamische Plattformen bereitzustellen • Reflection, Proxies: Erleichtern die Implementierung von Agenten-Plattformen.

  8. Welche Java / XML Standards gibt es im Umfeld Agententechnologien (Auszug) ? • Object Management Group: Mobile Object Facility (MAF) • Ergänzung der OMG Standards um die Mobilität von Agenten • Siehe http://www.omg.org/technology/documents/formal/mobile_agent_facility.htm • Foundation for Intelligent Physical Agents (FIPA) • Organisation vergleichbar der OMG für Agenten-Technologien: http://www.fipa.org • Implementierung sind weitestgehend Java basierend. Es gibt Referenz-Installationen und Interoperabilitäts-Tests • SUN JSR 87: Java Agent Service (JAS) • Siehe http://www.jcp.org/jsr/detail/87.jsp. Reservierter Namespace: javax.agent • Community Draft: Juli 2001 • SUN JSR 94: Java Rules Engine API • Siehe http://www.jcp.org/jsr/detail/94.jsp. Reservierter Namespace: javax.rules. • Public Draft angekündigt für April 2001, noch nicht verfügbar • RuleML: XML Sprache zur Repräsentation von Fakten/Regeln • Siehe http://www.dfki.uni-kl.de/ruleml/. Erster RuleML Editor auf Basis von Mandarax

  9. FIPA – Referenz-Architektur • Agent • Directory Facilitator (DF) • Agent Management System (AMS) • Message Transport Service (MTS) • Z.B. über IIOP, RMI, HTTP • Agent Platform (AP) • Software

  10. Frei verfügbare Agenten-Plattformen (Auszug) • FIPA-OS (emorphia): http://fipa-os.sourceforge.net/ • Comet Way JAK: http://www.cometway.com/jak • Aglets (IBM): http://www.trl.ibm.com/aglets/ • IBM Agenten-Plattform • Seit kurzem auch OpenSource: http://aglets.sourceforge.net/ • JADE (Telecom Italia Lab) http://sharon.cselt.it/projects/jade/ • Java Agent DEvelopment Framework, FIPA compliant • Jackel (UMBC): http://jackal.cs.umbc.edu/ • D‘Agents (Dartmouth College): http://agent.cs.dartmouth.edu/ • Früher: Agent Tcl, eine der ersten Agenten-Plattformen • MOLE (Uni Stuttgart): http://mole.informatik.uni-stuttgart.de/

  11. Kommerzielle Agenten-Plattformen (Auszug) • Living Systems: http://www.living-systems.com • Anbieter von Martkplatz-Lösung auf Basis von Agententechnologien • Produkte: living agents, living markets • IKV++: GrassHopper Agent platform http://www.grasshopper.de • Produkt: GrassHopper, WebHopper • OMG MASIF und FIPA-97 Add-on Komponenten • ObjectSpace: Voyager http://www.objectspace.com/ • Product: Voyager ORB Professional, Object Mobility and Mobile Agents • J2EE kompatibler Application Server on top • Reticular: AgentBuilder: http://www.agentbuilder.com/ • Toolset zur Konstruktion Intelligenter Software Agenten-Systeme

  12. home brewed code transaction persistency security .. business logic EJB server .. EJB server .. rule engine costs, risks Warum benötigt man Rule Engines ?

  13. Mandarax– Warum eine weitere Rule Engine ? • Die meisten Ansätze basieren auf Programmiersprachen wie Prolog und CLIPS • Es gibt sehr wenige OpenSource Implementierungen, und nur eine einzige Java basierende (JESS) • Java basierende Rule Engines müssen in heutige Architekturen integrierbar sein (z.B. EJB) • Siehe Architektur Vorschlag von SUN Engineers in JavaReport 07/2000 • JSR 94: Java Rules Engine API • Grundsätzliche Idee: Transparente Integration von bestehenden Anwendungen über einfache Adapter / Connectoren Technologie • Direkte Nutzung des Objekt-Modelles als Wissensbasis für Fakten • Tools fehlen zum Bearbeiten von Wissensbasen und Fakten / Regeln • Graphische Tools • Nutzung von offenen XML basierenden Standards zur Repräsentation

  14. Kernelemente der logischen Programmierung (am Beispiel Prolog) • Fact • Jens ist der Vater von Max. Klaus ist der Vater von Jens. • father (Jens, Max). father (Klaus, Jens). • Rule • Wenn X Vater von Z UND Z Vater von Y ist, dann ist X Grossvater von Z. • grandfather (X, Y) <- father (X,Z), father (Z,Y). • Query • Ist Klaus Grossvater von Max ? • grandfather (Klaus, Max)? • Inference Engine • Die Abstrakte Maschine, die die Fakten und Regeln auflöst, und Queries beantworten kann.

  15. Klassische Implementierung von Geschäftslogik • If the value of all transactions of a customer is more than 100$ in one year then he qualifies for a discount of 10%. // Klassische Implementierung, // Geschäftsregeln sind hart codiertpublic Discount getDiscount (Customer customer) { int turnover = customer.getTurnover (12); // Regeln sind hier implementiert, // der Constructor fuer Discount // erzeugt einen prozentualen Discount von 10% if (turnover > 100) return new Discount (10, true); if ..}

  16. If the value of all transactions of a customer is more than 100 $ in one year then he qualifies for a discount of 10%. Mandarax – Definition von Fakten / Regeln // Instanzen werde mit einer Factory erzeugt, zusaetzlich wird eine weitere // Utility-Klasse benutzt, die das generieren von Objekten weiter vereinfactLogicFactory factory = LogicFactory.getDefaultFactory ();LogicFactorySupport factorySupport = new LogicFactorySupport (factory);// Erzeuge Term fuer "a customer"Term aCustomer = factory.createVariableTerm ("aCustomer", Customer.class);// Erzeuge Term fuer "one year" (= 12 Monate)Term oneYear = factory.createConstantTerm (new Integer (12));// Erzeuge Term fuer "the value of all transactions of a customer in one year". // new Integer(12) wird automatisch in einen constanten Term umbewandeltClass[] parameterTypes = {Integer.TYPE};Method aMethod = Customer.class.getMethod ("getTurnover", parameterTypes);Function turnover = new JFunction (aMethod);Term valueOfCustomer = factorySupport.cplx.(turnover, aCustomer, new Integer (12)); // Erzeuge Premisse. Das Standardpredikate > ist vordefiniertFact premisse = factorySupport.fact (IntArithmetic.GREATER_THAN, valueOfCustomer, new Integer (100));// ...

  17. Regeln werden in der Wissensbasis hinterlegt. Mittels der Inference Engine kann eine Query auf die Wissensbasis abgesetzt werden Mandarax – Arbeiten mit Regeln / Inference Engine // Implementierung mit Geschaeftsregelframeworkpublic Discount getDiscount (Customer customer) { // Erzeuge Anfrage Class[] parameters = {Customer.class, Discount.class}; Predicate getsDiscount = new SimplePredicate("get discount",parameters); Fact query = factorySupport.fact (getsDiscount, customer, "a discount"); // Anfrage stellen InferenceEngine ie = new ResolutionInferenceEngine (); KnowledgeBase kb = ..; // hier sind die Regeln gespeichert Result result = ie.query (query, kb); Replacement replaced = result.getReplacements ()[0]; Discount discount4Customer = (Discount) replaced.replacement.getObject (); return discount4Customer;}

  18. AutoFacts erleichtern die Integration von bestehenden Datenbeständen, z.B. Datenbanken, Objects in Memory, EJB‘s Die Implementierung basiert auf einem Iteratoren Konzept, wo Fakten zur Laufzeit ausgewertet werden, und dann zur Verfuegung stehen. Mandarax – Integration von Fakten // DB ist hier eine Klasse die eine Datenbank simuliertAutoFacts af = new AutoFacts () { public Collection getExtension (Class clazz) { if (clazz==Customer.class) return DB.getCustomers ().values (); if (clazz==Category.class) return DB.getCategories ().values (); if (clazz==KindOfPayment.class) return DB.getKindsOfPayment ().values (); return super.getExtension (clazz); }};// benutze vordefiniertes Standardpraedikat aus dem org.mandarax.math packagePredicate[] predicates = {DoubleArithmetic.GREATER_THAN};af.setPredicates (predicates);

  19. Mandarax ist der erste verfügbare Editor für RuleML basierende Wissensbasen Mandarax – Wissensbasis in RuleML (v0.8) <atom> <_opr> <rel>father</rel> </_opr> <var>x</var> <var>y</var> </atom> </and> </_body> </imp> <fact> <_head> <atom> <_opr> <rel>father</rel> </_opr> <ind>Jens</ind> <ind>Max</ind> </atom> </_head> </fact></rulebase> <?xml version="1.0" encoding="UTF-8"?><rulebase> <imp> <_head> <atom> <_opr> <rel>grandfather</rel> </_opr> <var>x</var> <var>z</var> </atom> </_head> <_body> <and> <atom> <_opr> <rel>father</rel> </_opr> <var>y</var> <var>z</var> </atom>

  20. Welche Java Implementierungen von regelbasierten Systemen sind verfügbar ? • Frei verfügbare Implementierungen: • JESS: Java Expert System Shell • Von sandia.gov, Ernest J. Friedman-Hill • Siehe http://herzberg.ca.sandia.gov/jess • (fast) CLIPS kompatible Expert Shell • Mandarax: • Siehe http://www.mandarax.org • Kommerzielle Produkte: • ILOG: JRules 3.0 • Siehe http://www.ilog.com/products/rules/engines/jrules31/ • Kommerzielles Produkt auf Basis der vorigen C++ Produkte • Integriert sich z.B. in die Portal-Technologien von BEA WebLogic • BlazeSoft (Brokat): Advisor Rule Server and Engine • Siehe http://www.blazesoft.com/products/advisor_server.html • Pure Java Lösung

  21. Oryx – Das Toolkit zu Mandarax • Wurde von Jens Dietrich (jens.dietrich@unforgettable.com) als Add-On Tool zu Mandarax entwickelt • Siehe http://www.jbdietrich.de • Frei für den Unversitären Bereich • Kommerzielle Lizenzen bei Jens Dietrich erhältlich

  22. Oryx - Features • Oryx bietet Unterstützung für die persistente Ablage • Java Serialisierung • XML basierte Ablage (intern, RuleML v0.8 kompatibel) • Swing UI components • Wissensbasis-Editor, Fakt und and Regel-Editor, • Ableitungsbäume, Ad-Hoc Queries • Blueprint support für Lesbare Regeln • Web UI components • Umfangreicher support um JSP‘s zu entwerfen, basierend auf Tag-Libraries • Basiert auf dem MVC-Konzept, geringer Code im Controller • Vorgefertigte JSP‘s für den Wissensbasis, Fakt und Regel Editor • >30 unterschiedliche tags • Erweiterte Inference Engine • Ermittlung von N Ergebnisse. • Die Anzahl der zu ermittelnden Ergebnisse kann bei der Query mitgegeben werden.

  23. Sonstige Links / Resources • FIPA: Foundation for Intelligent Physical Agents, http://www.fipa.org/ • UMBS AgentWeb: http://agents.umbc.edu/ • EU ESPRIT: http://www.agentlink.org/ • Cetus-Links: http://www.cetus-links.org/oo_mobile_agents.html • Agenten in Raucherkinos. Grundlagen und Hintergründe • Artikelreihe in Java Magazin, ab JavaMagazin 07/2001 • Christian Dannegger, Dr. Klaus Dorer (living systems AG)

More Related