DSOL - Distributed Simulation Object Library

What is DSOL?

  • DSOL is an open source, Java based, suite for continuous and discrete event simulation.
  • Its first release was introduced at IEEE's Winter Simulation Conference 2002.
  • The starting points for DSOL were that it should be possible to create simulation models that are inherently distributed, and simulation models that are built on the premises of object oriented principles.
  • DSOL is based on Zeigler's (2000) framework for modeling and simulation, which means that the basic entities in a simulation study are a model, and a simulator, governed for experimentation by and experimental frame.
  • All these elements surface in the DSOL simulation framework: the ModelInterface, implemented by the user, the SimulatorInterface with several implementations such as the DEVSSimulator and the DESSSimulator, and the class ExperimentalFrame for setting the experiment.

Implemented formalisms

At the moment, the following formalisms have been implemented in DSOL: event scheduling, process interaction, differential equations, flow modeling, classical DEVS, Port-based DEVS, hierarchical DEVS, and agent modeling. Extensions created by others (but currently still outside the core) contain for instance Petri Nets.

DSOL-INTERPRETER module

DSOL-INTERPRETER is the module that contains classes to emulate a JVM within the JVM. This is used for the Process Interaction formalism, to allow code to halt in the middle of execution of a method, without using threads.

  • Full JVM implementation and emulation
  • Code is given to JVM at the interface to native calls
  • Code can be interrupted at any location in a method without using threads

DSOL License

DSOL has an open source BSD 3-clause license.

  • Third party components used in DSOL can not have a license that is more restrictive than BSD, Apache, MIT, LGPL, Eclipse.
  • DSOL can be incorporated in part or in full in other products for any use (educational, commercial, whatever).
  • DSOL may be extended, evolved by anyone into anything else for any purpose.