Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Projekte CoSA JAMES II
Artikelaktionen

Teilprojekt: JAMES II

Zuletzt verändert: 03.01.2010 11:35

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:
Simulationsframework, Simulatoren, Verteilte Simulation

  CoSA
 
 
  Projektinformationen     Teilprojektinformationen
Laufzeit: 01.04.2003 bis 30.10.2011
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
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
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:

  1. Erforschung von Modellierung und Simulation
  2. Einsatz im Rahmen von anderen Forschungsprojekten (zur Modellierung und Simulation komplexer Modelle)
  3. 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.

JAMES II ist als Framework entwickelt worden. D.h. es kann als Basis verwendet werden eigene Modellierungs- und Simulationsprogramme zu erstellen. Diesen Prozess sollte JAMES II dabei vereinfachen. Obwohl Frameworks nicht "out of the box" verwendbar sein "müssen" kann JAMES II zusätzlich direkt als "fertiges" Modellierungs- und Simulationsprogramm verwendet werden (als Environment für M&S). JAMES II ist trotz der relativ langen Entwicklungszeit noch immer kein COTS - Produkt. Auch wenn zunehmend Funktionalität "out of the box" zur Verfügung steht, so ist es im Wesentlichen eher ein Mitmachprojekt.

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:


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)



Powered by Plone CMS, the Open Source Content Management System

Diese Website erfüllt die folgenden Standards: