Beschreibung
GridWorldSim ist ein in Java implementiertes Framework zur Realisierung von Umgebungen für Multiagentensysteme, welches im Rahmen meiner Diplomarbeit entstanden ist. Mit Hilfe dieses Frameworks lassen sich Umgebungen spezifizieren und simulieren, die als Experimentierplattform für verschiedene Agenten dienen. Das Framework dient dabei der Realisierung von Umgebungen, in welchen Agenten auf einem Grid verortet sind, und bietet Funktionen für die Interaktion von Agenten mit der Umgebung und mit anderen Agenten in der Umgebung. Dabei lassen sich die Wahrnehmungen der Agenten abhängig von den Eigenschaften der Agenten und sichtblockierenden Hindernissen einschränken. Ebenso wird die Kommunikation mit anderen Agenten unterstützt, wobei auch diese Einschränkungen unterworfen werden kann. Neben dem Framework selbst werden zudem grafische Clients zum Testen und zur Beobachtung von Umgebungen bereitgestellt.
GridWorldSim besteht aus drei verschiedenen Programmen:
- Server: dient der Bereitstellung von Umgebungen per TCP/IP anhand einer Umgebungsspezifikation in XML
- Agenten-Client: bietet die Möglichkeit, einen Agenten von Hand zu steuern, um den Server oder die Umgebungsspezifikation zu testen
- Beobachter-Client: dient der Beobachtung der Geschehnisse in einer Umgebung
GridWorldSim ist dabei in die folgenden Komponenten unterteilt:
- agentclient: Agenten-Client, abhängig von: commons, clientcommons, Apache log4j, serverapi
- clientcommons: gemeinsame Klassen des Agenten- und Beobachter-Clients, abhängig von: commons, Apache log4j, serverapi
- commons: gemeinsame Klassen aller GridWorldSim-Komponenten, abhängig von: Apache log4j
- observerclient: Beobachter-Client, abhängig von: commons, clientcommons, Apache log4j, serverapi
- server: GridWorldSim-Server, abhängig von: commons, Apache log4j
- serverapi: Bibliothek zur Kommunikation mit dem Server und zur Bereitstellung von Datenstrukturen für Wahrnehmungen, abhängig von: commons, Apache log4j
Die Kommunikation zwischen Server und Agenten/Clients findet in XML-Sprachen statt, welche über die zugehörigen XML-Schemata definiert sind. Die XML-Dokumente werden dabei über ein einfaches Protokoll in TCP-Paketen gekapselt. In Java implementierte Agenten können mit Hilfe der serverapi-Komponente den GridWorldSim-Server einfach nutzen, ohne dass die XML-Sprachen, das Kommunikationsprotokoll oder die Datenstrukturen für Beobachtungen selbst implementiert werden müssten.
Eine ausführliche Beschreibung der Semantik und Benutzung von GridWorldSim findet sich in meiner Diplomarbeit (insbesondere Kapitel 7).
Ressourcen
Die Komponenten commons, server und serverapi – und damit der GridWorldSim-Server und die Bibliothek zur Verwendung des Servers durch Agenten – sind in der aktuellen Entwicklerversion unter der GPLv3 lizensiert und stehen im Quelltext zur Verfügung. Diese Komponenten sind im Projekt Tweety aufgegangen und werden dort weiterentwickelt. Die Clients beinhalten Grafiken, die unter der Lizenz „Creative Commons (Attribution-Noncommercial 3.0 Unported)“ stehen, welche nicht GPL-kompatibel ist und sind derzeit nur als Kompilat, nicht aber im Quellcode verfügbar.
Beschreibung | Quelle |
---|---|
Quellcode der Komponenten commons, server und serverapi (aktueller Entwicklungsstand) | siehe projects/net-sf-tweety-agents-gridworldsim/ des Projekts Tweety |
Quellcode der Komponenten commons, server und serverapi (GridWorldSim 1.0) | Download |
Kompilat von GridWorldSim 1.0 (komplett) mit Beispielumgebung (Start mit java -jar agentclient.jar bzw. java -jar observerclient.jar bzw. java -jar server.jar [XML-Spezifikationdatei]) | Download |
Agenten-Client für OS X (GridWorldSim 1.0) | Download |
Beobachter-Client für OS X (GridWorldSim 1.0) | Download |
XML-Schema zur XML-Sprache für die Konfiguration des Servers und die Spezifikation von Umgebungen (GridWorldSim 1.0) | Download (auch im Quellcode-Download enthalten) |
XML-Schema zur XML-Sprache für die Kommunikation vom Server zu Clients (GridWorldSim 1.0) | Download (auch im Quellcode-Download enthalten) |
XML-Schema zur XML-Sprache für die Kommunikation von Clients zum Server (GridWorldSim 1.0) | Download (auch im Quellcode-Download enthalten) |