Personal tools
You are here: Home Projects CoSA JAMES II
Document Actions

Subproject: JAMES II

last modified 2012-12-07 14:04

Research project context: »Component based framework for an effective and efficient simulation of (agent) systems«

JAva-based Multipurpose Environment for Simulation II (formerly known as Java-based Agent Modeling Environment for Simulation)  

Abstract: James II is a flexible, extendible and reusable simulation framework. It supports any modeling formalism/paradigm as well as simulation methodology. There are already more than 200 extensions supporting several modeling formalisms, simulation algorithms, and many more simulation related stuff.

Keywords:
simulation framework, simulators, distributed simulation

  CoSA
 
 
  Research Project Information     Subproject Information
Runtime: 2003-04-01 until 2013-12-31
Project coordination: Adelinde M. Uhrmacher
Student staff: n.n.
Former student staff: Johannes Rössel; Valerius Weigandt; Mathias Rimane; Enrico Seib; Dortje Löper; Ulrike Borchardt; Robert Waltemath; Simon Bartels; Johannes Becherer; Thomas Beer; Gabriel Blum; Nico Eggert; Roland Ewald; Stefan Friedrichs; Florian Gewandt; Lydia Jost; Sven Kluge; Stefan Leye; Sebastian Lieske; Frank Manteufel; Steffen Maas; Rene Michalski; Thomas Nösinger; Christian Ober; Björn Paul; Jan Pommerenke; Kathrin Rohloff; Oliver Röwer; Hans Schipke; Rene Schulz; Carl Tuemmler; Felix Willud; Felix Woitzel; Martina Gierke
Contractor(s): DFG
 
Project runtime: Since 2003-04-01
Scientific coordination: Adelinde M. Uhrmacher
Student staff: n.n.
Former student staff: Simon Bartels; Johannes Becherer; Thomas Beer; Gabriel Blum; Nico Eggert; Roland Ewald; Stefan Friedrichs; Florian Gewandt; Lydia Jost; Sven Kluge; Stefan Leye; Sebastian Lieske; Dortje Löper; Frank Manteufel; Steffen Maas; Rene Michalski; Thomas Nösinger; Christian Ober; Björn Paul; Jan Pommerenke; Kathrin Rohloff; Johannes Rössel; Oliver Röwer; Hans Schipke; Rene Schulz; Enrico Seib; Carl Tuemmler; Robert Waltemath; Valerius Weigandt; Felix Willud; Felix Woitzel

About JAMES II


JAMES II
is an open framework for modeling and simulation: it is not restricted to any paradigm, application, modeling formalism or simulation algorithm.


Download JAMES II



Quick guide for developers: setting up a JAMES II-based simulation project in 5 minutes


Development


On developing JAMES II, the successor of JAMES, three different use cases have been considered:
  1. Research of modeling and simulation paradigms
  2. Use in the context of diverse research projects (modelling and simulation of complex models)
  3. Use for teaching (directly, and as backend for a tutoring system)

Several requirements can be directly listed as conclusions from the given use cases:
  • modular system design (exchange and reuse of system parts; easy to extend)
  • scalability
  • support of diverse hardware infrastructures
  • efficient and exchangeable algorithms and data structures
  • easy to use for different users

The modular design

JAMES II consists out of four main parts:
  • the graphical user interface
  • the experiment layer (supports diverse experiment types, e.g. optimization experiments)
  • the modelling layer (supports diverse modelling formalisms)
  • the execution layer (supports the simulation of various formalisms, there may be more than one simulation algorithm per formalism)

JAMES II is based on a concept named "Plug'n simulate". This concept allows the flexible extension of the framework - either with concrete new functionality (e.g. a simulation algorithm) or with new types of functionality.

The implementation

JAMES II is being developed in Java 1.6 by using several design patterns. The development is supported by using a version management system. Until 2012 we used the Subversion version management system from 2012 we migrated to Mercurial and now use this version management system together with Hudson and Sonar to support the development process event better and to constantly improve the code quality.

State


Currently there are JAMES II plug-ins which provide support for
  • Beta-binders models,
  • cellular automata, 
  • chemical reactions networks,
  • MicMac micro models (cooperation with MPIDR, see usage section),
  • DEVS, PDEVS (Parallel DEVS) models as well as several extensions of this formalism (dynamic structures [PdynDEVS], external processes [PepiDEVS]),
  • Pi, SpaPi, and AttributedPi models.

The PDEVS and Beta-binders models can be simulated by using a distributed setup or on a single machine. For all others we currently only have sequential algorithms.

Discrete event simulation algorithms usually make intensive use of event queues: plugins provide implementations of several event queues including the calendar queue, the mlist, the 2-list, a heap-based one, a.s.o..

JAMES II additonally supports diverse data sinks (for simulation data), basic random distributions, basic optimization algorithms, ...

At the end of 2007 already more than 150 plugins have been realized for JAMES II. Two years later (October 2009) we had more than 500 plug-ins, in more than 6000 classes, comprising more than 450.000 lines of code, in our development repository.

For the most current state information, and to get information about the elements included in the current and upcoming releases please check the download area.

Simulation


Sequential Execution

There are various approaches for simulating a model on a single computer. Approaches that signifficantly increase the simulation performance for one kind of model structure might be very disadvantageous for other models. For example, for PDEVS, five parameterisable simulation algorithms exist.

Parallel and Distributed Execution

For parallel and distributed execution, one firstly has to consider the hardware to be used: Shall the model be simulated on a Grid or a cluster? Which constraints exist? Is it possible to partition the model, and if so, how can this be done? When executing discrete-event models, one has further to decide on using an optimistic or conservative synchronisation protocol.

JAMES II can be easily used for the creation of a distributed simulation system - computers which shall take part in a distributed setup have to run a instance of JAMES II which will be registered at a central master server. Further on JAMES II allows the integration of diverse mechanisms required in the context of distributed simulations (e.g. partitioning, load balancing).

The first prerequisite with respect to distributed simulation is the partitioning of the model. To partition a model efficiently, one has to consider the peculiarities of the employed modeling formalism, as well as characteristics of the available (hardware-)infrastructure (e.g., network speed and topology, computing power). To analyse model structure and infrastructure, additional algorithms are required.
JAMES II allows an automated combination of suitable algorithms for DEVS models, and the integration of other partitioning and analysis methods.

The computational load of the employed processors may vary over simulation runtime. This can be avoided by load balancing techniques. Although load balancing could plainly be regarded as re-partitioning at runtime, additional requirements need to be addressed. On one hand, a load balancing algorithm has to be particularly efficient, since it is called repeatedly and may slow down the simulation. On the other hand, the number of migrations that are needed to reduce imbalance should be minimised, which often requires a considerable amount of computing time. Appropriate load balancing algorithms are still under development.

Usage of JAMES II


JAMES II has already been and is being used for diverse applications

What can JAMES II do for you?


JAMES II is a flexible framework which is a sound base for the creation and evaluation of new modeling and simulation technology and applications.
As a plugin based framework JAMES II provides a maximal degree of reusability, e.g. coarse grained distributed simulation for all sequential simulation algorithms, event queue implementations, optimization algorithms, ... .

Our experiences with JAMES II show that it seems to be a framework for simulation technology in general, i.e., up to now we had not been able to identify technology which cannot be integrated into the system.


Modeling and simulation research

The reusability within JAMES II eases the creation of new technologies. New developments can be compared to older ones in a fair setup. The plenty of possibilities enables a new level of research due to the number of yet unexplored combinations of evolved technologies.

Experimental algorithmics

Algorithms shipping with a modelling and simulation framework as well as those which are described in publications need to be carefully validated and evaluated. The stable framework of JAMES II, especially the ability to exchange single algorithms though the Plig'n simulate schema, forms the base for such validations. The suitability has already been demonstrated in several publications.

Applications

Often m&s environments are created for the realization of single applications. This approach has several drawbacks, among them the disappearance of these systems if the applications get out of scope or the authors change their affiliation which e.g. leads to not reproducible results, as well as the costs for the creation of structures which can be reused if JAMES II is used even if a yet unsupported modeling paradigm shall be used (e.g. experiment environment).

The advanced simulation technologies realized for JAMES II allow to focus on model development and they can be facilitated for the execution of detailed experiments (e.g. replications of runs (of a stochastic model) in a coarse grained setup, e.g. on multi core machines).

New technologies (e.g. new optimization algorithms, event queue implementations) can be, if applicable, reused for any application. Most often without any modifications to the existing realizations.

Interested in JAMES II?


Please contact us if you like to get in touch with JAMES II (either for using or development of) or if you just like to get more information about JAMES II.

Has it already been/Is it being used by others?

Yes, it has/is to give a short answer. Here we try to list those which are known to us, and which are already available for download.

List of products based on JAMES II (available for download)

List of projects JAMES II has been used in / is being used in / has been combined with (not complete)

  • MicMac project (see MicCore above); JAMES II as framework
  • Open Simulation Architecture (OSA); reusing (parts of) JAMES II
  • Research training group dIEM oSiRiS; modeling, simulation, and developments

  • DIANE (LANES protocol); modeling, simulation
  • Autominder (testing software); modeling, simulation




Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: