Teilprojekt: JAMES II
Forschungsprojektkontext: »Komponentenbasiertes Framework zur Unterstützung einer effektiven und effizienten Simulation von Agentensystemen«
| JAva-based Multipurpose Environment for Simulation II (ehemals Java-based Agent Modeling Environment for Simulation) | ||||
|
Zusammenfassung: James II ist ein flexibles Framework für die Modellierung, Simulation und das Experimentieren welches leicht erweiter- und wiederverwendbar ist. Es wird unter anderem die Modellierung in verschiedenen Formalismen und verschiedene Ausführungsstrategien unterstützt.
Stichwörter: |
|
|||
| Projektinformationen | Teilprojektinformationen | |||
|
Laufzeit:
01.04.2003
bis
30.10.2011
Projektkoordination:
Prof. Dr. rer. nat. Adelinde M. Uhrmacher
Wissenschaftl. Bearbeiter:
Dr.-Ing. Jan Himmelspach; Dipl. Inf. Roland Ewald; Dipl. Inf. Stefan Leye; Dipl. Inf. Stefan Rybacki
Studentische Hilfskräfte:
Enrico Seib; Simon Bartels; Thomas Beer; Lydia Jost; Sven Kluge; Rene Michalski; Johannes Rössel; Rene Schulz; Carl Tuemmler; Valerius Weigandt; Felix Willud
Ehem. stud. Hilfskräfte:
Dortje Löper; Ulrike Borchardt; Robert Waltemath; Johannes Becherer; Gabriel Blum; Nico Eggert; Roland Ewald; Stefan Friedrichs; Florian Gewandt; Stefan Leye; Sebastian Lieske; Frank Manteufel; Steffen Maas; Thomas Nösinger; Christian Ober; Björn Paul; Jan Pommerenke; Kathrin Rohloff; Oliver Röwer; Hans Schipke; Felix Woitzel; Martina Gierke
Auftraggeber:
DFG
|
Teilprojektlaufzeit:
Seit
01.04.2003
Wissenschaftl. Koordination:
Prof. Dr. rer. nat. Adelinde M. Uhrmacher
Wissenschaftl. Bearbeiter:
Dr.-Ing. Jan Himmelspach; Dipl. Inf. Roland Ewald; Dipl. Inf. Mathias John; Dipl. Inf. Stefan Leye; Dipl. Inf. Stefan Rybacki; Dipl. Inf. Matthias Jeschke
Studentische Hilfskräfte:
Simon Bartels; Thomas Beer; Lydia Jost; Sven Kluge; Rene Michalski; Johannes Rössel; Rene Schulz; Enrico Seib; Carl Tuemmler; Valerius Weigandt; Felix Willud
Ehemalige Mitarbeiter:
Dipl. Inf. Susanne Biermann; Dr. Ing. Mathias Röhl
Ehem. stud. Hilfskräfte:
Johannes Becherer; Gabriel Blum; Nico Eggert; Roland Ewald; Stefan Friedrichs; Florian Gewandt; Stefan Leye; Sebastian Lieske; Dortje Löper; Frank Manteufel; Steffen Maas; Thomas Nösinger; Christian Ober; Björn Paul; Jan Pommerenke; Kathrin Rohloff; Oliver Röwer; Hans Schipke; Robert Waltemath; Felix Woitzel
|
|||
Über JAMES II
JAMES II ist ein offenes Rahmenwerk für die Modellierung und Simulation.
Das Rahmenwerk fasst allgemeine, in den meisten Modellierungs- und Simulationssystemen existierende Fähigkeiten verallgemeinert, interoperabel und erweiterbar zusammen. Dadurch hat es sich von der ursprünglichen Idee eines spezialisierten Programms für die Durchführung von Multiagentensimulationen hin zu einem allgemeinen Modellierungs- und Simulationsrahmenwerk entwickelt. JAMES II ist auf keine Weltsicht, keine Modellbeschreibung und kein Ausführungsschema festgelegt.
JAMES II steht als Open Source zum Download zur freien Verfügung:
Download JAMES II
Bei der Entwicklung von JAMES II, der "Nachfolger" des Simulationssystems James, wurden drei prinzipielle Anwendungsfälle berücksichtigt:
- Erforschung von Modellierung und Simulation
- Einsatz im Rahmen von anderen Forschungsprojekten (zur Modellierung und Simulation komplexer Modelle)
- Einsatz in der Lehre (direkt oder als Backend in einem Lehr-/Lernsystem)
Zusätzlich wurde bei der Entwicklung von JAMES II darauf geachtet, dass JAMES II nicht nur für einen bestimmten Modellierungsformalismus / eine bestimmte Modellierungssprache verwendet werden kann. So kann JAMES II prinzipiell sowohl für diskrete als auch für kontinuierliche Modellierungs- und Simulationsanwendungen als Basis dienen.
Aus der Diversität dieser Anwendungsfälle ergeben sich mehrere Anforderungen an das System
- Modularer Aufbau (Austausch, Wiederverwendung von Teilen und leichte Erweiterbarkeit des Systems)
- Skalierbarkeit
- Unterstützung unterschiedlicher Hardware-Infrastrukturen
- Effiziente, austauschbare Algorithmen und Datenstrukturen
- Einfache Verwendbarkeit für unterschiedliche Anwender
Der modulare Aufbau
In James II werden insbesondere folgende Bestandteile unterschieden:
- die (G)UI (ggf. Anwendungsgruppenspezifisch)
- Experimente
- die Modelle (Unterstützung diverser Modellierungsformalismen)
- die Ausführungsschicht (Unterstützung der Simulation der verschiedenen Formalismen, mehr als eine Ausführungsstrategie pro Formalismus)
Die Unterstützung unterschiedlicher Berechnungsverfahren pro Modell stellt dabei die Basis für die experimentelle Analyse dieser dar und stellt darüber hinaus einen Baustein zur Validierung der Implementierungen dar.
JAMES II basiert auf dem "Plug'n simulate"-Konzept. Neben vordefinierten Möglichkeiten zur Erweiterung des Systems mittels Plugins können dabei die Möglichkeiten zur Erweiterung selbst erweitert werden. Dieses Konzept ermöglicht es damit das System, ohne die Notwendigkeit der Modifikation des Kerns, an nahezu beliebigen Stellen zu erweitern.
Die Implementierung
JAMES II wird in JAVA (1.6) unter der Verwendung zahlreicher Entwurfsmuster unter Verwendung eines Versionsmanagementsystems (Subversion) entwickelt.
Der aktuelle Stand
Momentan unterstützt JAMES II die Modellierung in PDEVS (Parallel DEVS), sowie einiger Erweiterungen (dynamische Strukturen [PdynDEVS], externe Prozesse [PepiDEVS], mehrere Ebenen [ml-DEVS]) von diesem Formalismus, zelluläre Automaten (CA), StoPi. SpaPi-Modelle, Beta-binders-Modelle und Species-Reaction-Modelle.
Das Experimentieren mit Modellen basierend auf diesen Formalismen unterstützt JAMES II durch eine Reihe für alle verwendbarer Technologien, wie bspw. verschiedene Möglichkeiten Simulationsdaten zu erfassen, Zufallszahlengeneratoren, Zufallsverteilungen, Optimierungsalgorithmen, die parallele Ausführung mehrer Simulationsläufe eines Experiments ...
Oft verwenden diskret-ereignisorientierte Simulationslagorithmen "Ereignischlangen" sehr intensiv. Für JAMES II wurden eine Reihe von unterschiedlichen Ereignisschlangen implementiert, u.a. die calendar queue, die mlist, die 2-list, eine heap-basierte, u.v.m..
Im April 2008 überstieg die Anzahl der verfügbaren Erweiterungen die 200er Grenze, im Oktober 2009 bereits mehr als 500.
Der Entwicklungsstand entspricht nicht der veröffentlichten Version, da noch nicht alles in dieser enthalten ist. Nähere Informationen zu den Releases finden sich im Downloadbereich.
Simulation
Sequentielle Berechnung
Die Berechnung eines konkreten Simulationlaufes eines Modells auf einem Rechner ist auf vielfältige Arten möglich. Dabei können sich einige Verfahren für bestimmte Modellstrukturen als besonders effizient herausstellen, für andere hingegen als extrem ineffizient. Für PDEVS stehen momentan drei verschiedene sequentielle Simulationsalgorithmen zur Verfügung die zudem noch weiter parametrisierbar sind.
Parallelisierte sequentielle Berechnung
Für ein Experiment müssen oftmals viele einzelne Simulationsläufe durchgeführt werden. JAMES II bietet hier die Möglichkeit diese einzelnen Simulationsläufe weitestgehend parallel auszuführen. Dies kann sowohl unter zur Hilfenahme eines MasterServers aber auch auf MultiCore CPUs oder Rechnern mit mehreren CPUs geschehen. Wenn mehrere Läufe parallel ausgeführt werden können und wenn die Rechnerkapazitäten genügen um einen kompletten Lauf alleine auszuführen dann stellt diese Art der Parallelisierung üblicherweise die effizientere Variante im Vgl. zur parallel verteilten Ausführung einzelner Läufe dar. Prinzipiell lassen sich aber auch beide Techniken kombinieren.
Parallel verteilte Ausführung
Bei der parallel verteilten Ausführung gilt eine der ersten Überlegungen der verwendeten Hardware: Ist das Modell auf einem Grid oder einem Cluster zu berechnen? Welche Randbedingungen gibt es? Lässt sich das Modell überhaupt aufteilen, wenn ja wie? Bei der Ausführung diskret ereignisorientierter Modelle stellt sich zudem die Frage, ob man ein konservatives oder optimistisches Verfahren verwenden will.
JAMES II kann relativ einfach für verteilte Simulationen verwendet werden. Auf jedem Rechner muss dazu eine Instanz von JAMES II gestartet werden, die sich bei einem MasterServer anmeldet. Natürlich unterstützt JAMES II die Integration verschiedener Lösungen aus dem Umfeld der verteilten Simulation, bspw. unterschiedliche Partitionierungs- und Lastausgleichsverfahren.
Der erste Schritt hin zu einer konkreten verteilten Simulation ist von daher die Partitionierung des Modells. Dabei müssen die besonderen Eigenschaften des zu Grunde liegenden Modellierungsformalismus beachtet werden, sowie Charakteristika der zur Verfügung stehenden Infrastruktur (z.B. Netzwerkgeschwindigkeit und -topologie, Rechenleistung). Zur Analyse von Modellstruktur und Infrastruktur bedarf es daher neben dem eigentlichen Partitionierungsalgorithmus noch weiterer Algorithmen. JAMES II ermöglicht eine automatische Kombination von passenden Algorithmen für DEVS-Modelle, sowie eine einfache Integration von weiteren Partitionierungs- und Analysemethoden.
Während der Berechnung der Simulation kann/wird es zu der Situation kommen, dass die Last zwischen den einzelnen Prozessoren schwankt. Dies kann man durch Load Balancing Techniken ausgleichen.
Obwohl Load Balancing lediglich als Repartitionierung zur
Laufzeit aufgefasst werden kann, ergeben sich aus diesem Kontext weitere Anforderungen. Zum einen muss ein Load Balancing Algorithmus wegen seiner wiederholten Ausführung besonders effizient sein, damit die Ausführung nicht unnötig ausgebremst wird. Zum anderen muss die Anzahl der zu migrierenden Modellelemente, ausgehend von der aktuellen Partition, minimiert werden, da auch die Migration von Modellelementen sehr aufwendig sein kann. Geeignete Load Balancing Algorithmen befinden sich zur Zeit noch in der Entwicklung.
Es stehen momentan drei verschiedene verteilte Simulationsalgorithmen für PDEVS-Modelle zur Verfügung.
Verwendung von JAMES II
JAMES II wurde und wird für eine Reihe unterschiedlichster Anwendungen verwendet:
- Die Entwicklung, Evaluation und Validierung von Simulationsalgorithmen und -datenstrukturen, bspw. EFSim
(Experimental Algorithmics) - Entwicklung neuer Modellierungsformalismen, bspw. SpaPi
- Simulation von Simulationssystemen
- "Testen" von Software
- Modellierung und Simulation von unterschiedlichen Applikationen
- Systembiologie: TRPSYN, Projekt 1 (DiErMoSiS), Projekt 2 (GRK dIEM oSiRiS)
- Netzwerksimulation
- Demographie (MPIDR)
- Simulation in Lehr-/Lernsystemen
Wurde/Wird JAMES II schon von anderen verwendet?
Ja! Hier werden wir die aufführen, die uns bekannt sind und die bereits zum Download zur Verfügung stehen.Liste der auf JAMES II basierenden Produkte (verfügbar zum Download)
- MicCore (2009), erstellt am MPIDR im MicMac project