E2 - Java Forum Stuttgart

Werbung
Agenten-Technologien
in Java
Jochen Hiller
[email protected]
Java Forum Stuttgart, 28.06.2001
JFS2001 / Slide 1
Bauer & Partner - The Business and Technology Group. © 2001
Was sind Software-Agenten ?
 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
JFS2001 / Slide 2
Bauer & Partner - The Business and Technology Group. © 2001
Informationen
Handlungen
JFS2001 / Slide 3
Modelle
Modell eines Agenten
Plausibilität
Entscheidungen
Bauer & Partner - The Business and Technology Group. © 2001
Architektur eines Agenten
SENSOR
AKTOR
Environment
JFS2001 / Slide 4
• Ziele
• Wünsche
• Intentionen
• Erfahrungen
Inferenzmaschine
Modell
Bauer & Partner - The Business and Technology Group. © 2001
Informationen
Entscheidung
Modell- Filtern Beschaffen
bildung
Agenten zur Entscheidungs-Unterstützung
Fortschritt
JFS2001 / Slide 5
Bauer & Partner - The Business and Technology Group. © 2001
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.
JFS2001 / Slide 6
Bauer & Partner - The Business and Technology Group. © 2001
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 AgentenPlattformen.
JFS2001 / Slide 7
Bauer & Partner - The Business and Technology Group. © 2001
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
JFS2001 / Slide 8
Bauer & Partner - The Business and Technology Group. © 2001
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
JFS2001 / Slide 9
Bauer & Partner - The Business and Technology Group. © 2001
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/
JFS2001 / Slide 10
Bauer & Partner - The Business and Technology Group. © 2001
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
JFS2001 / Slide 11
Bauer & Partner - The Business and Technology Group. © 2001
Warum benötigt man Rule Engines ?
home brewed
code
transaction
persistency
security ..
EJB
server
..
business
logic
EJB
server
..
rule
engine
JFS2001 / Slide 12
costs, risks
Bauer & Partner - The Business and Technology Group. © 2001
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
JFS2001 / Slide 13
Bauer & Partner - The Business and Technology Group. © 2001
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.
JFS2001 / Slide 14
Bauer & Partner - The Business and Technology Group. © 2001
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 codiert
public Discount getDiscount (Customer customer) {
int turnover = customer.getTurnover (12);
//
//
//
if
Regeln sind hier implementiert,
der Constructor fuer Discount
erzeugt einen prozentualen Discount von 10%
(turnover > 100) return new Discount (10, true);
if ..
}
JFS2001 / Slide 15
Bauer & Partner - The Business and Technology Group. © 2001
Mandarax – Definition von Fakten / Regeln
 If the value of all transactions of a customer is more than 100 $ in
one year then he qualifies for a discount of 10%.
// Instanzen werde mit einer Factory erzeugt, zusaetzlich wird eine weitere
// Utility-Klasse benutzt, die das generieren von Objekten weiter vereinfact
LogicFactory 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 umbewandelt
Class[] 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 vordefiniert
Fact premisse = factorySupport.fact (IntArithmetic.GREATER_THAN, valueOfCustomer,
new Integer (100));
// ...
JFS2001 / Slide 16
Bauer & Partner - The Business and Technology Group. © 2001
Mandarax – Arbeiten mit Regeln / Inference Engine
 Regeln werden in der Wissensbasis hinterlegt.
 Mittels der Inference Engine kann eine Query auf die
Wissensbasis abgesetzt werden
// Implementierung mit Geschaeftsregelframework
public 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;
}
JFS2001 / Slide 17
Bauer & Partner - The Business and Technology Group. © 2001
Mandarax – Integration von Fakten
 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.
// DB ist hier eine Klasse die eine Datenbank simuliert
AutoFacts 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 package
Predicate[] predicates = {DoubleArithmetic.GREATER_THAN};
af.setPredicates (predicates);
JFS2001 / Slide 18
Bauer & Partner - The Business and Technology Group. © 2001
Mandarax – Wissensbasis in RuleML (v0.8)
 Mandarax ist der erste verfügbare Editor für RuleML basierende
Wissensbasen
<?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>
JFS2001 / Slide 19
<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>
Bauer & Partner - The Business and Technology Group. © 2001
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
JFS2001 / Slide 20
Bauer & Partner - The Business and Technology Group. © 2001
Oryx – Das Toolkit zu Mandarax
 Wurde von Jens Dietrich ([email protected]) 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
JFS2001 / Slide 21
Bauer & Partner - The Business and Technology Group. © 2001
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.
JFS2001 / Slide 22
Bauer & Partner - The Business and Technology Group. © 2001
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)
JFS2001 / Slide 23
Bauer & Partner - The Business and Technology Group. © 2001
Herunterladen