Information Technology Reference
In-Depth Information
dieser Funktionalität besteht darin, dem Anwender eine Möglichkeit zur Spezifikation von
Bedingungen und Aktionen zu bieten, ohne direkt programmieren zu müssen. Insofern
wird ein JavaBeans-Eigenschafteneditor für die Klasse Rule entwickelt, über den der An-
wender bequem einen Satz von Regelvariablen und Regeln visuell konstruieren kann, um
die Logik hinter dem Verhalten eines intelligenten Agenten zu steuern. Um den Agenten
das Durchführen von Klassifizierungen, Gruppierungen und Voraussagen zu ermöglichen,
werden Klassifizierer für Entscheidungsbäume, neuronale Gruppierungs- und Vorhersage-
algorithmen in Java entworfen und entwickelt. Auch hierzu wird auf die bereits entwickel-
ten Klassen zurückgegriffen, um den Agenten mit diesen Funktionen auszustatten.
Die Agenten werden mit Hilfe eines Nachrichtenprotokolls zur Kommunika-
tion vorbereitet. Hierzu werden den einzelnen Agenten Aufgaben, wie beispielsweise
Facilitator oder Vermittler, übertragen. Dabei kann das Ereignismodell von Java
eingesetzt werden, um die Kommunikationsmechanismen zwischen den Agenten und
dem Facilitator zu erstellen. Zusätzlich werden Ereignisobjekte definiert, um den
Inhalt der einzelnen Nachrichten zu speichern. Die Agenten müssen beständig sein, d. h.
sobald ein Agent erzeugt worden ist, muss eine Möglichkeit bestehen, ihn in einer Datei
zu sichern und seinen Zustand später wiederherzustellen. Das Paket java.io von Java
Runtime unterstützt die Serialisierung von Java-Objekten.
Das einfache Markieren der Klasse während der Implementierung der Schnittstel-
le Serializable macht das Speichern und Laden von Objekten sehr einfach. Jedes
Datenelement, das nicht ausdrücklich als transient deklariert ist, wird als Datei gespei-
chert. Dabei wurden die Agenten so konstruiert, dass sie mit dem JavaBeans-Komponen-
tenmodell interagieren können. Obwohl die Konstruktion nicht komplex ist, verfügt sie
doch über die grundlegenden Eigenschaften, die von verschiedenen Agenten und den da-
zugehörigen Anwendungen benötigt werden. Die durch einen weiteren Ausbau möglichen
Agenten können autonom sein und asynchrone Ereignisse handhaben. Dieses Verhalten
wird durch die Klassen AgentTimer und AgentEventQueue ermöglicht. Agenten
können dank der Verwendung des Entwurfsmusters Composite kombiniert werden,
um eine komplizierte Hierarchie von Funktionen aufzubauen. Agent ist dabei die Basis-
klasse, die eine gemeinsame Programmierschnittstelle und das Verhalten für alle Agenten
festlegt. Aus Sicht von Entwurfmustern verwendet der Agent ein zusammengesetztes
Design. Das bedeutet, dass ein einzelner Agent verwendet werden kann oder die Agenten
sich zu ganzen Gruppen zusammenfassen lassen, und diese Gruppen immer noch so be-
handelt werden können, als wären sie einzelne logische Agenten. Dieses Entwurfsmuster
ist sehr wirkungsvoll, da sich mit ihm eine Hierarchie von Agenten aufbauen lässt, indem
die anderen Agenten spezialisierte Agenten bei dem Prozess verwenden (Abb. 5.1 ).
Die Klasse Agent bedient sich dabei verschiedener Hilfsklassen: AgentSta-
tus , AgentTimer , und AgentEventQueue . Die Klasse AgentStatus enthält
ein einzelnes Datenelement, die Ganzzahl status (Zustand). Wenn ein AgentSta-
tus -Objekt konstruiert wird, wird sein Zustand auf UNINITIATED gesetzt. Verände-
rungen können mit Hilfe der Methode setstate() vorgenommen werden. Die Klasse
AgentTimer implementiert die Schnittstelle Runnable , die die Implementierung der
Search WWH ::




Custom Search