Information Technology Reference
In-Depth Information
wenden, wenn es angebracht ist. Das ist einfach, entspricht aber nicht dem Ansatz eines
intelligenten Agenten, da hier Intelligenz zwar eingebettet wird (embedded intelligence),
aber der Agent dadurch seine Autonomie einbüßt. Eine andere Möglichkeit besteht darin,
die Anwendung dazu zu bringen, den Agenten zu instanziieren und zu konfigurieren, um
ihn dann als separaten Thread auszuführen. Das würde dem Agenten eine gewisse Eigen-
ständigkeit geben, obwohl er im Prozessraum der Anwendung ausgeführt wird. Die An-
wendung kann die Kontrolle an den Agenten übergeben und dieser kann der Anwendung
wieder das Feld überlassen, damit sie weiter ausgeführt werden kann, wenn er mit der
Verarbeitung fertig ist. Eine dritte Möglichkeit ist es, den Agenten in einem separaten
Thread auszuführen, aber Ereignisse anstelle direkter Methodenaufrufe zu verwenden, um
die Kommunikation zwischen der Anwendung und dem Agenten zu ermöglichen. Da dies
sowohl Autonomie als auch Flexibilität ermöglicht, wird dieser Ansatz in der folgenden
Implementierung verfolgt. Der Agent wird in einem separaten Thread ausgeführt und es
werden Ereignisse verwendet. Es gibt grafische Entwicklungswerkzeuge, mit denen An-
wendungen visuell konstruiert werden können. Java bietet mit dem Paket java.beans
eine grundlegende Komponentenfähigkeit, mit dessen Hilfe man Softwarefunktionen als
„Bauteile“ behandeln kann, die zusammengesetzt werden können, um eine Anwendung zu
konstruieren. Jede JavaBean hat eine wohldefinierte Schnittstelle, die es einem visuellen
Entwicklungswerkzeug erlaubt, dieses Objekt zu bearbeiten. Sie hat außerdem eine defi-
nierte Laufzeitschnittstelle, über die Anwendungen, die aus JavaBeans zusammengestellt
wurden, ausgeführt werden können. Eine weitere praktische Funktion von Beans ist, dass
sie verschachtelt werden können. Damit bietet sie die benötigte Fähigkeit, Agenten aus
anderen Agenten zusammenzustellen. Dies macht es dann möglich, Agenten für spezielle
Zwecke zu entwickeln, die dann von anderen, auf einer höheren Ebene agierenden Agen-
ten wiederverwendet werden können.
Die Agenten müssen relativ fortschrittliche Fähigkeiten zur Verwaltung von Ereignis-
sen besitzen. So werden die Agenten Ereignisse der Außenwelt oder von anderen Agenten
handhaben und externen Anwendungen Ereignisse signalisieren müssen. Im Rahmen die-
ser Implementierungsvariante orientiert man sich an den Anforderungen des JavaBeans-
Komponentenmodells. Dieses Modell beruht auf Ereignisquellen (Sources) und Ereignis-
überwachern (Listener). Es gibt viele verschiedene Klassen von Ereignissen mit verschie-
denen Ebenen der Granularität. Der Agent kann ein EventListener sein und jedes
Mal, wenn er über das Eintreten eines Ereignisses informiert wird, kann er dieses ver-
arbeiten. Die wahrnehmbaren Ereignistypen lassen sich durch die Klasse EventObject
beschreiben.
Das „Einverleiben“ von Fachwissen erfolgt unter anderem über Wenn-Dann-Regeln,
die eine regelbasierte Vorwärts- und Rückwärtsverarbeitung mit Sensoren und Effekto-
ren unterstützen. Dabei kommen die Implementierungsvarianten der bereits behandelten
Produktionsregeln zum Einsatz. Mit diesen bewährten Implementierungen ausgestattet,
verfügen die Agenten über vorwärts und rückwärts ablaufende regelbasierte Schlussfolge-
rungsalgorithmen. Allerdings erfahren diese Algorithmen dahingehend eine Erweiterung,
indem sie Sensoren und Effektoren unterstützen. Der Hauptgrund für die Bereitstellung
Search WWH ::




Custom Search