Informationsagenten für die SMART Agenten Plattform Überblick über die Agententechnologie und Entwurf einer Agenten Plattform basierend auf Java Technologie Martin Ruhmer Informationsagenten für die SMART Agenten Plattform Überblick über die Agententechnologie und Entwurf einer Agenten Plattform basierend auf Java Diplomarbeit an der Technischen Universität Graz vorgelegt von Martin Ruhmer Institut für Informationssysteme und Computer Medien (IICM) Technische Universität Graz A-8010 Graz, Österreich September 2005 © Copyright 2005, Martin Ruhmer Diese Arbeit ist in deutscher Sprache verfasst. Begutachter: o.Univ.-Prof. Dr. Dr.h.c.mult. Hermann Maurer Betreuer: Dipl.-Ing. Dr.tech. Christian Gütl Information agents for the SMART Agent Platform An overview about Agent technology and specification of an Agent Platform based on Java Master’s Thesis at Graz University of Technology submitted by Martin Ruhmer Institute for Information Systems and Computer Media (IICM) Graz University of Technology A-8010 Graz, Austria September 2005 © Copyright 2005, Martin Ruhmer This Thesis is written in german language. Advisor: o.Univ.-Prof. Dr. Dr.h.c.mult. Hermann Maurer Supervisor: Dipl.-Ing. Dr.tech. Christian Gütl Kurzfassung Das unüberschaubare und permanent wachsende Angebot von Informationen im Internet ermöglicht es den Menschen nicht mehr, dieses inhaltlich zu erfassen oder gezielt nach Informationen zu suchen. Einen Lösungsweg zur verbesserten Informationsauffindung stellt hierbei der Einsatz von so genannten Informationsagenten in Multiagentensystemen dar. Im ersten Teil dieser Arbeit, dem Untersuchungsbereich, wird versucht, einen Überblick über die Agententechnologie zu schaffen, und untersucht wie sich Software Agenten definieren. In weiterer Folge wird im Besonderen auf Informationsagenten eingegangen und es werden existierende Systeme vorgestellt. Die Betrachtung einiger wichtiger Aspekte die im Zusammenhang mit Multiagentensystemen auftreten bildet den Abschluss dieses Teils der Arbeit. Die im Untersuchungsbereich gewonnenen Erkenntnisse fließen in die Konzeptionierung und prototypische Implementierung einer Agenten Plattform ein, welche im ersten Teil des Gestaltungsbereiches vorgestellt wird. Diese Plattform trägt den Namen SMART (Sophisticated Mobile Agent Repository), und wurde in Java, unter Verwendung des am IICM (Institut für Informationssysteme und Computer Medien) der Technischen Universität Graz entwickelten Dino Frameworks, implementiert. Um die Grundfunktionalität der SMART Agenten Plattform zu testen, wird im zweiten Teil des Gestaltungsbereichs die Umsetzung eines einfachen Informationsagenten beschrieben, der mit dem, ebenfalls am IICM entwickelten Suchdienst xFIND (Extended Framework for Information Discovery) kommuniziert. Abschließend werden mögliche Verbesserungen und wünschenswerte Erweiterungen für SMART diskutiert. Abstract The unmanageable and permanently increasing amount of information found on the Internet prevents users from searching and identifying the adequate information. A promising approach for solving the complex problem is the use of so called “Information Agents” within multi-agent systems. The first part of this thesis, the theoretical section tries to give an overview about agent technology and to determine how the term Software Agent is defined. Subsequently, in particular the issue of Information Agents is addressed and existing systems are presented. Finally to this section some important aspects of multi-agent systems are examined. The results of the theoretical section will be incorporated in the conceptual design and prototypical implementation of an Agent Platform, which will be presented in the first part of the practical section of this thesis. This Agent Platform is called SMART (Sophisticated Mobile Agent Repository), and has been implemented in JAVA using the Dino Framework which was developed at IICM (Institute for Information Systems and Computer Media) at Graz University of Technology. To test the basic functionality of the SMART Agent Platform a simple Information Agent, which is able to communicate with the, also at IICM developed search system xFIND (Extended Framework for Information Discovery), has been implemented. A detailed instruction of the implementation steps will be introduced in the second part of the practical section. Finally to this section some possible suggestions and new ideas for the improvement and extension of the SMART System are discussed. Ich versichere hiermit, diese Arbeit selbständig verfasst, andere als die angegebenen Quellen und Hilfsmittel nicht benutzt und mich auch sonst keiner unerlaubten Hilfs-mittel bedient zu haben. I herby certify that the work presented in this thesis is on my own and the work performed by others is appropriately cited. Danksagung Hiermit möchte ich mich bei all jenen bedanken, die mich bei der Erstellung dieser Diplomarbeit mit Rat und Tat unterstützt haben. Mein besonderer Dank gilt den Mitarbeitern des IICM um Herrn Prof. Dr. Dr.hc.mult. Hermann Maurer für die Unterstützung in administrativen Angelegenheiten, sowie meinen Kollegen in der Web Application Group (WAG) für ihre aufmunternden Gespräche. Insbesondere danken möchte ich meinem Betreuer, Herrn Dipl. Ing. Dr. Christian Gütl, der mich durch zahlreiche Anregungen und Ratschläge bei der Erstellung dieser Arbeit unterstützt hat. Herzlichst möchte ich mich auch bei Andrea Kleinschuster für ihre Unterstützung und unermüdliche Aufmunterung bedanken. Ohne sie hätte ich diese Arbeit nie vollendet. Das SMART System wurde in Zusammenarbeit mit Stefan Kernbauer, ebenfalls Diplomand am IICM, entwickelt. Vielen Danke für dein Engagement und für die Diskussionen, die viele Unklarheiten beseitigt und viele Ideen konkretisiert haben. Herzlich bedanken möchte ich mich auch bei meinen Eltern, Gertrude und Johann, die mir durch ihre vielseitige Unterstützung über all die Jahre hinweg diese Ausbildung erst ermöglicht haben. Von ganzem Herzen möchte ich meiner Familie, meiner Frau Helene, meinem Sohn Daniel und meiner Tochter Katharina danken. Ihre Geduld mit mir und ihre Liebe zu mir waren in allen Situationen eine wertvolle Stütze. Martin Ruhmer Graz, September 2005 Inhaltsverzeichnis 1 Einleitung ...................................................................................... 1 1.1 1.2 Ausgangssituation-Motivation ................................................................. 1 Gliederung und Inhalt der Arbeit ............................................................. 2 I Untersuchungsbereich ................................................................. 4 2 Einführung in den Themenbereich und Begriffsbestimmung . 6 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3 Motivation ................................................................................................ 6 Geschichtliche Betrachtungen ................................................................. 8 Agentendefinitionen............................................................................... 11 Eigenschaften von Agenten ................................................................... 13 Agenten und Objekte ............................................................................. 17 Agenten und Intelligenz ......................................................................... 19 Klassifikation von Agenten ................................................................... 21 Zusammenfassung ................................................................................. 25 Informationsagenten im Web.................................................... 27 3.1 Allgemeines ........................................................................................... 27 3.2 Grundlegende Struktur des Web ............................................................ 28 3.3 Suchdienste ............................................................................................ 28 3.3.1 Webkataloge .................................................................................. 29 3.3.2 Spider-basiert Suchdienste ............................................................. 29 3.3.3 Metasuchmaschinen ....................................................................... 30 3.4 Problembereiche der Suchdienste .......................................................... 31 3.5 Problembereiche bei der Wissensauffindung im Web ........................... 32 3.6 Informationsagenten .............................................................................. 37 3.7 Klassifikation von Informationsagenten ................................................ 38 3.7.1 Kooperative Informationsagenten und Systeme ............................ 39 3.7.2 Adaptive Informationsagenten ....................................................... 39 3.7.3 Mobile Informationsagenten .......................................................... 40 3.7.4 Informationsagenten für den elektronischen Handel ..................... 40 3.8 Beispiele von Informationsagenten ....................................................... 41 3.8.1 Letizia ............................................................................................ 41 3.8.2 Infosleuth ....................................................................................... 42 3.8.3 RETSINA....................................................................................... 43 3.8.4 Daffodil .......................................................................................... 45 3.9 Zusammenfassung ................................................................................. 47 4 Multiagentensysteme .................................................................. 49 4.1 Allgemeines ........................................................................................... 49 4.2 Eigenschaften von Multiagentensystemen............................................. 50 4.3 Mögliche Vorteile von Multiagentensystemen ...................................... 51 4.4 Agentenkommunikation......................................................................... 51 4.4.1 Sprechakte ...................................................................................... 53 4.4.2 Sprechaktbasierte Agentenkommunikationssprachen ................... 54 4.4.3 Interaktionsprotokolle .................................................................... 57 4.4.4 Ontologien ..................................................................................... 61 4.4.5 Vermittlung und Organisation durch Faciltiators .......................... 61 4.4.6 Regeln der Kommunikation ........................................................... 63 4.5 Agentenarchitekturen ............................................................................. 63 4.5.1 Komponentenarchitekturen ............................................................ 64 4.5.2 Geschichtete Architekturen............................................................ 64 4.5.3 Reaktive Architekturen .................................................................. 66 4.6 Standardisierungsbemühungen .............................................................. 66 4.6.1 Knowledge Sharing Effort ............................................................. 67 4.6.2 FIPA ............................................................................................... 67 4.6.3 Agent Society ................................................................................. 67 4.6.4 Object Management Group ............................................................ 67 4.7 Zusammenfassung ................................................................................. 68 II Gestaltungsbereich .................................................................... 69 5 SMART - Sophisticated Mobile Agent Repository ................. 70 5.1 Motivation .............................................................................................. 70 5.2 Anforderungen an ein Agentensystem ................................................... 71 5.3 SMART Philosophie .............................................................................. 72 5.4 Bausteine zur Entwicklung eines Agentensystems ................................ 74 5.4.1 Java ................................................................................................ 74 5.4.2 Dino ............................................................................................... 75 5.4.3 FIPA ............................................................................................... 76 5.5 Das SMART System .............................................................................. 77 5.6 Die SMART Plattform ........................................................................... 78 5.6.1 Kurzbeschreibung der Module....................................................... 79 5.7 SMART Konzepte ................................................................................. 83 5.7.1 SMART Agent (SAgent) ............................................................... 83 5.7.2 Kommunikation zwischen Agenten ............................................... 85 5.7.3 Mobilität von Agenten ................................................................... 86 5.7.4 SMART Komponenten .................................................................. 86 5.7.5 SMART Componentbase ............................................................... 87 5.7.6 SMART Agentbase ........................................................................ 88 5.7.7 SMART Bewertung ....................................................................... 88 5.7.8 User Interaktion ............................................................................. 89 5.8 Zusammenfassung ................................................................................. 89 6 Ein einfacher Informationsagent für die SMART Agenten Plattform ......................................................................................... 91 6.1 Das xFind Suchsystem ........................................................................... 91 6.2 Das xFind Beispielszenario ................................................................... 93 6.3 Beteiligte Agenten ................................................................................. 93 6.3.1 Der xFIND Indexer Wrapper Agent .............................................. 94 6.3.2 Der What’s New Agent................................................................ 104 6.4 Zusammmenfassung ............................................................................ 106 7 Zusammenfassung .................................................................... 108 7.1 Erkenntnisse und Ausblick .................................................................. 110 Abbildungsverzeichnis .................................................................... 113 Literaturverzeichnis ........................................................................ 115 Seite 1 Kapitel 1 Einleitung Kapitel 1 1 Einleitung 1.1 Ausgangssituation-Motivation Durch das rapide Wachstum des World Wide Web (WWW) und der damit zusammenhängenden Informationsfülle ist es für den Benutzer unmöglich geworden, die zur Verfügung stehende Information zu sichten und die für ihn wichtige und interessante Information herauszufiltern. Es besteht die Gefahr, in einer Unmenge irrelevanter Informationen zu versinken und das eigentliche Ziel der Informationssuche aus den Augen zu verlieren. Dies geht einher mit einem massiven Zeitverlust für das Auswerten letztendlich wertlosen Materials. Die gegenwärtigen „keyword search“ basierten Suchdienste im Internet leisten eine wichtige Hilfestellung für die Informationserschließung im World-Wide-Web (WWW), weisen jedoch eine Reihe von Schwächen auf. Diese Suchdienste liefern eine nahezu endlose Liste an Suchergebnissen. In ihren Suchmöglichkeiten wird nicht auf individuelle Bedürfnisse und Qualitätsanforderungen der Benutzer eingegangen, und sie stellen keinen Kontext zu den jeweiligen Aufgaben dar. Zumeist sind sie, für sich, isolierte Dienste, die mit dem enormen Informationsangebot und Wachstum im Internet nicht Schritt halten können. Weiters unterstützen sie den Benutzer zu wenig im Rechercheprozess. So sind sie z.B. nicht in der Lage vorhandene Metainformationsdienste zu berücksichtigen bzw. diese zu kombinieren und sie bieten auch keine Hilfestellung bei der Verwaltung von bereits vom Benutzer gesichteter Information. Einen weiteren Problembereich stellt das „Vertrauen in die Information“ bzw. deren Gültigkeit oder Aktualität dar, auch in diesen Bereichen erfährt der Benutzer zu wenig Hilfe. [Guetl 2002] Es besteht also der Bedarf an „intelligenten“ Suchwerkzeugen, die in verteilter Weise individuelle, personalisierte Informationen bzw. Dienste und Applikationen den jeweiligen Benutzern zur Verfügung stellen können. Diese Suchwerkzeuge sollen den Benutzer auch bei der Beurteilung der Qualität von Informationen unterstützen und je nach Wunsch noch zu den jeweiligen Inhalten Zusatzinformationen von den unterschiedlichsten Diensten (Metadiensten) anbieten können. [Guetl 2002] Bei diesen Metadiensten handelt es sich nicht immer nur um herkömmliche Suchdienste in den gegenwärtig bekannten Formen, sondern es sollen auch Übersetzungsdienste, Klassifizierungsdienste und Dienste aus andern Bereichen, die die Informationsauffindung erleichtern, zum Einsatz kommen. So ist unter anderem auch die Zusammenarbeit oder die Kombination von kommerziellen und nicht kommerziellen Diensten wünschenswert. [Gütl 2002] Seite 2 Der Einsatz von Agententechnologie ist ein viel versprechender Ansatz zur Lösung der oben skizzierten komplexen Probleme. Mit Hilfe dieser Technologie können Multiagentensysteme geschaffen werden in denen mehrere spezialisierte Agenten kooperieren, um gemeinsam die schwierigen Aufgaben, die bei der Informationsbeschaffung auftreten, zu lösen. Ziel dieser Arbeit ist es, die Grundlagen der Agententechnologie zu untersuchen. Insbesondere werden so genannte Informationsagenten, und einige wesentliche Aspekte die im Zusammenhang mit Multiagentensystemen auftreten, näher betrachtet. Die gewonnen Erkenntnisse fließen in die Entwicklung und Konzeption einer Agenten Plattform, die den Namen SMART (Sophisticated Mobile Agent Repository) trägt, ein. Beispielhaft wurde ein einfacher Suchagent auf der entwickelten Agenten Plattform umgesetzt. 1.2 Gliederung und Inhalt der Arbeit Die vorliegende Arbeit gliedert sich in einen Untersuchungsbereich und einem Gestaltungsbereich auf. Der erste Teil dieser Arbeit, der Untersuchungsbereich beginnt mit einer Einführung in den Themenbereich und Begriffsbestimmung in Kapitel 2. Zu diesem Zweck wird zunächst versucht einen kurzen Überblick über die Entwicklung der Agententechnologie zu gegeben. In weiterer Folge wird die vielschichtige Verwendung des Begriffs Agent, aufgezeigt. Dazu werden verschiedene Definitionen und Eigenschaften, wie sie in der Literatur zu finden sind, herangezogen. Aus dem Blickpunkt der Objektorientierten Programmierung ist es auf den ersten Blick nicht erkennbar welche neuen Ideen sich hinter dem Agentenparadigma verbergen, deshalb wird dieser Problematik ein eigener Absatz gewidmet. Häufig wird im Zusammenhang mit Agenten von „Intelligenten“ Agenten gesprochen. Hinter dieser Eigenschaft verbergen sich aber sehr unterschiedliche Sichtweisen, die ebenfalls in diesem Kapitel näher dargestellt werden. Die Vorstellung einer möglichen Klassifikation von Agenten und eine kurze Zusammenfassung bilden den Abschluss dieses Kapitels. Kapitel 3 befasst sich mit den gegenwärtigen Suchdiensten und deren Problembereichen. Im weiteren Verlauf dieses Kapitels werden Ergebnisse von Studien vorgestellt, die sich mit dem Benutzerverhalten bei der Wissensauffindung im Internet befassen. Daraus werden mögliche Einsatzgebiete von Informationsagenten abgeleitet. Es folgt die Vorstellung konkreter Beispiele von singulären Informationsagenten und Informationsagenten innerhalb eines Multiagentensystems. Eine kurze Zusammenfassung beschließt dieses Kapitel. Mit der Betrachtung von einigen wesentlichen Aspekten von Multiagentensystemen, dazu gehören unter anderem die generellen Eigenschaften solcher Systeme, die Kommunikation zwischen Agenten, die verschiedenen Architekturen von Agenten und Standardisierungsbemühungen in diesem Bereich, wird in Kapitel 4 der Untersuchungsbereich abgeschlossen. Die im Untersuchungsbereich gewonnenen Erkenntnisse fließen in die Entwicklung und Konzeption einer Agenten Plattform ein, welche im Zweiten Teil dieser Arbeit, dem Seite 3 Kapitel 1 Einleitung Gestaltungsbereich in Kapitel 5 vorgestellt wird. Um die Funktionalität dieser Plattform zu zeigen wird in Kapitel 6 ein einfacher Informationsagent spezifiziert und prototypisch implementiert, der mit dem am IICM entwickelten Suchdienst xFIND kommuniziert. Den Abschluss des Gestaltungsteiles bildet in Kapitel 7 eine kurze Zusammenfassung in der auch möglichen Verbesserungen bzw. Erweiterungen der SMART Plattform diskutiert werden. Seite 4 Untersuchungsbereich Seite 5 Kapitel 1 Einleitung Seite 6 Kapitel 2 2 Einführung in den Themenbereich und Begriffsbestimmung Objects do it for free; agents do it for money. [Jennings et al. 1998a] 2.1 Motivation Herkömmliche Software arbeitet nach dem Paradigma der „direkten Manipulation“, nichts passiert bis eine Person explizit Kommandos über die Tastatur eingibt. Der Computer ist also nur eine passive Einheit, der auf detaillierte Instruktionen wartet um diese dann auszuführen. Durch den Einsatz von Agententechnologie sollte sich dieser Zugang zum Rechner grundlegend ändern. Es wird ein kooperativer Prozess zwischen Benutzer und intelligentem Agenten stattfinden, indem beide Aktionen starten, Ereignisse betrachten, Aufgaben ausführen und kommunizieren können. Man spricht in diesem Zusammenhang von dem Paradigma der „indirekten Manipulation“. [Maes 1994] Damit ist es nur allzu verständlich, dass in Agenten und Multiagentensysteme große Hoffnungen gesetzt werden. Die Anwendungen reichen dabei von einfachen personalisierten Emailfiltern, Informationsmanagement, Workflowmanagement oder Netzwerkmanagement bis hin zu großen, komplexen aber auch ein hohes Maß an Verantwortung tragenden Systemen, wie zum Beispiel im Bereich der Flugverkehrskontrolle und Patientenüberwachung. [Ciancarini et al. 1998] Der Ursprung der Agententechnologie im Bereich der Künstlichen Intelligenz (KI) zu finden, allerdings ist die intensive Forschung auf dem Gebiet der Agententechnologie auch eng mit dem ständigem Wachstum und der steigenden Popularität des Internets verbunden. Einerseits haben heute immer mehr Anwender Zugang, die kein ausreichendes Verständnis über die zugrunde liegende Informations- und Kommunikationstechnik haben. Andererseits wird, durch die immer größer werdende Informationsflut, die den Benutzer aus dem World Wide Web (WWW) überrollt, die Informationssuche immer schwerer bzw. kostet den Benutzer sehr viel Zeit und Aufwand. So ist der Gedanke nahe liegend, diese Arbeiten an einen Agenten zu übertragen, der in der Lage ist aus den Interessen und Vorlieben des Benutzers zu lernen und ihn auf diese Weise optimal unterstützen zu können. [Murch et al. 2000] Bei der großen Breite an Anwendungsgebieten scheint es auf den ersten Blick unmöglich in all diesen Bereichen Gemeinsamkeiten zu erkennen, doch das verbindende Seite 7 Kapitel 2 Einführung in den Themenbereich Element, das allen diese neuen Möglichkeiten zugrunde liegt ist der Agent mit all seinen unterschiedlich ausgelegten Definitionen. [Jennings et al. 1998a] Dass der Begriff von vielen Leuten in den verschiedensten Forschungs- aber auch Anwendungsbereichen auf ebenso viele unterschiedliche Arten gebraucht wird, zeigt einerseits die große Dimension, die die Agententechnologie erreicht hat, führt andererseits aber auch zu einer Überstrapazierung des Begriffes Agent. So werden die Grenzen, die ohnehin schon sehr fließend sind, vor allem von Seiten der Industrie, der natürlich viel daran liegt, den Absatz durch „neuartige Agententechnologie“ zu fördern, noch weiter verwischt. Ein Zitat, das oben genanntes Problem voll zum Ausdruck bringt, stammt von Peter Wayner : „Vom Hilfesystem eines Textverarbeitungsprogramms bis zu mobilem Code der übers Netzwerk unser Geschäfte abwickelt, alles wird derzeit als Agent bezeichnet. Die Metapher ist so vielseitig verwendet worden, dass wir nur noch auf eine Firma warten, die ihre Computer-Netzschalter als Stromversorgungsagenten bewirbt.“1 [Wayner et al. 1995] Bis jetzt sind diese Befürchtungen zwar noch nicht eingetreten, aber dieses Zitat zeigt den großen Hype der rund um Agententechnologie entstanden ist, und die werbewirksame Nutzung die nun schon geraume Zeit stattfindet. Man sieht also bereits in welchen stark differierenden Bereichen Agententechnologie zur Anwendung kommt und kann sich somit auch vorstellen, welch unterschiedliche Sichtweisen der ganzen Agententechnologie zugrunde liegen. In diesem Kapitel wird zunächst in Abschnitt 2.2 ein kurzer Überblick über die geschichtliche Entwicklung der Agentenforschung gegeben. In Abschnitt 2.3 werden einige ausgewählte Definitionen des Begriffs Agent, wie sie in der Literatur zu finden sind, vorgestellt. Eine Aufzählung von möglichen Eigenschaften die ein Agent besitzen kann bzw. muss wird in Abschnitt 2.4 gemacht, und führt zu einer alternativen Definition des Begriffs, mittels Eigenschaften. Für die praktische Realisierung von Agenten stellt sich die Frage, wodurch sich ein Agent von herkömmlichen Objekten unterscheidet. Die Antwort auf diese Frage wird in Abschnitt 2.5 gesucht. Im Zusammenhang mit Agententechnologie wird oftmals der Begriff Intelligenz verwendet, mit dieser Problematik befasst sich Abschnitt 2.6. Schließlich wird in Abschnitt 2.7 eine von vielen möglichen Klassifikationen von Agenten vorgestellt, die als Grundlage für weitere Recherchen herangezogen wird. Mit einer kurzen Zusammenfassung wird dieses Kapitel abgeschlossen. Das Ziel dieses Kapitels ist, eine Annäherung an den Begriff Agent zu finden, eine Möglichkeit der Abgrenzung zwischen Agenten und herkömmlicher Software zu zeigen. „The buzzword agent has been used recently to describe everything from a word processor`s help system to mobile code that can roam networks to do our bidding. The metaphor has become so pervasive that we are waiting for some enterprising company to advertise its computer power switches as empowerment agents.” [Wayner et al. 1995] 1 Seite 8 2.2 Geschichtliche Betrachtungen Als 1950 Alan Turing in seinem berühmten Werk „Computing Machinery and Intelligence“ aus dem Jahr 1950 den nach ihm benannten Turing-Test veröffentlichte, bedeutete dies eine große Inspiration für die Anhänger der Künstlichen Intelligenz (KI). Der Turing-Test2 erlaubt eine anschauliche Darstellung maschineller Intelligenz. Danach gilt eine Maschine dann als intelligent, wenn ihr Antwortverhalten nicht von demjenigen eines Menschen unterschieden werden kann. Die Arbeit Turings trug entscheidend dazu bei, dass Ende der 1950’er Jahre die Forschungsrichtung KI3weiter Verbreitung fand. [Middleton 2001] Die Idee, die hinter dem Begriff Agent im Zusammenhang mit Softwaresystemen steckt, entstand nach Ansicht von Jeffrey M. Bradshaw [Bradshaw 1997] Mitte der 1950’er Jahre. John McCarthy und Oliver G. Selfridge, die zu dieser Zeit beide am Massachusetts Institute of Technology (MIT) gearbeitet haben, dachten dabei an ein System, das selbstständig, durch die Ermittlung geeigneter Computeroperationen, ihm gestellte Aufgaben lösen kann. Ein solches System sollte auch in der Lage sein Hilfe anzufordern, wenn es diese benötigt. Im Gegensatz zum, damals schon populären Bild vom Roboter sollte dieses System nicht in der physikalischen, „realen“ Welt agieren, sondern im Computer. [Bradshaw 1997] In den frühen Jahren der KI waren vor allem die Arbeiten folgender Forscher sehr bedeutend. Marvin Minsky, der sich zuvor mit Neuronalen Netzwerken beschäftigt hatte und dabei nicht zu einem zufrieden stellenden Ergebnis kam4, begann gemeinsam mit John McCarthy an Systemen zu forschen, die auf einfacher Suche in symbolischen Repräsentationen5 basierten. Zur gleichen Zeit machten Allen Newell und Herbert Simon mit Systemen, die auf Heuristischer Suche basierten, gute Fortschritte beim Beweis von logischen Theoremen. Diese anfänglichen Erfolge führten schließlich dazu, dass die Heuristische Suche in symbolischen Repräsentationen der dominante Ansatz in der Künstlichen Intelligenz wurde. [Middleton 2001] Die 1960’er Jahre waren sehr erfolgreich. McCarthy entwickelte die Programmiersprache LISP, begann die Welt mittels Symbolen zu beschreiben und verwendete Logik um Probleme zu lösen6. Newell entwickelte den „General Problem Solver“. Mit diesem konnte jedes Problem gelöst werden, vorausgesetzt es existiert eine geeignete symbolische Repräsentation dafür. Viele Aufgaben wurden damit gelöst, 2 Der Test sieht wie folgt aus: Ein Proband (Mensch) sitzt vor einem Computerterminal, welches entweder mit einem anderen Computer oder mit einem menschlichen Bediener verbunden ist. Sowohl Bediener als auch Computer behaupten, sie seien Menschen. Der Proband soll während eines Dialogs mit seinem Gegenüber herausfinden, ob er sich mit einer Maschine oder tatsächlich mit einem Menschen unterhält. Wenn er keine Unterschiede feststellen kann oder nur in der Hälfte der Fälle die richtige Antwort gibt, dann hat die Maschine den Test bestanden und kann als intelligent bezeichnet werden. [Ferber 2001] 3 Nach [Russel et al. 1995] wurde die Forschungsrichtung KI 1956 bei der Dartmouth College Konferenz (USA) gegründet. 4 Minsky Glaubte zu diesem Zeitpunkt, dass diese Arbeit umsonst war, weil er mit der Bestimmung der Lerngewichte Probleme hatte. [Middleton 2001] 5 So genante Symbolic Search-based Systems. [Middleton 2001] 6 In diesem Zusammenhang wird von der symbolischen KI gesprochen. Diese geht von der These aus, dass sich relevante Fakten und Abhängigkeiten der realen Welt in eine symbolische Ebene abbilden lassen. Mittels Methoden der mathematischen Logik sei es möglich, in dieser symbolischen Ebene neue Fakten und Abhängigkeiten zu erschließen. [Bradshaw 1997] Seite 9 Kapitel 2 Einführung in den Themenbereich allerdings nur in einfachen, fehlerfreien symbolischen Welten. Es wurde angenommen, dass diese Lösungen auf allgemeine Probleme der realen Welt übertragbar sind. Die Wissenschaftler machten sich aber keine praktischen Gedanken darüber, sondern nutzten den stetigen Anstieg der Rechenleistung zur Vergrößerung des möglichen Suchraums, und konnten damit immer komplexere Probleme lösen. [Middleton 2001] In den 1970’er Jahren wurden die ersten Roboter entwickelt, wie zum Beispiel Shakey, der in einer speziellen Bausteinwelt selbstständig herumnavigieren konnte und auch in der Lage war Bausteine zu stapeln. Solche einfachen Welten vermieden die Komplexität realer Probleme. Spätesten Mitte der 1970’er Jahre wurde klar, dass die Erweiterung kleiner Prototypen zu realen Anwendungen im Bereich der KI einen exponentiellen anstelle eines linear anwachsenden Aufwandes bedeutet, und daher alles andere als trivial zu gelten hat. [Middleton 2001] Nach Ansicht von Hyazinth S. Nwana [Nwana 1996] stammt das erste Konzept eines Softwareagenten aus dieser Zeit. Hewitt veröffentlichte in einem Artikel im Jahre 1977 das „Actor“-Modell. Er betrachtete dort eine Gesellschaft von Spezialisten, die durch Kommunikation, also durch das gegenseitige Senden von Nachrichten, gemeinsam ein Problem lösen. Damit zeigte er, das Kontrollstrukturen klassischer Sprachen als Muster für die Kommunikation zwischen autonomen Einheiten, den Aktoren7, dienen können. Auf diesem Aktorkonzept aufbauend wurden viele Aktorsprachen entwickelt, die wiederum als Basis für eine große Anzahl von Multiagenten-Plattformen Verwendung fanden. [Nwana 1996] [Ferber 2001] In den 1980’er Jahren wurde mit dem Einsatz von Expertensystemen, deren Entwicklung schon bis in die 1960’ er Jahre zurückverfolgbar ist, ein neuer Versuch gestartet, praktische Probleme zu lösen. McCarthy hatte erkannt, dass, um Probleme außerhalb der einfachen Mikrowelten angehen zu können, zusätzlich zum speziellen Wissen über die Domäne noch „gesunder Menschenverstand“ nötig war. Knowledge Engineering, eine Forschungsrichtung innerhalb der KI, die sich mit Wissensrepräsentation befasste, wurde durch diese Erkenntnis sehr populär. Mit den Methoden und Werkzeugen dieser Forschungsrichtung wurden Versuche gestartet, die reale Welt in einer Wissensbasis zu speichern8. Unglücklicherweise wurde bewiesen, dass diese Idee nicht realisierbar war. Dies führte zur verbreiteten Meinung, dass wissensbasierte Systeme nicht für die Lösung praktischer Probleme geeignet sind. Schließlich wurde der Backpropagation Algorithmus entdeckt und führte zu einer Wiederbelebung der konnektionistischen9 Ansätze, die zuvor als Fehlansatz galten. [Middleton 2001] Obwohl es in der Forschungsrichtung der Verteilten Künstlichen Intelligenz (VKI) seit deren Entstehung Ende der 1970‘er Jahre einen eigenen Bereich für Multiagentensysteme 7 Ein Aktor ist eine Einheit, die aus zwei Teilen besteht: einer Struktur, die die Adressen aller anderen ihm bekannten Akteure enthält und denen er Nachrichten zusenden kann, sowie einem aktiven Teil, das Skript, welches sein Verhalten beim Empfang von Nachrichten beschreibt. Das Verhalten jedes Aktors, das parallel zum Verhalten der anderen Aktoren abläuft, besteht aus einer Menge extrem verkürzter Aktionen: Nachrichten senden, Aktoren erzeugen, Zustand ändern. Das ist nicht viel, genügt aber, da jede parallele Berechnung als Kombination dieser primitiven Aktionen ausgedrückt werden kann. Die Kommunikation zwischen Aktoren erfolgt durch den Austausch asynchroner Nachrichten. [Müller 1998] 8 Seit 1984 wird im CYC-Projekt versucht, umfassendes „Weltwissen“ zu speichern. Bislang umfasst die Wissensdatenbank 100.000 generelle Konzepte und 1000.000 Axiome der menschlichen Wahrnehmungswelt, die per Hand kodiert wurden, und Millionen mehr, die das System automatisch daraus abgeleitet hat. [Nwana 1996][Ferber 2001] 9Systeme die auf künstlichen Neuronalen Netzwerken basieren werden auch als konnektionistische Systeme Bezeichnet. [Middleton 2001] Seite 10 gab, hat man sich auch dort bis in die späten 1980‘er Jahre nur wenig Gedanken über die praktische Anwendung von Agenten gemacht. Nach Meinung von [Bradshaw 1997] wurde erst durch Alan Kay, einem großen Befürworter der Agententechnologie 1984 die Idee von McCarthy und Selfridge wieder in Erinnerung gerufen. In einem Artikel der Zeitschrift Scientific American beschreibt er „persönliche Agenten“ als Objekte, die die Erweiterung des Willens und der Absichten des Benutzers darstellen und die in den Computer eingebettet sind. Zwei Jahre später beschreibt Marvin Minsky in seinem Buch „The Society in Mind“ die Psyche eines Wesens (menschlich oder künstlich) als Ergebnis der Interaktion zwischen kleinen individuellen Agenten. Er stellt Mechanismen dar, die aus Konflikten und Kooperationen zwischen diesen kleinen Einheiten, ohne Einsatz einer zentralen Kontrollinstanz, resultieren. Minsky war der Überzeugung, dass die Psyche eines Wesens nicht durch auf Symbole bezogene Inferenzen funktioniert sondern eher durch selbstorganisierte Abstimmung zwischen autonomen Einheiten. Minsky begründete damit einen neuen Ansatz in der KI, den Agentenbasierten Ansatz. Dieser Ansatz hatte auf nachfolgende Arbeiten erheblichen Einfluss. [Bradshaw 1997] Die späten 1980’er Jahre und der Anfang der 1990’er Jahre verzeichneten einen Rückgang des Interesses an auf Suche basierenden symbolischen Ansätzen. Brooks kritisierte überzeugend die grundlegenden Annahmen des Symbolischen Ansatzes10, und konstruierte konkrete anschauliche Systeme für Roboter, die die „Welt als ihr eigenes bestes Modell“ benutzen. Dieser bottom up Versuch, der im Gegensatz zum Wissensbasierten Ansatz kein explizites internes Modell voraussetzt, wird auch als nouvelle KI bezeichnet. Nach anfänglichen Erfolgen versagte auch dieser Ansatz bei komplexeren praktischen Problemen. Anfangs der 1990’er Jahre wurde versucht diesen Ansatz durch kombinieren mit konnektionistischen Ansätzen unter Einsatz paralleler Hardware zu Verbessern. Durch die komplexe Architektur war diesen Systemen jedoch kein kommerzieller Erfolg beschieden. Dies führte dazu, dass Knowledge Engineering nun weitgehend als teuer und nur schwer wieder verwendbar angesehen wurde, und durch Methoden des maschinellen Lernens ersetzt wurde. Seit Mitte der 1990’er Jahre können Mustererkennungsalgorithmen in gewissen Bereichen, wie zum Beispiel bei der Klassifizierung von Newsbeiträgen, Ergebnisse liefern, die annähernd die Qualität der von Menschen erreichen. Hybride Ansätze, die Methoden der traditionellen und der nouvellen KI vermischen, werden für neue Anwendungsgebiete verwendet. [Middleton 2001] Seit der zweiten Hälfte der 1990’er Jahre lässt sich ein neuer Trend bemerken, welcher als Agentenorientiertes Programmieren bezeichnet wird. Dieser basiert auf den Ideen von Minsky und soll den Traum von Kay, die Indirekte Manipulation, verwirklichen. Experimente mit Interfaceagenten, die aus dem Verhalten ihren Benutzer lernen11, und Multiagentensysteme in denen einfache Agenten miteinander interagieren um gemeinsam ihre Ziele zu erreichen12, dominieren die Forschung. Diese Agentensysteme werden nun großteils zum Lösen praktischer Probleme eingesetzt und verwenden bewährte Methoden der Künstlichen Intelligenz. Auch der Bereich der Benutzermodellierung unterzog sich einem großen Wandel, von statischen Repräsentationen hin zu dynamischen 10 Brooks fordert, dass intelligente Maschinen, um die reale Welt wirklich verstehen zu können, mit ihr über Sensoren interagieren und ihr Wissen inkrementell aufbauen müssen. Intelligentes Verhalten sei darüber hinaus auch ohne explizite symbolische Repräsentation und abstrakte Schlussfolgerungen erreichbar. Intelligenz sei vielmehr eine emergente Eigenschaft komplexer Systeme. [Bradshaw 1997] 11 Diese Arbeiten wurden sehr stark von Pattie Maes geprägt. [Maes 1995] 12 Sehr bekannt für Arbeiten auf diesem Gebiet sind Wooldridge und Jennings [Wooldridge et al. 1995] Seite 11 Kapitel 2 Einführung in den Themenbereich verhaltensbasierten Modellen. Es wurde gezeigt, dass mit Methoden des maschinellen Lernens, Muster im Benutzerverhalten gefunden werden können. [Middleton 2001] Dieser oben genannte neue Trend führte einerseits zu der eingangs beschrieben großen Popularität der Agententechnologie, brachte aber andererseits den Nebeneffekt mit sich, dass nun für Vermarktungszwecke die Begriffe Agent und Agententechnologie sehr stark strapaziert wurden. Aus diesem Grund wird nun im folgenden Abschnitt auf die Problematik der Definition des Begriffs Agent eingegangen. 2.3 Agentendefinitionen Etwas überspitzt könnte man sagen, dass es in etwa so viele Definitionen des Begriffes Agent gibt wie es Wissenschaftler und Entwickler gibt, die sich mit dieser Thematik befassen. Manche Forscher vertreten die Ansicht, dass es genauso schwierig ist eine allgemein akzeptierte Definition für den Begriff Agent zu finden wie eine Definition für Intelligenz. Gegenwärtig ist es also nicht möglich eine allgemein gültige Definition des Begriffes Agent zu geben. Trotzdem sind gewisse Vorstellungen und Erwartungen an künftige Programme mit dem Begriff Agent verbunden. Bisher gab es eher passive Systeme, auf eine Eingabe folgt die Ausgabe. Beim Agenten soll das selbständige Handeln erfolgen, wobei auch hier die Grenzen verschwimmen. So gab es auch bisher schon Programme, auf die das Bild des eigenständigen Handelns zutraf und im Gegensatz dazu gibt es auch Agentenprogramme, die traditionelle Züge aufweisen. Burkard 1998 Ein weiteres Problem, das eine eindeutige Definition des Begriffes Agent erschwert, ergibt sich durch die mannigfaltigen Einsatzgebiete von Agenten. Abhängig von welchem Forschungsschwerpunkt oder praktischer Anforderung der Agent betrachtet wird, natürlich auch in Bezug auf ihren interdisziplinären Charakter, ergeben sich die verschiedensten Ansätze von Definitionen. Nach Ansicht von [Burkard 1998] haben folgende Forschungsrichtungen wesentlichen Einfluss auf die Entwicklung von Softwareagenten: Künstliche Intelligenz Verteilte Künstliche Intelligenz Netzwerk und Kommunikationssysteme (verteilte Systeme) Entscheidungstheorie Psychologie Im Folgenden werden nun einige ausgewählte Definitionen des Begriffs Agent vorgestellt, die sich dem Begriff aus jeweils einer anderen Sichtweise nähern. Ziel dieses Abschnitts ist, zu zeigen wie stark diese Definitionen voneinander differieren. Die Definition nach Dragon „Ein Agent ist ein Stück Software, dass etwas für dich erledigt.“13 [Dragon 1997] Nach Meinung des Autors dieser Arbeit kann diese Definition nicht ausreichen um 13 “An Agent is a piece of software that does something for you.” [Dragon 1997] Seite 12 den Agentenbegriff zu definieren. Die Forderung, ein Agent sollte eine Aufgabe für den Benutzer erledigen, muss in dieser Form wohl an jede Art von Software gestellt werden. Die Definition nach Cheong „Agenten können als persönliche Softwareassistenten betrachtet werden, die von ihren Benutzern Befugnisse übertragen bekommen.“14 [Cheong 1996] Diese Definition fordert eine Art von Autorität oder Befugnis, die einem Agenten von seinem Benutzer übertragen werden soll, woraus diese Befugnis genau bestehen soll und was der Agent damit anfangen soll, bleibt unklar. Die Definition nach Russell „Ein Agent ist alles das, was seine Umgebung mittels Sensoren wahrnimmt und mittels Effektoren in dieser Umgebung agiert.“15 Russel et al. 1995 Die zentralen Punkte dieser Definition sind beobachten und handeln innerhalb einer Umgebung. Wobei eine genaue Spezifizierung von Umgebung aber auch von Beobachtung und Handlung fehlt. Daher wäre es notwendig weitere Einschränkungen bezüglich dieser drei Komponenten vorzunehmen. Die Definition nach Lingau, Drobnik, Dömel „Ein Agent ist ein Computerprogramm dessen Aufgabe es ist, einem Benutzer bei der Ausführung von Aufgaben zu helfen. Für diesen Zweck kann er mit seinem Benutzer, anderen Agenten und der Umgebung im Allgemeinen kommunizieren, und er besitzt einen dauerhaften Zustand.“16 [Lingau et al. 1995] In dieser Definition wird die Kommunikationsfähigkeit in den Vordergrund gestellt. Um sein Ziel zu erreichen, kann ein Agent mit seinem Besitzer, anderen Agenten und seiner Umgebung kommunizieren. Die Definition nach Maes „Autonome Agenten sind Computersysteme, die sich in einer komplexen, dynamischen Umgebung befinden, in dieser selbständig wahrnehmen und reagieren, und so jene Aufgaben erledigen, für die sie geschaffen wurden.“17 Maes 1995 Pattie Maes, Leiterin der Software Agents Group am MIT Media Lab, fordert, dass Agenten in komplexen und dynamischen Umgebungen agieren können sollen. Außerdem müssen Agenten selbstständig sein, das bedeutet, dass sie den Großteil ihrer Aufgaben ohne direkte Intervention von Menschen ausführen und Kontrolle über ihren eigenen Zustand haben. Es wird also die Autonomie in den Vordergrund gestellt. “Agents can be considered personal software assistants with authority delegated from their users.” [Cheog 1996] 15 "An agent is anything that can be viewed as perceiving its environment through sensors and acting upon that environment through effectors." Russel et al. 1995 16 “An agent is a computer program whose purpose is to help a user perform some task (or set of tasks). To do this, it contains persistent state and can communicate with its owner, other agents and the environment in general.” [Lingau et al. 1995] 17 „Autonomous agents are coputational systems that inhabit some complex dynamic environment, sense and act autonomously in this environment, and by doing so realize a set of oals or tasks for which they are designed” [Maes 1995] 14 Seite 13 Kapitel 2 Einführung in den Themenbereich Die Definition nach Wooldridge-Jennings „Ein Agent ist eine Hardware oder normalerweise ein softwarebasierendes Computersystem, das die folgenden Eigenschaften besitzt“18: Wooldridge et al. 1995 autonom: Agenten arbeiten ohne die direkte Intervention von Menschen oder anderen und haben eine gewisse Kontrolle über ihre Aktionen und ihrem internen Zustand. sozial: Agenten interagieren mit anderen Agenten oder möglicherweise mit Menschen mittels einer Agentenkommunikationssprache. reaktiv: Agenten nehmen ihre Umgebung (physikalische Welt, Benutzer, andere Agenten, Internet oder jede beliebige Kombination von diesen) wahr, und reagieren in einer zeitlichen Abhängigkeit auf Änderungen die dort geschehen. proaktiv:. Agenten agieren nicht nur als Reaktion auf ihre Umgebung, sondern sie sind in der Lage die Initiative zu übernehmen und dabei ein zielorientiertes Verhalten zu zeigen In [Wooldridge et al. 1995] werden zwei Ausprägungen des Begriffs Agent unterschieden. Die oben angeführte Definition beschreibt den so genannten „schwachen Agentenbegriff“. Die darin enthaltenen Eigenschaften werden von vielen Forschern als Grundvoraussetzung für einen Agenten angesehen. Im Gegensatz dazu gibt es allerdings auch den Begriff des „starken Agenten“. Dieser starke Agentenbegriff entspricht hauptsächlich dem Verständnis von Forschern aus dem Bereich der Künstlichen Intelligenz. In dieser zweiten Auslegung spielen menschenähnliche Merkmale wie zum Beispiel Wissen, Glauben, Intention oder Verpflichtung19 eine große Rolle. Es ist schon aus diesen wenigen Beispielen ersichtlich, dass die Definitionen stark voneinander abweichen, daher wird es wohl in naher Zukunft keine allgemeine Definition für den Begriff Agent geben. Jedoch findet der Autor dieser Arbeit den Ansatz von Wooldrige und Jennings, Agenten mittels Aufzählung von Eigenschaften zu definieren als sehr anschaulich. Im folgenden Abschnitt werden mögliche Eigenschaften von Agenten betrachtet, um auf diesem Wege ein genaueres Bild über das „Wesen“ eines Agenten zu bekommen. 2.4 Eigenschaften von Agenten In der Literatur finden sich verschiedenste Eigenschaften von Agenten, die dazu geeignet sind Agenten zu beschreiben. Dazu zählen natürlich auch die Eigenschaften, die in den vorangegangenen Definitionen bereits enthalten sind. An dieser Stelle werden diese unter dem Aspekt der Charakterisierung von Agenten mittels verschiedener Eigenschaften näher erklärt. “… a hardware or (more usually) software-based computer system that enjoys the following properties: autonomy: agents operate without the direct intervention of humans or others, and have some kind of control over their actions and internal state social ability: agents interact with other agents (and possibly humans) via some kind of agentcommunication language reactivity: agents perceive their environment, (which may be the physical world, a user via a graphical user interface, a collection of other agents, the INTERNET, or perhaps all of these combined), and respond in a timely fashion to changes that occur in it”. [Wooldridge et al.1995] 19 Im englischen werden diese Merkmale mittels Believe, Desire und Intention beschrieben, deshalb werden diese Agenten auch als BDI-Agenten bezeichnet. [Müller 1998] 18 Seite 14 Autonomie Autonomie kommt in sehr vielen Definitionen vor (siehe Abschnitt 2.3) Autonomie bedeutet, dass der Agent nicht durch einen Menschen gesteuert werden muss, d.h. er kann selbstständig handeln und Entscheidungen treffen ohne dass der Benutzer einschreiten muss. Der Agent muss, um autonom zu sein, die Kontrolle und den Überblick über seine Aktionen haben. Er muss dazu ein gewisses Grundwissen über die Aktionen die er ausführen will und kann, über deren Bedeutung und über Aktionen die er bereits ausgeführt hat, besitzen. Autonomie ist somit ein wesentliches Merkmal zur Unterscheidung zwischen einem Agenten und einem „herkömmlichen“ Programm. Für den Benutzer ist es dabei natürlich von großer Bedeutung wie weitreichend die Autonomie ist, mit der Aktionen ausgeführt werden. Der Grad der Autonomie ist dabei vom Aufgabengebiet und dem Vertrauen, dass der Benutzer dem Agenten entgegenbringt, abhängig und sollte deshalb auch vom Benutzer bestimmt werden können. [Schneeberger 2001a] Reaktivität Ein Agent soll angemessen auf Änderungen in seiner Umgebung reagieren. Die Umgebung eines Agenten kann dabei die physikalische Umgebung, der Benutzer, andere Agenten oder das Internet sein, wobei diese Umgebungsbedingungen auch frei kombinierbar sind, sodass im Extremfall alle diese Bereiche sogar gemeinsam als für den Agenten relevante Umgebung betrachtet werden können. Dabei tritt das Problem auf, dass fast alle interessanten Umgebungen dynamisch sind, d.h., dass sie sich permanent verändern, und dass nicht alle Veränderungen vom Agenten auch wahrgenommen werden können. Wir Menschen haben eine hervorragende Fähigkeit nur die Veränderungen unserer Umgebung wahrzunehmen, die für uns in der aktuellen Situation wirklich relevant sind. Für Agenten kann dies eine sehr schwierige Aufgabe sein. [Schneeberger 2001a] Proaktivität Die Proaktivität stellt gegenüber der Reaktivität eine qualitative Steigerung dar. Proaktivität bedeutet, dass ein Agent von sich aus aktiv wird, d.h. Aktionen ausführt. Um eine vernünftige Entscheidung für eine bestimmte Aktion treffen zu können, muss der Agent eine Beschreibung des Ziels besitzen, dem alle auszuführenden Aktionen dienen sollen. [Schneeberger 2001a] Persistenz Ein Agent ist in der Lage, seinen Zustand zu einem Zeitpunkt seiner Wahl persistent ablegen zu können. Dieses Abbild stellt den Agenten im deaktivierten Zustand dar. Wenn der Agent aktiviert wird, muss er die Arbeit nach der Position der Deaktivierung wieder aufnehmen. Die Eigenschaft der Persistenz bildet die Voraussetzung für die Mobilität. [Murch et al. 2000] Mobilität Der Agent ist in der Lage während seiner Ausführung, über ein Netzwerk, seinen Standort zu verändern, und dort seine Ausführung fortzusetzen20. Neben dem Programmcode muss für diesen Zweck auch die Statusinformation des Agenten transportiert werden. Der Agent kann so eine ganze Reihe von Servern besuchen und verteilte Informationen sammeln und analysieren. Dadurch wird je nach Anzahl der 20 In der Literatur wird in diesem Zusammenhang von Migration gesprochen. Seite 15 Kapitel 2 Einführung in den Themenbereich besuchten Server die Netzbelastung stark reduziert. [Murch et al. 2000] Zuverlässigkeit Da der Benutzer seinem Agenten vertrauen muss, ist es die Pflicht des Agenten, dass er die ihm gestellte Aufgabe in der Art und Weise ausführt, die sein Benutzer von ihm erwartet. Abhängig von den Bereichen in denen ein Agent eingesetzt wird gibt es natürlich ein größeres oder kleineres Risiko, das durch die Übertragung von Aufgaben an einen Agenten entsteht. [Bigus et al.2001] Adaptivität und Lernfähigkeit Ein Agent ist in der Lage sein Verhalten basierend auf seinen früheren Erfahrungen zu verändern, das heißt er passt sich an bzw. ist lernfähig. [Caglayan 1998] Pattie Maes stellt in ihrem Artikel Maes 1994 einen Ansatz vor, bei dem Agenten einen Lernprozess durchlaufen. Sie betrachtet dafür eine spezielle Form von Agenten, so genannte „persönliche Assistenten“, die ihrem Benutzer beim Umgang mit verschiedenen Softwareapplikationen helfen sollen. Diese Applikationen müssen dazu bestimmte Voraussetzungen erfüllen, damit der Lernansatz gegenüber der direkten Programmierung vorteilhaft ist: Wiederkehrende Verhaltensmuster: Die Benutzung der Applikation muss eine bestimmte Menge an immer wiederkehrenden Verhaltensmustern aufweisen. Verhaltensmuster müssen Benutzerabhängig sein: Die wiederkehrenden Verhaltensmuster müssen von Benutzer zu Benutzer verschieden sein. Ist dies nicht der Fall, so ist es effektiver, einen Agenten direkt zu programmieren, d. h. es ist der Wissensbasierte Ansatz vorzuziehen. Eine notwendige Voraussetzung für den Einsatz von Methoden des maschinellen Lernens ist das Auftreten von Regelmäßigkeiten im Verhalten des Benutzers. Im Falle von persönlichen Agenten, die von ihren Benutzern lernen, ist es sinnvoll wenn der Agent sein Verhalten gegenüber dem Benutzer begründen kann. Das gibt dem Benutzer die Möglichkeit, fehlerhaftes Verhalten zu analysieren. Kommunikationsfähigkeit Bei der Kommunikation unterscheidet man zwischen der Kommunikation mit dem Benutzer und der Kommunikation zwischen mehreren Agenten. Die Kommunikation mit dem Benutzer sollte dabei möglichst einfach sein. Der Idealfall wäre, wenn der Benutzer in natürlicher Sprache mit dem Agenten kommunizieren könnte. Dann müsste der Benutzer keine Kommandos erlernen, sondern er könnte mit seinen Worten Aufträge formulieren. Die Kommunikation zwischen Agenten erfordert eine standardisierte formale Sprache. Solche Sprachen werden auch als Agent Communication Language (ACL) bezeichnet. Nachrichten dieser Sprachen werden nach formalen Vorschriften formuliert, so dass sie auch von Agenten verstanden werden können, die von verschiedenen Programmierern implementiert wurden. [Murch et al. 2000] Viele Forscher sehen die Kommunikationsfähigkeit mittels einer Agent Communication Language als eine Schlüsseleigenschaft von Agenten. In Kapitel 4 wird auf diesen Aspekt näher eingegangen. Seite 16 Kooperationsfähigkeit Agenten, die zur Lösung bestimmter Aufgaben, die sie selbst nicht bewältigen können, mit anderen Agenten zusammenarbeiten, werden als kooperativ bezeichnet. Die Kooperationsfähigkeit kann dabei als Spezialisierung der Fähigkeit zur Kommunikation gesehen werden. Es gibt zwei grundlegende Formen der Kooperation. Die direkte Kommunikation, bei der Agenten die Koordination selbst durchführen oder die indirekte Kommunikation, bei der die Agenten sich auf ein spezielles Systemprogramm verlassen, welches die Koordination realisiert, solche Systeme werden auch als föderalistische Systeme bezeichnet (siehe Abschnitt 4.4.5). [Murch et al. 2000] Soziales Verhalten Neben der Fähigkeit zu kommunizieren wie es in der Definition nach WooldridgeJennings (siehe Abschnitt 2.3) nachzulesen ist, versteht man unter sozialem Verhalten eines Agenten auch die Fähigkeit eines Agenten sich kooperativ zu verhalten, auch wenn er selbst keinen Nutzen aus diesem Verhalten zieht. Ein Beispiel dafür wäre der Austausch von bereits gefundener Information, auf deren Suche sich ein anderer Agent gerade befindet. [Bigus et al.2001] Persönlichkeit Für die Interaktion mit dem Benutzer kann es sinnvoll sein, den Agenten mit menschenähnlichen oder zumindest lebewesenähnlichen Charakteristiken auszustatten. Diese Eigenschaft ist jedoch keine notwendige Eigenschaft für Agenten. Eben so wenig sind alle Programme, welche diese Eigenschaft besitzen als Agent zu bezeichnen. [Bigus et al. 2001] Rationalität Wenn ein Agent ein hilfreicher Assistent sein soll, dann muss er sich vernünftig, d.h. rational verhalten. Ein Agent sollte die Vergangenheit wahrnehmen. Ereignisse oder Dinge, die in der Vergangenheit vom Agenten bemerkt bzw. gesehen wurden, müssen durch den Agenten registriert und erinnert werden. Die registrierte Vergangenheit soll danach in die Aktionen des Agenten einfließen. Ein rationaler Agent muss Wissen über seine Handlungsmöglichkeiten haben. Ein Agent kann eine Reihe von Aktionen ausführen, und er muss sich darüber bewusst sein, dass er diese Möglichkeiten hat. Dieses Wissen ist auch Vorraussetzung für planvolles Handeln. Für Rationalität ist Wissen über die Umgebung notwendig. Außerdem muss der Agent bewerten können, ob er in Bezug auf das gesetzte Ziel erfolgreich handelt. [Schneeberger 2001a] Abschließend zu diesem Abschnitt stellt sich nun die Frage welche minimale Teilmenge der aufgelisteten Eigenschaften ein Softwaresystem besitzen muss, um als Agent bezeichnet werden zu können bzw. welche Eigenschaften muss ein Agent besitzen um von herkömmlicher Software unterschieden werden zu können. Wie nicht anders zu erwarten ist, existieren auch hier unterschiedliche Meinungen, so sehen manche Forscher die Mobilität, wieder andere die Adaptivität als Schüsseleigenschaft eines Agenten. Tendenziell vertritt aber die Mehrheit der Forschern die Meinung, dass folgende vier Eigenschaften, Agentensoftware von herkömmlicher Software, wie z.B. Expertensystemen, Verteilten Systemen, oder Objektorientierten Systemen abgrenzt (siehe z. B. [Jennings et al. 1998a], oder [Schneeberger 2001a]): Seite 17 Kapitel 2 Einführung in den Themenbereich Autonomie Proaktivität Reaktivität Kommunikationsfähigkeit Wichtig dabei ist, dass alle diese vier Eigenschaften erfüllt sein müssen, damit man von Agentensoftware sprechen kann, andernfalls hat man es mit einer anderen Softwarekategorie zu tun. Als ein Beispiel für eine solche Abgrenzung werden im nächsten Abschnitt die Unterschiede zwischen Agent und einem klassischen Objekt eingehend behandelt. 2.5 Agenten und Objekte Aus dem Blickwinkel der Objektorientierten Programmierung betrachtet ist es oft nicht möglich die neuen Ideen die sich hinter dem Agentenparadigma verbergen, zu erkennen. Dies ist auch nicht verwunderlich, da tatsächlich viele Gemeinsamkeiten zwischen Objekten und Agenten gefunden werden können. Im Folgenden sollen nun die prinzipiellen Unterschiede zwischen Agenten und Objekten erläutert werden. Weiters wird untersucht, inwiefern das Konzept eines Agenten als Erweiterung eines Objekts im objektorientierten Paradigma betrachtet werden kann. Die folgenden Betrachtungen sind vorwiegend aus [Schimkat 2003] entnommen. Abbildung 2.1: Datenstrukturen, Objekte und Agenten aus [Schimkat 2003] nach [Joseph et al. 2001] Objekte Im objektorientierten Paradigma spielt das Objekt die zentrale Rolle. Ein Objekt zeichnet sich durch zwei prinzipielle Eigenschaften aus: Zustand und Verhalten. Der Zustand eines Objekts wird – aus Sicht des Objekts – in internen Datenstrukturen abgelegt. Der Zugriff auf die Datenstrukturen und auf den Objektzustand erfolgt über Nachrichten, die an das Objekt gesendet werden. In der Nachricht ist festgelegt, welche Methoden oder Datenstrukturen des Objekts aufgerufen werden. Der Zugriff auf die privaten Daten ist von außen nur über freigegebene Methoden möglich, damit ist ein Seite 18 Objekt in Bezug auf seinen internen Zustand autonom, d.h. es besitzt die Kontrolle über seinen internen Zustand. Ein Objekt besitzt aber nicht die Kontrolle über sein Verhalten, d.h. wenn eine Methode des Objekts freigegeben ist, dann können andere Objekte - wann immer sie wollen - diese ausführen. Diese Art des Zugriffsmechanismus auf Objekte, wie es in Abbildung 2.1 illustriert ist, ermöglicht eine Kapselung von Daten bzw. Datenstrukturen in Objekten. Agenten In objektorientierter Hinsicht wird ein Agent als ein Objekt mit einer zusätzlichen Kapselungsschicht verstanden. Diese zusätzliche Schicht kontrolliert alle Zugriffe auf die Methoden und Datenstrukturen des Agenten, wie es in Abbildung 2.1 verdeutlicht ist. So werden sämtliche Nachrichten an einen Agenten durch diese Schicht geleitet. Dort wird entschieden, welche Methoden eines Agenten tatsächlich ausgeführt bzw. aktiviert werden. Dadurch erhält der Agent auch die Kontrolle über sein Verhalten, d.h. er ist auch autonom bezüglich seines Verhaltens. Diesen Entscheidungsprozeß in einem Agenten bezeichnet man auch als Verhaltensaktivierung. Objekte und Agenten stellen beide eine nachrichtenbasierte Schnittstelle zu ihren internen Datenstrukturen und Algorithmen (Methoden) zur Verfügung, dabei ist jedoch zu beachten, dass der Begriff der Nachricht unterschiedliche Bedeutungen bei Objekten und Agenten besitzt: Eine Nachricht im objektorientierten Sinne entspricht einem Aufruf von Methoden oder Datenstrukturen, die zu einem Objekt gehören. Dieser Aufruf setzt voraus, dass die syntaktischen Details der Methodensignatur und Datenstruktur bekannt sind. Falls sich beispielsweise die syntaktische Reihenfolge der Übergabeparameter einer Methode ändern sollte, sind alle Nachrichten bezüglich dieser Methode entsprechend anzupassen. Nachrichten werden zwischen Agenten in einem einheitlichen Format verschickt, d.h. jeder Agent benutzt unabhängig von der inhaltlichen Bedeutung die gleiche syntaktische Schnittstelle für den Austausch von Nachrichten. Nachdem der Inhalt der Nachricht von der zusätzlichen Zugriffsschicht eines Agenten analysiert worden ist, wird das entsprechende Verhalten im Agenten aktiviert, in dem die dafür notwendigen Methoden aufgerufen werden (siehe Abbildung 2.1). Nach dem Prinzip der Verhaltensaktivierung bei Agenten übernimmt der „aufgerufene“ Agent die Auswahl der entsprechenden Aktionen. Im Vergleich zu „objektorientierten Nachrichten“ werden in den Nachrichten von Agenten keine aufzurufenden Methodensignaturen, sondern bedeutungsvolle und komplexe Nachrichteninhalte hinterlegt. Auf der Grundlage der oben beschriebenen Eigenschaften und Charakteristika von Objekten und Agenten können folgende wesentlichen Unterschiede festgestellt werden: Im Allgemeinen sind Objekte passive Repräsentanten eines Abbilds der realen Welt. Damit ein Objekt selbst aktiv wird, muss zuerst eine Nachricht an das entsprechende Objekt gesendet werden. Proaktives Veralten ist im Objektmodell nicht definiert. Agenten sind durch ihre aktiven und proaktiven Eigenschaften wesentlich unabhängiger von den Kontroll- und Informationsflüssen ihrer Umgebung. Obwohl Objekte ihre Daten und Verhaltenseigenschaften in geeigneter Weise kapseln, bleiben die Aspekte der Verhaltensaktivierung davon unberücksichtigt. Methoden eines Objekts werden von außen aufgerufen, d.h. jede als öffentlich deklarierte Methode kann von anderen Objekten direkt aktiviert werden. Objekte besitzen keine Seite 19 Kapitel 2 Einführung in den Themenbereich weiteren Wahlmöglichkeiten, die Zugriffe auf ihre Methoden bzw. ihr Verhalten zu beeinflussen, somit sind Objekte im Gegensatz zu Agenten bezüglich ihres Verhaltens nicht Autonom. Ein weiterer Unterschied bezieht sich auf die Form der Kommunikation zwischen Objekten und Agenten untereinander. Im Mittelpunkt der Kommunikation zwischen Objekten stehen die syntaktischen Schnittstellen der Methodensignaturen und die internen Datenstrukturen. Der Aufruf einer bestimmten Objektmethode oder Datenstruktur impliziert gleichzeitig deren inhaltliche Bedeutung, d.h. zum Zeitpunkt des Methodenaufrufs müssen nicht nur die syntaktischen, sondern auch die semantischen Bedeutungen des Aufrufs bereits bekannt sein. Im Gegensatz dazu trennen Agenten syntaktische und semantische Details der Kommunikation. Agenten benutzen ein einheitliches und von der Bedeutung konkreter Nachrichteninhalte unabhängiges Nachrichtenformat. Dies gewährleistet die langfristige Gültigkeit von Kommunikationsschnittstellen im Hinblick auf die möglichen Änderungen der Methodensignaturen im Laufe eines Agentenlebens. Die inhaltliche Bedeutung einer Nachricht wird in einem separaten Schritt verarbeitet. Weiters kann auch bezüglich der Ausführung ein Unterschied festgestellt werden. Jeder Agent muss in einem eigenen Prozess ausgeführt werden um proaktives Verhalten zu ermöglichen, bei klassischen objektorientierten Systemen ist dies i.a. nicht der Fall, hier existiert ein Thread für das ganze System (für alle Objekte zusammen). Durch die Einführung und Unterstützung so genannter „aktiver Objekte“ in modernen objektorientierten Programmiersprachen wie z.B. JAVA ist diese Unterscheidung nur mehr beschränkt möglich. [Jennings et. al 1998a] Nach Ansicht des Autors dieser Arbeit bringt folgendes Zitat die Unterschiede zwischen Objekten und Agenten voll zum Ausdruck: „Objekte arbeiten freiwillig, Agenten für Geld.“21 [Jennings et. al 1998a] Bezüglich der Frage inwieweit das Konzept eines Agenten als Erweiterung eines Objekts im objektorientierten Paradigma betrachtet werden kann sind sich die Forscher nicht einig. Ein Ansatz für die Modellierung von Agenten beruht jedoch auf der Annahme, dass Agenten die konsequente Fortentwicklung von Objekten sind. Die Untersuchung von Methoden, die eine angemessene Entwicklung von Agenten unterstützen, und möglicherweise in Analogie zum objektorientierten Paradigma zu einem agentenorientierten Paradigma führen, ist derzeit noch nicht abgeschlossen. [Jennings et. al 1998a] In der Literatur wird häufig von intelligenten Agenten gesprochen, wobei man bei der Definition von Intelligenz wiederum auf Schwierigkeiten stößt. Dieser Problematik wird folgender Abschnitt gewidmet. 2.6 Agenten und Intelligenz Agentenbasierte Systeme werden gern als intelligent bezeichnet. Im Bereich der Künstlichen Intelligenz existiert jedoch derzeit keine allgemein akzeptierte Definition für 21 „Objects do it for free; agents do it for money.“ [Jennings et. al 1998a] Seite 20 Intelligenz, daher verbergen sich hinter dieser Eigenschaft verschiedene Sichtweisen. Häufig werden Agenten, die der Definition aus Abschnitt 2.4 genügen bereits als intelligente Agenten bezeichnet. Andere Forscher bezeichnen die Fähigkeit eines Agenten aus den Ergebnissen vorangegangener Problemlösungsprozesse zu lernen und, darauf aufbauend, selbstständig seine Lösungsstrategie zu verbessern als Intelligenz, wiederum andere vertreten die Ansicht, dass einzig der Einsatz von Techniken der Künstlichen Intelligenz bei der Implementation von Agenten dieses Attribut rechtfertigt. Die Österreichische Gesellschaft für Artificial Intelligence (OeGAI) 22 definiert diesen Sachverhalt folgendermaßen: Unter Intelligenz „[…] versteht man die Fähigkeit der Bewältigung einer neuartigen Situation in Bezug auf deren Erfassung, Bewertung, Anwendung und Zusammenhängen. Für Software kann nur bedingt von Intelligenz gesprochen werden, da Software keine Schlussfolgerungen erarbeiten kann, wohl aber Befehle des Benutzers entgegennehmen und in seinem Sinne ausführen kann, wobei Ziele und Regeln definiert sein müssen. Je besser die Vorgaben erfüllt werden, desto „intelligenter“ ist eine Software.“ Nach Meinung von M. Minsky [Minsky 1985] entsteht intelligentes Verhalten von Computerprogrammen erst aus der Zusammenarbeit vieler, eher „dummer“ Programme. Bezogen auf agentenbasierte Systeme bedeutet dies, dass ,,Intelligenz“ in einem Agentensystem durch die Interaktion und die Kommunikation zwischen einfachen Agenten entstehen kann. Die einzelnen Agenten müssen dabei kein Neuronales Netz oder ein Expertensystem enthalten. Intelligenz ist also eine Eigenschaft eines Systems von interagierenden Agenten. In der Literatur wird in diesem Zusammenhang auch von „emergenter Intelligenz“ gesprochen. [Bradshaw 1997] Diese Meinung schließt sich der Autor dieser Arbeit an. Die „Entstehung von Intelligenz“ kann in diesem Sinne anhand des folgenden einfachen Beispiels veranschaulicht werden: Ein Anwender plant sich ein Buch zu kaufen. Aus diesem Grund beauftragt er einen Softwareagenten Preis und Produktinformationen im Internet einzuholen. Als Ergebnis erwartet der Anwender eine übersichtliche Auflistung der Angebote, unter Berücksichtigung des Zolls, der Versankosten und der Lieferdauer. In einem ersten Schritt wird der Agent einen Suchagenten kontaktieren, um Adressen von Online-Bücher-Shops zu erfragen. Im nächsten Schritt wird der Agent Kontakt mit den Agenten der Online-Shops aufnehmen und ihnen in einer Anfrage die Daten des gewünschten Buchs mitteilen. Als Antwort erhält der Agent Produktinformationen, den Preis und zusätzliche Lieferinformationen, wie Versankosten, Zahlungsmöglichkeiten, Lieferzeit und Auslieferungsland. Das Auslieferungsland ist wichtig, da der Agent auch einen eventuellen Einfuhrzoll mitberücksichtigen soll. In einem weiteren Schritt wird der Agent den Agenten des Finanzministeriums kontaktieren um die nötigen Zollinformationen einzuholen. Weiters kontaktiert der Agent den Agenten einer OnlineBank, um den aktuell gültigen Wechselkurs zu ermitteln. Die Adresse der Online-Bank hat der Agent zuvor von einem Suchagenten erhalten. Im letzten Schritt erfolgt die Preisberechnung und die übersichtliche Aufstellung der gesammelten Daten. Zusammengefasst sehen die Schritte, die der Agent ausführt, folgendermaßen aus: 22 http://www.oegai.at Seite 21 Kapitel 2 Einführung in den Themenbereich 1. Kontaktiere Suchagenten und hole Adressen von Online-Shops ein. 2. Kontaktiere Agenten der Online-Shops, sende die Produktanfrage und hole Preis, Produkt und Lieferinformationen ein. 3. Kontaktiere Agenten des Finanzministeriums und hole Zollinformationen ein. 4. Kontaktiere Suchagenten und hole Adressen von Online-Banken ein. 5. Kontaktiere Agenten der Online-Banken und hole den aktuellen Wechselkurs ein. 6. Führe die Preisberechnung durch. 7. Stelle die gesammelten Informationen übersichtlich zusammen. Keiner dieser Einzelschritte benötigt ein Verfahren der künstlichen Intelligenz. Die erbrachte Leistung des Agenten kann man jedoch durchaus als intelligent bezeichnen. Die „Intelligenz“ entsteht aus der Interaktion mit den Service-Agenten im Netz. Dieses Beispiel zeigt die Stärken des Agenten Paradigmas auf. Durch die Zusammenarbeit vieler einfacher Einzelsysteme entstand ein Gesamtsystem, welches in der Lage ist, auch komplexe Probleme zu lösen [Reiff 2000]. Mit den bisherigen Erkenntnissen können nun einige wichtige Begriffe, die in dieser Arbeit Verwendung finden definiert werden. Der Begriff Agent oder Software Agent bezeichnet ein Programm, das zumindest die folgenden vier Eigenschaften - Autonomie, Proaktivität, Reaktivität und Kommunikationsfähigkeit - besitzt. Als agentenbasiertes System wird im folgenden Software, die auf Basis von Agenten entworfen und implementiert wurde, bezeichnet. Ein solches System besteht im Regelfall aus mindestens einem Agenten. Die Bezeichnung Agentensystem oder auch Multiagentensystem wird im weiteren Verlauf dieser Arbeit für ein agentenbasiertes System, das aus mehreren interagierenden Agenten besteht, verwendet. Im folgenden Abschnitt wird nun eine Klassifikation von Agenten vorgestellt. Diese soll zum einen als Orientierungshilfe dienen und zum anderen die Überleitung in das nächste Kapitel 3 (Informationsagenten) erleichtern. 2.7 Klassifikation von Agenten Eine einheitliche Typologie von Softwareagenten gibt es leider noch nicht, ähnlich wie es auch noch keine einheitliche Definition von Agenten gibt. So können Agenten nach verschieden Kriterien klassifiziert werden. Denkbar wäre zum Beispiel eine Klassifikation nach den bereits in Abschnitt 2.4 beschriebenen Eigenschaften. Man kann aber auch die Aufgabe die Agenten erfüllen (z.B. Filteragent, Suchagent, etc.), oder die Umgebung, in der Agenten wirken (z.B. Datenbank, Filesystem, Netzwerk, Internet, etc.), aber auch die zur Programmierung der Agenten verwendete Programmiersprache und viele andere Kriterien dazu heranziehen eine Klassifikation zu treffen. Die Folgenden Betrachtungen beziehen sich im Wesentlichen auf [Nwana 1996]. Alternative, oder ähnliche Klassifikationen sind z.B. in [Jennings et al. 1998b] [Gilbert 1997], oder [Caglayan 1998] zu finden. Bei Nwana finden folgende Dimensionen Verwendung: Seite 22 Mobilität: Agenten können anhand der Fähigkeit eingestuft werden, ob sie sich in Netzwerken bewegen können. Daraus lassen sich statische und mobile Agenten ableiten. Reaktivität / Deliberativität: Erfolgt das Handeln basierend auf eine interne symbolische Darstellung der Welt, so wird von einem deliberativen Agenten gesprochen. Werden Aktionen direkt durch aktuelle Informationen der Sensordaten ausgelöst, so verhält sich der Agent reaktiv. Primäre Attribute: Klassifizierung anhand primärer Eigenschaften. Diese sind zumindest Kooperation, Lernfähigkeit und Autonomie. Diese Eigenschaften können durchaus unterschiedlich ausgeprägt sein, je nach Aufgabe des Agenten. Kooperative, lernfähige Agenten brauchen natürlich die ersten beiden Eigenschaften. InterfaceAgenten sollten vor allem lernfähig (adaptiv) und autonom sein. Damit ein Agent wirklich smart ist, sollte er alle drei Eigenschaften kombinieren. Abbildung 2.2 veranschaulicht diesen Sachverhalt. Rollen: Agenten werden nach ihrer Rolle klassifiziert. Zum Beispiel Informationsoder Internetagenten, die das Internet nach Informationen durchsuchen. Hybride Agenten: Diese Agenten kombinieren verschiedene Ansätze. Abbildung 2.2: Typologie nach Nwana [Nwana 1996] Die Kombinationen oben genannter Dimensionen lässt eine riesige Anzahl von Agententypen zu. So kann es zum Beispiel stationäre deliberative Interfaceagenten geben, aber auch mobile deliberative Informationsagenten. Um die Übersicht zu behalten, reduziert Nwana all diese möglichen Typen zu einer Liste aus folgenden Typen, die die meisten gängigen existierenden Agententypen abdecken. Die folgenden Betrachtungen beziehen sich im Wesentlichen auf [Nwana 1996]. Kollaborative Agenten Wie aus Abbildung 2.2 ersichtlich ist, sind die zentralen Eigenschaften dieser Agenten Autonomie und Kooperation. Zum Erreichen ihrer Ziele kooperieren Kollaborative Agenten typischerweise mit anderen Agenten, dazu müssen sie unter Umständen auch in der Lage sein zu verhandeln. Kooperatives Verhalten kann nur erreicht werden, wenn ein Agent auch proaktiv handelt. Die Fähigkeit zu lernen, ist keine notwendige Eigenschaft Seite 23 Kapitel 2 Einführung in den Themenbereich dieser Agenten und zumeist sind diese Agenten statisch. Der Einsatz von kollaborativen Agenten ist für folgende Probleme und Aufgabenstellungen sinnvoll: Bei Problemen die für einen einzelnen zentralen Agenten zu umfangreich in Bezug auf die benötigten Ressourcen sind, oder bei sensiblen Problemen für die die ein zentralistischer Ansatz zu riskant ist. Für Problemstellungen die eine Zusammenführung von mehreren bereits bestehenden Programmen (z.B. Expertensysteme) fordern. Wenn eine Lösung für ein von Natur aus verteiltes Problem gesucht wird (z.B. Flugüberwachung). Für Aufgaben die im Bereich verteilter Information (z.B. verteilte Online-Quellen), oder verteilter Kompetenz (z.B. Gesundheitsversorgung) entstehen. Für Problemstellungen bei denen ein hohes Maß an Modularität, Geschwindigkeit, Zuverlässigkeit, Flexibilität und Widerverwendbarkeit gefordert wird. Interfaceagenten Bei Interface Agenten stehen die Eigenschaften Autonomie und Lernfähigkeit (siehe Abbildung 2.2) im Vordergrund. Im Gegensatz zu den zuvor besprochenen Kollaborativen Agenten kooperieren Interface Agenten typischerweise nur mit dem Benutzer (über das Interface) und wirken auch in der gleichen Umgebung wie sein Benutzer. Die Kooperation mit anderen Agenten findet, wenn überhaupt, auf sehr einfache Weise statt. Sehr häufig wird im Zusammenhang mit Interface Agenten von „Persönlichen Assistenten“ gesprochen, die dem Benutzer beim Umgang mit komplexen Anwendungen, wie z.B. Betriebssystemen oder Textverarbeitungsprogrammen, behilflich sind. Die Funktionsweise eines Interface Agenten ist in Abbildung 2.3 schematisch dargestellt. Abbildung 2.3: Die Funktionsweise von Interfaceagenten aus [Maes 1994] Der Interfaceagent beobachtet und überwacht die Aktionen des Benutzers im Interface. Aus diesen Beobachtungen lernt der Agent Aktionsfolgen, die der Benutzer im Umgang mit der Applikation durchführt. Möglicherweise kann er daraus neue Aktionsfolgen ableiten die schneller zum gleichen Ergebnis führen. Erkennt der Agent die Absicht des Benutzers, so schlägt er diesem seine erlernte Lösungsvariante gegebenenfalls vor, und kann auf diese Weise hilfreich sein. Der Benutzer muss aber immer die die Möglichkeit haben, direkt mit der Applikation zu kommunizieren, d.h. der Agent befindet sich nicht zwischen Applikation und Benutzter, sondern arbeitet parallel Seite 24 zum Benutzer. Die verschiedenen Möglichkeiten des Interfaceagenten an lernrelevante Information zu gelangen werden in Abbildung 2.3 durch ausgegraute Pfeile symbolisiert und können wie folgt beschrieben werden: Der Interface Agent beobachtet und imitiert den Benutzer. Der Interface Agent erhält positives oder negatives Feedback vom Benutzer. Der Interface Agent erhält explizite Anweisungen vom Benutzer. Der Interface Agent bittet andere Agenten um Hilfestellung. Dabei umspannen die eingesetzten Lerntechniken einen großen Bereich des maschinellen Lernens, vom Speicherbasierten Lernen23 bis hin zu evolutionären Lernalgorithmen. Damit sich der Einsatz von Lernalgorithmen überhaupt lohnt, müssen aber bestimmte Vorraussetzungen beim Umgang des Benutzers mit der Applikation gegeben sein, wie bereits in Abschnitt 2.4 erwähnt wurde. Die Motivation die hinter dem Einsatz von Interfaceagenten steckt ist, den in Abschnitt 2.1 beschriebenen Wechsel vom Paradigma der „direkten Manipulation“ hin zum Paradigma der „indirekten Manipulation“ zu vollziehen. Mobile Agenten Diese bewegen sich selbstständig im Netzwerk und finden selbst Wege zum Ziel. So können solche Agenten z.B. Informationen nach den Vorgaben des Benutzers sammeln und nach definierter Zeit, oder Beendigung der Aufgabe zum Benutzer zurückkehren. Die Einsatzmöglichkeiten reichen von Flugreservierungen hin zu Netzwerkmanagement. Der Einsatz mobiler Agenten bietet bei bestimmten Anwendungsszenarien erhebliche Vorteile gegenüber statischen Agenten. Diese Vorteile sind aber meist nicht Funktionaler Natur, d.h. man kann diese Funktionalität auch ohne Mobilität erreichen. Informationsagenten Informationsagenten existieren wegen der Notwendigkeit nach Werkzeugen, die uns Helfen die rasant wachsende Informationsflut im Internet zu verwalten. Sie verwalten, sammeln und passen Informationen nach den Bedürfnissen des Benutzers an. Man kann argumentieren, dass auch andere Agententypen Informationsagenten sind. Diese Überschneidungen sind unvermeidbar, da Informationsagenten danach definiert sind was sie tun, Interface- oder kooperierende Agenten danach eingeordnet sind was sie sind. Speziell mit diesen Agenten befasst sich das folgende Kapitel 3. Reaktive Agenten Eine weitere Klasse von Agenten sind reaktive Agenten. Solche Agenten verfügen nicht über eine interne, symbolische Beschreibung ihrer Umgebung, stattdessen reagieren sie nach stimulus-respone Manier direkt auf dem Zustand der Umgebung, in der sie sich befinden. Sie sind relativ einfach und interagieren mit anderen Agenten auf primitive Weise. Dennoch ermöglichen sie recht komplexe Verhaltenstrukturen, wenn das Verhalten aller Agenten global betrachtet wird. Ein Einsatzgebiet ist bei Simulationsprogrammen mit Echtzeit-Abläufen zu sehen. 23 memory-based learning Seite 25 Kapitel 2 Einführung in den Themenbereich Hybride Agenten Von einem hybriden Agenten wird gesprochen, wenn ein Agent in mindestens zwei der obigen fünf Klassen entspricht. Heterogene Agenten Die Klasse der heterogenen Agenten ist eine Erweiterung der kooperierenden Agenten. Heterogene Agenten können mit verschiedenartigen Agenten zusammenarbeiten und ermöglichen Wiederverwendung und Einbindung existierender Agenten. Smarte Agenten Aus Abbildung 2.2 wird deutlich, dass ein Smart Agent in Vereinigung aller primären Attribute autonom, kooperativ und lernfähig ist. 2.8 Zusammenfassung Der Begriff des Agenten im Bereich der Softwareentwicklung ist nun schon seit geraumer Zeit sehr populär. Es gibt jedoch bis heute kein allgemein einheitliches Verständnis dieses Begriffs. In unterschiedlichen Fachgebieten werden zum Teil stark abweichende Definitionen verwendet. Beispielsweise wird in [Dragon 1997] der Begriff Agent folgendermaßen definiert: „Ein Agent ist ein Stück Software, dass etwas für dich erledigt.“, in einer Auslegung von Wooldrige und Jennings [Wooldridge et al. 1995] spielen menschenähnliche Merkmale wie Wissen, Glauben, Intention oder Verpflichtung eine große Rolle. Die Ursache dafür ist einerseits der stark interdisziplinäre Charakter der Agententechnologie, der sich über die Forschungsgebiete Künstliche Intelligenz, Verteilte Künstliche Intelligenz, Entscheidungstheorie, Netzwerk- und Kommunikationssysteme, Psychologie und viele andere erstreckt, andererseits wird auch durch die weitreichenden Einsatzgebiete von Agenten, eine einheitliche Sichtweise erschwert. Die Anwendungsbereiche reichen dabei von einfachen personalisierten Emailfiltern, Informationsmanagement, Workflowmanagement oder Netzwerkmanagement bis hin zu großen, komplexen aber auch ein hohes Maß an Verantwortung tragenden Systemen, wie zum Beispiel im Bereich der Flugverkehrskontrolle und Patientenüberwachung. Nach Ansicht des Autors der vorliegenden Arbeit besteht eine alternative Möglichkeit sich dem Begriff des Agenten zu nähern durch die Betrachtung von Eigenschaften. In Abschnitt 2.4 wurden vielschichtige Eigenschaften behandelt, die man sich von einem Agenten erwarten könnte. Dazu gehören Beispielsweise die Autonomie, welche vom Agenten selbstständiges Handeln abverlangt oder die Mobilität, die den Agenten in die Lage versetzt über das Netzwerk seinen Ausführungsort zu wechseln. Diese Betrachtungen führten schließlich zum Ergebnis, dass ein Agent zumindest über folgende vier Eigenschaften verfügen muss- Autonomie, Proaktivität, Reaktivität und Kommunikationsfähigkeit. Damit kann Agentensoftware von herkömmlicher Software wie z.B. Expertensystemen, Verteilten Systemen oder klassischen Objektorientierten Systemen unterschieden werden. Als Beispiel wurden in Abschnitt 2.5 die Unterschiede zwischen Agenten und klassischen Objekten ausführlich dargestellt. In der Literatur werden Agentenbasierte Systeme gern mit dem Attribut Intelligenz versehen. Mangels einer allgemeingültigen Definition für den Begriff Intelligenz Seite 26 verstecken sich verschiedene Sichtweisen hinter dieser Eigenschaft. Der Autor dieser Arbeit vertritt die Meinung, dass intelligentes Verhalten von Agenten erst aus der Zusammenarbeit vieler, jeder für sich, eher „dummer“ Agenten entsteht. Diese Meinung wurde in Abschnitt 2.6 durch ein einfaches Beispiel belegt. Eine gibt viele Möglichkeiten eine Klassifikation von Agenten zu treffen. In dieser Arbeit wurde die Typologie nach [Nwana 1996] verwendet, die Agenten in 8 verschieden Typen unterteilt, Kollaborative Agenten, Interfaceagenten, Mobile Agenten, Informationsagenten, Reaktive Agenten, Hybride Agenten, Heterogene Agenten und Smarte Agenten. In der vorliegenden Arbeit sind Informationsagenten von besonderem Interesse, auf die nun im Folgenden Kapitel 3 näher eingegangen wird. Seite 27 Kapitel 3 Informationsagenten im Web Kapitel 3 3 Informationsagenten im Web „We are drowning in information but starved of knowledge” (John Naisbitt, Megatrends). Nach der allgemeinen Behandlung der Agententechnologie in Kapitel 2 wird in diesem Kapitel zunächst die Problematik des Suchens nach Information im Web behandelt. Im Anschluss daran wird in diesem Zusammenhang der Einsatz von so genannten Informationsagenten näher Betrachtet. 3.1 Allgemeines Mit dem World-Wide-Web (WWW oder Web) als Vereinigung vieler Dienste innerhalb des Internet hat sich ein völlig neuer Informationsraum gigantischen Ausmaßes ergeben. Das Fehlen zentraler Kontrollmechanismen hat zu vielen interessanten neuen Möglichkeiten aber gleichzeitig auch zu ebenso vielen Problemen geführt. Denn durch das rapide Wachstum des WWW und der damit zunehmenden Informationsfülle ist es für den Benutzer nicht nur unmöglich geworden, für ihn relevante Information zu sichten, sondern es besteht auch die Gefahr, in einer Unmenge irrelevanter Information zu versinken und das eigentliche Ziel der Informationssuche aus den Augen zu verlieren. Dies geht einher mit einem massiven Zeitverlust für das Auswerten letztlich wertlosen Materials, wodurch die Nützlichkeit des WWW für den Anwender und damit auch dessen Produktivität gesenkt wird. Die Unterstützung der Nutzer bei der gezielten Suche, Filterung und Klassifikation der Informationsangebote in dem weitgehend unstrukturierten und dynamischen Informationsmarkt des WWW wird zunehmend ein Schlüsselfaktor für ein erfolgreiches und effizientes Informationsmanagement. Klassische „keyword search“ basierte Suchdienste wie zum Beispiel Webverzeichnisse, Spiderbasierte Suchdienste und Metasuchmaschinen, können eine wichtige Hilfestellung für die Informationserschließung im WWW leisten [Teuteberg 1999]. Doch selbst mit Hilfe dieser Dienste, die Informationen nach Themenbereichen und Schlüsselwörtern gruppieren, ist die Informationsfindung immer noch eine Suche „auf gut Glück“24 Aufgrund der exponentiell anwachsenden Informationsmenge ist abzusehen, dass diese Problematik des „Information Overload“ in Zukunft noch stärker in Erscheinung treten wird. Um dieser Entwicklung entgegenzuwirken wird seit geraumer Zeit der Einsatz von so genannten Informationsagenten, die Informationen aus dem Internet nach den 24 Bezeichnend dafür ist der Suchbutton „Auf gut Glück“ im GOOGLE-Interface (http://www.google.at) Seite 28 Bedürfnissen des Benutzers suchen, finden und filtern, und dann in gewünschter Weise präsentieren, propagiert. [Teuteberg 1999]. 3.2 Grundlegende Struktur des Web Das Web besteht aus zahllosen, auf Rechnern der ganzen Welt gespeicherten multimedialen Dateien. Diese kombinieren Text mit Ton, Bild und Videosequenzen. Als Beschreibungssprache der Web-Seiten wurde ursprünglich HTML (HyperText Markup Language) definiert, welche nun aber allmählich von XML (Extended Meta Languge) abgelöst wird. Diese erlauben es Dokumente und multimediale Dateien mittels Hyperlinks beliebig zu verlinken, es ist dabei unerheblich, ob diese auf dem gleichen Server zur Verfügung stehen, oder sich auf einem entfernten Server befinden. Der Betrachter eines derartig verlinkten Dokuments hat die Möglichkeit, meist per Mausklick, diese Links zu verfolgen. Nichtlinearität und netzartige Strukturen sind die zentralen Eigenschaften solcher Hypertextsysteme. [Schneppe 2000] Bei der Verwendung von Hypertext können zwei grundsätzliche Probleme auftreten, die miteinander in Beziehung stehen. Zum einen die Orientierungsproblematik des Benutzers als Folge der nicht-linearen Darstellungsweise der Information („lost in Hyperspace“), zum anderen die Anforderung an den Benutzer, neben der Informationsaufnahme jeweils auch Navigationsentscheide für das weitere Vorgehen zu treffen. Um dem Benutzer die Navigation zu erleichtern können unterschiedliche Navigationshilfen eingesetzt werden, wie zum Beispiel Inhaltsverzeichnisse, Glossare, graphische Übersichten, autorendefinierte Wegweiser (der Autor stellt dem Benutzer einen Weg durch den Hypertext bereit), rückwärtsgerichtete Navigationshilfen (HistoryFunktion), Markierung gelesener Bereiche und selbstdefinierte Fixpunkte des Lesers in Form von Bookmarklisten. [Schneppe 2000] Im Internet ist dieses Hypertextprinzip im Web wieder zu finden, so dass oben genannte Probleme in vollem Umfang auch dort anwendbar sind [Schneppe 2000]. Aufgrund der gigantischen Ausmaße des Web sind diese Probleme jedoch mit den oben beschriebenen Navigationshilfen allein nicht mehr zu Lösen. Um im Web relevante Information zu finden ist die Verwendung von so genannten Suchdiensten derzeit unumgänglich. In folgendem Unterkapitel werden diese kurz behandelt. 3.3 Suchdienste Mittlerweile existiert eine unüberschaubare Menge an verschiedenen Suchdiensten im Web. Dies geht bereits soweit, dass eigene Suchdienste zum Auffinden von Suchdiensten existieren. Zum Zeitpunkt dieser Recherche (25.11.2004) etwa sind allein im Suchlexikon25 2559 spezielle deutschsprachige und länderspezifische Suchdienste verzeichnet. In diesem Abschnitt werden die drei klassischen Kategorien von 25 http://www.suchlexikon.de Seite 29 Kapitel 3 Informationsagenten im Web Suchdiensten , Webkataloge26, Spider-basierte Suchdienste (Suchmaschinen) und Metasuchmaschinen, allgemein beschrieben und deren Vorteile einander gegenübergestellt. Anschließend werden die Problembereiche dieser Dienste und Schwierigkeiten der Benutzer bei der Verwendung solcher Suchdienste identifiziert. 3.3.1 Webkataloge Hauptmerkmal von Webkatalogen ist die Organisation der Dokumente in hierarchischen Strukturen. Meist sind diese nach Inhalten sortiert, es gibt aber auch geographische, chronologische („What’s new“) oder nach Dokumenttypen geordnete Aufteilungen. Die Hierarchie wird nicht automatisch, sondern von Redakteuren erzeugt. Die Dienstanbieter bieten Verfassern die Möglichkeit ihre Seite zur Durchsicht anzumelden. Redakteure führen dann eine Bewertung durch (arbeitsaufwendig und zeitintensiv) und entscheiden ob eine Aufnahme in den Katalog erfolgt. Wenn ja, werden die Dokumente um Schlagworte und Zusammenfassungen ergänzt und in die vorhandene Hierarchie eingeordnet. Es gibt Webkataloge, die die Einordnung der Dokumente in die vorhandenen Verzeichnisstrukturen den Autoren selbst ermöglichen, verbunden mit dem Problem der einheitlichen Anwendung der Katalogisierung. [Schneppe 2000] Für den thematischen Überblick und Einstieg ist ein Webkatalog (gegenüber der Spider-basierten Suchdiensten) zu bevorzugen. Ausgangspunkt für den suchenden Anwender ist das interessierende Themengebiet. Nach Auswahl einer passenden und meist grob umfassenden Kategorie wird der Zielbereich anhand von Subkategorien schrittweise ausgewählt, d.h. in die Hierarchie wird schrittweise bis zur Dokumentenebene hineinnavigiert. Ergänzend bieten die Webkataloge häufig eine Schlagwortsuche in den redaktionell erstellten Dokumentbeschreibungen an. [Schneppe 2000] Vorteile von Webkatalogen Webkataloge bieten qualitativ hochwertige Dokumente an, die durch Stichwörter und eine kurze Zusammenfassung ergänzt werden 3.3.2 Spider-basiert Suchdienste Bei Spider-basierten Suchdiensten handelt es sich um umfangreiche, automatisiert erstellte invertierte Datenbanken mit Referenzen zu Millionen von Web-Seiten. Im Gegensatz zu Webkatalogen wird auf den Einsatz von Redakteuren zur qualitativen Einschätzung der Dokumente verzichtet, diese Aufgabe wird von Informationssammlern (oft Robot, Spider, Crawler genannt) und dem Indexer erledigt. Bei der Suche nach einzelnen oder mit logischen Operatoren verknüpften Suchwörtern (Stichworte, Schlagworte) wird der Index durchsucht und als Ergebnis eine Menge von, mittels eines Rankingalgorithmus bewerteten, Referenzen zurückgeliefert. Für die Relevanzbeurteilung und die damit verbundene Sortierung der Treffermenge werden fast nur statistische Methoden verwendet: [Schneppe 2000] 26 In der Literatur werden dafür auch die Bezeichnungen Webverzeichnis, Verzeichnisdienst, Internetkatalog oder Browsingdienst bzw. englisch „Web Directory“ verwendet. Seite 30 Die Anzahl gefundener Suchbegriffe in einem Dokument. Dabei wird die Gesamtanzahl aller Suchbegriffe gemessen. Dokumente, die alle Suchbegriffe beinhalten, werden als „besser“ bewertet. Die Gesamthäufigkeit eines Suchwortes bzw. Gesamtanzahl eines Suchbegriffs in allen Dokumenten. Die Funktion (Position) der gefundenen Begriffe. Zum Beispiel werden Begriffe aus der URL und dem Titel stärker gewichtet. Die Häufigkeit eines Suchwortes innerhalb eines Dokuments Die Nähe von Suchbegriffen innerhalb des Textes Eine weitere Möglichkeit der Relevanzbeurteilung ist die Bestimmung der Popularität eines Dokuments. Dabei wird die Popularität entweder aufgrund der Trefferhäufigkeit in vorangegangenen Suchergebnissen ermittelt, oder anhand einer Linkanalyse, d.h. der Anzahl an Verweisen von anderen Dokumenten auf dieses Dokument. [Schneppe 2000] Die meisten Spider-basierten Suchdienste bieten eine einfache und eine erweiterte Suchschnittstelle an. Neben der Eingabe von Suchbegriffen bietet die einfache Suche eine begrenzte Anzahl von Standardoperationen wie +String (Suchbegriff muss im Dokument enthalten sein), -String (Suchstring darf nicht enthalten sein), und „…“ (Phrasensuche). Bei der erweiterten Suche können boolesche Operatoren (AND, OR, NOT) zur Definition komplexerer Suchanfragen verwendet werden. Häufig wird auch die Verwendung von Wildcards innerhalb der Suchbegriffe unterstützt. [Schneppe 2000]. Eine Suchraumeingrenzung auf bestimmte Strukturelemente (z.B. Title, Author, Links), geographische Regionen, Sprachen oder Domänen wird ebenfalls häufig angeboten. [Schneppe 2000] Vorteile von Spider-basierten Suchdiensten Spider-basierte Suchdienste bieten einen höheren Abdeckungsgrad als Webkataloge aufgrund der großen Anzahl erfasster Dokumente Spider-basierte Suchdienste weisen eine relativ hohe Aktualität der erfassten Ressourcen auf, weil in periodischen Abständen der Index automatisch erneuert (reindexiert) wird. Spider-basierte Suchdienste stellen dem Benutzer umfangreiche Suchoptionen zur Verfügung 3.3.3 Metasuchmaschinen Metasuchmaschinen besitzen keine eigene Indexdatenbank, sondern greifen bei einer Anfrage auf mehrere Suchmaschinen zurück (zum Teil auch auf Webkataloge). Damit bieten sie ihren Nutzern eine Erweiterung des Suchraums (höhere Abdeckung) und damit auch eine eventuelle, nicht nur quantitative, Verbesserung der Ergebnisse (hit rate). Der Zugriff auf die Spider-basierten Suchdienste erfolgt dabei meist parallel. Die Zusammenführung der einzelnen Suchergebnismengen erfordert die Entfernung von Dubletten und erfolgt mitunter mit einem gemeinsamen Ranking. [Schneppe 2000] Metasuchmaschinen eignen sich besonders für eine Suche nach seltenen und Seite 31 Kapitel 3 Informationsagenten im Web speziellen Begriffen. [Schneppe 2000] Vorteile von Metasuchmaschinen Metasuchmaschinen bieten eine theoretisch hohe Abdeckung im Vergleich zu den größten Suchmaschinen Metasuchmaschinen ermöglichen eine gleichzeitige Befragung diverser verschiedenartiger Suchdienste Metasuchmaschinen bieten einen aktuellen Zugriff auf neue oder unbekannte Suchdienste Metasuchmaschinen stellen dem Benutzer ein einheitliches Suchformular für verschiedene Suchdienste zur Verfügung 3.4 Problembereiche der Suchdienste Den oben erwähnten Vorteilen der einzelnen Suchdienste steht eine Reihe von Nachteilen gegenüber, die oftmals gerade aus den vermeintlichen Vorteilen resultieren. In diesem Unterkapitel werden die Probleme von Suchdiensten kurz behandelt, wobei die Betrachtungen vorwiegend aus [Schneppe 2000] entnommen sind. Probleme von Webkatalogen Webkataloge verfügen über eine geringe Aktualität und Abdeckung der Dokumente. Angesichts des exponentiellen Wachstums des Informationsraumes Web kann eine manuelle Bewertung unmöglich schritt halten, daher bieten Webkataloge zwar hochwertige Inhalte, doch geht dies auf Kosten der Aktualität und Abdeckung. Bei Webkatalogen tritt das Problem der unterschiedlichen Organisation nach Themenbereichen auf. Für die Organisation nach Themenbereichen bieten sich unterschiedliche fachbezogene hierarchische Klassifikationssysteme an. Zum Beispiel gibt es für die Einteilung nach Branchen das North American Industry Classification System (NAICS) oder im Fachbereich Informatik das ACM Computing Classification System, eine weitere sehr bewährte Klassifikationsmöglichkeit ist die Dewey Decimal Classification (DDC) [Jenkins et. al. 2000] oder Dublin Core (DC) [DC 1998]. Viele Webkataloge verwenden jedoch eigens entwickelte Themenhierarchien. Bei Webkatalogen fehlen ausgeprägte, erweiterte Suchmöglichkeiten Probleme von Spider-basierten Suchdiensten Bei Spider-basierten Suchdiensten stellt sich das Problem der Stichwortsuche. Bei der automatischen Indexierung können semantische Informationen verloren gehen, da ein Dokument auf eine Menge von „unabhängigen“ Wörtern reduziert wird. Spider-basierte Suchdienste verwenden eine sehr unterschiedliche Suchsyntax Der Umfang der Suchergebnismenge ist bei allgemeinen Suchanfragen nicht mehr „handhabbar“ Seite 32 Große Bereiche des Webs können von Spider-basierten Suchdiensten nicht erreicht werden. Dazu zählen unter Anderem: Nicht-verlinkte Dokumente: Dokumente, auf die kein Link verweist und die auch nicht bei den Spider-basierten Suchdiensten eingetragen werden. Geschützte Dokumente: Dokumente, die durch Passwort, Registrierung oder Firewall geschützt sind. Dynamische Dokumente: Dokumente, die über Formulare usw. dynamisch generiert werden (CGI / Datenbanken). »robots.txt« Die meisten Spider-basierten Suchdienste halten sich an den RoboterExclusion-Standard E-Mail: E-Mail-Adressen können nicht automatisch akquiriert werden Dateien (Außerhalb des WWW-Server-Bereiches): Dateien, die über WWW-Browser mit »file:« erreichbar sind, können von den Spider-basierten Suchdiensten nicht erreicht werden. Probleme von Metasuchmaschinen Bei Metasuchmaschinen sind keine ausgeprägten, erweiterten Suchmöglichkeiten der beteiligten Spider-basierten Suchdienste einsetzbar, da diese sich in der Syntax oft sehr unterscheiden (komplexe Anfragen mit booleschen Operatoren oder einer Feldsuche sind meist nur direkt bei den Spider-basierten Suchdiensten möglich) Die unterschiedlichen Rankingkriterien der verwendeten Spider-basierten Suchdienste erlauben kein „korrektes“ Sortieren der Gesamttreffermenge. Meist erfolgt eine Begrenzung der Suchergebnismenge (es werden oft nur die ersten 10, 20 oder 30 Treffer je Spider-basierten Suchdienst angezeigt) Metasuchmaschinen weisen meist Performanceprobleme auf, da das vollständige Suchergebnis erst vorliegt, wenn auch die langsamste der befragten Spider-basierten Suchdienste ein Suchergebnis liefert 3.5 Problembereiche bei der Wissensauffindung im Web Die Suche nach Information stellt an den Benutzer besondere Anforderungen. Durch mehrere Untersuchungen ist belegt, dass die Suche ein hochkomplexer Prozess ist, bei dem sich der Benutzer einer Vielzahl von Problemen stellen muss. Die Komplexität einer Suche wird z.B. stark durch das unterschiedlich ausgeprägte Domain Wissen bzw. der unterschiedlichen Erfahrung der Benutzer beeinflusst. [Guetl 2004] Abhängig von diesem Wissen fällt es einem Benutzer mehr oder weniger schwer folgende Anforderungen, die sich innerhalb des Suchprozesses (siehe Abbildung 3.1) ergeben, zu erfüllen: [Branjik 1999] Seite 33 Kapitel 3 Informationsagenten im Web Der Benutzer muss geeignete Informationsquellen identifizieren, die den Informationsbedarf abdecken können Der Benutzer muss geeignete Suchanfragen Formulieren, die den Informationsbedarf beschreiben Der Benutzer muss brauchbare Dokumente aus einer Resultatliste von unbrauchbaren unterscheiden Der Benutzer muss Information aus gefundenen Dokumenten extrahieren, um zum Beispiel weitere Verbesserungen an seiner Suche vorzunehmen Der Benutzer muss gegebenenfalls Suchanfragen verändern und verbessern, wenn die vorangegangene Anfrage nicht zum Gewünschten Erfolg führte Wenn es die Informationsquelle unterstützt sollte der Benutzer in der Lage sein, gutes Relevance-Feedback zu geben und das von anderen für sich selbst zu nutzen Abbildung 3.1: Einfaches Information Access Modell; aus [Guetl 2004] nach [Baeza et al. 1999] Zudem treten drei weitere fundamentale Probleme bei der Informationssuche auf: [Branjik 1999] Das Problem des „Anomalous State of Knowledge“ d.h. ein Benutzer kann sein Informationsproblem nicht genau artikulieren, da ihm die genauen Kenntnisse zum Problem fehlen. Die fehlende Terminologie verursacht dann auch das Unvermögen, sein Bedürfnis einem Informationsvermittlungssystem mitteilen zu können. Das Vocabulary Problem besagt, dass eine Divergenz zwischen dem verwendeten Vokabular des Benutzers und dem derer Personen existiert, welche die gesuchten Dokumente katalogisiert haben. Letztgenannte Personen können dabei zum Beispiel die Autoren selbst sein oder Bibliothekare, die die Dokumente klassifizieren und Schlagworte auswählen. Die Bestimmung der Relevanz von gefundenen Dokumenten zum jeweiligen Zeitpunkt der Suche. Guetl weist in [Guetl 2004] darauf hin dass in der Praxis das Verhalten der Benutzer im Umgang mit Search-based Information Retrieval (IR) Systemen vom einfachen Seite 34 Modell nach Abbildung 3.1 in mehreren Punkten abweicht: Die Benutzer nehmen im Rahmen des Suchprozesses Domain Wissen auf Die Suchstrategien und das Informationsbedürfnis ändern sich im Suchprozess Vorübergehend werden andere Informationsbedürfnisse verfolgt Ein Informationsbedürfnis kann nicht durch einen einzigen Suchprozess befriedigt werden; erst die Kombination aus mehreren verschiedenen Suchprozessen liefert das gewünschte Ergebnis. Insbesondere bei fehlendem oder geringem Domainwissen ist eine (erste) Erschließung von Informationen und Inhalten durch Browsing-based IR Funktionskomponenten (z.B. Webkataloge) zielführender. [Guetl 2004] Bates hat 1990 eine Studie [Bates 1994] vorgelegt, in der Suchaktivitäten professioneller Rechercheure und Bibliothekare untersucht werden. Suchaktivitäten lassen sich danach in vier Abstraktionsebenen kategorisieren: [Bates 1994] Elementare Aktionen: Als Elementare Aktionen werden identifizierbare Gedanken oder Aktionen bezeichnet, die Teil einer Informationssuche sind. Sie entsprechen typischerweise den Kommandos, die von einem Retrieval-System zur Verfügung gestellt werden, also z. B. das Hinzufügen eines Terms oder einer Bedingung zu einer Anfrage oder das Verfolgen eines Verweises. Taktiken: Taktiken umfassen mehrere elementare Aktionen, die eine Suche beschleunigen und das Suchergebnis verbessern. Dazu gehört z. B. das Verfeinern von Anfragen wie die Generalisierung von Suchbegriffen, um den Recall zu erhöhen, oder etwa das Spezialisieren von Suchbegriffen, um die Precision zu erhöhen. Strategeme: Strategeme setzen sich meist aus mehreren Taktiken zusammen, um Informationsstrukturen in einer Suchdomäne auszunutzen. Dazu gehören z. B. der Journal-Run (Navigation in den Ausgaben einer Zeitschrift, die als zentral für ein gegebenes Informationsbedürfnis identifiziert wurde), die Footnote-Chase, bei der die Referenzen in einem relevanten Dokument verfolgt werden, oder die Autorensuche mit dem Ziel, weitere Dokumente eines Autors zu finden, der bereits in einem oder mehreren relevanten Dokumenten aufgetaucht ist. Strategien: Strategien sind Pläne, die Aktionen, Taktiken und Strategeme beinhalten, um eine Informationssuche vollständig durchzuführen und somit ein gegebenes Informationsbedürfnis komplett abzudecken. Eine einfache Strategie zur Literaturrecherche über ein neues Gebiet wäre etwa eine Themenorientierte Suche im ersten Schritt, wonach man mit den in den relevanten Dokumenten gefundenen Autorennamen eine Autorensuche anschließt. Bates stellte fest, dass sich Retrievalsysteme meist nur auf der Ebene der elementaren Aktionen bewegen. Zu einem Ähnlichen Ergebnis kommt eine Studie in [Choo et al. 2000], die das Verhaltensmuster bei der Informationssuche in Unternehmen untersucht. Nach [Guetl 2004] werden dort je nach Informationsbedürfnis und Problemstellung vier unterschiedliche Zielsetzungen bei der Informationssuche identifiziert: Seite 35 Kapitel 3 Informationsagenten im Web Undirected Viewing: Die Benutzer sind ohne bestimmtes Informationsbedürfnis Informationsreizen ausgesetzt. Das Ziel ist es, Informationen breit gefächert zu sichten, um möglichst früh Entwicklungen zu erkennen. Hierbei werden möglichst viele und unterschiedliche Quellen benutzt, die Granularität der Information ist dabei jedoch sehr grob. Conditioned Viewing: Hierbei ist das Interesse ganz gezielt auf Informationen zu ganz bestimmten Themen gerichtet. Die Benutzer können vorerst durch Undirected Viewing auf die Themen sensibilisiert worden sein. Ziel dieser Stufe ist es, Bedeutung und Auswirkungen auf das Unternehmen zu evaluieren und zu verfolgen. Informal Search: Bei diesem Suchprozess handelt es sich um eine thematisch begrenzte, jedoch unstrukturierte Aktivität, die die aktive Suche eines Benutzer, nach Informationen, beschreibt. Ziel ist es dabei, notwendigen Handlungsbedarf zu identifizieren. Formal Search: Dieser Prozess ist durch überlegte und geplante Aktivitäten gekennzeichnet und soll ganz spezifische Informationen zum Ergebnis haben. Dieser Suchprozess kann als formal bezeichnet werden, da hierbei voreingerichtete Prozeduren und bekannte Methoden verwendet werden. Die Granularität der Information ist sehr fein, die Suche ist stark auf Detailinformationen fokussiert. Das Ziel dieser Prozessstufe ist es, systematisch Informationen aufzufinden, die als Grundlage zur Entscheidungsfindung dienen oder Basis für Handlungen sind. Nach Guetl [Guetl 2004] lassen sich die Zielsetzungen durch Kombination von mehreren IR Tasks umsetzen:] Starting: Diese Kategorie umfasst alle Aktivitäten, die den Startpunkt der Suche nach Informationen darstellen. Startpunkte oder Initialquellen verweisen meist auf andere Quellen oder schlagen andere Referenzen vor. Chaining: Chaining beschreibt das Verfolgen von Hinweisen von Initialquellen (Startpunkte der Recherche), genauer wird dies als Backward Chaining bezeichnet. Umgekehrt führt Forward Chaining von anderen Quellen zu Initialquellen. Browsing: Sind Quellen bzw. Dokumente identifiziert, so werden diese durch eine semi-gerichtete Suche - dem Browsing - näher untersucht. In vielen Fällen bedeutet dies, dass Benutzer unter anderem die Inhaltsverzeichnisse, Autoren oder Institutionen aber auch Kurzfassungen prüfen. Differentiating: Diese Stufe beschreibt den Auswahlprozess der Quellen unter Berücksichtigung von Art und Qualität der Informationsquellen bzw. Informationen. Monitoring: Monitoring beschreibt jene Aktivitäten, mit denen man bei Entwicklungen auf einem bestimmten Gebiet auf dem Laufenden bleiben kann. Extracting: Extracting ist der systematische Prozess, mit welchem man gezielt Informationen von einer oder mehreren Quellen aufzufinden vermag. Die Zuordnung der hauptsächlich genutzten Tasks zu den verschiedenen Zielsetzungen zeigt Abbildung 3.2. Seite 36 Abbildung 3.2: Visualisierung der Verhaltensmuster bei der Informationssuche in Unternehmen nach [Choo et al. 2000], aus [Guetl 2004] Nach einer Studie der Bertelsmann Stiftung die in [Machill et al. 2004] veröffentlicht wurde setzen Benutzer im Umgang mit Search-based Information Retrieval (IR) Systemen. nur relativ wenige kognitive Ressourcen ein und probieren oft aus. Von den mächtigen Möglichkeiten der meisten Suchmaschinen verwenden sie nur einen Bruchteil; stattdessen beschränken sie sich auf einfache Suchanfragen in der Hoffnung, in der Trefferliste etwas Passendes zu finden. Die Suchmaschinen sind auf dieses Nutzerverhalten insgesamt gesehen nicht gut vorbereitet. Sie antizipieren zu wenig, wie Nutzer ihre Informationswünsche realisieren und orientieren sich zu stark an starren Suchalgorithmen. Weitere Problembereiche sind: [Machill et al. 2004] Die Suchergebnisse erfüllen oftmals nicht die Sucherwartungen ihrer Nutzer. Solchen ‚invaliden Treffern’ liegen – neben einer unausgereiften Technik – oft externe oder interne Manipulationen zugrunde, hinter denen ökonomische Interessen stehen. Dienstleistungen für Website-Anbieter und bezahlte Suchresultate haben als Erlösquelle einen hohen Stellenwert für Suchmaschinen. Die Trennung zwischen neutral ausgewählten Seiten und bezahlten Links ist nicht befriedigend gelöst. Den Nutzern ist diese Praxis kaum vertraut. Das Zustandekommen der Suchergebnisse ist für Nutzer meist nicht nachvollziehbar: Wie die Einträge in der Suchmaschinendatenbank entstehen, welche Algorithmen verwendet werden, ob es die Möglichkeit bezahlter Einträge gibt usw., ist weithin unbekannt. Aus welchen unterschiedlichen Quellen gegenwärtige Suchdienste ihre Suchergebnisse beziehen ist in Abbildung 3.3 ersichtlich. Dies unterstreicht den zuvor erwähnten Sachverhalt. Seite 37 Kapitel 3 Informationsagenten im Web Abbildung 3.3: Beziehungsgeflecht der Suchdienste in Deutschland und International (Stand 10.06.2004) [Suchfibel 2004]27 Die Bertelsmannstudie kommt zum Ergebnis, dass Trotz erheblicher technischer und gestalterischer Verbesserungen Suchmaschinen immer noch alles andere als einfach zu benutzen sind (Nutzerfreundlichkeit). Auch wenn die Nutzung von Suchmaschinen relativ einfach erscheint, so gibt es doch einiges zu beachten, um erfolgreich zu suchen. [Machill et al. 2004] 3.6 Informationsagenten Nachdem in den vorangegangenen Abschnitten einige Problembereiche der Suchdienste und der nach Informationen suchenden Benutzer identifiziert wurden, wird in diesem Unterkapitel auf den Einsatz von Informationsagenten in diesem Bereich eingegangen. Dazu wird zunächst in Anlehnung an [Klusch 2001] eine Definition für den Begriff Informationsagent gegeben, die die allgemeine Definition aus Kapitel 2 um einige, für diese Agententypen spezifischen, Eigenschafen und Anforderungen ergänzen soll: 27 http://www.suchfibel.de/ Seite 38 „Ein Informationsagent ist ein Softwareagent, der zu einer oder mehreren, heterogenen und geographisch verteilten Informationsquellen Zugriff hat, und der proaktiv im Auftrag seiner Benutzer, oder anderer Agenten relevante Informationen erwirbt, vermittelt und pflegt. Es wird allgemein verlangt, dass solche Agenten eine oder mehrere der folgenden Anforderungen erfüllen: Erwerb und Management von Informationen: Der Agent ermöglicht transparenten Zugriff auf eine oder mehrere Informationsquellen. Weiters findet, extrahiert, analysiert und filtert er Informationen, beobachtet Quellen, und aktualisiert relevante Informationen für seine Benutzer, oder andere Agenten. Synthese und Präsentation von Informationen: Der Agent ist in der Lage heterogene Daten zu verschmelzen und vereinheitlichte, multidimensionale Ansichten, der für seine Benutzer relevanten Informationen, zu erzeugen. Intelligente, individuelle Benutzerassistenz: Der Agent kann sich dynamisch an Änderungen im Bereich der Benutzerpräferenzen, Informationen oder der Netzwerkumgebung anpassen. Er stellt intelligente, interaktive Assistenz für seine Benutzer bei seien Informationsbasierten Tätigkeiten im Internet bereit.“28 [Klusch 2001] Diese Eigenschaften unterscheiden Informationsagenten insbesondere von den herkömmlichen Suchdiensten im Web (siehe Abschnitt 3.3) und so genannten intelligenten Front-Ends von Datenbanken aus, die seit Mitte der 80er Jahre im kommerziellen Einsatz sind. [Klusch 2001] 3.7 Klassifikation von Informationsagenten In Kapitel 2 wurde bereits eine allgemeine Klassifikation von Agenten eingeführt, und darauf hingewiesen dass es in dieser zu Überschneidungen im Speziellen bei Informationsagenten kommt. Es wurde auch erwähnt, dass unterschiedliche Kriterien zur Kategorisierung herangezogen werden können. Für den folgenden Überblick wird eine Klassifikation nach [Klusch 2001] herangezogen, in der Informationsagenten nach folgenden Eigenschaften kategorisiert werden: kooperativ, adaptiv, mobil 28 We define an information agent as an autonomous, computational software entity (an intelligent agent) that has access to one or multiple, heterogeneous and geographically distributed information sources, and which pro-actively acquires, mediates, and maintains relevant information on behalf of users or other agents preferably just-in-time. Thus, an information agent is supposed to satisfy one or multiple of the following requirements. Information acquisition and management. It is capable of providing transparent access to one or many different information sources. Furthermore, it retrieves, extracts, analyzes, and filters data, monitors sources, and updates relevant information on behalf of its users or other agents. Information synthesis and presentation. The agent is able to fuse heterogeneous data and to provide unified, multi-dimensional views on relevant information to the user. Intelligent user assistance. The agent can dynamically adapt to changes in user preferences, the information, and network environment as well. It provides intelligent, interactive assistance for common users supporting their information-based business on the Internet. [Klusch 2001] Seite 39 Kapitel 3 Informationsagenten im Web Die folgenden Abschnitte behandeln jede dieser Kategorien von Informationsagenten. Es werden dabei kurz die relevanten, zugrunde liegenden Technologien und entsprechende Beispiele von Informationsagenten und Informationsagenten innerhalb von Multiagentensystemen gegeben. Die folgenden Ausführungen sind großteils aus [Klusch 2001] entnommen. 3.7.1 Kooperative Informationsagenten und Systeme Der Begriff eines kooperativen Informationsagenten wurde 1992 im Zusammenhang mit dem Paradigma kooperativer Informationssysteme eingeführt. Ausgangspunkt ist eine Menge von verschiedenen, autonomen Datenbanken, die untereinander vernetzt sind (siehe Abbildung 3.4). Jeder dieser Datenbanken ist ein Informationsagent zugeordnet, der sie nach außen gegen unberechtigte Zugriffe abschirmt und für seine Benutzer aktiv nach relevanten Informationen sucht. Dabei muss ein Agent eine Vielzahl von Problemen lösen, die durch die Verteilung und Autonomie der Datenbanksysteme sowie die Heterogenität der Daten in den Datenbanken entstehen. Es wird vorausgesetzt, dass er hierfür genügend Wissen sowie ausreichende Inferenz- und Kooperationsfähigkeiten besitzt. Prominente Beispiele für Architekturen und Systeme von kooperativen Informationsagenten sind RETSINA [Sycara et al. 1996] und InfoSleuth [Nodine et al. 1999]. Abbildung 3.4: Makrostruktur eines Systems von kooperativen Informationsagenten [Klusch 2001] 3.7.2 Adaptive Informationsagenten Ein adaptiver Informationsagent besitzt die Fähigkeit, sich selbständig auf stetige Veränderungen in offenen Umgebungen und Anforderungen in seinem Aufgabenbereich anzupassen. Das betrifft zum Beispiel wechselnde Präferenzen und Bewertungen der Relevanz von Informationen durch seine Benutzer, die dynamische Klassifikation von Seite 40 nicht statischen, vagen oder unsicheren Inhalten aus eventuell ortsveränderlichen Informationsquellen und flexible Anpassung an wechselhafte Verfügbarkeit von Resourcen im Netz, wie Bandbreite und Auslastungen von aktuell besuchten Servern. Durch den Einsatz von (semi-) automatischen Lernverfahren für Informationsagenten wird vor allem eine flexiblere und benutzerfreundlichere, wenn auch nicht immer schnellere Informationssuche erwartet. Es ist dabei generell zwischen dem Lernen eines einzelnen Agenten in einem Multiagentensystem und der Adaption eines Multiagentensystems als Ganzes zu unterscheiden. Anwendungen von adaptiven Informationsagenten umfassen insbesondere intelligente Benutzerschnittstellen für das Web wie z.B. Letizia [Liebermann 1997] (siehe. Abschnitt 3.8.1). 3.7.3 Mobile Informationsagenten Die Fähigkeit zur Mobilität wird von Informationsagenten nicht dringend gefordert, ist aber in Bezug auf ein orts- und zeitunabhängiges, intelligentes Informationsmanagement von hoher Attraktivität für den Benutzer. Ein weiterer, erwarteter Vorteil von mobilen Agenten ist eine unter bestimmten Bedingungen signifikant reduzierte Netzlast durch lokale Datenverarbeitung. Mobile Agenten folgen dem Paradigma des Remote Programming im Gegensatz zu dem des Remote Procedure/Function Call (RPC/RFC) der traditionellen Client-Server Systeme. Sie sind in der Lage unter gegebenen Umständen für die Ausführung ihrer Aufgaben auf mehrere, geographisch verteilte Server zu migrieren. Unterstützt wird die Verwendung solcher Agenten in geeigneten Softwareapplikationen auch durch die steigende Verbreitung von mobilen Telekommunikationsgeräten, die eine Verbindung zum Internet bieten (WAP-fähige Webhandies, Kommunikatoren und Palms), intelligentem Breitband und drahtlosen, Satellitengestützten Datennetzwerken. Des Weiteren werden die fortschreitende Verteilung von relevanten Daten und Informationen und die Anforderung, (eventuell a priori unbekannte) Server oder deren Proxies bei Bedarf dynamisch zu selektieren sowie auf mögliche Störungen von (Funk-) Netzwerverbindungen flexibel reagieren zu können, zum Einsatz von mobilen Agenten in der Zukunft führen. 3.7.4 Informationsagenten für den elektronischen Handel Elektronischer Handel (E-Commerce) kann definiert werden als die Menge aller Aktivitäten, die direkt den online Handel von Waren und Dienstleistungen im Internet betreffen; damit ist E-Commerce Teil des allgemeineren elektronischen Geschäftsverkehrs, des sog. E-Business. Je nach Ausrichtung des Handelsflusses zwischen Geschäftsbereichen bzw. Warenanbietern und Konsumenten kann nach verschiedenen Marktsegmenten des ECommerce unterschieden werden. Diese Segmente sind: Business-to-Business (B2B) Business-to-Consumer (B2C) Consumer-to-Consumer (C2C) Consumer-to-Business (C2B) Bei E-Commerce können Agenten sowohl von Anbietern als auch von Nachfragern Seite 41 Kapitel 3 Informationsagenten im Web eingesetzt werden. So werden heute schon Agenten von den Anbietern für Personalisierung und Werbung von Produkten eingesetzt. Nachfrager benützen Agenten für Such- beziehungsweise Filterfunktionen, um so die Sucherfolge des gewünschten Produkts zu erhöhen. Nachfrage-Agenten sind auch in der Lage, selbständig komplexe Preis- und Vertragsverhandlungen durchzuführen. Jedoch unterstützen Agenten noch nicht den Kauf und die Lieferung sowie den Service. Besonders in dieser Sparte werden Agenten vermehrt eingesetzt werden, da sie eine wesentliche Erleichterung für den Käufer darstellen. Den Verkäufern können sie helfen, ihre Kunden zielgenauer anzusprechen. [Klusch 2001] 3.8 Beispiele von Informationsagenten In diesem Unterkapitel werden einige interessante Beispiele von Informationsagenten vorgestellt. 3.8.1 Letizia Wie bereits in Abschnitt 3.7.2 erwähnt wurde handelt es sich bei Letizia um einen Adaptiven Informationsagenten. Man kann sich diesen als einen Agenten vorstellen, der mit einem konventionellen Webbrowser zusammenarbeitet, um sein Ziel zu erreichen, nämlich dem Anwender aus der großen Menge von Links auf Webpages die relevanten herauszufiltern. Abbildung 3.5: Letizia integration in Netscape-Interface [Liebermann 1997] Abbildung 3.5 zeigt die Oberfläche von Netscape mit integriertem Letizia-Agenten. Im linken Bereich befindet sich das normale Browserfenster des Benutzers, rechts oben befinden sich die Suchkandidaten von Letizia, und im rechten unteren Bereich werden schließlich die Vorschläge von Letizia angezeigt. Um dem Benutzer sinnvolle Vorschläge bereitstellen zu können, muss der Agent Seite 42 wissen, welche Interessen dieser verfolgt. Letizia bezieht dazu sämtliche Informationen ausschließlich aus der Observation des Benutzers. Jede Auswahl wird mitprotokolliert und jede Seite die vom Benutzer betrachtet wird, wird auch vom Agenten „gelesen“. Diese Seiten werden anhand des TF-IDF (term frequency - inverse document frequency) Verfahren analysiert. Dieses Verfahren basiert auf der These, dass Wörter die im Allgemeinen selten vorkommen im untersuchten Dokument aber sehr oft, am aussagekräftigsten für den Inhalt des Dokumentes sind. Laut Liebermann ist das Verfahren nicht sehr zuverlässig, aber schnell, und kann als Platzhalter für kommende bessere Algorithmen dienen. Während der Benutzer die Webpage betrachtet, führt der Agent eine Breitensuche durch und kann so einen stetigen Fluss an empfehlenswerten Webpages bereitstellen. Im Gegensatz zu Suchdiensten die eine Ansammlung von Links liefern, berücksichtigt Letizia den Zusammenhang von Webpages über Links. Links werden ja vom Autor der Seite gesetzt, um die Relevanz zwischen zwei Seiten hervorzuheben. Daher wird bei Letizia dieser Faktor berücksichtigt. Die Menge von Seiten die nur wenige Links entfernt von der momentan betrachteten Seite sind, werden zu einer so genannten „semantic neighborhood“ zusammengefasst, in der Letizia dann die Breitensuche durchführt. Grundsätzlich kann man sagen der Benutzer führt die Tiefensuche, und Letizia die Breitensuche durch [Liebermann 1997]. 3.8.2 Infosleuth Abbildung 3.6: Struktur des Multiagentensystems InfoSleuth [Nodine et al. 1999], aus [Klusch 2001] Seite 43 Kapitel 3 Informationsagenten im Web InfoSleuth ist ein System, welches ganz speziell zur Suche und Verarbeitung von Information in föderierten Systemen (z.B. im Internet) entwickelt wurde. Das System arbeitet auf der Basis einer ontologischen Darstellung von so genannten Ressourcen, die im Wesentlichen Datenbanken sind und setzt dabei verschiedene Typen von Agenten ein. Diese Agenten kommunizieren über eine gemeinsame Sprache KQML und die einzelnen Aufträge werden im Wissensaustauschformat ANSI KIF formuliert. InfoSleuth enthält Agenten mit unterschiedlichen Aufgaben: User-, Broker-, Ontologie-, Task Execution-, Resource- und Multi-Resource-Agenten. Die Struktur des Multiagentensystems ist in Abbildung 3.6 dargestellt. Die Aufgaben der einzelnen Agententypen können folgendermaßen beschrieben werden: [Nodine et al. 1999] User Agent: Der User Agent unterstützt den Benutzer bei der Formulierung von Suchen und stellt die erreichten Ergebnisse dar. Für die Zukunft ist z.B. auch ein Spracheingabesystem geplant. Broker Agent: Der Broker Agent ist für die Aufgabenverteilung zwischen den Agenten zuständig. Er verfügt über die Kenntnis, welche Agenten welche Fähigkeiten haben und leitet entsprechende Aufgaben an die „kompetenten” Agenten weiter. Kommt ein neuer Agent in das System gibt dieser dem Broker Agenten eine Übersicht über die eigenen Fähigkeiten bekannt. Ontology Agent: Der Ontology Agent ist eine Art semantischer Dolmetscher, dessen Kompetenz im Wissen über verschiedene „Domain Models” liegt. Ontologien bzw. Domain Models sind semantische Grundlagen für verschiedene Themenbereiche. Ein üblicher Anwendungsfall für den Ontology Agent wäre die Unterstützung des User Agenten, um den Benutzer bei der Frageformulierung zu helfen, damit die entsprechende Domäne den semantischen Inhalt der Frage-Syntax korrekt erfasst. Task Execution Agent: Der Task Execution Agent plant und koordiniert die Durchführung der Anfragen von anderen Agenten. Die Planausführung unterstützt Reaktionen auf unvorhergesehene Ereignisse und das Arbeiten mit unvollständigen Informationen. Ressource Agent: Resource Agenten fungieren als Schnittstellen zwischen anderen Agenten des Systems und lokalen Datenquellen, übersetzen deren Inhalte in den Wortschatz der entsprechenden Ontologien und unterrichten den Broker Agenten über den Inhalt der Datenquelle. Des Weiteren kann ein Resource Agent in regelmäßigen Abständen einen Report über seine Datenquelle abgeben oder über Veränderungen informieren. Resource Agenten für Textquellen analysieren die beinhalteten Texte und extrahieren deren Essenz. Multiressource Query Agent: Der Multi Ressource Query Agent teilt komplexe Fragen in einzelne Teilfragen auf, die an die hierfür kompetenten Agenten weitergegeben werden. Die entsprechenden Teilantworten werden vom Multi Ressource Query Agent dann wieder zu einer Antwort zusammengefasst. Zum Beispiel könnte bei einer Anfrage bezüglich des gesamten Inventars eines Kaufhauses ein Agent Mengen und Artikelbezeichnungen kennen, ein anderer die Preise. 3.8.3 RETSINA In einem RETSINA-Multiagentensystem [Sycara et al 1996] kooperieren drei verschiedene Arten von Agenten miteinander, um relevante Informationen im Internet zu Seite 44 finden (siehe Abbildung 3.7): Interface-, Aufgaben- und Informations Agenten. Abbildung 3.7: RETSINA-Architektur eines kooperativen Agentensystems [Sycara et al 1996], aus [Klusch 2001] Die Interfaceagenten stellen für den Benutzer eines RETSINA-Agentensystems den einzigen Zugang zum System dar. Sie helfen ihm interaktiv bei der Spezifizierung von Aufgaben und geben die Ergebnisse ihrer Bearbeitung aus. Alle Aufgabenagenten besitzen jeweils ein umfangreiches bereichsspezifisches Wissen; jeder Agent plant und kontrolliert die Ausführung der Aufgaben, die er von einem oder mehreren Interfaceagenten erhält. Eventuell zerlegt er eine Aufgabe in mehrere Teilaufgaben und delegiert ihre Ausführung entweder an andere geeignete Aufgabenagenten oder direkt an die entsprechenden Informationsagenten. Ein Informationsagent hat einen direkten Zugriff auf eine oder mehrere Informationsquellen. Er kann die Anfragen eines Aufgabenagenten je nach Anforderung einmal oder wiederholt (periodisch) bearbeiten sowie eine bedingte Überwachung von Datenbeständen in den Informationsquellen durchführen. Eine besondere Art der Informationsagenten in einem RETSINAAgentensystem sind die so genannten „Matchmaker-Agenten“. Im Gegensatz zu den Broker-Agenten bei InfoSLeuth beschränken sich diese Agenten nur auf das Vermitteln von relevanten Agenten für die Ausführung einer Aufgabe, überlassen aber alles weitere den davon betroffenen Agenten. Eine Kooperation findet je nach Bedarf zwischen allen Arten von Agenten statt. Die Kommunikation zwischen den Agenten erfolgt in der Sprache KQML. [Klusch 2001] Die Grundidee bei der Entwicklung von Agenten eines RETSINAMultiagentensystems ist die Widerverwendbarkeit von (Java-)Programmcode: Die bereichsabhängigen und bereichsunabhängigen Kontrollstrukturen für Kommunikation, Kooperation, Scheduling und Monitoring sowie Planfragmente und Wissensbasis eines generischen Agenten werden je nach Anwendung für die jeweiligen Agenten geeignet instantiiert. [Klusch 2001] Seite 45 3.8.4 Kapitel 3 Informationsagenten im Web Daffodil Bei Daffodil handelt es sich um ein Agentensystem für digitale Bibliotheken im World Wide Web (Distributed Agents for User- Friendly Access of Digital Libraries). In der ersten Projektphase wurde ein nutzerorientiertes Zugangssystem für digitale Bibliotheken entwickelt. Da es dem Anwender herkömmlicher Digitaler Bibliotheken oft nicht möglich ist wegen fehlender Adaptivität, inadäquater Funktionalität und mangelhafter Visualisierung das Angebot verschiedenster Digitaler Datenbanken effektiv zu nutzen. Basierend auf Erfahrungen aus dem Bibliotheksbereich wurden höhere Funktionen zur Unterstützung bewährter Suchstrategien realisiert. Dabei wurden verschiedene Digitale Bibliotheken eng integriert, so dass Suche und Navigation systemweit möglich ist. Das System ist an unterschiedliche Benutzerwünsche bezüglich des Systemverhaltens und bevorzugter Inhalte adaptierbar bzw. verhält sich adaptiv. Die Gestaltung der Benutzungsoberfläche orientiert sich an neuen Erkenntnissen aus der Mensch-Maschine-Interaktion und unterstützt unterschiedliche Interaktionsmodi. In einer zweiten Projektphase wurde das Konzept der strategischen Unterstützung bei der Nutzung digitaler Bibliotheken beibehalten und wurde nun auf alle Verarbeitungsstufen beim Umgang mit digitalen Bibliotheken, sowie die verschiedenen Arten der Informationsbeschaffung erweitert. Für die Organisation gefundener Materialien, deren Annotation und Interpretation wurde eine persönlichen Handbibliothek eingerichtet. Diese bietet gleichzeitig einen Nutzer- und aufgabenbezogenen Kontext, der das Suchen und Browsen besser als bisher unterstützt. Als zusätzliche Methoden der Informationsbeschaffung wurde das Pfad-Modell, kollaboratives Filtern sowie das Workflow-Modell integriert. Die beiden letztgenannten Methoden erlauben die Kooperation bei der Anwendung von digitalen Bibliotheken; hierbei wird der Sonderrolle von Bibliothekaren Rechnung getragen. Die Gestaltung der Benutzungsoberfläche unterstützt unterschiedliche Interaktionsmodi - insbesondere sollen umständliche Arbeitsprozesse durch Informationsagenten unterstützt und automatisiert werden; dabei muss die Anwenderautonomie berücksichtigt werden. Ebenso soll der iterative Arbeitsprozess beim Information Retrieval, unter Berücksichtigung von Agentennetzen und asynchronen oder langwierigen Retrievalschritten, optimiert werden. Das System bietet dem Benutzer höherwertigere, zielgerichtete Funktionalität an, als sie von einer einzelnen digitalen Bibliothek erbracht werden kann. Benutzerinteraktion mit digitalen Bibliotheken über das Agentensystem lässt sich in vier Schichten modellieren (siehe. Abbildung 3.10). Auf unterster Ebene befinden sich die im WWW angebotenen digitalen Bibliotheken. Transparenter Zugriff auf deren Funktionen und Daten ist durch die Schicht der Wrapper-Agenten gewährleistet. Aufgabe der Wrapper-Agenten ist es, die von den digitalen Bibliotheken erbrachten Funktionen und Daten so zu kapseln, dass sie für das Gesamtsystem nutzbar sind. Auf der anderen Seite kommuniziert der Benutzer mit dem Gesamtsystem über einen UserinterfaceAgenten. Die Aufgabe des Userinterface-Agenten ist zweifältig. Zum einen muss er die vom Gesamtsystem erbrachte Funktionalität dem Benutzer anbieten. Ausgehend von den Seite 46 Aktionen der Benutzer macht er dazu entsprechende Angebote bzw. nimmt die Funktionalität des Gesamtsystems in Anspruch. Zum anderen muss der UserinterfaceAgent die von den Service-Agenten erbrachten Ergebnisse visualisieren. Zwischen Userinterface- und Wrapper-Agenten befindet sich nun das Herzstück des Agentensystems, eine kritische Masse von Service-Agenten, die die zusätzliche Funktionalität implementieren. Jeder angebotene Dienst, der sich auf den Ebenen der Suchfunktionalität nach Bates (siehe Abschnitt 3.5) einordnen lässt, wird von einem Service-Agenten implementiert. Zur Realisierung eines Dienstes greift ein Service-Agent auf Dienste von anderen Service-Agenten, sowie der Wrapper-Agenten zurück. Agenten erfüllen ihre Aufgaben in Zusammenarbeit mit anderen Agenten. Services können nur durch Kommunikation erbracht werden. Sollen Services auf mehreren digitalen Bibliotheken basieren, muss eine Kommunikation mit diesen Bibliotheken gewährleistet sein. Service-Agenten, die einen Dienst basierend auf Diensten anderer Service-Agenten erbringen, müssen mit diesen kommunizieren. Für die Kommunikation der Service-Agenten wurde ein Bussystem konzipiert, das Broadcasting, Groupcasting sowie Peer-to-Peer-Kommunikation zwischen einzelnen Agenten ermöglicht. Abbildung 3.8: Schichtenmodell in Daffodil [Fuhr 2000] Die Objekte, über die kommuniziert wird, orientieren sich an den Objekten, die von den digitalen Bibliotheken in das System eingebracht werden. Diese lassen sich über die von Fuhr genannten Ebenen von Informationsstrukturen [Fuhr 2000] in Datenbanken identifizieren: Schema: Auf Schemaebene werden die möglichen Attribute von Dokumenten und von deren Metadaten modelliert. Beispiele für standardisierte Schemata sind der Dublin Core oder bibliographische Datenformate wie MAB und MARC. Attributwert: Der Wertebereich zu einem Attribut aus dem Datenbankschema kann zum Navigieren und zur Anfrageerstellung verwendet werden. Häufig sind Attributwerte selbst strukturiert, z. B. in Thesauri oder Klassifikationen. Seite 47 Kapitel 3 Informationsagenten im Web Metadatensatz: Ein Metadatensatz fasst die Attributwerte bezüglich eines Schemas zu einem gegebenen Dokument zusammen, z. B. bibliographische Attribute, wie Titel, Autor, Erscheinungsjahr und Quelle. Volltext: Das Dokument selbst, mit Inhalt und Struktur. Abbildung 3.9: Klassenhierarchie für Anfrageobjekte in Daffodil [Fuhr 2000] Anfrageobjekte innerhalb des Agentensystems beziehen sich nun entweder auf Objekte innerhalb einer Ebene der Informationsstrukturen, oder sie schaffen Übergänge zwischen zwei Ebenen. Es ergibt sich die in Abbildung 3.9 gezeigte Klassenhierarchie für Anfrageobjekte. 3.9 Zusammenfassung Gegenwärtig ist die wissensbasierte Suche nach relevanten Informationen im Internet durch intelligente Informationsagenten sehr attraktiv. Die Suchmaschinen der Gegenwart werden längst nicht mehr den Wünschen der Anwender gerecht. In der Zukunft wird der Bedarf an Informations-Management nicht mehr mit herkömmlichen Strategien bewältigt werden können [Liebermann, 1997]. Traditionell ist Informations-Management eine Aufgabe des Information Retrieval (IR). Doch IR setzt sich mit relativ statischen Informationsquellen auseinander. Der Informationsraum Web ist aber hochdynamisch, unstrukturiert und nicht unbedingt textbezogen, daher versagen hier die klassischen IRTechniken. Andererseits basieren viele Suchmaschinen auf IR. Sie benutzen meist die Häufigkeit von Stichwörtern um das Thema eines Dokuments zu bestimmen. Hier wird auf die Fähigkeit des Anwenders gesetzt, eine gezielte Anfrage zu stellen, und gegebenenfalls diese Anfrage nach und nach zu verfeinern. Dieser iterative Prozess ist aber hoch komplex, und bereitet vielen Benutzern Probleme. Informationsagenten können hier dem Benutzer behilflich sein. Die Aufgabe des Suchens, Organisierens, Verwaltens und des Präsentierens sollte im Auftrag des Anwenders von Informationsagenten übernommen werden. Unter einem Informationsagenten versteht man einen Agenten, der in einem Informationsraum tätig ist und dessen Aufgabe es ist, dem Anwender beim Zugriff und der Verwaltung von Informationsquellen und der von ihr bereitgestellten Information zu unterstützen. Diese Informationsräume sind z. B. durch das Web verbundene Datenbanken, Suchdienste oder auch einzelne Webseiten. Das Spektrum für den Einsatz von Informationsagenten ist so breit wie die verschiedenen Arten von Informationen und so verschieden wie der Informationsbedarf der Anwender. Gegenwärtig liefern Informationssysteme objektiv relevante Information, die nach einem für den Benutzer schwer nachvollziehbaren Bewertungsschema beurteilt werden. Der Einsatz von Informationsagenten soll den Benutzer beim Auffinden subjektiv relevanter Information unterstützen, in der auch die Bedürfnisse des Benutzers in die Bewertung mit Seite 48 einbezogen werden. Seite 49 Kapitel 4 Multiagentensysteme Kapitel 4 4 Multiagentensysteme Im vorigen Kapitel wurden interessante Beispiele von Informationsagenten, beschrieben, die innerhalb einer Multiagentenumgebung agieren (siehe Abschnitte 3.8.2 bis 3.8.4). In diesem Kapitel werden nun wesentliche Aspekte, die im Zusammenhang mit solchen Mehragentensystemen auftreten, näher betrachtet. 4.1 Allgemeines Betrachtet man Systeme, die aus mehreren kollaborativ arbeitenden Agenten bestehen, so ergeben sich zwei grundsätzlich unterschiedliche Sicht- und Herangehensweisen. Erfolgt die Modellierung problemzentriert top-down29, beginnend mit einer Zerlegung des Problems in Subprobleme und nachfolgender Identifikation und Implementierung von Spezialagenten für die Teilaufgaben, wird von einem DPS-System30 gesprochen. Es existiert ein zentrales Systemdesign, und das System ist insoweit relativ geschlossen, als dass die teilnehmenden Agenten a priori bekannt sind. Sie verhalten sich im Sinne der zu erzielenden Problemlösung kooperativ und benötigen, da sie Teil eines Gesamtkonzepts sind, nur eingeschränkte Autonomie. In DPS Systemen ist der Untersuchungsgegenstand der Rationalität oder des Verfolgens von Zielen von eher nebensächlichem Rang, zumeist sind diese Aspekte implizit in das Systemdesign eingebaut und nicht Gegenstand der Agentenmodellierung. DPS Systeme werden üblicherweise zur Realisierung verteilter Problemstellungen verwendet, wobei die Verteilung räumlicher, funktionaler oder zeitlicher Natur sein kann. [Fricke 2000] Im Gegensatz zum reduktionistischen Ansatz des DPS ist die Vorgehensweise im Forschungsbereich Multi-Agent Systems (MAS) konstruktivistisch: Hier steht die Modellierung einzelner Agenten im Vordergrund. Weder ist ein globales Ziel vorgegeben noch ein Problem zu lösen, anstelle dessen verfolgen die Agenten eigene, persönliche Ziele. [Fricke 2000] Während DPS-Systeme von ihrer Konzeption her grundsätzlich kooperativ sind, zeichnen sich MAS eher durch Eigeninteresse der Agenten oder sogar Konkurrenzsituationen aus. Aufgrund der Fokussierung auf die Modellierung einzelner Agenten eignet sich dieser Ansatz sehr gut für offene Domänen. MAS-Agenten benötigen ein höheres Maß an Autonomie, Flexibilität und Intelligenz, da sie in unbekannten Umgebungen wirken. Das „Funktionieren“ eines Mehragentensystems, das aus „selbst 29 Wooldridge und Jennings nennen dies reduktionistisch [Wooldridge et al. 1995]. Distributed Problem Solving. Nach [Davis et al. 1983] besteht das verteilte Problemlösen aus den 4 Phasen Problemzerlegung, Problemverteilung, Abarbeitung der Teilprobleme und Lösungssynthese. 30 Seite 50 interessierten“ Agenten besteht, beruht oft auf Synergieeffekten, die durch dynamische Koordination und Kooperation entstehen können. [Fricke 2000] Stand der Technik sind DPS-Lösungen, die entweder auf etablierten Techniken wie der Blackboard-Kommunikation (siehe Abschnitt 4.4) beruhen oder mit Hilfe so genannter agentenorientierter Designmethoden im Sinne objektorientierter Softwareentwicklung erstellt werden. Im Bereich MAS hingegen sind viele Aspekte noch Forschungsgegenstand und werden erst in zukünftigen Anwendungen zum Einsatz kommen. [Fricke 2000] 4.2 Eigenschaften von Multiagentensystemen In Systemen mehrerer autonomer Agenten treten verschiedene Merkmale verteilter Systeme in Erscheinung, die sich im Verhalten eines isoliert arbeitenden Agenten nicht zeigen. [Fricke 2000] Komplexe und dynamische Umgebung: Bei Multiagentensysteme handelt es sich um komplexe Systeme die sich durch ihr nichtdeterministisches Verhalten auszeichnen. Eine gewisse Dynamik entsteht dabei über längere Sicht nur, durch das System verlassende oder neu das System betretende Agenten. Dabei sind die Informationen in einem Multiagentensystem im Unterschied zu monolithischen Systemen nicht transparent über die einzelnen Agenten verteilt. Ein einzelner Agent kennt nur den für ihn interessanten Ausschnitt der Welt, der aber nicht unbedingt exakt und korrekt sein muss. Durch das gleichzeitige Wirken mehrerer autonomer Einheiten ist Wissen über den Zustand der Umgebung generell temporärer Natur. Synergieeffekte durch Kooperation und Koordination: Um die Gefahr von Deadlocks oder Ressourcenengpässen zu vermindern ist ein Abstimmen der Aktionen einzelner Agenten mit anderen Agenten von Vorteil. Wird das Handeln einzelner Agenten insofern koordiniert, dass redundante Handlungen nicht mehrfach durchgeführt werden oder aber auch mehrere Agenten zeitkritische Aufgaben zerlegt bearbeiten, so kann das durchaus zu Verbesserungen führen. Durch Wissensaustausch und Rollenverhalten, aber auch durch längerfristige Kooperationen erschließen sich Synergieeffekte. Diese wird durch die so genannten „value-added services“ ermöglicht, eine Kombination einfacher Basisfunktionalitäten zu neuartigen. Häufig wird nicht einmal domänenspezifisches Wissen benötigt, so ist es möglich Koordinierungs- und Kooperationsmechanismen als generische Bestandteile in Agenten einzupflanzen. Flexibilität durch Offenheit: Werden Agentensysteme bewusst redundant ausgelegt so wird damit die Ausfallsicherheit erhöht. Funktioniert ein System derart auch noch bei Ausfall einzelner Komponenten, so spricht man von „graceful degradation“. Üblicherweise wird Redundanz benutzt, um Performanceprobleme zu lösen. Ein weiterer Aspekt der Flexibilität liegt in der Offenheit von Agentensystemen: Da es sich bei Agenten um eigenständige Prozesse handelt, die über eine einheitliche Schnittstelle, die Agentenkommunikationssprache, verfügen können Agenten zur Laufzeit dynamisch ersetzt und hinzugefügt werden, ohne das Gesamtsystem zum Stillstand zu bringen. Keine zentrale Steuerung des Gesamtsystems: Da das Gesamtsystem keiner zentralen Steuerung unterliegt ist es Agenten möglich selbst über ihre nächsten Aktionen zu Seite 51 Kapitel 4 Multiagentensysteme entscheiden. 4.3 Mögliche Vorteile von Multiagentensystemen Durch den Einsatz von Multiagentensystemen ergeben sich folgende Vorteile: [Schneeberger 2001b] Dadurch dass die Rechenleistung nicht von einem einzelnen Programm bzw. Computer erbracht werden muss, kann die Berechnung schneller abgeschlossen werden. Für kritische Funktionen können mehrere Agenten vorgesehen werden, so dass beim Ausfall des einen Agenten ein anderer einspringen kann. Wenn ein Computer ausfällt, oder ein Softwarefehler auftritt, dann bleibt also nicht gleich das ganze System stehen, sondern es fällt nur eine einzelne Funktion aus, und die verbleibenden Teile können immer noch sinnvolle Arbeit leisten. Skalierbarkeit: Es können einfach weitere Agenten hinzugefügt werden, wenn die Aufgabenstellung von den bislang benutzten Systemen nicht mehr geleistet werden kann. Günstigere Kosten: Statt einem teueren Spezialrechner mit Spezialsoftware kann man viele kleine Computer mit Software-Agenten einsetzen. 4.4 Agentenkommunikation Für unterschiedlichste Einsatzzwecke gibt es viele verschiedene etablierte Kommunikationstechniken. Durch Protokolle kommt es zu einer verlustfreien Übermittlung, der Datenaustausch erfolgt entweder verbindungsorientiert oder verbindungslos, synchron oder asynchron, als Datenstrom oder in Pakete geschnürt und eventuell noch komprimiert und verschlüsselt. [Fricke 2000] Um in verteilten Systemen eine einheitliche Sicht auf die verschiedenen Programmelemente eines Netzwerkes und deren einfache Nutzung zu ermöglichen kommt Kommunikations-Middleware wie CORBA31 oder DCOM32 mit BrokeringDiensten zum Einsatz. [Fricke 2000] Im Bereich der Multiagentensysteme könnte es sich bei einem solchen Broker-Dienst selbst um einen Agenten handeln. Dieser kann einerseits der Lokalisierung der Kommunikationspartner dienen, aber auch den Transport der Nachrichten zum jeweiligen Partner übernehmen. Damit ist es möglich dass ein Agent den Empfänger nicht mehr direkt kennt, sondern ein geeigneter Empfänger für die jeweilige Nachricht durch den Broker gesucht wird. Um eine sinnvolle Kommunikation unter Agenten zu ermöglichen müssen die nachfolgend aufgezählten Voraussetzungen gegeben sein: 31 32 Common Object Request Broker Architecture [Yang et al. 1996] Distributed Computing Environment [Brando 1995] Seite 52 Die Agenten müssen über eine gemeinsame Kommunikationssprache verfügen. Die Agenten müssen ein gemeinsames Verständnis über die Inhalte der Kommunikation haben. Die Agenten müssen die Fähigkeit besitzen untereinander Nachrichten austauschen zu können. Beim Design einer Agentenkommunikationssprache (ACL) sind folgende Aspekte von besonderer Relevanz: [Fricke 2000] Inhalt und Bedeutung Agentenkommunikationssprachen müssen ausdruckskräftig sein, weiters muss ein Informationsaustausch auf der Wissensebene. möglich sein Agenten übermitteln nicht einfach nur Daten, deren Interpretation dem Empfänger überlassen ist; vielmehr spielt auch die Bedeutungsebene eine große Rolle: Agenten erbitten die Erbringung von Diensten, wünschen die Erreichung eines Zieles, erfragen die Pläne anderer Agenten oder schlagen Wege zur Behebung von Konflikten vor. Um die Sprache effizient und möglichst einfach benutzbar zu machen sollte es eine Unterscheidung geben, zwischen einem Teil, der die Bedeutung ausdrückt, und einem Teil, der den eigentlichen Inhalt der Kommunikation ausdrückt. Ist dies der Fall spricht man von einer so genannten Schichtstruktur Universalität Da offene Systeme, in denen Agenten ausgetauscht, hinzugefügt oder entfernt werden können. wünschenswert sind, ist eine einheitliche Kommunikationssprache von großem Vorteil. Anwendungen bestehen aus Agenten, die von unterschiedlichen Entwicklern stammen. Diese Heterogenität macht eine einheitliche Kommunikationssprache erstrebenswert, die unabhängig von der konkreten Implementierung der Agenten ist. Weiters ist auch die Netzwerkfähigkeit von Agenten außerordentlich wichtig, d.h. die Sprache sollte gut zu den modernen Netzwerktechnologien passen und unabhängig von Transportmechanismen (z.B. TCP/IP, E-Mail, http, etc.) sein. Dialoge Um gemeinsam komplexe Aufgaben zu erfüllen oder auch Konfliktsituationen zu meistern muss es Agenten möglich sein zielgerichtete Dialoge zu führen. Dabei funktioniert Kommunikation nicht wie bei herkömmlichen Kommunikationsanwendungen nach dem Client-Server-Prinzip, sondern findet zwischen gleichberechtigten Partnern statt. Eine weitere wünschenswerte Eigenschaft einer Agentenkommunikationssprache ist, dass sie auch für menschliche „Agenten“ einfach lesbar und interpretierbar ist. In frühen Anwendungen der DAI33 kamen vorwiegend Blackboards (siehe Abbildung 4.1) als Kommunikationsform zum Einsatz. Sie stellen eine abstrakte Form des shared memory dar. Agenten schreiben Daten auf das Blackboard oder lesen Daten von diesem und kommunizieren auf diese Weise miteinander. Ein Merkmal dieser frühern 33 Distributed Artificial Intelligence (Verteilte Künstliche Intelligenz) Seite 53 Kapitel 4 Multiagentensysteme Anwendungen liegt in der indirekten Kommunikation, das direkte Adressieren einer Nachricht an einen bestimmten Agenten ist mit solch einem Blackboard nicht möglich. Abbildung 4.1: Prizip der Blackboard Kommunikation [Schneeberger 2001b] Mit der zunehmenden Realisierung echt verteilter Systeme gerieten Blackboards zugunsten direkter, sprechaktbasierter Kommunikationsformen (siehe Abschnitt 4.4.2) zunehmend in den Hintergrund. 4.4.1 Sprechakte Im Bereich der DAI kommen überwiegend, an die menschliche Kommunikation angelehnte, sprechaktbasierte Sprachen zum Einsatz. Wesentliches Element eines Sprechakts ist neben der übermittelten Information der Aspekt des Handelns. Austin identifizierte drei unterschiedliche Aspekte der Kommunikation (siehe Abbildung 4.2): [Fricke 2000] Lokutionäre Akte Die lokutionären Akte beschreiben den Sprechakt im Hinblick auf Artikulation, Konstruktion und Logik. Illokutionäre Akte Die illokutionäre Ebene drückt eine beabsichtigte Wirkung und damit eine kommunikative Funktion aus. Perlokutionäre Akte Der perlokutionäre Aspekt fokussiert auf Konsequenzen beim Empfänger. Für Agenten spielt ausschließlich die illokutionäre Ebene eine Rolle. Lokutionäre Aspekte werden entweder durch die Übertragung mittels des Kommunikationsmediums abgedeckt und sind daher uninteressant, oder können - wie beispielsweise Betonung oder Gestik - prinzipiell nicht übermittelt werden. Seite 54 Abbildung 4.2: Einordnung der Sprechakte nach Austin [Austin 1985] Auf der anderen Seite liegt es außerhalb der Kontrolle eines Agenten, die beabsichtigte Wirkung bei einem anderen Agenten sicherzustellen. 4.4.2 Sprechaktbasierte Agentenkommunikationssprachen Gegenwärtig dominieren zwei Vertreter der sprechaktbasierten Sprachen den Bereich der Agentenkommunikation: KQML (Knowledge Query and Manipulation Language) FIPA-ACL Beide Sprachen beruhen auf einer Reihe illokutionärer Sprechakte (so genannte Performatives) Dabei werden Syntax, Nachrichteninhalt und Bedeutung getrennt. Um die eigentliche Botschaft darzustellen kommen meist logikbasierte Wissensrepräsentationssprachen zum Einsatz. Diese benutzen ihrerseits ein in einer so genannten Ontologie (siehe Abschnitt 4.4.) beschriebenes Vokabular Prinzipiell kann der Nachrichteninhalt aber auch in weniger mächtigen Sprachen wie zum Beispiel XML beschrieben werden. Eine Nachricht in KQML könnte zum Beispiel folgendermaßen aussehen: Seite 55 Kapitel 4 Multiagentensysteme Abbildung 4.3: Beispiel einer KQML-Nachricht [Schneeberger 2001b] Die in Abbildung 4.3 dargestellte KQML-Nachricht beschreibt in etwa wie der Agent ‚buyer’ dem Agenten ‚auctioneer’ ein Angebot über 150 Währungseinheiten für eine verhandelte Ware unterbreitet. Die Währung in der das Angebot gemacht wird ist dabei in der Ontologie ‚markets’ definiert. Der Inhalt dieser Nachricht ist in Prolog kodiert, was aus dem Parameter language ersichtlich ist. Aufgrund der asynchronen Kommunikation wird der Parameter in-reply-to verwendet, der dem Empfänger eine Zuordnung zu vorangegangenen Nachrichten ermöglicht. Im Parameter protocol ist der Name des verwendeten Interaktionsprotokolls (siehe. Abschnitt 4.4.3) angegeben, welches den Ablauf der Konversation definiert. Im oben gezeigten Beispiel ist die Schichtstruktur einer KQML-Nachricht zu erkennen, die in Abbildung 4.4 skizziert ist. Die Kommunikationsschicht enthält Absender (:sender) und Adressat (:receiver). Die Sprechaktschicht enthält neben dem Sprechakt selbst nähere Angaben zum Inhalt. In der Inhaltsschicht befindet sich schließlich der eigentliche Nachrichteninhalt (:content). Analoges gilt auch für FIPAACL Nachrichten. Abbildung 4.4: Schichtstruktur einer KQML-Nachricht [Schneeberger 2001b] Die Sprachbeschreibung von KQML enthält 43 Performatives. Nachfolgend werden einige dieser Performative genannt: tell bezeichnet eine Mitteilung ask-if kennzeichnet eine Frage nach einer bestimmten Tatsache ask-about wird für allgemeine Anfragen verwendet, d.h. wenn der Ansprechpartner irgendetwas über ein bestimmtes Thema weiß, soll er das melden. reply und sorry werden für Antworten auf Fragen verwendet. Seite 56 Zum Verständnis der nächsten Performatives ist zu sagen, dass es in einem KQML Szenario meist Broker bzw. Vermittler gibt. Wenn ein Agent an der KQML Kommunikation teilnehmen will, dann meldet er sich zunächst beim Vermittler an. Dies geschieht mit dem Performative register. Mit subscribe kann ein bestimmtes Thema beim Vermittler abonniert werden - d.h. der Agent erfährt immer, wenn es neue Information zu diesem Thema gibt. Mit advertise kann ein Agent seine Fähigkeiten und Dienste beim Vermittler anmelden. Mit Hilfe solcher Performatives können Informationen ausgetauscht und einfache Dialoge gebildet werden. Dies soll anhand folgender Beispiele gezeigt werden. Dazu sei zunächst angenommen, dass es drei Agenten gibt: einen Vermittler oder Broker V und zwei Agenten A und B. Alle drei Agenten sind in einem lokalen Netz miteinander verbunden. Weiters sei vorausgesetzt, dass beide Agenten A und B sich bereits beim Vermittler V registriert haben. Im ersten Beispiel (siehe Abbildung 4.5) wendet sich Agent A direkt an Agent B mit der Frage „ask“ und dem Inhalt „X“. Agent B antwortet auf diese Frage mit der Mitteilung „tell“ und einem Inhalt „X“. Abbildung 4.5: Ein Einfacher Frage-Antwort-Dialog mittels KQML [Schneeberger 2001b] Im nächsten Beispiel (siehe Abbildung 4.6) abonniert Agent A beim Broker V alle Informationen über X. Etwas später erhält der Broker V von Agent B eine Mitteilung „tell“ über X, die V anschließend an Agent A weiterreicht. Abbildung 4.6: Agent A abonniert bei Broker V alle Informationen über X [Schneeberger 2001b] Im abschließenden Beispiel (siehe Abbildung 4.7) wirbt Agent B gegenüber dem Vermittler V mit seinem Wissen über X. Später bittet Agent A, V um eine Quelle für X, und V antwortet mit dem Hinweis auf Agent B. Jetzt kann Agent A die Anfrage über X Seite 57 Kapitel 4 Multiagentensysteme direkt an Agent B leiten, und bekommt auch entsprechend eine Antwort. Abbildung 4.7: Ein etwas komplexerer Dialog mittels KQML [Schneeberger 2001b] Im Gegensatz zu KQML kommt ACL mit nur 20 Nachrichtentypen aus, die aus 5 grundlegenden Kommunikationsakten inform, request, query, confirm, disconfirm, aufgebaut werden. Der wichtigste Unterschied zwischen beiden Sprachen liegt in der semantischen Fundierung. Während für KQML-Sprechakte nur prosaische Annotierungen existieren, werden Bedeutung und Anwendbarkeit von FIPA-Nachrichten genauestens spezifiziert. 4.4.3 Interaktionsprotokolle Wie aus den Beispielen in vorigem Abschnitt zu sehen ist, können mit den oben behandelten Sprechakten Informationen ausgetauscht und einfache Frage-AntwortDialoge durchgeführt werden. Damit Agenten auch zu längerfristigen Interaktionen wie etwa Verhandlungen und Kooperationen in der Lage sind benötigt man so genannte Interaktionsprotokolle. Ein solches Protokoll regelt den Ablauf einer Konversation. Es legt für alle Beteiligten fest, wann sie welche Sprechakte austauschen und welche Inhalte übermittelt werden. In diesem Sinne stellen Interaktionsprotokolle eine Verbindung von Kommunikation und Handeln dar, wozu die Sprechakttheorie allein nicht ausdrucksmächtig genug ist. Verhandlungen sind notwendig, wenn zur Erreichung des Ziels kooperatives Handeln notwendig ist, oder wenn die Aktionen und Ziele der Agenten sich gegenseitig widersprechen. Eine Verhandlung ist dann ein iteratives Verfahren, um einen kooperativen Plan in einem Multiagentensystem zu finden, so dass alle Aufgaben von Auftragnehmern übernommen werden. 4.4.3.1 Contract-Net-Protokoll Ein sehr bekannter Vertreter dieser Interaktionsprotokolle ist das so genannte Contract-Net-Protokoll. Sein Zweck ist das Delegieren von Aufgaben an andere Agenten, aber auch die Vergabe von Ressourcen kann mit diesem Mechanismus gesteuert werden. Dieses Protokoll wird nun nachfolgend näher beschrieben. Seite 58 Ein Kontraktnetz stellt folgendes Szenario dar: Es existiert eine Menge von Agenten, und es gibt zwei verschiedene Rollen für Agenten, Manager und Auftragnehmer. Ein Manager vergibt eine Aufgabe und überwacht deren Ausführung, während ein Auftragnehmer für die Ausführung der übernommenen Aufgabe verantwortlich ist. Dabei werden die beiden Rollen dynamisch vergeben und jeder Agent kann gleichzeitig Manager und Auftragnehmer sein. Es wird davon ausgegangen, dass jeder Agent kooperationsbereit ist und versucht Aufgaben zu übernehmen. Der Ablauf der Interaktionen zwischen einem Manager und einem Auftragnehmer (Kontraktor) ist in Abbildung 4.8 skizziert. Abbildung 4.8: Ablauf der Kommunikation zwischen Manager und Kontraktor innerhalb des Contract-Net-Protokolls [Schneeberger 2001b] Der Manager initiiert eine Ausschreibung für seine Teilprobleme, die er nicht selbst lösen kann, so dass alle Agenten davon Kenntnis bekommen, die für die Ausführung der Teilaufgaben in Frage kommen. Eine solche Ausschreibung könnte per KQML etwa mit dem „broadcast“ performative oder durch informieren des Brokers erfolgen. Alle Agenten, die sich in der Lage sehen eine der Teilaufgaben zu bewältigen, bewerben sich beim Manager um die Ausführung der entsprechenden Aufgabe. Der Manager seinerseits bewertet alle eingegangenen Angebote, und erteilt dem Anbieter mit dem günstigsten Angebot den Zuschlag. Zwischen beiden Parteien erfolgt ein Vertragsabschluss und alle weiteren Vereinbarungen werden in direkter zweiseitiger Kooperation abgewickelt. Nach Abschluss der Arbeiten wird das Ergebnis an den Auftraggeber übermittelt, der aus allen vergebenen Unteraufträgen wiederum ein Gesamtergebnis zusammenstellen muss. Der Manager braucht in der Wartezeit nicht untätig zu sein, sondern er kann sich seinerseits auf Angebote anderer Manager bewerben. Auch der Auftragnehmer muss die Aufgabe nicht unbedingt alleine erledigen, sondern er kann eine weitere Zerlegung und Ausschreibung der Arbeiten vornehmen. 4.4.3.2 Iterated Contract-Net-Protokoll nach FIPA Ein Problem mit dem zuvor beschriebenen Contract-Net-Protokoll ist, dass manchmal Seite 59 Kapitel 4 Multiagentensysteme eine gute Arbeitsverteilung verhindert wird, weil es nach dem Prinzip „wer zuerst kommt, mahlt zuerst“ Verträge abschließt. Dadurch kann ein Auftragnehmer schon durch einen Vertrag gebunden sein, obwohl er eigentlich für die nächste offene Aufgabe besser geeignet wäre. Dieser Effekt lässt sich durch eine Änderung des Modus beim Bieten vermeiden. Ein Manager erteilt nicht mehr einfach dem ersten besten Bieter einen Auftrag, sondern er versucht alle seine Aufgabenstellungen gleichzeitig zu vergeben. Das kann dadurch erreicht werden, dass der Manager die Aufgaben mit einer Bezahlung ausschreibt. Wenn jetzt eine oder mehrere Aufgaben unbearbeitet bleiben, so kann er in der nächsten Ausschreibungsrunde die Bezahlung für diese unbearbeiteten Teilaufgaben erhöhen. Dieses Verfahren wird so lange wiederholt, bis wirklich alle Teilaufgaben vergeben sind, erst dann werden die entsprechenden Verträge mit den Auftragnehmern abgeschlossen. Abbildung 4.9: FIPA Iterated Contract Net-Protokoll [Fipa 2002a] Abbildung 4.9 zeigt das UML-Diagram der Fipa Spezifikation einer Variante dieses Protokolls, das so genannte Iterative Contract-Net-Protokoll. Ein Manager (Initiator) initiiert m Ausschreibungen (cfp-Performativ). Von den n Antworten die der Manager Seite 60 erhält, sind k Antworten positiv (propose-Performativ), d.h. diese Agenten bewerben sich um den Auftrag, die restlichen j Antworten sind negativ (refuse-Performativ). Anhand der k positiven Antworten entscheidet der Initiator ob dies der letzte Iterationsschritt ist und akzeptiert in diesem Fall p (0 < p < k) der Angebote (accept-proposal), den restlichen sagt er ab (reject-proposal). Als Alternative kann der Manager in einer weiteren Iteration eine modifizierte Ausschreibung initiieren. Für eine detaillierte Beschreibung sei auf [Fipa 2002a] verwiesen. 4.4.3.3 Auktions-Protokolle Eine weitere Problemstellung, die häufig in Multi-Agenten-Szenarien auftritt ist, eine effizient und fair gestaltete Preisbildung zwischen Anbietern und Nachfragern zu finden. Dies kann zum Beispiel mittels so genannter Auktions-Protokolle gelöst werden. In [FIPA 2002b] und [FIPA 2002c] werden zwei dieser Auktions-Protokolle beschrieben, die zum Finden des Marktpreises einer Ware verwendet werden können. Bei der so genannten „englischen Auktion“ (siehe Abbildung 4.10) beginnt der Auktionator (Anbieter) mit einem niedrigen Preisniveau und erhöht solange, bis keine neuen Gebote von den Bietern (Nachfragern) mehr eingehen. Mit dem Startsprechakt (inform start auction), der zum Beispiel per Broadcast an alle Agenten geht, wird die Auktion eröffnet. Das Bieten erfolgt anonym, d.h. kein Bieter kann sich ein Bild von den Konkurrenten machen. Am Ende erhält der Meistbietende den Zuschlag, falls dessen Gebot über einem festgelegten Minimalpreis liegt. Die Auktion wird durch Bekanntgabe eines entsprechenden Endsprechakts (inform end-auction) beendet und der Bestbietende wird mit dem request perform (action)-Sprechakt um Bezahlung gebeten. Der umgekehrte Weg wird durch die so genannte „holländische Auktion“ beschritten. Hier startet der Auktionator mit einem offensichtlich über dem Marktwert liegenden Preis und reduziert solange, bis der erste Bieter akzeptiert. In beiden Modellen hat ein ausgezeichneter Auktionator das Heft des Handelns in seiner Hand. Abbildung 4.10: FIPA Protokoll einer englischen Auktion [Fipa 2002b] Seite 61 Kapitel 4 Multiagentensysteme Natürlich gibt es neben den hier erwähnten Interaktionsprotokollen eine große Anzahl weiterer, die je nach Aufgabenbereich mitunter sehr komplex sein können. 4.4.4 Ontologien Der Begriff „Ontologie“ hat in Agentensystemen eine etwas andere Bedeutung als in der Philosophie34. Eine Ontologie legt eine Reihe an Wörtern oder Objekten, ihre Beziehungen untereinander und ihre Bedeutung in einem bestimmten Kontext fest. [Griss 1999]. Eine Ontologie ist also eine Spezifikation der Bedeutung von Schlüsselwörtern. Es genügt nicht nur die Syntax und die Existenz der Schlüsselwörter zu definieren. Alle an der Konversation beteiligten Agenten müssen diese Schlüsselwörter im selben Kontext gleich interpretieren. Eine Ontologie definiert den Wortschatz einer bestimmten Anwendungs-Domäne. Es ist entscheidend, in welcher Anwendungs-Domäne (Kontext) diese Definition geschieht, da das gleiche Wort an anderer Stelle eine abweichende Bedeutung haben kann. Neben der Definition der Wörter können auch die Beziehungen zwischen diesen festgelegt werden. Beziehungen können Generalisierungen oder Spezialisierung sein, Synonyme oder Antonyme, Aggregationen, etc. Alle Agenten in einem Multiagentensystem müssen auf dieselben Ontologien zurückgreifen, damit eine Kommunikation erwartungsgemäß funktioniert. Ein Agent kann die für seine Aufgaben benötigten Ontologien in Form von Programm-Code erhalten oder ein oder mehrere Dienste in einem MAS stellen diese für die Agenten bereit. Je nach Aufgabengebiet und Kommunikationspartnern sind die notwendigen Ontologien implizit gegeben und brauchen nicht formal (vom Computer auswertbar) definiert zu werden. 4.4.5 Vermittlung und Organisation durch Faciltiators Damit es zum Wissensaustausch zwischen zwei Agenten kommen kann, müssen sich die Kommunikationspartner adressieren können. Ein Agent, der der Allgemeinheit einen Dienst oder eine Information zur Verfügung stellen möchte oder bei der Suche nach einer Problemlösung auf fremde Hilfe angewiesen ist, verwendet dafür typischerweise eine Broadcast-Nachricht. Dieses „Rufen in den Wald“ kann jedoch zu einer erheblichen Belastung der Kommunikationsmedien und der Agenten führen. Zur Minderung des „information overload“ können so genannte Facilitator-Agenten eingesetzt werden. Diese Spezialagenten können dabei für jeweils eine Gruppe von Agenten, als Informations- und Service-Broker fungieren, oder bieten einen so genannten Matchmaker-Serviece an. Die Unterschiede dieser beiden Service-Typen sind aus Abbildung 4.11 zu entnehmen. 34 Lehre vom Wesen und von den Eigenschaften des Seienden, von den Seinsweisen und Seinsschichten, die zu zeigen hat, was allem Seienden als solchem gemeinsam ist.“ [Brockhaus 2005] Seite 62 Abbildung 4.11: Service Broker und Matchmaker [Klusch 2001] Jede Anfrage an einen Service-Broker oder Matchmaker wird mit den aktuell registrierten und verfügbaren Services verglichen. Sind Agenten verfügbar, die die Anfrage erfüllen können so liefert der Matchmaker eine Liste mit Namen und Dienstbeschreibungen dieser Agenten zurück. Die Auswahl und Kommunikation mit einem der in Frage kommenden Agenten obliegt nun dem anfragenden Agenten (Requester). Im Gegensatz dazu wird diese Auswahl und Kommunikation vom Broker gleich selbst erledigt, und der anfragende Agent erhält sofort ein entsprechendes Ergebnis. Beide Varianten bieten Vorteile, aber auch Nachteile. So können Broker zum Beispiel mit der Fähigkeit ausgestattet werden Übersetzungen zwischen verschiedenen Sprachdialekten vorzunehmen und Nachrichten zu bündeln oder zu splitten. Andererseits kann ein Broker aber durch den erhöhten Kommunikationsaufwand leicht zum „Flaschenhals“ werden. Der Matchmaker selbst kommt hingegen mit weniger Kommunikation aus, dies aber auf Kosten der zusätzlich notwendigen Kommunikation die der anfragende Agent durchführen muss, und damit auch auf Kosten des erhöhten Programmieraufwands für diesen Agenten. [Klusch 2001] Abbildung 4.12: Agenten in einem föderierten System [Fricke 2000] Durch die mittelbare, assistierte Kommunikation und die Zuordnung von Agenten zu Facilitators entsteht ein so genanntes föderiertes System, das in Abbildung 4.12 illustriert ist. Die Agenten geben ihre Autonomie zugunsten des sie vertretenden Vermittlers preis, Seite 63 Kapitel 4 Multiagentensysteme indem sie jenem ihre Fähigkeiten und Wünsche mitteilen. 4.4.6 Regeln der Kommunikation Damit eine vernünftige Kommunikation zwischen Agenten zustande kommt, ist es erforderlich, dass bei den Agenten überhaupt ein allgemeines Interesse am gegenseitigen Helfen besteht. Außerdem sollten sich die Agenten zumindest an die folgenden Regeln halten: [Schneeberger 2001b] Agenten müssen immer die Wahrheit sagen. ein Agent darf einen anderen Agenten nicht zwingen einen Dienst zu erfüllen, wenn dieser nicht vorher seine Bereitschaft dazu erklärt hat ein Agent ist an seine Zusage, einen bestimmten Dienst auf Anfrage zu erfüllen, gebunden. 4.5 Agentenarchitekturen In Kapitel 2 wurden Fähigkeiten und Eigenschaften von Agenten beschrieben. Soweit es sich hierbei um generische Fähigkeiten handelt, ist es wenig sinnvoll, sie zum Gegenstand der Agentenprogrammierung zu machen. Vielmehr sollte eine „Agentenprogrammiersprache“ oder „Agentenentwicklungsumgebung“ derartige „agentische“ Eigenschaften automatisch bereitstellen, um so den Programmieraufwand zu verringern. Diesem Zweck dienen die so genannten Agentenarchitekturen, die in diesem Abschnitt behandelt werden. Eine Agentenarchitektur ist laut Maes eine Methodologie für die Programmierung von Agenten: „[…] beschreibt die Zerlegung eines Agenten in eine Menge von Komponenten und deren Interaktion miteinander. Diese Beschreibung muss die Antwort darauf geben, wie Sensordaten und der momentane interne Status eines Agenten die zukünftigen Aktionen bestimmen und den zukünftigen internen Status des Agenten beeinflussen. Eine Agentenarchitektur verwendet Techniken und Algorithmen die diese Methodologie unterstützen.“35 [Maes 1995] Jörg Müller gibt auf die Frage was eine Agentenarchitektur ist in Müller 1998 folgende Antwort: „Das Herz eines Agenten ist seine Kontrollarchitektur, d.h. die Beschreibung seiner funktionalen Komponenten und ihres Zusammenspiels.“ Müller 1998 Eine Agentenarchitektur beschreibt demnach den strukturellen Aufbau eines Agenten durch eine Menge von Komponenten und definiert den Informationsfluss zwischen diesen. In den Komponenten sind die in Kapitel 2 behandelten Fähigkeiten zu finden. „It specifies how ... the agent can be decomposed into the construction of a set of component modules and how these modules should be made to interact. The total set of modules and their interactions has to provide an answer to the question of how the sensor data and the current internal state of an agent determine the actions ... and future internal state of the agent. An architecture encompases techniques and algoithms that support this methodology”. [Maes 1995] 35 Seite 64 Durch die vorgegebene Informationsspeicherung und -verarbeitung ist gleichzeitig die Programmierschnittstelle festgelegt. In der Praxis treten drei unterschiedliche Strukturvarianten auf: komponentenbasierte, geschichtete sowie strukturarme (reaktive) Architekturen. Diese drei Architekturen werden in den folgenden Unterkapiteln kurz behandelt. Im Wesentlichen stützen sich folgende Ausführungen auf [Fricke 2000]. 4.5.1 Komponentenarchitekturen Wenn unterschiedliche funktionale Komponenten vorliegen, spricht man von einer modularen Struktur. Modulare Zerlegung ist eine im Software Engineering weit verbreitete Methode des Systemdesigns. Bei einer Komponentenarchitektur realisiert jedes Modul eine Funktionalität und arbeitet typischerweise mit einem eigenen Datenmodell. Charakteristisch für derart strukturierte Agenten ist die Anwesenheit einer Kommunikationskomponente, über die der gesamte Nachrichtenverkehr abgewickelt wird. Häufig anzutreffen sind auch ein Reasoning-Modul, eine Komponente zur Steuerung und Ausführung der lokalen Fähigkeiten und eine Wissensbasis, die ein einheitliches Datenmodell für alle Komponenten bietet (siehe Abbildung 4-13). Abbildung 4.13: Prinzipieller Aufbau einer Komponentenarchitektur [Fricke 2000] Neben der Herausstellung unterschiedlicher Funktionalitäten wird bei diesem horizontalen Design auch der Daten- oder Kontrollfluss mit modelliert. Alle inputliefernden, d.h. vorgeschalteten Komponenten stellen Daten im vorgeschriebenen Format bereit. Die Daten werden entweder in eine komponenteneigene Wissensbasis eingetragen oder als Events in eine vorgesehene Input-Queue geschrieben. Derart als nebenläufiges Objekt gestaltet, kann jede Komponente in einem eigenen Prozess laufen und durch die Pufferung einkommender Daten auch simultan von mehreren vorgeschalteten Komponenten bedient werden. Komponenten, die diese Prozesseigenständigkeit nicht besitzen, müssen dagegen von außen direkt und synchron über ihre Funktionsschnittstelle aktiviert werden. 4.5.2 Geschichtete Architekturen Altenativ zur modulorientierten Sicht kann ein Agent auch in unterschiedliche Ebenen Seite 65 Kapitel 4 Multiagentensysteme der Wissensverarbeitung hierarchisch zerlegt werden (siehe. Abbildung 4.14). Ein Agent besteht dann aus einer Menge übereinander liegender Schichten (Layers), die, mit zunehmender Höhe, immer komplexere Aufgaben übernehmen. Gemäß dem Modell der verschiedenen Wissensarten bietet sich eine Unterteilung in die vier Abstraktionsschichten physical level, symbol level, knowledge level und social level an. Auf jeder Ebene befinden sich Methoden zur Verarbeitung des dort verwalteten Wissens. Mit zunehmender Abstraktion werden die Verarbeitungsmethoden mächtiger, aber auch komplexer. Findet auf der physikalischen Schicht ausschließlich sensorischer Austausch statt, so wird auf der darüberliegenden Ebene bereits Wissen repräsentiert und verarbeitet. Auf dem knowledge level ist die Rationalität angesiedelt; hier werden Ziele verfolgt. Schließlich finden sich auf der sozialen Ebene Mechanismen für Kooperationen, soziale Normen usw. Der Informationsfluss geht von unten nach oben. Wahrnehmungen gelangen über die physikalische Ebene in den Agenten. Jede Ebene funktioniert dabei als Filter, indem sie alle diejenigen Informationen verarbeitet, für die sie konzipiert ist und die nicht verarbeitbaren an die nächst höhere Schicht weiterleitet. Zum Beispiel wird übermitteltes Wissen von der symbolischen Ebene abgespeichert, während Sprechakte, die Bestandteil eines Kooperationsprotokolls sind, bis in die oberste Ebene durchgereicht werden. Entsprechend besitzt jede Schicht ihre eigene Wissensbasis mit assoziierten wissensverarbeitenden Methoden. Abbildung 4.14: Prinzipieller Aufbau einer Schichtstruktur [Fricke 2000] In entgegengesetzter Richtung zum Informationsfluss findet die Kontrolle statt, weil jede Schicht zur Realisierung der Konsequenzen ihrer Wissensverarbeitungsmechanismen Fähigkeiten der darunterliegenden Ebenen benötigt. So arbeitet der knowledge-level direkt auf den Repräsentationen der Symbolebene, während für das Aussenden eines Sprechakts aus einem Kooperationsprotokoll heraus sowohl die symbolische Ebene zur Repräsentation des Nachrichteninhalts wie auch die physikalische Schicht für das Sendeprotokoll benötigt wird. Seite 66 4.5.3 Reaktive Architekturen Geschichtete und komponentenartige Architekturen haben gemeinsam, dass sie Agenten als Informationsverarbeiter modellieren. Für beide Ansätze ist die interne Repräsentation eines Welt- oder Wissensmodells charakteristisch. Als Antwort auf die oft problembehaftete Wissensrepräsentation wurden rein reaktive Agentenarchitekturen entwickelt, die ohne ein Modell der Umwelt funktionieren, da die Agenten direkt in der Welt verankert sind. Reaktive Agenten können immer nur auf ihre derzeitigen Sensordaten reagieren und sind somit nicht in der Lage etwas zu lernen. (Wenn man Lernen als Anpassen der inneren Struktur sieht, die ihrerseits den Ablauf weiterer Aktionen entscheidet). Eine planende Struktur ist ebenfalls nicht zu verwirklichen, da ein Plan wesentlich von einem Weltmodell abhängt. Die Wahrnehmung der Umwelt erfolgt über Reiz- oder Signal-empfangende Sensoren. Die Verarbeitung findet üblicherweise durch einen einheitlichen, einfachen Mechanismus statt, der sämtliche Wahrnehmungen direkt, d.h. ohne eine Klassifikation oder symbolische Repräsentation vorzunehmen, verarbeitet (siehe. Abbildung 4.15). Möglichkeiten für derart uniforme Mechanismen auf Signalebene bieten Zustandsautomaten, stimulus-response-artige Produktionssysteme oder konkurrierende Kompetenzmodule. Abbildung 4.15: Strukturarmer Aufbau einer Agentenarchitektur [Fricke 2000] Prominentester Vertreter dieser Art von Architekturen ist die SubsumptionArchitektur, die aus einem fest verschalteten Netzwerk endlicher Automaten besteht. Die Automaten verarbeiten einfache Signale, die entweder direkt von Sensoren stammen oder Ausgangssignale anderer Automaten sind. Überschreitet das anliegende Signal einen Schwellenwert, wird das Verhaltensmuster des Automaten aktiviert. Resultat ist wiederum ein Signal, das an anliegende Zustandsautomaten oder Handlungen auslösende Actuators geschickt wird. Diese Art der Informationsverarbeitung ähnelt stark den neuronalen Netzen. Ähnlich wie dort ist außerdem eine Schichtenstrukturierung gegeben, wobei höhere Schichten tiefer liegende Ebenen durch Unterdrückungsregeln steuern können. 4.6 Standardisierungsbemühungen Agenten, die in abgeschlossenen Welten unabhängig voneinander für sich existieren, Seite 67 Kapitel 4 Multiagentensysteme können keinen besonderen Vorteil aus Normierungen ziehen. Im Gegensatz dazu sind mobile Agenten sowie Agenten in offenen Multiagentenumgebungen auf Standards angewiesen, um einen sinnvollen Wissensaustausch untereinander zu vollziehen. Im Folgenden werden die wichtigsten Bemühungen in diesem Bereich kurz vorgestellt. 4.6.1 Knowledge Sharing Effort Der Anfang der 90er Jahre gegründete Knowledge Sharing Effort (KSE) ist eine Initiative von Firmen und Universitäten die Entwicklung von Konventionen und Techniken zum Aufbau großer Wissensbasen, deren Inhalte untereinander austauschbar und wieder verwendbar sind als Ziel gesetzt hat. 4.6.2 FIPA Im Gegensatz zum KSE, der sich nur indirekt mit agentenspezifischen Fragen beschäftigt, wurde die „Foundation for Intelligent Physical Agents“ (FIPA) ausschließlich mit dem Ziel des Erarbeitens von Richtlinien und Standards für die Entwicklung von Agenten gegründet. Auslöser für die Gründung war die Erkenntnis, dass bestimmte Agententechnologien ein fortgeschrittenes Stadium erreicht haben, jedoch nur durch Standards nutzbringend eingesetzt werden können. Deshalb sieht die FIPA ihre Aufgabe in der Definition von Schnittstellen der verschiedenen Komponenten in der Umwelt eines Agenten, mit denen er interagiert. Dazu gehören Menschen, andere Agenten, Software allgemein, sowie die physische Welt. Die FIPA ist bemüht, mit ihrem teilweise hierarchischen Gerüst von Spezifikationen alle relevanten Einsatzgebiete für Agenten und das daran beteiligte Umfeld zu standardisieren. 4.6.3 Agent Society Neben der FIPA existiert ein weiterer Zusammenschluss von Firmen und Universitäten zur Unterstützung von Agententechnologien – die Agent Society. Ihr Ziel ist die Förderung und Koordination neuer Entwicklungen auf dem Gebiet der Agentensysteme sowie damit verbundener Technologien. Das sich daraus ergebende Tätigkeitsfeld beinhaltet z.B. Sammeln und Publizieren von Informationen zu Agententechnologien, -anwendungen und –märkten, Vermarkten der Produkte, Fördern von Standards sowie von Technologietransfer zwischen Entwicklung und Industrie. 4.6.4 Object Management Group Die OMG liefert mit ihren Spezifikationen für verteilte Objekte wie CORBA und IIOP eine wichtige Grundlage, um agentenspezifische Protokolle und Anwendungen zu entwickeln, die eine netzwerkweite Kommunikation und Mobilität ermöglichen. Seite 68 4.7 Zusammenfassung Kommunikation ist bei Softwareagenten weitgehend gleichbedeutend mit der Fähigkeit zum Senden und Empfangen von Sprechakten. Zwar benötigt ein Agent häufig auch „klassische“ Kommunikationsformen, um beispielsweise mit konventioneller Software zu interagieren, diese Sprachen und Protokolle sind jedoch nicht Gegenstand der Agentenkommunikation. Die Haupttriebkraft bei der Gestaltung von Agentenkommunikationssprachen liegt dabei in der Anforderung, Agentensysteme offen zu gestalten. Eine wichtige Anforderung an verteilte Systeme ist das koordinierte Handeln der einzelnen Glieder. In Agentensystemen sind diese Glieder weitgehend autonom, so dass Koordination per Systemdesign schwierig zu erreichen ist. Daher kommen unterschiedliche Techniken zur dynamischen Koordinierung zur Anwendung: Abgestimmtes Handeln zwischen mehreren Agenten findet zumeist in Form von Interaktionsprotokollen statt. Die Agentenarchitektur beschreibt Aufbau und Funktionsweise eines einzelnen Agenten. Von ihr bereitgestellte generische Funktionalitäten im Bereich der Informationsfilterung, -speicherung und -verarbeitung bilden die „architectural commitments“, welche die Verwendungsmöglichkeiten der Architektur einschränken. Entsprechend den vielen möglichen Anforderungen in Bezug auf die Aufgabenstellungen und Ausprägungen der Einsatzumgebung existieren zahlreiche Architekturen mit unterschiedlichen Schwerpunkten. Agenten, die in abgeschlossenen Welten unabhängig voneinander für sich existieren, können keinen besonderen Vorteil aus Normierungen ziehen. Anders ist dies bei mobilen Agenten und Agenten in offenen Multiagentenumgebungen. Sie sind auf Standards angewiesen, um einen sinnvollen Wissensaustausch untereinander zu vollziehen. Nach Meinung des Autors dieser Arbeit ist die FIPA (Foundation for Intelligent Physical Agents) die derzeit aktivste Initiative in dieser Richtung. Seite 69 Gestaltungsbereich Kapitel 4 Multiagentensysteme Seite 70 Mit den aus dem Untersuchungsbereich gewonnen Erkenntnissen wird nun versucht eine Agenten Plattform zu spezifizieren und in weiterer Folge ein Prototyp implementiert. Es sei an dieser Stelle angemerkt, dass dies in Zusammenarbeit mit Stefan Kernbauer, ebenfalls Diplomand am IICM bewerkstelligt wurde. Aus diesem Grund weist das folgende Kapitel 5 größere Gemeinsamkeiten zu der Diplomarbeit von Stefan Kernbauer [Kernbauer 1999] auf. Die darauf folgenden Kapitel sind jedoch von dieser Arbeit weitgehend unabhängig. Kapitel 5 5 SMART - Sophisticated Mobile Agent Repository 5.1 Motivation Vor allem die in Kapitel 3 des Untersuchungsbereichs identifizierten Probleme bei der Informationserschließung im Web, und der Lösungsansatz mittels kooperativen Agenten, der ebenfalls in Kapitel 3 vorgestellt wurde bilden nun die Motivation dafür eine Agenten Plattform zu spezifizieren und prototypisch zu implementieren. Informationsagenten die in dieser Plattform agieren könnten Aufgaben wie das Identifizieren von relevanten Informationsangeboten, das Filtern und Klassifizieren von Informationsangeboten sowie die benutzerfreundliche Aufbereitung der Ergebnisse übernehmen, und so den Benutzer stark entlasten. Für die Verwaltung und Koordination dieser Agenten wird aber eine gewisse Infrastruktur benötigt. Es muss eine Umgebung geschaffen werden, die sich streng nach außen abgrenzt und die Agenten innerhalb der Plattform unterstützt. Eine restriktive Abgrenzung der Umgebung ist aus mehreren Gründen notwendig. Zum einen können durch definierte Interfaces zum User und zu externen Systemen Sicherheitslücken eliminiert werden und zum anderen dürfen sich z.B. mobile Agenten nur in einem bestimmten Bereich frei bewegen. Niemals darf mobilen Software Agenten das gesamte Netz uneingeschränkt zur Verfügung gestellt werden, denn da sich Agenten mehrfach klonen können, würde sich sofort eine Überlastung des Netzes einstellen. Aus der Sicht des Users wird also ein Agentensystem benötigt, dass in seiner Gesamtheit Aufgaben übernehmen und Dienste verknüpfen kann. Für den User ist es vollkommen irrelevant wie viele Agenten für die Erfüllung der Aufgabe benötigt werden, und welche Prozesse und Strukturen nötig sind. Wichtig ist ein standardisiertes Userinterface, über das alle Funktionen zu erreichen sind und das intuitiv zu bedienen ist. In den Folgenden Unterkapiteln wird nun die Entwicklung und Konzeption eines solchen Agentensystems beschrieben. Seite 71 Kapitel 5 SMART 5.2 Anforderungen an ein Agentensystem Um die geforderte Funktionalität erfüllen zu können, werden an ein Agentensystem eine Reihe von grundsätzlichen Anforderungen gestellt. Diese sollen nachfolgend genauer erläutert werden. Verteiltes System: Ein Agentensystem sollte verteilt über mehrere Plattformen agieren. Der Aktionsbereich sollte eingeschränkt werden, doch sollten die Vorteile von Computernetzen genutzt werden. Über das Netz können Dienste und Ressourcen, die auf verschiedenen Rechnern angeboten werden, nutzbar gemacht werden. Agenten sollten auf verschiedenen Plattformen installierbar sein, somit ist ein gewisses Maß an Plattformunabhängigkeit gefordert. Erweiterbarkeit: Die Funktionalität des Agentensystems sollte jederzeit erweiterbar sein. Die Erweiterung und Anpassung stellt ein gewisses Sicherheitsrisiko dar (Installation von Computerviren) und sollte deshalb ein streng geregelter Vorgang sein. Komponententechnologie bietet sich an. Signierte Softwarekomponenten die nur von einem definierten Personenkreis installiert werden dürfen, würden etwaigem „Wildwuchs” des Systems vorbeugen. Administration und Kommunikation mit dem Benutzer: Benutzer wie auch Administratoren sollte ein graphisches Interface zur Verfügung gestellt werden, über welches sie mit dem System kommunizieren und Einstellungen vornehmen können. User und Administrator wird eine unterschiedliche Sicht des Systems ermöglicht. Der Zugriff des Users beschränkt sich auf dessen angeforderte Agenten, deren Nachrichten und Einstellungen. Ein Administrator kann auf das Gesamtsystem zugreifen. Ihm obliegt die Verwaltung der Userrechte, der Agenten und der Komponenten. Zugriff auf externe Systeme: Agenten sollten über das Agentensystem auf externe Systeme jeglicher Art zugreifen können. Webserver, Datenbanken und Dienste aller Art sollten für Agenten zugänglich sein, jedoch muss der Zugriff kontrolliert und auch protokolliert werden damit die Aktivitäten des Systems nachvollziehbar bleiben. Erreichbarkeit durch externe Systeme: Externe Agenten oder Programme sollten auf das Agentensystem zugreifen und mit den Agenten des Systems kommunizieren können. Benötigt wird ein Application Programming Interface (API) oder ein Gateway zur Agentenkommunikation. Skalierbarkeit: Das Agentensystem sollte auf das Ausmaß der Nutzung angepasst werden können. Es sollte möglich sein, immer wieder neue Rechner in das System einzubinden, wodurch Rechenleistung und Speicher stets an den Nutzungsgrad angepasst werden können. Security: Der Zugriff auf das System sollte durch Userrechte geregelt werden. So haben Benutzer nur eine beschränkte Sicht auf das System und kaum Manipulationsmöglichkeiten. Nur Administratoren haben einen vollständigen Zugriff auf das System und nur ihnen ist es erlaubt Software in das System zu installieren. Durch diesen Ansatz kann ein hohes Maß an Sicherheit erreicht werden. Logging: Alle Aktivitäten des Systems und der Agenten sollten mitprotokolliert werden. Durch Log-Files erreicht das System eine größtmögliche Transparenz. Verwaltung von Agenten: Damit Agenten ihre Aufgabe erledigen können, benötigen sie eine „Infrastruktur”. Software Agenten sollten sich im System frei bewegen, auf Daten zugreifen und mit anderen Agenten kommunizieren können. Auch werden Seite 72 Agenten durch das System überwacht, gestartet, gestoppt oder gelöscht. Benutzer müssen Agenten bewerten können, denn nur durch Feedback kann sich das System verändern und verbessern. Daher müssen Möglichkeiten geschaffen werden, Agenten zu speichern und zu bewerten. User Management: Benutzer haben im Agentensystem nur sehr beschränkte Rechte. Diese Rechte und auch die Daten der User müssen verwaltet werden. Das System ermöglicht das Anlegen eines Benutzers, das Editieren von Benutzerdaten und das Löschen des Users. Sinnvollerweise müsste für jeden User ein Homeverzeichnis angelegt werden, in dem seine Benutzerdaten gespeichert werden. Verstehen von User-Anfragen: Benutzer sollten mittels Anfragen Aufgaben formulieren können, die durch die Agenten des Systems erledigt werden. Hiezu ist es nötig, dass das System die Anfragen versteht. Adaptives Verhalten bzw. Lernfähigkeit ist gefordert. Komponenten: Agenten sollten aus Komponenten bestehen, die nach Bedarf kombiniert werden können. Kombinationen, die sich im System bewähren, werden öfter verwendet als erfolglose Kombinationen. Um dieses Ranking zu ermöglichen, müssen Kombinationen mit ihren Bewertungen gespeichert werden. Agentenkommunikation: Software Agenten müssen untereinander und auch mit systemfremden Agenten kommunizieren können, um Informationen auszutauschen und Aktivitäten zu koordinieren. Für die Kommunikation bieten sich Agentensprachen wie KQML oder FIPA-ACL an. Pro-Aktives Verhalten: Software Agenten sollten pro-aktiv und autonom agieren d.h. Sie setzen von sich aus Aktivitäten und treffen Entscheidungen. Pro-Aktives Verhalten kann nur erreicht werden, wenn für jeden Agenten mindestens ein Prozess (Thread) gestartet wird. Persistenz und Serialisierbarkeit: Um Software Agenten frei im System bewegen zu können, müssen sie serialisierbar sein, d.h. sie müssen ihren Zustand persistent in einen Stream speichern können. Auch muss der Status des Gesamtsystems gespeichert werden können, um vor Netz- bzw. Rechnerausfällen sicher zu sein. 5.3 SMART Philosophie Das SMART (Sophisticated Mobile Agent Repository Technology) System, ist ein Agentensystem, das aus mobilen und statischen Agenten besteht. Die Agenten besitzen eine in sich abgeschlossene Funktionalität (starke Kapselung). Sowohl die Agenten, als auch das Gesamtsystem soll sich an den Benutzer und an die Umgebung anpassen. Das SMART System ist ein verteiltes System, das plattformübergreifend agiert. Im Gesamtsystem wird konsequent auf Komponententechnologie gesetzt, wodurch das System offen und erweiterbar bleibt. SMART-Agenten können eigenständig im Auftrag des Benutzers agieren und untereinander kommunizieren. Die Kommunikation mit externen Agenten wird über eine genormte Schnittstelle ermöglicht (FIPA-Foundation for Intelligent Phyisical Agents). Das zentrale Element des SMART-Systems ist eine verteilte Agentenplattform. Diese Plattform schafft eine Runtime-Umgebung für SMART-Agenten. In dieser Plattform werden Agenten verwaltet, sie bildet die Schnittstelle zu externen Systemen und verwaltet Useranfragen. Im Wesentlichen besteht die Plattform aus einer Struktur (Dino-Struktur) über die Agenten und externe Systeme (WWW, Hyperwave Server, Datenbanken, xFIND, etc.) adressiert werden können. Neben Seite 73 Kapitel 5 SMART den Agenten befinden sich auf der Plattform Servicekomponenten, die die Kommunikation mit dem User (Thesaurus) und die Zusammenarbeit von Agenten erleichtern sollen. Die Agentenplattform läuft als Serverprozess auf einem Host. Plattformen auf verschiedenen Hosts können zu einer gemeinsamen Plattform vereinigt werden und es entsteht dadurch ein verteiltes System. Jeder Agent im System besitzt einen eigenen Thread, dadurch laufen sie selbständig und können jederzeit gestoppt werden. Strukturell bestehen Agenten aus Komponenten, aus denen sie zur Laufzeit zusammengefügt werden. Das Zusammenfügen der Agenten wird durch User-Anfragen initiiert. Wird ein Agent für eine bestimmte Aufgabe benötigt so versucht das System passende Komponenten zu finden. Diese Komponenten werden dann automatisch zu einem Agenten kombiniert. Wird ein Agent nicht mehr benötigt so löst er sich wieder auf. Agenten werden zusätzlich durch den User bewertet, wodurch die betroffenen Komponenten ein Ranking erfahren. Das Ranking beeinflusst die Auswahl der Komponenten. So werden erfolgreiche Komponenten öfter ausgewählt als erfolglose. Der User kommuniziert mit dem System über einen eigenen User-Agenten. Der UserAgent ist auf dem Rechner des Anwenders installiert und stellt dem Anwender ein graphisches Interface zur Verfügung, über das er Anfragen in natürlicher Sprache (einfache Sätze, getrennte Eingabe von Verb, Subjekt und Objekt) stellen kann. Nach Eingabe der Anfrage wird eine Verbindung mit der Agentenplattform hergestellt. Das System versucht unter Verwendung eines Thesaurus die Anfrage zu verstehen und passende Komponenten zu finden, die die Anfrage erfüllen können. Wurden Komponenten gefunden, so werden diese zu einem Agent kombiniert und der Agent tritt mit dem Benutzer in Kontakt. Über ein graphisches Interface wird der Agent konfiguriert und dieser nimmt seine Tätigkeit auf. Nach Erledigung der Aufgabe kann der Agent vom Benutzer bewertet werden. Die Bewertung beeinflusst wiederum die zukünftige Auswahl der Komponenten. Verwaltet und konfiguriert wird das Gesamtsystem über ein eigenes Administratorinterface. Ein Administrator kann Benutzerrechte verwalten, Agenten überwachen und Komponenten einspielen. Durch den Komponentenansatz bleibt das System erweiterbar und flexibel. Werden neue Komponenten eingebracht können Agenten mit neuen Fähigkeiten ausgestattet werden. Komponenten, die nicht mehr benötigt werden, können aus dem System entfernt werden. Auch die Anzahl der Agenten richtet sich nach der Art der Anfragen. Wird an das System mehrmals eine bestimmte Anfrage gestellt, so werden einfach mehr Agenten für dieses Thema erzeugt. Daher unterliegen die Fähigkeiten des Gesamtsystems und auch die Aufgaben mit dem sich das System beschäftigt einem ständigen Wandel. Die Aufteilung der Funktionalität auf unabhängige Einzelkomponenten steigert auch die Fehlertoleranz des Systems. Durch eine instabile Komponente wird die Stabilität des Gesamtsystems nicht gefährdet. Schlimmstenfalls wird nur der betroffene Agent in Mitleidenschaft gezogen und kann durch den Administrator gestoppt werden. Die Erweiterbarkeit und Zugriffsmöglichkeiten im System sind streng geregelt. Interfaces auf externe Systeme werden über die Agentenplattform ermöglicht (Dino). So können selbst Agenten nur über diese Schnittstellen mit der „Außenwelt” kommunizieren. Eigene Security Manager regeln streng das Ausmaß des Zugriffs. Die grundsätzliche Struktur ist in Abbildung 5.1 dargestellt. Seite 74 Abbildung 5.1: Das SMART Agentensystem [Kernbauer 1999] 5.4 Bausteine zur Entwicklung eines Agentensystems Entscheidend für die erfolgreiche Entwicklung eines Agentensystems ist die Wahl der richtigen Hilfsmittel und Frameworks. Für die Entwicklung von SMART fiel die Wahl auf die Programmiersprache Java und auf das am IICM Graz entwickelte Framework Dino. Sowohl Java als auch Dino erleichtern die plattformübergreifende Kooperation von Software. Von verschiedensten Organisationen wurden bereits Software Agenten und Agentensysteme entwickelt. Für den praktischen Einsatz ist die Kooperation dieser Systeme sinnvoll, es fehlt jedoch an Standards und definierten Schnittstellen. FIPA (Foundation for Intelligent Physical Agents) versucht seit einigen Jahren einen Standard für Agentensysteme und Agentenkommunikation zu spezifizieren. Um zu anderen Systemen offen zu bleiben, wurde auch für das SMART System ein FIPA Gateway konzipiert. 5.4.1 Java Die Programmiersprache Java bietet einige Besonderheiten, die die Entwicklung von mobilen Software-Agenten begünstigen. Auf diese Besonderheiten soll im Folgenden näher eingegangen werden. Plattformunabhängigkeit: Durch die Programmiersprache Java wurde ein “Write Once, Run Anywhere” Konzept verwirklicht. Java Sourcecode wird durch den Compiler nicht in lauffähigen Maschinencode übersetzt, sondern es entsteht ein Seite 75 Kapitel 5 SMART Bytecode der von einem virtuellen Computer (Java Virtual Machine) interpretiert wird. Die Virtual Machine ist für verschiedenste Plattformen erhältlich und selbst in Web Browsern eingebaut. Die Virtual Machine bietet stets dieselben Schnittstellen, wodurch Java Programme auf verschiedenen Plattformen ausgeführt werden können. Persistenz: Für mobile Software Agenten ist es notwendig, dass sie mit ihrem Status in eine Form umgewandelt werden, die problemlos über das Netz transportiert werden kann. Java Objekte können durch einen speziellen Mechanismus (Serialize) mit ihrem Status in Bytecode umgewandelt werden, der auf einem Stream über das Netz transportiert wird. Am Ziel können aus dem Stream die Objekte wieder rekonstruiert werden. Durch den Serialisier-Mechanismus kann Objekten Persistenz verliehen werden, wodurch sie auch nach Systemabstürzen und anderen undefinierten Zuständen wieder rekonstruiert werden können. Netzwerkfähigkeit: Java unterstützt die Programmierung von Sockets und URL (Uniform Resource Location) Kommunikation. Über RMI (Remote Method Invocation) kann auf verteilte Objekte zugegriffen werden. Classloading: Der Java Classloading Mechanismus kann erweitert werden, wodurch Java Klassen nicht nur aus dem Java Classpath sondern auch über das Netzwerk nachgeladen werden können. Ein spezialiserter Classloader kann Klassen vom Java Classpath, von einer URL oder vom Objektstream nachladen (Nicht nur die Java Objekte, auch die dazugehörigen Klassen können auf einen Stream serialisiert werden). 5.4.2 Dino Abbildung 5.2: Die Dino Struktur [Dino 1998] Dino (Distributed Interactive Network Objects) ermöglicht eine virtuelle Sicht auf einen heterogenen Informationsraum. Die Elemente des Informationsraums können aus Daten oder auch aus Programmen bestehen und werden durch Knoten in einem virtuellen Verzeichnisbaum repräsentiert. Die Struktur des Baumes ähnelt einem Unix Verzeichnisbaum, wodurch auch eine Adressierung und Navigation im Unix Stil möglich ist. Durch den Aufbau wurde der Zugriff auf Elemente des Informationsraums Seite 76 standardisiert. Der Benutzer wendet stets das gleiche Schema an, egal ob auf Daten lokal oder remote zugegriffen wird. Abbildung 5.2 zeigt einen Dino Adressraum, in den über einen Mounter ein externes System eingebunden wird. Dino zeichnet sich durch eine Reihe von Eigenschaften aus: Plattformunabhängigkeit: Dino wurde vollständig in Java implementiert, wodurch ein hohes Maß an Plattformunabhängigkeit erreicht wurde. Verteilte Objekte: Sowohl aktive Inhalte (Programme, Objekte), als auch passive Inhalte (Daten, Meta-Daten) können über den Dino Adressraum erreicht werden. Java Objekte können über einen Object-Wrapper im Dino Adressraum angesprochen werden. Erweiterbarkeit: Die Dino Middleware kann an die jeweilige Situation und Anwendung angepasst werden. Skalierbarkeit: Die Anzahl von eingebetteten Servern und Knoten kann beliebig groß werden. Sicherheit: Benutzerzugriffe werden auf Knotenebene geregelt. Durch die enge Integration von Java-Sicherheitsmechanismen wird ein größtmögliches Maß an Sicherheit erreicht. Implementieren Java Objekte ein spezielles Interface (LogicalContext), so können sie in den Dino Adressraum eingebunden werden. Auf die Objekte kann sowohl lokal als auch remote über Wrapper (LogicalContextWrapper) zugegriffen werden. Das graphische Interface der Objekte wird gesondert abgelegt und kann als „Service” vom Dino Knoten angefordert werden. Sind diese Objekt zusätzlich noch serialisierbar (Serializeable), so können sie im Dino Adressraum durch einen einfachen Copy oder Move Befehl verschoben werden. Bei diesen Operationen ist es irrelevant wie viele Plattformgrenzen übersprungen werden. Somit reduziert sich das Bewegen eines Software Agenten zwischen 2 Plattformen auf einen einfachen Move Befehl. 5.4.3 FIPA Abbildung 5.3 zeigt das FIPA Referenzmodell in dem FIPA Agenten existieren und agieren können. Es entsteht eine Agenten Plattform (AP), die aus einigen zentralen Komponenten besteht, und die als „Lebensraum” von Software Agenten dient. Ein Agent Management System (AMS) kümmert sich um die Verwaltung von Agenten, ein Directory Facilitator (DF) stellt einen „Yellow Pages“ Dienst zur Verfügung und ein Agent Communication Channel (ACC) kümmert sich um die externe Kommunikation der Plattform. Grundsätzlich sind alle Grundkomponenten einer FIPA Agenten Plattform als Agenten spezifiziert. Seite 77 Kapitel 5 SMART Abbildung 5.3: Das FIPA Referenzmodell [Fipa 1997] 5.5 Das SMART System Das SMART System bildet ein verteiltes Agentensystem. Das System schafft eine Umgebung, die die, von Software Agenten benötigte, Infrastruktur aufbaut. In dieser Umgebung können Software Agenten agieren und untereinander kooperieren. Natürlich beinhaltet das SMART System auch alle Mechanismen um Agenten und die, von ihnen benötigten, Ressourcen zu verwalten. Technisch stützt sich das SMART System auf das Dino Framework, bzw. stellt eine Anwendung von Dino dar. Durch Dino wird die Adressierung und die Interaktion der verschiedenen Module, Agenten und Komponenten möglich. Durch die Dino-Technologie können Ressourcen jeglicher Art in das System eingebunden werden, wodurch diese Ressourcen für Agenten zugänglich werden. Dino relativiert Plattform- und Systemgrenzen und ermöglicht die Interaktion der Komponenten über eben diese Grenzen. Letztlich kümmert sich Dino auch um Sicherheitsfragen und verwaltet User-Rechte. Das SMART System besteht aus mindestens einer SMART Plattform. Diese Agentenplattform läuft als Serverprozess auf einem bestimmten Host. Durch Dino können Plattformen auf verschiedenen Hosts zu einer gemeinsamen Plattform vereinigt werden, wodurch eine große, verteilte SMART Plattform entsteht. Die verteilte SMART Plattform bildet nach außen hin ein abgeschlossenes System, auf das nur über definierte Schnittstellen zugegriffen werden kann. Benutzer verwenden zur Interaktion mit dem System einen User Interface Agenten, der auf dem Rechner des Benutzers installiert ist. Der User Interface Agent verbindet sich bei Bedarf mit dem System und ermöglicht die Kommunikation mit internen Agenten. Neben den „normalen” Benutzern haben noch zwei weitere Usergruppen Zugriff auf das System, nämlich Administratoren und externe Agenten. Administratoren können über ein eigenes Administrations Tool das System Seite 78 verwalten. Externe Agenten kommunizieren über ein Gateway mit der Plattform. Der grundsätzliche Aufbau des SMART Systems ist in Abbildung 5.4 dargestellt. Abbildung 5.4: Das SMART Agentensystem [Kernbauer 1999] Jede Teilplattform des Gesamtsystems wird dezentral verwaltet. Benutzer sind nur auf einer Teilplattform registriert, die dann als Heimatplattform des Benutzers und der vom Benutzer angeforderten Agenten fungiert. Für jede Plattform ist mindestens ein Administrator verantwortlich. Da die Agenten der Plattformen des SMART Systems eng zusammenarbeiten und sich die Agenten zwischen den Plattformen bewegen können, ist eine transparente Struktur notwendig. Sinnvoll ist eine Verknüpfung der Plattformen mittels einer gemeinsamen Root-Plattform. Durch diese logische Anordnung befinden sich die einzelnen Plattformen im Adressraum auf einer gemeinsamen Ebene und sind dadurch einfach zu erreichen. Eine Gruppierung der Plattformen kann durch einen hierarchischen Aufbau der Root-Plattform erreicht werden. Durch diesen Ansatz ist es möglich „Domains” einzuführen. Grundsätzlich kann jede Plattform eine andere Plattform über die gemeinsame Root erreichen und es entsteht dadurch eine gemeinsame verteilte Plattform, das SMART System. 5.6 Die SMART Plattform In der Konzeption wurde versucht, bewährte Ansätze des objektorientierten Designs Seite 79 Kapitel 5 SMART konsequent umzusetzen. So ist die Plattform nach einem Schichtenmodell aufgebaut. User Interface Agent, Admin Tool und FIPA-Gateway sind in der obersten Schicht angeordnet, die Agenten in einer mittleren Schicht, die Dino Struktur darunter und in einer letzten Schicht sind sämtliche Ressourcen vereinigt. Ein weiteres zentrales Konzept ist die strenge Kapselung der einzelnen Module. Jedes Modul hat ein streng definiertes Aufgabenfeld, grenzt sich von anderen Modulen deutlich ab und wird dadurch austauschbar. Wichtige Aufgaben im System werden von so genannten „Managern” übernommen. Sie kontrollieren, steuern und verwalten das System. Teilweise übernehmen Manager ein komplexes Aufgabenfeld und können auch als „Agenten” bezeichnet werden. Jedoch müssen sie nicht immer aktiv im System agieren und benötigen dadurch nicht immer einen eigenen Prozess. Zusätzlich werden sie permanent im System installiert und dürfen während der Laufzeit der SMART Plattform nicht mehr deinstalliert werden. Da Manager zentrale Aufgaben im System übernehmen, würde eine Veränderung der Konstellation die Stabilität des Systems gefährden. In diesen Eigenschaften unterscheiden sie sich deutlich von so genannten „SAgenten”. SAgenten (User Agenten, System Agenten, Staff Agenten) ermöglichen die dynamische Funktionalität des Systems. Sie können zur Laufzeit je nach Bedarf installiert und deinstalliert werden. SAgenten bestehen aus Komponenten, die unter bestimmten Einschränkungen frei kombinierbar sind (Nur bestimmte Typen von Komponenten sind kombinierbar). So ist es möglich, dass neue Agenten im System erstellt und zur Probe eingesetzt werden. Bewähren sich die Agenten, dann werden sie öfters angefordert, andernfalls werden sie aus dem System wieder entfernt. Sowohl die Kombination, als auch die Installation und Deinstallation erfolgt im System automatisch. Alle SAgenten im System erhalten einen eigenen Prozess und können dadurch aktiv („Pro-Aktiv”) ihre Aufgaben durchführen. „Handler” und „Assistants” bilden die dritte große Gruppe der SMART Plattform. Sie sind meist für die Verwaltung und den Zugriff auf Ressourcen verantwortlich. Die Ressourcen werden ebenfalls in zwei Gruppen unterteilt. Man unterscheidet Systemdaten und allgemeine Ressourcen. Zu den Systemdaten zählen sämtliche Konfigurationsdateien (User Data, etc.) und Datenbanken (Agentbase, Componentbase, etc.) die vom SMART System benötigt werden um stabile Funktionalität zu gewährleisten. Zu den allgemeinen Ressourcen zählen externe Daten, wie z.B. HTTP Server, Hyperwave Server, FTP Server usw. Diese externen Daten können von Agenten angefordert werden, worauf sie, sofern Rechte und Ressourcen vorhanden, mit dem SMART System verbunden werden. Sobald die Daten verbunden wurden, kann über einen allgemeinen Dino Handle auf sie zugegriffen werden. 5.6.1 Kurzbeschreibung der Module Die wichtigsten Module einer SMART Plattform sind in Abbildung 5.5 dargestellt. Jedes Modul ist für definierte Teilaufgaben verantwortlich. Diese Teilaufgaben werden hier nun kurz zusammengefasst: User Interface Agent (1) Über den User Interface Agent kommuniziert der Benutzer mit dem System. Es wird ein graphisches Interface bereitgestellt. Zusätzlich dient das graphische Interface als Basis Frame auf dem die graphischen Interfaces der Agenten dargestellt werden. Somit kann der Benutzer „seine” angeforderten Agenten direkt konfigurieren und verwalten. Seite 80 Admin Tool (2) Über das Admin Tool kann ein Benutzer mit Administratorrechten die SMART Plattform verwalten. Sowohl Agenten, Komponenten, Thesaurus und Userdaten können verwaltet und verändert werden. FIPA Gateway (3) Das FIPA Gateway ist für das Routing von FIPA-ACL Nachrichten in das SMART System bzw. aus dem SMART System verantwortlich. User Assistant (4) Loggt sich ein Benutzer in die SMART Plattform ein, so wird für ihn ein User Assistent instanziert. Dieser hat die Aufgabe die Verwaltung von User Daten und User Profilen zu erleichtern. Zusätzlich speichert der User Assistent die Handles aller, vom jeweiligen Benutzer angeforderten, Agenten. Agent Finder (5) Formuliert ein Benutzer eine Aufgabe so wird eine Anfrage an den Agent Finder gesendet. Der Agent Finder stellt dafür ein graphisches Interface zur Verfügung, das im User Interface Agent dargestellt wird. Der User hat die Möglichkeit die Aufgabe auf drei verschiedene Arten zu formulieren. Die Anfrage kann in Form eines natürlichen Satzes (Verb, Objekt, Subjekt), in Kategorien (Funktion, Resource, Mode..) oder durch einen boolschen Ausdruck ausgedrückt werden. Über einen Thesaurus wird versucht die Begriffe zu verstehen und über die Komponentendatenbank (Componentbase) oder Agentendatenbank (Agentbase) werden entsprechende Agenten gefunden. Service Factory (6) Im Dino System werden die graphischen Interfaces der Knoten separat gespeichert und verwaltet. Sie werden als „Services” bezeichnet. Die Service Factory ist eine zentrale Anlaufstelle im System, über die sämtliche Services, der im Dino System erreichbaren Knoten, angefordert werden können. Jedes Service besitzt einen Namen und steht mit einem bestimmten Knoten in Verbindung. Nach Angabe des Namens und des entsprechenden Handles wird das Service instantiiert und die Instanz wird an den „Kunden” weitergereicht. Als Kunden treten Sinnvollerweise Komponenten auf, die direkt mit dem User interagieren (User Interface Agent, Admin Tool). System Manager (7) Der System Manager kümmert sich um die Verwaltung der Ressourcen. Dadurch wird die Anzahl der laufenden Agenten kontrolliert. Der zur Verfügung stehende Speicher und die Rechenzeit wird verwaltet (Scheduling der Agenten, Starten und Stoppen der Agenten). External Agent Manager (8) Der External Agent Manager kümmert sich um die Verwaltung der Stellvertreter (External Agent Deputy) externer Agenten im SMART System. Jeder externe (nicht im SMART System) Agent erhält in der SMART Plattform einen Stellvertreter. Über diesen Stellvertreter können externe Agenten von internen angesprochen werden. Nachrichten werden über den Stellvertreter und über das FIPA Gateway zum externen Agenten geroutet. Seite 81 Kapitel 5 SMART Abbildung 5.5: Die SMART Plattform [Kernbauer 1999] Seite 82 User Manager (9) Der User Manager verwaltet die Benutzer und Administratoren des Systems (Anlegen und Löschen von Benutzern). Internal Agent Manager (10) Die Hauptaufgabe des Internal Agent Managers ist die Verwaltung der internen Agenten d.h. Agenten installieren (initialisieren) und Agenten löschen. Die „Lebenszeit” von Agenten wird überwacht und Konfigurationen von angeforderten Agenten werden in der Agentbase gespeichert. Assessment Manager (11) Der Assessment Manager ist für die Verwaltung von internen Agenten verantwortlich. Wird ein Agent vom Benutzer oder System bewertet so speichert der SAgent den aktuellen Wert. Die Bewertungen der einzelnen Agenten werden durch den Assessment Manager abgeholt und in die Agentbase gespeichert. Die Bewertungslogik im Assessment Manager und im SAgent kann als Plug-In global nachgeladen werden. Plug-In Handler (12) Bewertungsstrategien oder auch Kommunikationsprotokolle können in das System als Plug-In implementiert werden. Die installierbaren Plug-In’s werden durch den Plug-In Handler verwaltet. SAgent (13,14,15) SAgenten bilden die eigentliche Funktionalität des SMART Systems. Jegliche Funktion des Systems, abgesehen von Kontroll- und Verwaltungsaufgaben, werden durch SAgenten ermöglicht. SAgenten werden dynamisch auf Anfrage aus Komponenten zusammengefügt und automatisch aus dem System entfernt, wenn sie nicht mehr benötigt werden. Ein SAgent muss mindestens eine Komponente besitzen (funktionelle Komponente), die die zentrale Funktion des Agenten ermöglicht. Alle weiteren Komponenten erweitern diese Funktionalität (Zugriff auf Resourcen, Timer, etc.). Jedem SAgent wird ein eigener Thread zugewiesen. User Agenten, Staff Agenten und System Agenten besitzen einen identischen Grundaufbau jedoch unterscheiden sie sich in ihren Rechten und Funktionen. User Agenten agieren im Auftrag des Users, System Agenten übernehmen Systemaufgaben und Staff Agenten erledigen Dienste für andere Agenten. External Agent Deputy (16) Soll auf einen Agenten außerhalb des SMART Systems (kein SAgent) zugegriffen werden, so wird auf der Plattform ein Stellvertreter installiert. Über diesen Stellvertreter können externe Agenten so wie SAgenten angesprochen werden. Der External Agent Deputy bildet einen Wrapper und routet die Nachrichten zum externen Agenten weiter. Agentbase Handler (17) Wurden SAgenten erfolgreich im System installiert, so wird deren Beschreibung in der Agentbase gespeichert. Die Beschreibung enthält die Klassennamen der benötigten Komponenten (SDNA - SMART DNA), Meta Daten und den Wert der aktuellen Bewertung. Auf Grund dieser Bewertung entscheidet der Agentfinder über die Installation des beschriebenen Agenten. Componentbase Handler (18) SAgenten werden aus einzelnen Komponenten (SComponents) zusammengefügt. Die Beschreibungen der erreichbaren Komponenten werden in der Componentbase gespeichert. Diese Beschreibung definiert einen Typ und legt auch den Typ jener Komponenten fest, zu denen die Komponente kombinierbar ist. Logging Assistant (19) Der Logging Assistant ist eine zentrale Protokolleinheit. Wünscht eine Komponente das Protokollieren ihrer Tätigkeiten so übergibt sie die Seite 83 Kapitel 5 SMART Logfile Einträge dem Assistant. Der Assistant speichert die Einträge zentral in mehreren Logfiles. Directory Facilitator (20) Der Directory Facilitator ermöglicht einen „Yellow Pages” Dienst für installierte Agenten. Wird ein SAgent im System installiert, so wird ihm ein bestimmter Typ zugeordnet. Sucht nun ein SAgent einen Kommunikationspartner eines bestimmten Typs, so stellt er an den Directory Facilitator eine Anfrage. Dieser antwortet mit einer Liste der in Frage kommenden Agenten (die Handles der Agenten). Thesaurus (21) Der Thesaurus verwaltet sämtliche Begriffe, die vom System verstanden werden. Verknüpfungen zwischen den Begriffen werden geschaffen und wieder gelöst. Wird ein Begriff nicht verstanden, so wird der Benutzer aufgefordert Synonyme für diesen Begriff einzugeben. 5.7 SMART Konzepte Das SMART System zeichnet sich durch eine Reihe von Konzepten aus, die dem System Dynamik und Offenheit ermöglicht. Ein besonderes Merkmal von SMART ist dessen Anpassungsfähigkeit. Das System kann, je nach Anforderungen, seine Funktionalität verändern und stellt sich selbst auf neue Umweltbedingungen und Situationen ein. 5.7.1 SMART Agent (SAgent) Die wichtigsten Elemente des SMART Systems sind die SMART Agenten (SAgenten). Die SAgenten geben dem SMART System Funktionalität und Dynamik. Die vom User gestellten Aufgaben werden von SAgenten erfüllt und von ihnen ist die Qualität des Gesamtsystems abhängig. SAgenten agieren im SMART System, sie können ohne das System nicht existieren. SMART kümmert sich um die Verwaltung und Organisation der SAgenten. SMART Agenten sind sehr dynamische Elemente. Sie bestehen aus Komponenten die nach Bedarf kombiniert werden. Erst wenn SAgenten benötigt werden, werden sie erzeugt und installiert. Wird ihre Funktion nicht mehr benötigt, so werden sie automatisch aus dem System entfernt. Ihre Struktur und ihre spezielle Kombination geht jedoch niemals verloren, denn sie wird mit der Anfrage, die zu seiner Installation führte, in einer Datenbank gespeichert. Die Speicherung erfolgt in Form einer Beschreibung, die die Namen der Komponenten (SDNA - SMART DNA, in Anlehnung an das biologische Vorbild), die Anfrage, eine Bewertung und diverse Meta-Daten enthält. Über die SDNA sind sämtliche, jemals installierte, Agenten wieder reproduzierbar. SAgenten werden im SMART System als Dino Knoten (DAnt - Dino Ant) installiert und sind über dessen Handle erreichbar. Der gesamte SAgent, mit seinen Komponenten wird als Logical Context in den Dino Knoten eingebunden. Sie müssen daher das nötige Interface implementieren (implements DAntLogicalContext). Im Aufbau (siehe Abbildung 5.6) bestehen SAgenten aus einer SAgent-Hülle und aus Komponenten (SComponents), die in diese „Hülle” installiert werden. Die SAgent-Hülle stellt einen grundsätzlichen SAgent dar, der für die Kombination und Verwaltung seiner Seite 84 Komponenten verantwortlich ist. Die SAgent-Hülle besitzt keine Agentenfunktionalität, ist für alle SAgenten gleich und wird vom SMART System zur Verfügung gestellt. Die Hülle agiert als Postfach für Agentenmessages und stellt Methoden bereit, über die Komponenten mit dem System kommunizieren können (User/FIPA Messages versenden, Anfrage an Internal Agent Manager, Query an Directory Facilitator, etc.) und über die das SMART System den Agenten steuert (Starten/Stoppen des Agenten, Zugriff auf Komponenten). Abbildung 5.6: Der SAgent Wrapper [Kernbauer 1999] In der Hülle läuft ein allgemeiner Thread, der mit jedem Durchlauf einen HeartbeatEvent versendet. Komponenten können sich über die Methode addHeartbeat() als HeartbeatListener eintragen. Sie müssen dazu lediglich die Methode doHeartbeat(HeartbeatEvent e) implementieren, die mit jedem Durchlauf des Threads aufgerufen wird. Über diesen Ansatz wird Thread-Funktionalität an die Komponenten weitergereicht und müssen daher keinen eigenen Thread (bzw. dürfen nicht, da Java Threads sehr viele Ressourcen benötigen.) installieren. Auf die Methoden des SAgenten und seiner Komponenten wird über einen Wrapper (SAgentWrapper) zugegriffen. Der Wrapper muss das Interface DLogicalContextWrapper implementieren und kann über den Dino Knoten angefordert werden. Der Wrapper kann auch über das Netz angefordert werden (implements Serializable) und ermöglicht daher einen „Remote-Zugriff” auf die Methoden des SAgenten. (Um „remote” Seite 85 Kapitel 5 SMART auf Methoden zuzugreifen müssen eigene DMethod Objekte erzeugt werden, die die Funktionalität der Methoden kapseln und über die die Methoden aufgerufen werden.) Auch das graphische Interface des SAgenten und seiner Komponenten kann über den Dino Knoten angefordert werden und ermöglicht dem Benutzer die Kommunikation mit dem Agenten. Der Zugriff des graphischen Interface auf die Methoden des Agenten erfolgt über den Wrapper des Agenten. Durch diesen Ansatz ist eine örtliche Trennung zwischen graphischem Interface und Funktionalität möglich d.h. das Interface kann im User Interface Agent lokal dargestellt werden, obwohl der Agent auf einem anderen Host im Netz läuft. In einem Dino Knoten können auch Properties (DProperties) gespeichert werden. Diese Möglichkeit wird auch im SMART System genutzt, indem verschiedene Metadaten (Bewertung, Name) als DProperty in den Dino Knoten gespeichert werden. Der Assessment Manager, der Internal Agent Manager und andere Systemteile greifen auf diese Properties zu, um Berechnungen durchzuführen und um Einstellungen vorzunehmen. 5.7.2 Kommunikation zwischen Agenten SMART Agenten (bzw. deren Komponenten) können auf zwei Arten kommunizieren. Zum einen können sie über den Dino Knoten den Wrapper (SAgentWrapper) des Kommunikationspartners anfordern. Über den SAgentWrapper kann auf die Methoden des Agenten und seiner Komponenten zugegriffen werden (siehe Abbildung 5.6). Der Zugriff auf die Methoden des Kommunikationspartners ist ein sehr einfacher Mechanismus, der jedoch einen großen Nachteil in sich birgt. Es kann nämlich nur sinnvoll auf die Methoden eines Agenten zugegriffen werden, wenn sie erstens bekannt sind und zweitens deren Aufgabe klar ist. Java ermöglicht zwar einen Mechanismus über den die Namen der Methoden und die Properties einer Klasse erfahrbar sind und wodurch der technische Zugriff auf unbekannte Klassen möglich ist, jedoch muss trotzdem der Zweck der einzelnen Methoden bekannt sein, um sie sinnvoll verwenden zu können. Neben dem simplen Methodenaufruf können SMART Agenten auch durch Austausch von FIPA-ACL Messages kommunizieren. Da durch Dino in einem verteilten System Java Objekte ausgetauscht werden können, wird die Messagekommunikation stark vereinfacht. Es werden FIPA-ACL Objekte versandt, wodurch das Parsing der Messages größtenteils entfällt. Soll eine Message versandt werden, so wird am SAgentWrapper des Zielagenten eine receiveMessage(fipaacl) Methode aufgerufen und das FIPA-ACL Objekt übergeben. Das Messageobjekt kann im SAgenten von der zuständigen Komponente ausgelesen werden. Will eine Komponenete eine Message versenden, so ruft sie im SAgent die Methode sendMessage(fipaacl) auf, worauf die Message zum Kommunikationspartner gesendet wird. Durch Messagekommunikation ist Wissensaustausch auf höchster Ebene möglich. Es können hoch entwickelte Kommunikationsprotokolle verwendet werden. Im Prinzip ist über FIPA-ACL eine Kommunikation möglich, die der menschlichen Kommunikation entspricht. Im Gegensatz zum reinen Methodenaufruf müssen sich in der Messaging Kommunikation die beiden Kommunikationspartner nicht so genau kennen (Wissen über die einzelnen Methoden, etc.), sondern sie müssen sich nur über das Protokoll, die Seite 86 Contentsprache (Im Content-Feld einer FIPA-ACL Message kann jede Sprache verwendet werden) und die Ontologie einigen. 5.7.3 Mobilität von Agenten SMART Agenten werden als Knoten in den Dino Adressraum eingefügt. Nachdem sich der Dino Adressraum sehr stark an das Vorbild des UNIX Verzeichnisbaumes hält, sind auch dieselben Strukturoperationen möglich. Knoten können kopiert, verschoben und gelöscht werden. Verzeichnisse können angelegt und symbolische Links gesetzt werden. Der Adressraum kann sich über verschiedene Plattformen erstrecken. Somit bleiben die Strukturoperationen über Plattformgrenzen hinweg konstant. Das Bewegen eines Agenten auf eine andere Plattform reduziert sich somit auf eine einfache Move Strukturoperation. Um die Operation durchführen zu können, muss die Zielplattform mit dem SMART System verbunden werden und der Agent muss vollständig serialisierbar sein. Die Java Objekte im Dino System werden über den Java Serialisier-Mechanismus verschoben (Ein Objekt wird serialisiert, der entstandene Byte Stream wird über das Netz kopiert und in der virtuellen Maschine der Zielplattform wird das Objekt rekonstruiert). 5.7.4 SMART Komponenten Die gesamte Agentenfunktionalität von SAgenten wird aus Komponenten (SComponents) zusammengesetzt. Die Komponenten können nach dem Bausteinprinzip kombiniert werden (siehe Abbildung 5.6), wobei Kombination bestimmten Regeln unterworfen ist. So werden in SMART zwei verschiedene Typen von Komponenten unterschieden, die unter bestimmten Bedingungen kombinierbar sind: Zentrale Komponenten: Zentrale Komponenten („Functional Components”) beinhalten die wesentliche Funktion des Agenten und deshalb benötigt jeder SAgent mindestens eine zentrale Komponente. Diese Komponente ist für die gesamte Logik und Koordination der übrigen Komponenten (falls vorhanden) innerhalb eines Agenten verantwortlich. Optionale Komponenten: Optionale Komponenten erweitern die Funktion der zentralen Komponenten. In SMART werden verschiedene Typen von optionalen Komponenten unterschieden: „Object Components” definieren das Objekt, auf das die Funktion angewendet werden soll. So könnte die vom User gestellte Aufgabe „search Car” von zwei Komponenten erfüllt werden. Der Ausdruck „search” würde durch eine „Functional Component” erfüllt werden und „Car” würde durch eine „Object Component” definiert werden. Im Zusammenspiel der beiden Komponenten entsteht ein Suchagent, der ein Auto sucht. _ Über eine „Resource Component” erhalten SAgenten das jeweilige Wissen, um auf Resourcen zugreifen zu können. Eine „Mode Component” definiert den Modus der Aktion. Eine Suchfunktion kann schnell oder gründlich durchgeführt werden. Die nötige Logik kann durch diesen Komponententyp ermöglicht werden. Seite 87 Kapitel 5 SMART Die „Time Component” ist für die zeitgemäße Steuerung des Agenten verantwortlich. Sie legt fest, wann ein Agent welche Funktion durchführen soll. Die vier Typen von optionalen Komponenten bilden eine Grundmenge die durch neue Typen erweitert und ergänzt werden kann. Neben der logischen Typisierung werden SMART Komponenten zusätzlich nach Themen gruppiert. Die Gruppierung erfolgt hierarchisch, wodurch eine Verschmelzung von Subtypen möglich ist. Als Vorbild für die SMART Gruppierung diente die „MIMEType” Typisierung aus dem Internet. So werden zum Beispiel durch den Typ function/commerce/buy Functional Components bezeichnet, die sich mit dem Kaufen von Waren beschäftigen. Nachdem im SMART System verschiedene Typen von Agenten existieren (User Agent, System Agent, Staff Agent), die jeweils ein unterschiedliches Aufgabenfeld besitzen kann auch dieses Aufgabenfeld in den Typ der Komponenten kodiert werden. Eine Komponente mit dem Typ function/user/commerce/buy ist eine Functional Component, die in einem Useragenten verwendet wird. Im Gegensatz dazu wird eine Komponente mit dem Typ function/system/commerce/marketplace von Systemagenten eingesetzt um einen virtuellen Marktplatz aufzubauen. Programmtechnisch erben alle Komponenten von einer SComponent - Grundklasse und müssen einige Grundmethoden implementieren um in einen SAgenten eingebunden zu werden: Die Methode getType() definiert den Typ der Komponente. Die Methode getNeeds() definiert jenen Typ der Komponenten, zu denen die Komponente kombinierbar ist. Die Methode getKeywords() beschreibt mit einigen Schlüsselwörtern die Funktion der Komponente. Diese Schlüsselwörter werden im SMART System vom Agent Finder verwendet, um die zu einer Benutzeranfrage passenden Komponenten zu finden. 5.7.5 SMART Componentbase In der „SMART Componentbase” wird die Menge der verfügbaren Komponenten verwaltet. Die Speicherung erfolgt in Form einer Komponentenbeschreibung („SComponentDescription”). Die Beschreibung enthält neben Typ, Schlüsselwörtern und einer allgemeinen Beschreibung auch eine Komponentenbewertung. Nachdem für den Erfolg der SMART Agenten im SMART System hauptsächlich die Komponenten verantwortlich sind, wird die Bewertung des Agenten auf die enthaltenen Komponenten zurückgerechnet. Die Bewertung wird durch den Assessment Manager in der Componentbase gespeichert. Wird ein neuer SMART Agent erstellt, so dient die Bewertung als Entscheidungsgrundlage für die Auswahl der passenden Komponenten. Komponenten mit einer höheren Bewertung werden gegenüber anderen Komponenten bevorzugt. Seite 88 5.7.6 SMART Agentbase Nach der Installation eines SMART Agenten wird die neu erstellte Kombination von Komponenten in der „SMART Agentbase” gespeichert. Wie die Komponenten in der Componentbase werden auch die Agenten in der Agentbase durch ein Beschreibungsobjekt („SAgent-Description“) repräsentiert. In der Beschreibung ist die Bewertung des Agenten und die Benutzeranfrage, die zu seiner Erstellung führte, gespeichert. Wichtigster Bestandteil der Beschreibung ist die „DNA” des Agenten d.h. die Beschreibung der Kombination von Komponenten, aus denen der Agent besteht. Die Beschreibung wird in Anlehnung an das biologische Vorbild als SMART-DNA (SDNA) bezeichnet. Die SDNA enthält Package- und Klassennamen jener Komponenten aus denen der Agent kombiniert wurde. Über die SDNA ist der Agent jederzeit reproduzierbar. 5.7.7 SMART Bewertung SMART ist ein adaptives Agentensystem, das sich an die Bedürfnisse des Benutzers anpasst. Die Anpassung wird im SMART System durch einen doppelten Auswahl- und Bewertungsmechanismus erreicht. Ziel der Bewertungsmechanismen ist die Optimierung der dynamischen Elemente (SAgenten) des Systems. Nur jene Agenten, die den Anforderungen am besten entsprechen, sollen im System erhalten bleiben. Agenten die sich nicht bewähren, sollen aus dem System entfernt werden. Der Optimierungsprozess soll ständig aufrechterhalten werden, wodurch das Gesamtsystem ein dynamisches Verhalten erfährt. Werden an das Gesamtsystem neue Anfragen gestellt, so werden die nötigen Agenten installiert, andere, die den Anforderungen nicht mehr entsprechen, werden deinstalliert. Die Gesamtbewertung stützt sich auf zwei parallele Bewertungsmechanismen: Bewertung durch den Benutzer Die Grundidee der Bewertung durch den User ist die Bildung einer Feedback Schleife, über die die Meinung des Benutzers in das System einfließt. Der Benutzer ist aufgefordert „seine” Agenten zu bewerten. Der Agent kann während der Erfüllung seiner Aufgabe bewertet werden. Spätestens nach der Erfüllung der Aufgabe und vor der Deinstallation wird der Benutzer aufgefordert den Agenten zu bewerten. Interne Bewertung SMART Agenten können die Dienste anderer SMART Agenten in Anspruch nehmen. Somit tritt ein Agent als „Benutzer” eines anderen Agenten auf. Grundsätzlich können die Dienste jedes SMART Agenten von einem anderen Agenten in Anspruch genommen werden. Der „Typus” des Agenten definiert auch seinen Kundenkreis. User Agenten und System Agenten stellen ihre Dienste sowohl Benutzern, wie auch Agenten zur Verfügung, Staff Agenten handeln nur im Auftrag anderer Agenten und können nicht von einem Benutzer angefordert werden. Die Bewertung zwischen den Agenten wird auf Basis der Anfragen möglich. Agenten, die viele Anfragen von anderen Agenten erhalten sind offensichtlich „beliebter” als Agenten, an die weniger Anfragen gestellt werden. Zusätzlich muss noch unterschieden werden, welcher Art die Anfragen sind und ob die Anfragen zu positiven oder negativen Ergebnissen führten. Die interne Bewertung wird durch die möglichen Sonderfälle ein sehr schwieriger und fehlerbehafteter Vorgang. Jedoch ist eine interne Bewertung Seite 89 Kapitel 5 SMART notwendig um eine konsistente Bewertung des Gesamtsystems zu erreichen. Die Bewertungen werden als Property im Dino Knoten des Agenten gespeichert und nach Bedarf bzw. vor der Deinstallation durch den Assessment Manager ausgelesen und in der Agentbase gespeichert. Da für den Erfolg eines Agenten nicht nur die richtige Kombination von Komponenten ausschlaggebend ist, sondern auch die Komponenten selbst einen wesentlichen Teil beitragen, wird die Bewertung auch auf die Komponenten umgerechnet und in den Beschreibungen der Komponenten in der Componentbase gespeichert. Die Bewertungslogik im Assessment Manager und im SAgent wird durch Bewertungsklassen ermöglicht, die nach einem „Plug-In” Mechanismus austauschbar sind. Der Administrator kann über die „Plug-In Base” jederzeit eine andere Bewertungslogik auswählen und installieren. 5.7.8 User Interaktion Der Benutzer kommuniziert über den User Interface Agent oder über das Admin Tool mit dem SMART System. Im graphischen Interface dieser Client-Programme werden auch die graphischen Interfaces (GUI - Graphical User Interface) der einzelnen Agenten dargestellt. Über das GUI des Agenten kann der Benutzer den Agenten konfigurieren und mit dem Agenten kommunizieren. Rückmeldungen und die Ergebnisse der Agenten erhält der User in Form einer Nachricht (SUsermessage). Die Nachrichten können über den User Interface Agenten gelesen und auch im lokalen System gespeichert werden. Dies ist die Grundkonfiguration des SMART Systems. Die Grundkonfiguration kann durch Systemagenten erweitert werden, vor allem aber komfortabler gestaltet werden. Ein „Mail” System Agent könnte die Nachricht als Email versenden oder ein „Web-Server” System Agent könnte die Nachricht auf einem Webserver in Form eines HTML Files speichern, wodurch die Rückmeldung mit einem normale WebBrowser gelesen werden kann. 5.8 Zusammenfassung Ziel von SMART ist es, eine allgemeine Infrastruktur zur Realisierung von Multiagentensystemen zu schaffen, die nicht an bestimmte Anwendungsdomänen gebunden sind. Als Bausteine zur Entwicklung dienten die Programmiersprache Java und das am IICM Graz entwickelte Framework „Dino”. Die SMART Plattform, stellt ein verteiltes System dar in dem sowohl mobile, als auch statische Agenten agieren können. Die Plattform schafft eine Runtime-Umgebung für SMART-Agenten, und Agenten können verwaltet werden. Im Wesentlichen besteht die Plattform aus einer Dino-Struktur über die Agenten und externe Systeme (WWW, Hyperwave Server, Datenbanken, xFIND, etc.) adressiert werden können. Jeder Agent im System besitzt einen eigenen Thread, dadurch laufen sie selbständig und können jederzeit gestoppt werden. Strukturell bestehen Agenten aus Komponenten, aus denen sie zur Laufzeit zusammengefügt werden. Der User kommuniziert mit dem System über einen eigenen User-Agenten. Der User-Agent ist auf dem Rechner des Anwenders installiert und stellt ihm ein graphisches Interface zur Verfügung, dass es ihm Seite 90 ermöglicht seine Agenten zu verwalten. Auch Agenten stellen dem User ein graphisches Interface zur Verfügung über das sie konfiguriert werden können. Nach Erledigung seiner Aufgabe kann der Agent vom Benutzer bewertet werden. Die Bewertung wird auf die Komponenten des Agenten weitergegeben und beeinflusst damit die zukünftige Auswahl der Komponenten. Verwaltet und konfiguriert wird das Gesamtsystem über ein eigenes Administratorinterface. Ein Administrator kann Benutzerrechte verwalten, Agenten überwachen und Komponenten einspielen. Durch den Komponentenansatz bleibt das System erweiterbar und flexibel. Werden neue Komponenten eingebracht können Agenten mit neuen Fähigkeiten ausgestattet werden. Komponenten, die nicht mehr benötigt werden, können aus dem System entfernt werden. Die Erweiterbarkeit und Zugriffsmöglichkeiten im System sind streng geregelt. Interfaces auf externe Systeme werden über die Agentenplattform ermöglicht (Dino). So können selbst Agenten nur über diese Schnittstellen mit der „Außenwelt” kommunizieren. Die hier erläuterten Konzepte wurden, wie schon einleitend erwähnt gemeinsam mit Stefan Kernbauer in einer ersten Version prototypisch implementiert. Eine umfassendere Beschreibung dieses Prototyps ist aus dessen Diplomarbeit [Kernbauer 1999] zu entnehmen. Dort sind unter anderem auch die Software Requirement Specification und die Software Engineering Specification zu finden, die zur Implementierung des SMART Prototypen verwendet wurden. Der SMART-Prototyp stellt nur eine Basiskonfiguration dar, die erst durch das hinzufügen von Komponenten und Agenten zum „Leben“ erwacht. Um die Funktionsweise des SMART Prototypen zu zeigen, und die Vorgehensweise bei der Implementierung von SMART-Komponenten und –Agenten zu verdeutlichen wird im folgenden Kapitel ein einfaches Agenten-Szenario entworfen, und dessen Umsetzung beschrieben. Seite 91 Kapitel 6 Ein einfacher Informationsagent für SMART Kapitel 6 6 Ein einfacher Informationsagent für die SMART Agenten Plattform Das folgende Kapitel beschreibt nun wie Agenten für die SMART-Plattform programmiert, und in die SMART Umgebung integriert werden können. Dazu wird ein einfaches Beispielszenario entworfen, in dem ein Agent mit dem am IICM entwickelten xFIND Suchsystem kommuniziert. Das vordergründigste Ziel dieses Kapitels ist es den Ablauf und die Vorgehensweise bei der Umsetzung eines „SMART-Projekts“ zu dokumentieren, des Weiteren sollten Erkenntnisse darüber gewonnen werden, ob sich die im SMART-Prototypen umgesetzten Konzepte auch in der Praxis bewähren. Der Funktionsumfang wurde dabei bewusst kurz gehalten, da bereits in die Entwicklung des SMART-Prototypen viel Zeit investiert wurde. Um einen technischen Einblick in das xFIND Suchsystem zu bekommen folgt zunächst eine kurze Beschreibung dieses Systems. 6.1 Das xFind Suchsystem xFIND steht für Extended Framework for Information Discovery und wird in erster Linie zur modernen Wissensauffindung in verteilten Umgebungen eingesetzt. xFIND ist aufgrund des Einsatzes von Java (das UI ist in Perl bzw. PHP umgesetzt) plattformunabhängig. Durch die Bewertung der Suchergebnisse mit Qualitätsaspekten oder Merkmalen wie z.B. die Zuverlässigkeit einer Informationsquelle wird die Ergebnismenge eingeschränkt und damit kann von xFIND eine sehr hohe Treffergenauigkeit erzielt werden. [Gütl 2002] Die xFIND Architektur setzt sich im Wesentlichen zusammen aus Gatherer, Indexer und Broker. Um die Übertragung der Daten zwischen den Modulen möglichst effizient betreiben zu können, wird ein eigens entwickeltes Übertragungs-Protokoll und Datenaustauschformat xQCF (xFIND Query Communication Format) eingesetzt. In Abbildung 6.1 ist die verteilte hierarchische Architektur des xFIND Suchsystems grafisch dargestellt. Gatherer können direkt (Local) oder Remote auf die Datenbestände zugreifen. Indexer können ihre Informationen von mehreren Gatherer beziehen. Broker nehmen Suchanfragen entgegen und greifen ihrerseits wiederum auf die Daten verschiedener Indexer zu. [Gütl 2002] Seite 92 Abbildung 6.1:Verteilte Architektur des xFIND Suchsystems [Gütl 2002] Aus Sicht von xFIND gilt der Indexer als Schnittstelle zwischen den Informationsbrokern und den Gatherern. Der Indexer verarbeitet die von einem Gatherer zur Verfügung gestellten SOIF-Objekte36, indiziert diese und legt die indizierten Daten in einer Datenbank ab (z.B. MySQL, PostGres, Oracle). Der Indexer wertet die Suchanfragen im xQCF Format der Broker aus. Die xFIND Suche unterstützt herkömmliche SuchFunktionen, wie Volltextsuche, Ähnlichkeits-erkennung oder Schlüsselwortsuche. Zusätzlich kann aber auch nach den beschreibenden Metainformationen gesucht bzw. die verschiedenen Suchen miteinander verknüpft werden. Dem entsprechend werden bei der Darstellung der Suchergebnisse auch diese zusätzlichen Metainformationen mit angezeigt. [Gütl 2002] Der Broker nimmt die Suchanfragen der Benutzer entgegen und leitet diese an einen oder mehrere Indexer weiter. Die erhaltenen Resultate werden gesammelt, gecached, entsprechend zur Ausgabe aufbereitet und zum Client zurückgeschickt. Die Suchanfragen der Clients werden vom Broker in das xQCF-Format umgesetzt und in dieser Form als Anfrage an die Indexer weitergeleitet. [Gütl 2002] [Lackner 2004] Die Kommunikation zwischen den verschiedenen xFIND-Modulen wird über Java TCP/IP Socket Verbindungen (XFSocket) durchgeführt. Auf diesem TCP/IP Socket wird ein eigens definiertes Transportprotokoll aufgesetzt. Jedes Modul in xFIND muss eigens einen Client und Server starten, um miteinander kommunizieren zu können. So startet z.B. der Gatherer über die Klasse XFGathererCommunication den Gatherer-Server, um Requests vom xFIND Indexer-Client entgegen nehmen zu können. Der xFIND Indexer startet hingegen mit der Klasse XFIndexGathererClient die Kommunikationsschnittstelle am Indexer. Der Indexer schickt eine Such-Anfrage im xQCF-Format an den Gatherer. 36 SOIF: Das Harvest Summary Object Interchange Format besteht aus Attribut-Wert Paaren, die aus dem Textinhalt der Daten extrahiert werden. Seite 93 Kapitel 6 Ein einfacher Informationsagent für SMART Der Gatherer extrahiert resultierend der Suchanfrage die entsprechenden Daten aus seiner internen Datenbank. Die Kommunikation zwischen xFIND Broker und xFIND Indexer erfolgt auf ähnliche Weise. Der Broker startet einen Client über die Klasse XFIndexerQuery. Auf der Indexer Seite wird der entsprechende Server über die Klasse XFIndexerSearchQueryComm erzeugt. Da bei dieser Kommunikation keine zusätzlichen Transformationen stattfinden besteht der Datenaustausch hauptsächlich aus verschiedenen xQCF Datenpaketen. [Lackner 2004] Im folgenden Beispielszenario wird die Broker-Indexer Kommunikation verwendet. Dabei übernimmt der xFIND Indexer Wrapper Agent (siehe Abschnitt 6.3.1) die Funktion des Brokers. Dieser Kommuniziert mit einem xFIND Indexer über eine XFSocket-Verbindung auf einem definierten Port. Ein Vorteil den diese Konstellation mit sich bringt ist, dass keine HTML-Transformationen bei dieser Kommunikation durchgeführt werden, und damit ein HTML-Parsen der Ergebnisliste nicht notwendig ist. 6.2 Das xFind Beispielszenario Das zuvor beschriebene xFIND Suchsystem soll um einen so genannten „Whats New“ Service erweitert werden, der den Benutzer in regelmäßigen Abständen darüber informiert, ob zum Ergebnis einer seiner früheren Anfragen an das xFIND-System, neue Treffer hinzugekommen sind. Dieser Service wird z. B. im Hyperwave Informations System [Hyperwave 2005] angeboten. Das beschriebene Service soll in der SMART Plattform umgesetzt werden. Anforderungen Die SMART-Plattform braucht eine Verbindung zum xFIND Suchsystem, über die Suchanfragen gestellt, und Ergebnisse entgegengenommen werden können. Sowohl die Suchanfragen, als auch die Ergebnisse müssen in geeigneter Weise im SMART-System gespeichert werden können, damit eine spätere Wiederholung der Suchanfrage und ein Vergleich der Ergebnisse möglich sind. Natürlich muss auch der Benutzer Zugriff auf die gespeicherten Daten haben. Die zeitlichen Abstände in denen die Suchanfragen wiederholt und deren Ergebnisse miteinander verglichen werden, sollen für den Benutzer konfigurierbar sein. Der Benutzer muss gegebenenfalls über Änderungen informiert werden. Die Schrittweise Umsetzung dieses Szenarios wird nun in den folgenden Unterkapiteln kurz beschrieben. 6.3 Beteiligte Agenten Die Umsetzung der oben genannten Anforderungen kann natürlich auf vielerlei Arten erfolgen. Beispielsweise könnte die gesamte Funktionalität in einem einzelnen SmartAgenten vereinigt sein, doch dies widerspricht dem Agentenansatz. Vielmehr sollten die Aufgaben und Fähigkeiten an mehrere spezialisierte Agenten verteilt werden, die dann gemeinsam den geforderten Service erbringen. Für die Zwecke dieser vorliegenden Arbeit soll der „Whats New“ Service mittels zwei verschiedenen Agententypen, nämlich Seite 94 einem „xFIND Indexer Wrapper“ Agenten und einem „What’s New“ Agenten umgesetzt werden. Der xFIND Indexer, dient als Kommunikationsschnittstelle zum xFIND Suchsystem. Die Kommunikationsbeziehungen der Beteiligen Module sind in Abbildung 6-2 dargestellt. Bei der Kommunikation zwischen den beteiligten Agenten und dem xFIND Indexer werden im Wesentlichen xQCF Datenpakete ausgetauscht. What’s New Agent xFIND Indexer Wrapper Agent xFIND Indexer Abbildung 6.2: Die Kommunikationsbeziehungen im xFIND Beispielszenario Die Beschreibung Aufgaben der Agenten werden in den folgenden Unterkapiteln kurz beschrieben. 6.3.1 Der xFIND Indexer Wrapper Agent Die Hauptaufgaben dieses Agenten sind, die Kommunikation mit dem xFIND Indexer aufzubauen, eine Suchanfrage vom What’s New Agenten an den xFIND Indexer weiterzuleiten, das Suchergebnis vom xFIND Indexer entgegenzunehmen und an den What’s New Agenten zurückzuliefern. Dieser Agent benötigt lediglich ein einfaches Userinterface mit dem der Hostnamen und die Portnummer für die Kommunikation mit dem xFIND Indexer konfiguriert werden. Die Kommunikation findet über eine XFSocketverbindung statt und erfolgt mittels Austausch von xQCF Datenpaketen (siehe Abschnitt 6.1). Um die, für diesen Agenten benötigten Komponenten definieren zu können, ist es zunächst von Vorteil, das Komponentenmodell von SMART genauer zu betrachten. Das Komponentenmodell von SMART Der SMART Agentenansatz sieht vor, dass Agenten aus mehreren Komponenten bestehen (siehe Abbildung 5.6). Manche Komponenten (Functional Components) können nur in einem Agententyp verwendet werden, andere Komponenten (Object-, Ressource-, Mode- und Time-Komponenten) können als Zusatzkomponenten in mehreren Agententypen verwendet werden. Im SMART Prototypen muss ein Agent zumindest über eine Funktionelle Komponente (Functional Component) verfügen, alle anderen Komponententypen sind optional. Programmtechnisch leiten sich alle Komponenten von der generellen SMART Component Klasse (SComponent) bzw. von den davon abgeleiteteten Spezialklassen (SFunctionComponent, SObjectComponent, SResourceComponent, SModeComponent, Seite 95 Kapitel 6 Ein einfacher Informationsagent für SMART STimeComponent) ab. Nachdem Smart Agenten als Knoten in den Dino Adressraum eingefügt werden, müssen sie das Dino Interface DAntLogicalContext implementieren. Um den Anforderungen des DAntLogicalContext Interfaces zu entsprechen, müssen die Komponenten sämtliche geforderten Methoden implementieren (getLogicalContext(), getServices(), getMethods(), etc.). Um als SMART Komponente eingesetzt werden zu können, müssen die Komponenten noch zusätzlich die Methoden getType(), getNeed() und getKeywords() implementieren. Neben diesen generellen Methoden besitzen SMART Komponenten noch Methoden, die deren spezielle Funktionen implementieren. Auf die Methoden der Komponenten und Agenten kann im Dino-Adressraum nur über einen so genannten Wrapper zugegriffen werden. Die allgemeinen Methoden eines Agenten werden bereits im SAgentWrapper zur Verfügung gestellt (siehe Abschnitt 5.7.1). Damit auch auf die Methoden der Komponenten zugegriffen werden kann, wird eine zusätzliche Wrapper Klasse zu jeder Komponente benötigt, die das DAntLogicalContextWrapper Interface implementiert. Komponenten können grafische Interfaces anbieten. Diese so genannten „Services“ werden in einem Dino-Knoten separat gespeichert und verwaltet. Für jedes dieser Services muss eine eigene Klasse implementiert werden, die das entsprechende grafische Interface repräsentiert (z.B. einen JFrame mit Eingabefeldern). Um dieses Service von einem Knoten anfordern zu können ist eine zusätzliche Java Klasse erforderlich, die das DAntServiceInfo Interface implementiert. Mit diesen Informationen können nun die benötigten Komponenten und Klassen des xFIND Indexer Wrapper Agenten definiert werden. Benötigte Komponenten für xFIND Indexer Wrapper Agent: Da der xFIND Indexer Wrapper Agent nur als Schnittstelle zu xFIND verwendet wird, und keine zusätzliche Funktionalität besitzt, wird für diesen Agenten eine Funktionelle Komponente ausreichen. Das Graphische Interface dieses Agenten ist sehr einfach, und kann von einem einzigen Dino Service erledigt werden. Für die Umsetzung dieses Agenten wurden vier Java-Klassen implementiert. Die Klasse XFIndexerFunction.java stellt die Methode askQCFIndexer(xQCFQuery) bereit, die die Kommunikation mit dem xFIND Indexer erledigt und das Ergebnis der Anfrage zurückliefert. Zwei weitere Methoden setIndexer() und getIndexer() werden zum Setzen und Auslesen des Hostname und der Portnummer des Kommunikationspartners benötigt. Die Klasse XFIndexerFunctionWrapper.java wird benötigt, um den Zugriff auf die Methoden der Komponente über Dino zu ermöglichen. Eine weitere Klasse XFIndexerFunctionFrame.java implementiert das grafische Interface der Komponente (Dinoservice), einen JInternalFrame mit drei Textfeldern für die Eingabe von Name, Hostname und der Portnummer. Damit dieses Service über Dino angefordert werden kann ist wird die Klasse XFIndexerFunctionFrameServiceInfo.java benötigt. Seite 96 Für genauere Details der Implementierung sei an dieser Stelle auf den Sourcecode, der dieser Arbeit beigelegten CD verwiesen. Nach dem Kompilieren der Java Klassen sind alle Voraussetzungen für die Installation eines Agenten in der SMART-Plattform gegeben. Die Vorgehensweise wird nun an Hand von Screenshots kurz beschrieben. Starten der Plattform Mit dem Shellscript DinoJava dinosaur.smart.platform.Splatform wird die Plattform gestarted (dieses Script fügt die von SMART benötigten Klassenpfade zum normalen Java-Aufruf hinzu). Es erscheint der UserManagerFrame der SMART-Plattform (siehe Abbildung 6.3). Der Usermanager ermöglicht die Userverwaltung (anlegen und löschen von Benutzern), sowie das An- und Abmelden von Benutzern. Abbildung 6.3: Der SMART User Manager Frame Anlegen eines neuen Benutzers In SMART sind zwei Usergruppen vorgesehen, die Gruppe Admin und die Gruppe User. Abbildung 6.4 zeigt den Add User Dialog, mit dem ein neuer User angelegt werden kann. An dieser Stelle soll ein neuer User mit Administratorrechten angelegt werden. Seite 97 Kapitel 6 Ein einfacher Informationsagent für SMART Abbildung 6.4: Der SMART Add User Dialog Einloggen eines Benutzers Abbildung 6.5 zeigt den Login-Dialog, der über das Connection-Menü des UserManagerFrame erreichbar ist. Abbildung 6.5: Der SMART Login Dialog Abhängig von der Gruppenzugehörigkeit des angemeldeten Benutzers ist der Zugang zum SMART-System unterschiedlich. Benutzern die der Admin-Gruppe angehören wird nach dem Einloggen der SMART-ADMIN TOOL-Frame angeboten (siehe Abbildung 6.6). Nur Über diesen Zugang können SMART-Komponenten in die SMARTComponentbase eingespielt werden (siehe das aufgeklappte Menü in Abbildung 6.6). Seite 98 Abbildung 6.6: Das SMART Admin Tool Benutzer der Gruppe User erhalten einen eingeschränkten Zugang zum SMARTSystem über den so genannten SMART USER INTERFACE AGENT (siehe Abbildung 6.7). Sie haben nur Zugriff auf Komponenten und Agenten die mit den Rechten der Gruppe User ausgestattet sind, und dürfen selbst keine Komponenten in die SMARTComponentbase einfügen. Abbildung 6.7: Der SMART USER INTERFACE AGENT Für den weiteren Verlauf dieser Beschreibung muss der Benutzer Administratorrechte besitzen, damit die Komponente des xFIND Indexer Wrapper Agenten in die SMARTComponentbase eingefügt werden kann. Einfügen einer SMART-Komponente in die SMART-Componentbase SMART Komponenten werden beim Einfügen in die Componentbase mit Rechten versehen. Dabei wird zwischen User-, System-, und Staff-Komponenten unterschieden. User-Komponenten müssen über ein entsprechendes Userinterface verfügen (Dino Service). Staff-Komponenten sind Komponenten, die über kein Userinterface verfügen. Bei System-Komponenten spielt dies keine Rolle, diese Komponenten dürfen nur von Seite 99 Kapitel 6 Ein einfacher Informationsagent für SMART Benutzern mit Administratorrechten beim Erstellen von Agenten verwendet werden. Einfügen der xFIND Indexer Wrapper Komponente in die SMART- Componentbase Da es sich bei dieser Komponente um eine Kommunikations-Komponente handelt, die zudem sehr viele Ressourcen benötigt, ist es sinnvoll, diese als System Komponente in die Componentbase einzufügen, damit nicht jeder Benutzer diese unkontrolliert verwenden kann. Dazu wird im SMART-ADMIN TOOL der Menüpunkt ‚Admin system Components’ (siehe Abbildung 6.6) gewählt. Es erscheint der Componentbase systemcomponents-Dialog (siehe Abbildung 6.8). Mit diesem Dialog können alle Systemkomponenten administriert werden (hinzufügen, löschen, editieren). Abbildung 6.8: Der SMART Systemcomponents Dialog Jetzt soll die xFIND-Indexer-Wrapper Komponente eingefügt werden. Dazu wird Add im vorigen Dialog (siehe Abbildung 6.8) gewählt. Es erscheint ein File-Auswahldialog, der die Navigation im Dateisystem auf das Java-Class-File der zu installierenden Komponente ermöglicht (siehe Abbildung 6.9). Seite 100 Abbildung 6.9: Der Choose Class Dialog Ist das entsprechende Class-File gefunden, so wird mit ‚Open’ der Add Component Dialog geöffnet, der in Abbildung 6.10 dargestellt ist. Hier werden sämtliche Metadaten der Komponente visualisiert. Abbildung 6.10: Der Add Component Dialog Durch Drücken des Add-Buttons wird die Komponente in die Componentbase eingefügt, und der Benutzer wird über den Erfolg bzw. Misserfolg mittels Alertfenster Seite 101 Kapitel 6 Ein einfacher Informationsagent für SMART benachrichtigt. Damit ist die Installation der Komponente abgeschlossen. Jetzt kann ein SMART-Systemagent aus dieser Komponente erzeugt werden und zunächst in die SMART-Agentbase eingefügt werden. Die Vorgehensweise wird nachfolgend beschrieben. Einfügen eines Agenten in die SMART-Agentbase Voraussetzung dafür, einen Agenten im SMART-System zu erstellen ist, dass sich bereits geeignete Komponenten in der Componentbase befinden. An dieser Stelle wird vorausgesetzt, dass die, in den vorigen Abschnitten beschriebenen Aktionen bereits durchgeführt wurden, und die Systemkomponente xFIND Indexer Wrapper bereits vorhanden ist. Um den xFIND Indexer Wrapper Agenten in die SMART-Agentbase einzufügen, wird im SMART-ADMIN TOOL-Frame (siehe Abbildung 6.6) der Menüpunkt ‚Agentbase >Admin system Agents’ gewählt. Es öffnet sich der Agentbase systemagents-Dialog (siehe Abbildung 6.11). Dieser Dialog ermöglicht, analog zum Componentbase systemcomponents-Dialog (siehe Abbildung 6.6) die Administration von SMARTSystemagenten. Abbildung 6.11: Der SMART Agentbase Systemagents Dialog Durch klicken des ‚Add’-Buttons öffnet sich der ‚Add Agent to Agentbase Dialog’ (siehe Abbildung 6.12). Mit Hilfe dieses Dialogs kann nun ein Agent aus Komponenten verschiedenen Typs (derzeit stehen 5 Komponententypen zur Auswahl) zusammengestellt werden. Einzige Einschränkung ist, dass eine Funktionelle-Komponente bei jedem Agenten vorhanden sein muss. Seite 102 Abbildung 6.12: Der SMART Add Agent to Agentbase Dialog Der xFIND-Indexer-Wrapper Agenten benötigt lediglich die Funktionelle Systemkomponente die zuvor in die Componentbase eingefügt wurde. Diese Komponente kann durch Betätigen des Buttons ‚Choose Function’, aus dem dabei sich öffnenden Dialog (siehe Abbildung 6.6) ausgewählt werden. Dem Agenten kann nun noch ein aussagekräftigen Name gegeben werden, und durch drücken des Add-Buttons wird er in die SMART-Agentbase eingefügt. Nun hat jeder User mit Administratorrechten die Möglichkeit, einen oder auch mehrere dieser Agenten auf der SMART-Plattform zu installieren. Die Vorgehensweise wird nachfolgend beschrieben. Installation eines xFIND Indexer-Wrapper Agenten in der SMART-Plattform Voraussetzung dafür, einen Agenten in der SMART-Plattform zu installieren ist, dass sich bereits Agenten in der SMART-Agentbase befinden. An dieser Stelle wird vorausgesetzt, dass die, in den vorigen Abschnitten beschriebenen Aktionen bereits durchgeführt wurden, und der Systemagent xFIND Indexer Wrapper Agent bereits vorhanden ist. In SMART existieren mehrere Möglichkeiten Agenten zu installieren. Es kann z. B. eine Suche nach Schlüsselwörtern abgesetzt werden, die dann in der SMART-Agentbase nach Agenten, die diese Schlüsselwörter in ihren Metadaten enthalten sucht, und gegebenenfalls zurückliefert. Diese Vorgehensweise ist aber erst interessant wenn sich dort sehr viele Agenten befinden. An dieser Stelle wird ein direkter Weg zur Installation eines Agenten beschrieben, der diese Suchmöglichkeiten außer Acht lässt. Abbildung 6.7 stellt den SMART-ADMIN TOOL-Frame mit aufgeklappten ‚Find’-Menü dar. Wählt man dort den Menüpunkt ‚Choose from Agentbase Systemagent’, so öffnet sich der Choose from Agentbase Dialog (siehe Abbildung 6.13). In diesem Dialog kann nun ein entsprechender Agent selektiert werden und durch Klicken des ‚Install’-Buttons wird eine Instanz dieses Agenten in die Dino-Hierarchie der SMART-Umgebung eingefügt und gestartet (ein Zwischendialog Seite 103 Kapitel 6 Ein einfacher Informationsagent für SMART ermöglicht dem Benutzer die Eingabe eines bedeutungsvollen Namen für den Agenten). Abbildung 6.13: Der Choose from Agentbase Dialog Die Verwaltung von aktiven Agenten in der SMART-Plattform ist über das MyAgents-Menü im SMART ADMIN TOOL-Frame, möglich. Es öffnet sich der My Agents Dialog (siehe Abbildung 6.14), über den sämtliche installierten Agenten der SMART-Plattfom, starten, stoppen, bewerten und entfernen lassen. Abbildung 6.14: Der My Agents Dialog Seite 104 Um zu den grafischen Interfaces eines Agenten und seiner Komponenten zu gelangen, muss zunächst der Button ‚Show’ im My Agents Dialog betätigt werden. Es erscheint ein generischer Dialog, der für jede Komponente des Agenten, die ein grafisches Interface besitzt eine Schaltfläche anbietet. In diesem Beispiel enthält der Agent nur eine Funktionale Komponente die ein Userinterface anbietet (siehe Abbildung 6.14). Mit einem Klick auf die Schaltfläche wird das grafische Interface der Komponente visualisiert (siehe Abbildung 6.15). Abbildung 6.15: Das xFIND Indexer Wrapper Interface Durch Eingabe der entsprechenden Daten ist der xFIND Indexer Wrapper Agent konfiguriert, und kann nun mit dem xFIND Indexer kommunizieren. 6.3.2 Der What’s New Agent Der What’s New Agent hat mehrere Aufgaben. Er stellt für den Benutzer ein Grafisches Interface zur Verfügung, das ihm Zugang zu verschiedenen Funktionen verschafft, und er muss mit den xFIND Indexer Wrapper Agenten kommunizieren können. Zu den Funktionen die dieses Agenten zählen unter anderem: Abfragen der im SMART System vorhanden xFIND Indexer Wrapper Agenten, durch eine Anfrage beim Directory Facilitator Bereitstellung eines Suchformulars Speichern von Suchanfragen und Ergebnissen Visualisierung von Suchanfragen und Ergebnissen Zeitgesteuertes, wiederholtes ausführen von Suchanfragen Vergleichen von Suchergebnissen Benachrichtigen des Benutzers Die Beschreibung dieses Agenten soll an dieser Stelle kurz gehalten werden. Die Seite 105 Kapitel 6 Ein einfacher Informationsagent für SMART Vorgangsweise bei der Installation entspricht der in den vorangegangenen Unterkapiteln beschriebenen. Der What’s New Agent setzt sich aus einer Funktionalen- und einer TimeKomponente zusammen. Die Timerkomponente erlaubt die eine komfortable Eingabe von verschieden Zeitpunkten und Intervallen. Es können damit tägliche, wöchentliche, monatliche und beliebige andere Intervalle festgelegt werden, an denen dann ein Java Event ausgelöst wird. Abbildung 6.16 zeigt das Userinterface dieser Komponente. Abbildung 6.16: Das Userinterface der Timer Komponente Das Interface der Funktionalen Komponente des What’s New Agenten ist in Abbildung 6.17 dargestellt. Abbildung 6.17: Das Userinterface der What's New Komponente Seite 106 Abbildung 6.18: Der SMART Assistent Bei dieser What’s New Komponente wurde nicht die gesamte Funktionalität umgesetzt. Es fehlt ein entsprechendes Suchformular zur Eingabe von Suchanfragen und auch die Visualisierung der gespeicherten Suchergebnisse. Suchanfragen können lediglich über die Commandline eingegeben werden, und Suchergebnisse werden in einem File abgelegt. Wenn ein neues Suchergebnis gespeichert wurde wird der Benutzer vom SMART Assistenten darüber informiert (siehe Abbildung 6.18), und er kann die enstprechende Nachricht über das Massage Menü des SMART ADMIN TOOL lesen. Die in der SMART-Plattform installierten xFIND Indexer Wrapper Agenten werden durch eine Anfrage an den SMART Facilitator ermittelt, und über den Choose Indexer Dialog ist es möglich einen der Vorhandenen Indexer zu wählen (siehe Abbildung 6.17). 6.4 Zusammmenfassung Das in diesem Kapitel dargestellte Szenario sieht auf den ersten Blick sehr einfach aus. Die beteiligten Agenten brauchen weder mit „Intelligenz“ ausgestattet werden, noch sind die Aufgaben die sie erfüllen müssen sehr komplex. Doch hat sich bei der praktischen Umsetzung gezeigt, dass es mit viel Aufwand verbunden ist, den Agenten selbst einfache Grundfunktionen wie z.B. das Speichern von Daten im Filesystem zu ermöglichen. Um dies dennoch zu erreichen mussten große Eingriffe an verschiedenen Stellen im Sourcecode des SMART-Prototyp gemacht werden. Jeder dieser Eingriffe konnte die Stabilität des gesamten Systems an anderer Stelle gefährden. Als weiteres Problem, dass bei der Umsetzung dieses Szenario identifiziert werden konnte ist, dass im SMART-Prototyp kein Eventhandling präsent ist, das die Koordination der Komponenten innerhalb eines Smart-Agenten doch erheblich vereinfachen würde. Auch dies wurde in einfacher Form nachgeholt. So können nun Komponenten innerhalb eines Agenten auf Java-Events von anderen Komponenten reagieren, was die Programmierung sehr vereinfacht. Diese Möglichkeit wird bereits in der Timerkomponente angewendet. Ein weiterer Problembereich der ersichtlich wurde ist, das der SMART-Prototyp keine Unterstützung für die persistente Speicherung von Agenten bietet. In der Praxis bedeutet dies, das bei jedem Neustart des Systems alle benötigten Agenten neu gestartet, und zusätzlich auch deren Daten neu generiert werden müssen, was einen erheblichen Aufwand bei selbst kleinen Änderungen bedeutet. Auch in dieser Hinsicht wurden einige Verbesserungen durchgeführt. Seite 107 Kapitel 6 Ein einfacher Informationsagent für SMART Obwohl die Umsetzung des hier vorgestellten einfachen Szenarios, aufgrund der vielen Problembereiche die sich dabei ergaben, nicht vollständig abgeschlossen wurde, ist der Autor dieser Arbeit nach wie vor davon überzeugt, dass die Konzepte die sich hinter SMART verbergen gut sind. Eines dieser Konzepte ist zum Beispiel die Widerverwendbarkeit von Komponenten. Ein Beispiel dafür ist die im Rahmen dieses SMART-Projekts entwickelte Timerkomponente, die es sehr komfortabel ermöglicht beliebige Zeitpunke und Zeitintervalle zu erstellen, und damit in verschiedensten Anwendungen einsetzbar ist. Der SMART-Prototyp stellt nur eine Basiskonfiguration dar, die erst durch das hinzufügen von Komponenten und Agenten zum „Leben“ erwacht. Wie auch in anderen Bereichen der Softwareentwicklung verbirgt sich dahinter aber ein langwieriger Entwicklungsprozess, der nicht im Rahmen von einer Diplomarbeit abgeschlossen ist, sondern kontinuierlich verbessert und weiterentwickelt werden muss. Seite 108 Kapitel 7 7 Zusammenfassung Das World Wide Web (WWW) mit seinen Möglichkeiten zur Veröffentlichung und Übertragung von Informationen hat die Palette der Anwendungen und Dienste für die Internetbenutzer enorm erweitert. Dies hat aber auch dazu geführt, dass die Menge an elektronisch verfügbarer Information in den letzten Jahrzehnten explosionsartig zugenommen hat. Aufgrund der weitgehend unstrukturierten Form des Internet, stellt die Wissensauffindung im Internet derzeit ein großes Problem für die Benutzer dar. Eine wichtige Hilfestellung leisten in diesem Zusammenhang die gegenwärtigen Suchdienste. Jedoch weisen diese eine Reihe von Schwächen auf. Sie stellen meist, für sich, isolierte Lösungen dar, die nicht in der Lage sind vorhandene Metainformationsdienste zu berücksichtigen bzw. zu kombinieren, bieten keine individuelle Unterstützung für die Benutzer und beliefern den Benutzer meist mit einer nahezu endlosen Liste an Suchergebnissen. In dieser Arbeit wurde der Einsatz von Agententechnologie untersucht, welche dazu dienen könnte oben geschilderte Probleme zu lösen. Dazu wurde die Arbeit in einen Untersuchungsteil und Gestaltungsteil gegliedert, wobei im Untersuchungsteil im Besonderen der Einsatz von Multiagentensystemen in diesem Bereich betrachtet wurde. Die daraus gewonnenen Erkenntnisse, flossen in die Konzeptionierung und prototypische Implementierung einer Agenten Plattform ein. Nach einer kurzen Einführung in die Thematik im ersten Kapitel, wurde im Kapitel 2 („Einführung und Begriffsbestimmung”) der Versuch unternommen den sehr unterschiedlich verwendeten Begriff „Agent” für den Kontext dieser Arbeit zu definieren. Dazu wurden unter anderem verschiedene Definitionen und Eigenschaften wie sie in der Literatur zu finden sind herangezogen. Zu den grundsätzlichen Eigenschaften eines Agenten zählen die Autonomie, die den Agenten befähigt selbständig zu handeln und zu entscheiden, die Reaktivität, die vom Agenten fordert angemessen auf Änderungen in seiner Umgebung zu reagieren, die Proaktivität, durch die Agenten in der Lage sind die Initiative zu übernehmen und dabei ein zielorientiertes Verhalten zu zeigen. Um diese Eigenschaften erfüllen zu können stehen Agenten in engem Kontakt mit ihrer Umwelt, mit „Sensoren“ nehmen sie ihre Umgebung wahr und beeinflussen ihre direkte Umgebung durch Aktivitäten. Doch Agenten stehen nicht nur mit ihrer direkten Umgebung in Kontakt, sondern sie kommunizieren auch mit anderen Agenten. In dieser Kommunikation stecken die stärken des Agenten Paradigmas. Es wird damit möglich Aufgaben an mehrere Agenten zu delegieren, die gemeinsam an der Lösung von Problemen arbeiten. Dabei treten allerdings sehr dynamische Kommunikationsmechanismen in Erscheinung, die nur durch die Verwendung spezieller Seite 109 Kapitel 7 Zusammenfassung Agentenkommunikationssprachen bewältigt werden können. Die genannten Eigenschaften machen den Einsatz von Agententechnologie in vielen Bereichen interessant. Einen großen Anwendungsbereich stellt dabei die Informationserschließung im Internet mittels so genannter Informationsagenten dar. Mit dieser Thematik beschäftigte sich Kapitel 3. Um den Bedarf an Unterstützung der Benutzer durch „intelligente“ Suchwerkzeuge zu unterstreichen wurden zunächst einige Problembereiche gängiger Suchdienste betrachtet und Studien vorgestellt, die sich mit den Benutzerverhalten im Umgang mit Suchdiensten befassen. Dabei lässt sich feststellen, dass Informationsagenten dem Benutzer in vielen Bereichen Unterstützung leisten könnten. Dazu zählen unter anderem die Organisation, Verwaltung und Darstellung, und vor allem das Filtern von relevanten Informationen, aber auch bei der Auswahl von Informationsquellen und bei der Formulierung bzw. Reformulierung von Suchanfragen könnten sie behilflich sein. Die Vorstellung einiger interessanter Beispiele von singulären Informationsagenten bzw. Informationsagenten innerhalb von Multiagentenumgebungen bildete den Abschluss dieses Kapitel, und stellt gleichzeitig auch die Motivation, für die im Rahmen dieser Diplomarbeit entwickelten Agenten Plattform dar. Im Hinblick auf den Entwurf einer Agenten Plattform befasste sich Kapitel 4 mit einigen ausgewählten Aspekten von Multiagentensystemen, und beendete damit den Untersuchungsbereich. Dazu wurden unter anderem die Eigenschaften solcher Systeme betrachtet. Weitere Schwerpunkte in diesem Kapitel bildeten die Agentenkommunikation, und die Agentenarchitekturen. Zum Schluss wurden noch einige Standarisierungsbemühungen in diesem Bereich vorgestellt. Aus diesen Betrachtungen ergaben sich folgende Erkenntnisse. Multiagentensysteme sind komplexe offene verteilte Systeme, die sich durch nichtdeterministisches Verhalten auszeichnen, und keiner zentralen Steuerung unterliegen. Durch Wissensaustausch und durch längerfristige Kooperationen werden so genannte „value-added services“ ermöglicht, eine Kombination einfacher Basisfunktionalitäten zu neuartigen. Bei der Kommunikation in Multiagentensystemen kommen heute vorwiegend sprechaktbasierte Agentenkommunikationssprachen zum Einsatz, durch die, im Gegensatz zur früher vorherrschenden Blackboard Kommunikation, auch eine direkte Kommunikation möglich ist. Gegenwärtig dominieren zwei Vertreter der sprechaktbasierten Kommunikationssprachen den Bereich der Agentenkommunikation, nämlich KQML (Knowledge Query and Manipulation Language) und FIPA-ACL. Abgestimmtes Handeln zwischen mehreren Agenten findet zumeist in Form von Interaktionsprotokollen statt. Eine zentrale Rolle bei der Kommunikation zwischen Agenten spielt die Ontologie, die den Wortschatz einer Anwendungs-Domäne definiert. Um den Kommunikationsaufwand zum Finden eines Kommunikationspartners zu mindern können so genannte FacilitatorAgenten eingesetzt werden, die einen „Yellow Pages“-Dienst anbieten, dabei entsteht ein so genanntes föderiertes System. Der Bereich der Standardisierung ist noch nicht sehr weit Fortgeschritten. Die aktivste Organisation in dieser Hinsicht bildet nach Meinung des Autors, der hier vorliegenden Arbeit die FIPA (Foundation for Intelligent Physical Agents). Im Gestaltungsbereich wurde mit Hilfe der herausgearbeiteten Erkenntnisse in Zusammenarbeit mit Steffan Kernbauer eine Agenten Plattform mit dem Namen SMART spezifiziert und prototypisch implementiert. Ziel von SMART war es, eine allgemeine Infrastruktur zur Realisierung von Multiagentensystemen zu schaffen, die nicht an bestimmte Anwendungsdomänen gebunden sind. Als Bausteine zur Entwicklung dienten Seite 110 die Programmiersprache Java und das am IICM Graz entwickelte Framework „Dino” (Distributed interactive Network Objects). Vor allem die Verwendung von Dino erwies sich als besonders sinnvoll, da von Dino die notwendige Basistechnologie bereitgestellt wird. Durch Dino wird ein gemeinsamer Adressraum für verteilte Objekte geschaffen, die dadurch transparent ansprechbar werden. Über Dino können Objekte aufeinander zugreifen und die jeweiligen Funktionen nützen. Auch die Entwicklung von mobilen Agenten wird durch Dino stark vereinfacht, da Dino Objekte per Definition mobile Objekte sind, die durch einfache Move oder Copy Befehle im Adressraum bewegt werden können. SMART Agenten bestehen aus Komponenten, die je nach Anforderung kombiniert werden. Das Zusammenfügen der Komponenten wird dabei automatisch vom System übernommen. Im SMART Prototyp ist eine Kombination von bis zu fünf Komponententypen vorgesehen, wobei ein zentraler Komponententyp (Functional Component) definiert ist, der durch Zusatzkomponenten ergänzt werden kann. Die Agenten (und somit deren Komponenten) werden sowohl direkt durch den Benutzer, als auch nach deren erbrachter Dienstleistungen bewertet, da SMART Agenten ihre Dienste Benutzern und auch anderen Agenten anbieten können. Im SMART System können gestellte Aufgaben nicht nur durch einen einzelnen Agenten erfüllt werden, sondern sie können durch Zusammenarbeit vieler Agenten erledigt werden. Die Zusammenarbeit von SMART Agenten wird durch zwei Arten von Kommunikation ermöglicht. Die einfachste Art der Kommunikation ist ein Methodenaufruf. So können Agenten über einen Wrapper auf die Methoden eines anderen Agenten zugreifen, vorausgesetzt die Methoden sind bekannt. Sind Methoden nicht bekannt, so können Agenten über den Austausch von Fipa-ACL Nachrichten kommunizieren. Der zweifache Kommunikationsansatz ist in jedem Fall sinnvoll, da nicht immer hochwertige Kommunikation mittels Nachrichten benötig wird und man auch durch einen einfachen Methodenaufruf Informationen übermitteln, oder Funktionen anfordern kann. Als erste Anwendungen der SMART Plattform wurden Agenten für ein E-Commerce Szenario entwickelt. Ein weiteres Szenario, in dem ein Informationsagent mit dem am IICM entwickelten Suchsystem xFIND kommuniziert wurde in Kapitel 6 dieser Arbeit beschrieben. Wie sich dabei gezeigt hat, treten bei der praktischen Umsetzung von solchen „SMART-Projekten“ kleinere und größere Probleme auf, die in Folgendem Unterkapitel kurz beschrieben werden 7.1 Erkenntnisse und Ausblick Als größeres Problem stelle sich heraus das der SMART-Prototyp keine Unterstützung für die persistente Speicherung von Agenten bietet. In der Praxis bedeutet dies, das bei jedem Neustart des Systems alle benötigten Agenten neu gestartet, und zusätzlich auch deren Daten neu generiert werden müssen, was einen erheblichen Aufwand bei selbst kleinen Änderungen bedeutet. Im SMART Prototypen fehlt die Anbindung an eine Datenbank, diese könnte z.B. von der Componentbase, der Agentbase und dem Directory Facilitator genutzt werden. Derzeit werden die Daten der Componentbase und der Agentbase in ein File geschrieben, Seite 111 Kapitel 7 Zusammenfassung der Directory Facilitator hält seine Daten nur im Hauptspeicher. Durch die Verwendung einer Datenbank könnte auch die vorher angesprochene persistente Speicherung von Agenten einfacher umgesetzt werden. Das FIPA Gateway wurde vorerst nicht implementiert, da es nicht zur zentralen Funktionalität gerechnet wurde. Dieses Gateway würde eine Kommunikation der SMART Agenten mit fremden FIPA-konformen Agenten ermöglichen. Im Gegensatz zum Konzept wurde der SMART Prototyp als „lokale” Version implementiert. Sowohl User Interface Agent, als auch das Administration Tool und die SMART Plattform werden in der gleichen virtuellen Maschine gestartet, d.h. sie befinden sich am selben lokalen Host. Dies wirkt sich sehr negativ auf die Performance aus. Als grundsätzliche Weiterentwicklung des SMART Prototypen, wäre die Entwicklung eines „verteilten” SMART Prototypen zu sehen. Verschiedene SMART Plattformen müssten über Dino kombiniert werden, um den vollen Umfang des SMART Konzeptes erproben zu können. Rückmeldungen und die Ergebnisse der Agenten erhält der User in Form einer Nachricht (SUsermessage). Diese sind im SMART Prototypen sehr einfach gehalten. Auch hier wäre eine Erweiterung denkbar. Zum Beispiel könnte ein „Mail” System Agent die Nachricht als Email versenden oder ein „Web-Server” System Agent könnte die Nachricht auf einem Webserver in Form eines HTML Files speichern, wodurch die Rückmeldung mit einem normale WebBrowser gelesen werden könnten. Im SMART Prototyp wurden 5 Kategorien von Komponenten spezifiziert. Dies ist ein sehr restriktiver Ansatz. In einer Weiterentwicklung des SMART Systems müsste diese Kategorisierung aufgebrochen und offener gestaltet werden. Abschließend kann gesagt werden, dass der SMART Prototyp eben nur einen Prototyp mit einer Basiskonfiguration und Basisfunktionalität darstellt. Die Idee von SMART ist, diese Basis durch das hinzufügen von Komponenten und Agenten zu erweitern. Wie auch in anderen Bereichen der Softwareentwicklung verbirgt sich dahinter aber ein langwieriger Entwicklungsprozess, der nicht im Rahmen von einer Diplomarbeit abgeschlossen ist, sondern kontinuierlich verbessert und weiterentwickelt werden muss. Seite 112 Seite 113 Abbildungsverzeichnis Abbildungsverzeichnis Abbildung 2.1: Datenstrukturen, Objekte und Agenten aus [Schimkat 2003] nach [Joseph et al. 2001] ........................................................................................ 17 Abbildung 2.2: Typologie nach Nwana [Nwana 1996] ......................................... 22 Abbildung 2.3: Die Funktionsweise von Interfaceagenten aus [Maes 1994] ........ 23 Abbildung 3.1: Einfaches Information Access Modell; aus [Guetl 2004] nach [Baeza et al. 1999] ......................................................................................... 33 Abbildung 3.2: Visualisierung der Verhaltensmuster bei der Informationssuche in Unternehmen nach [Choo et al. 2000], aus [Guetl 2004] .............................. 36 Abbildung 3.3: Beziehungsgeflecht der Suchdienste in Deutschland und International (Stand 10.06.2004) [Suchfibel 2004] ....................................... 37 Abbildung 3.4: Makrostruktur eines Systems von kooperativen Informationsagenten [Klusch 2001] .............................................................. 39 Abbildung 3.5: Letizia integration in Netscape-Interface [Liebermann 1997] ..... 41 Abbildung 3.6: Struktur des Multiagentensystems InfoSleuth [Nodine et al. 1999], aus [Klusch 2001] .......................................................................................... 42 Abbildung 3.7: RETSINA-Architektur eines kooperativen Agentensystems [Sycara et al 1996], aus [Klusch 2001] .......................................................... 44 Abbildung 3.8: Schichtenmodell in Daffodil [Fuhr 2000] .................................... 46 Abbildung 3.9: Klassenhierarchie für Anfrageobjekte in Daffodil [Fuhr 2000] ... 47 Abbildung 4.1: Prizip der Blackboard Kommunikation [Schneeberger 2001b] ... 53 Abbildung 4.2: Einordnung der Sprechakte nach Austin [Austin 1985] ............... 54 Abbildung 4.3: Beispiel einer KQML-Nachricht [Schneeberger 2001b] .............. 55 Abbildung 4.4: Schichtstruktur einer KQML-Nachricht [Schneeberger 2001b] .. 55 Abbildung 4.5: Ein Einfacher Frage-Antwort-Dialog mittels KQML [Schneeberger 2001b] .................................................................................... 56 Abbildung 4.6: Agent A abonniert bei Broker V alle Informationen über X [Schneeberger 2001b] .................................................................................... 56 Abbildung 4.7: Ein etwas komplexerer Dialog mittels KQML [Schneeberger 2001b] ............................................................................................................ 57 Abbildung 4.8: Ablauf der Kommunikation zwischen Manager und Kontraktor innerhalb des Contract-Net-Protokolls [Schneeberger 2001b] ...................... 58 Abbildung 4.9: FIPA Iterated Contract Net-Protokoll [Fipa 2002a] ..................... 59 Abbildung 4.10: FIPA Protokoll einer englischen Auktion [Fipa 2002b] ............. 60 Abbildung 4.11: Service Broker und Matchmaker [Klusch 2001] ........................ 62 Abbildung 4.12: Agenten in einem föderierten System [Fricke 2000] .................. 62 Abbildung 4.13: Prinzipieller Aufbau einer Komponentenarchitektur [Fricke 2000] .............................................................................................................. 64 Abbildung 4.14: Prinzipieller Aufbau einer Schichtstruktur [Fricke 2000] .......... 65 Abbildung 4.15: Strukturarmer Aufbau einer Agentenarchitektur [Fricke 2000] . 66 Abbildung 5.1: Das SMART Agentensystem [Kernbauer 1999] .......................... 74 Abbildung 5.2: Die Dino Struktur [Dino 1998] ..................................................... 75 Seite 114 Abbildung 5.3: Das FIPA Referenzmodell [Fipa 1997] ........................................ 77 Abbildung 5.4: Das SMART Agentensystem [Kernbauer 1999] .......................... 78 Abbildung 5.5: Die SMART Plattform [Kernbauer 1999] .................................... 81 Abbildung 5.6: Der SAgent Wrapper [Kernbauer 1999] ....................................... 84 Abbildung 6.1:Verteilte Architektur des xFIND Suchsystems [Gütl 2002] .......... 92 Abbildung 6.2: Die Kommunikationsbeziehungen im xFIND Beispielszenario .. 94 Abbildung 6.3: Der SMART UserManagerFrame ................................................ 96 Abbildung 6.4: Der SMART Add User Dialog ..................................................... 97 Abbildung 6.5: Der SMART Login Dialog ........................................................... 97 Abbildung 6.6: Das SMART Admin Tool............................................................. 98 Abbildung 6.7: Der SMART USER INTERFACE AGENT ................................. 98 Abbildung 6.8: Der SMART Systemcomponents Dialog ..................................... 99 Abbildung 6.9: Der Choose Class Dialog ............................................................ 100 Abbildung 6.10: Der Add Component Dialog ..................................................... 100 Abbildung 6.11: Der SMART Agentbase Systemagents Dialog ......................... 101 Abbildung 6.12: Der SMART Add Agent to Agentbase Dialog ......................... 102 Abbildung 6.13: Der Choose from Agentbase Dialog ......................................... 103 Abbildung 6.14: Der My Agents Dialog ............................................................. 103 Abbildung 6.15: Das xFIND Indexer Wrapper Interface .................................... 104 Abbildung 6.16: Das Userinterface der Timer Komponente ............................... 105 Abbildung 6.17: Das Userinterface der What's New Komponente ..................... 105 Abbildung 6.18: Der SMART Assistent .............................................................. 106 Seite 115 Literaturverzeichnis Literaturverzeichnis [Baeza et al. 1999] Baeza-Yates, R.; Ribeiro-Neto, B.: Modern Information Retrieval, Addison Wesley, Essex, England, 1999 [Bates 1994] J. Bates: The role of emotion in believable agents. Communications of the ACM, 1994, 37(7), S. 122 - 125. [Bigus et al. 2001] Joseph Bigus, Jennifer Bigus; Intelligente Agenten mit Java Programmieren; Addison Wesley 2001 [Bradshaw 1997] Jeffrey M. Bradshaw: Software Agents AAAI Press / The MIT Press 1997, 3-46 [Brando 1995] T. Brando: Comparing DCE and CORBA. Technical report MP 95B93,MITRE Corporation, März 1995, http://www.mitre.org/research/domis/reports/DCEvCORBA.html. [Brenner et al. 1998] Brenner, W.; Zarnekow, R.; Wittig, H.: Intelligente Softwareagenten, Springer Verlag, Berlin, 1998 [Burkhard 1998] Hans Dieter Burkhard: Einführung in die Agententechnologie it+ti Informationstechnik und Technische Informatik; Zeitschrift; Heft 4/98; R.Oldenburg Verlag 1998 6-11 [Caglayan 1998] Caglayan, A.K., Harrison, C.G.: Intelligente Software-Agenten, München/Wien 1998 [Cheong 1996] F. Cheong, Internet Agents: Spiders, Wanders, Brokers, and Bots. Indianapolis: New Riders, 1996. [Choo et al. 2000] Choo, C.W.; Detlor, B.; Turnbull, D.: Working With Knowledge. In Proceedings of CONSAL 2000, Congress of Southeast Asian Librarians, Singapore, April, 2000, http://donturn.fis.utoronto.ca/papers/hicss2000/hicss2000.html [Ciancarini et al. 2000] Ciancarini, P. and Wooldridge, Agent-oriented software engineering In Proceedings of the 22nd international Conference on Software Engineering (Limerick, Ireland, June 04 - 11, 2000). ICSE '00. ACM Press, New York, NY, 816-817. [Davis et al. 1983] R. Davis, R. G. Smith: Negotiation as a metaphor for distributed problem solving. AI Journal 20, 1983, S. 63 - 109. [Ferber 2001] Ferber, J.: Multiagentensysteme, Addison-Wesley-Verlag, München, 2001 [Fipa 2002a] FIPA Iterated Contract Net Interaction Protocol Specification, http://www.fipa.org/specs/SC00030H.pdf Seite 116 [Fipa 2002b] FIPA: The FIPA English Auction interaction protocol Specification, http://www.fipa.org/specs/ XC00031F.pdf [Fipa 2002c] FIPA: FIPA Dutch Auction Interaction Protocol Specification, Last Visit: 30.9.2005 http://www.fipa.org/specs/ XC00032F.pdf [Franklin et al. 1996] S. Franklin, A. Graesser: Is it an agent, or just a program? A taxonomy for autonomous agents. In: Third International Workshop on Agent Theories, Architectures, and Languages, Springer-Verlag, 1996. [Fricke 2000] Stefan Fricke: Werkzeuggestützte Entwicklung kooperativer Agenten im Dienstkontext, Dissertation an der Technischen Universität Berlin 2000, 04.2000; Last Visit: 30.7.2005 http://edocs.tu-berlin.de/diss/2000/fricke_stefan.pdf [Fuhr 2000] Norbert Fuhr; „Information Retrieval – Skriptum zur Vorlesung“; 2000; Last Visit: 09.06.2005 http://www.is.informatik.uni-duisburg.de/teaching/dortmund/lectures/ ir_ws00-01/irskall.pdf [Gilbert 1997] D. Gilbert: Intelligent agents - the right information at the right time. White paper, IBM, 1997 . http://www.networking.ibm.com/iag/iaghome.html. [Gütl 2002] Gütl, C.: Ansätze zur modernen Wissensauffindung im Internet, Dissertation an der Technischen Universität Graz, IICM, 09.2002, Last Update: 29.11.2002, Last Visit: 30.7.2005; http://www.iicm.edu/thesis/cguetl_diss/diss_cguetl.pdf [Gütl 2004] Gütl, C.: Smart Information Retrieval Concepts for Portals in Scientific Environments 09.2004, Last Update: 29.11.2004, Last Visit: 30.7.2005; http://www.iicm.edu/cguetl/publikations/SmartIR_v1_1.pdf [Jennings et al. 1998a] Jennings, N. R., Sycara, K., and Wooldridge, M. 1998. A Roadmap of Agent Research and Development. Autonomous Agents and Multi-Agent Systems 1, 1 (Jan. 1998), 7-38. [Jennings et al. 1998b] Jennings, N. R., Wooldridge, M. J. (Hrsg.), Applications of Intelligent Agents, in: Agent Technology - Foundations, Applications, and Markets, Springer-Verlag, Heidelberg 1998 [Jenkins et al. 2000] Jenkins, C.; Inman, D.: Adaptive Automatic Classification on the Web;Proceedings of the 11th International Workshop on Database and Expert Systems Applications (DEXA'00), 2000 [Joseph et al.2001] JOSEPH, S. und T. KAWAMURA: Why Autonomy Makes the Agent. In: Series in Machine Perception and Artificial Intelligence Agent Engineering, Band 43. World Scientific, Juni 2001. [Kernbauer 1999] Kernbauer, S.: Aspekte Intelligenter Software Agenten, IICM TU-Graz, September 1999, TU-Graz Hauptbibliothek II 128.100 Seite 117 Literaturverzeichnis [Klusch 2001] M. Klusch. Information agent technology for the internet: A survey. Data and Knowledge Engineering, 36(3):337--372, 2001 [Lackner 2004] Lackner, W.: Verteilte Informationsstrukturen zur modernen Wissensauffindung im Internet, IICM TU-Graz, Dezember 2004, Last Visit: 16.06.2005; http://www.iicm.edu/thesis/wlackner [Liebermann 1997] H. Liebermann. Autonomous interface agents. In Proc. ACM Conf. on Computers and HumanInteraction (CHI'97), Atlanta, USA, May 1997 [Lingnau et al. 1995] Lingau, A., Drobnik, O. and Doemel, P.: An HTTP-based Infastrukture for Mobile Agents, World Wide Web Journal, Boston 1995. [Nodine et al. 1999] Nodine, M.; Fowler, J. (1999): An overview of active information gathering in Infosleuth. Proc. Intern. Conference on Autonomous Agents, USA, AAAI Press. [Nwana 1996] H. S. Nwana: Software agents: An overview. Knowledge Engineering Review 11(3), 1996, S. 205 - 244. [Machill et al. 2004] Marcel Machill, Carsten Welp: Wegweiser im Netz 3. Auflage 2004; Bertelsmann Verlag [Maes 1994] Maes, P.. Agents that reduce work and information overload. Commun. ACM 37, 7 (Jul. 1994), 30-40. [Maes 1995] Maes, P.: Artificial Life meets Entertainment: Interacting with Lifelike Autonomous Agents, Special Issue on New Horizons of Commercial and Industrial AI. Communications of the ACM 38 (1995) 11, S. 108114. [Minsky 1985] Minsky, M.. The Society of Mind. New York: Simon and Schuster. 1985 [Middleton 2001] Stuart E. Middleton: Interface Agents: A review of the field Technical report, 28 pages, August 2001 Last Update: 10.08.2001, Last Visit: 30.7.2005; http:citeseer.ist.psu.edu/middleton01interface.html [Murch et al. 2000] Richard Murch, Tony Johnson: Agententechnologie die: Die Einführung; Addison-Wesley 2000 [Müller 1998] Jörg Müller: Kontrollarchitekturen für autonome kooperierende Agenten it+ti Informationstechnik und Technische Informatik; Zeitschrift; Heft 4/98; R.Oldenburg Verlag 1998 18-22 [Reiff 2000] Reiff G.: Moderne Aspekte der Wissensverarbeitung Diplomarbeit an der Technischen Universität Graz, IICM, Jänner 2000 http://www.iicm.edu/thesis/greif [Russell et al.1995] Russell, Stuart J. and Peter Norvig:, Artificial Intelligence: A Modern Approach, Englewood Cliffs, NJ: Prentice Hall 1995 Seite 118 [Schimkat 2003] Ralf-Dieter Schimkat: Techniken und Aspekte zur Realisierung proaktiver Informationssysteme, Dissertation an der Eberhard-KarlsUniversität Tübingen Last Update: 12.02.2003, Last Visit: 30.08.2005 http://w210.ub.unituebingen.de/dbt/volltexte/721/diss_schimkat.pdf [Schneeberger 2001a] Josef Schneeberger: Software Agenten I, Last Visit: 30.7.2005; http://www.bw.fh-deggendorf.de/kurse/ws/skripten/skript12.pdf [Schneeberger 2001b] Josef Schneeberger: Software Agenten II, Last Visit: 30.7.2005; http://www.bw.fh-deggendorf.de/kurse/ws/skripten/skript13.pdf [Schneppe 2000] Ulrich Schneppe: Langzeitrecherche im World-Wide-Web unter Berücksichtigung von Individualisierungskonzepten Diplomarbeit an der Fern Universität Hagen; Juli 2000 [Sycara et al. 1996] Pannu, A.; Sycara, K. (1996): A learning personal agent for text filtering and notification. Proc. Intern. Conference on Cooperative Knowledge-based Systems CKBS-96. [Teuteberg 1999] Frank Teuteberg: Agentenbasiertes Suchen, Filtern und Klassifizieren von Informationsangeboten im World Wide Web unter Einsatz von Künstlichen Neuronalen Netzen und Neuro-Fuzzy-Technologien; Last Visit:30.9.2005 http://wi99.iwi.unisb.de/de/DoktorandenSeminar/D_Teuteberg.pdf [Wayner et al. 1995] Wayner, P.; Joch, A.: Agents of Change in Byte (20) 3. McGrawHill, New-York, USA 1995. [Wooldridge et al. 1995] Michael Wooldridge, Nicholas R. Jennings: Intelligent Agents: Theory and Practice; Springer 1995 [Yang et al. 1996] Z. Yang, K. Duddy: CORBA: A platform for distributed object computing. Operating Systems Review 30(2), 1996, S. 4 - 31.