Agenten-Technologien
in Java
Jochen Hiller
jochen.hiller@bauer-partner.de
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 (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
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