University of Hamburg
Department of Computer Science
DESMO-J Logo Basic Features

The framework DESMO-J extends Java by adding features which greatly simplify the construction of discrete-event simulation models. It provides the modeller with

  • ready-to-use classes for common model components like queues, stochastic distributions based on random number streams, and data collectors.
  • abstract classes to be adapted to model-specific behaviour, like model, entity, event, and simulation process. Depending on the modelling style applied you will have to either define your own simulation processes or define your own entities and events.
  • ready-to-use simulation infrastructure comprising scheduler, event list, and simulation time clock, all encapsulated in an experiment class. This experiment class also provides for the generation of reports and traces of a simulation run.

Separation of Model and Experiment

DESMO-J supports the separation of model and experiment, a widely acknowledged requirement of good simulation software as it allows for performing the same experiment with different models which may represent competing system designs or alternative strategies as well as performing different experiments with the same model. In DESMO-J the model class handles all model components whereas the experiment class provides the simulation infrastructure. Both are explicitly connected during a simulation run.

The separation of model and
experiment in DESMO-J

Package Structure

The framework is structured into several Java packages; the most important include:

  • desmoj.core provides within its sub-packages all the necessary classes to start modelling with DESMO-J:

    • desmoj.core.simulator contains the core classes needed to build a model and set up an experiment. Every simulation model will have to derive a subclass of Model which sets up the model and connects it to an experiment (an instance of Experiment) which in turn controls the simulation run. Other classes in this package comprise model components which can either be used directly like Queue or ProcessQueue or have to be subclassed like Entity, Event, and SimProcess.

    • desmoj.core.dist provides numerous probability distributions.

    • provides DESMO-J's automatic report functionality. At the moment, output can be generated in HTML and XML formats.

    • desmoj.core.statistic provides a wide range of data collectors, from simple counters (Count) to (non) time-weighted mean and deviation of time series data (Tally, Accumulate) to frequency distributions (Histogram). All data collectors' statistics will be computed and displayed automatically in the end-of-run report.

    • desmoj.core.advancedModellingFeatures contains classes to be used in modelling process synchronization on a more abstract level.

  • Additional functionality is located at desmoj.extensions:

    • desmoj.extensions.applications contains components to facilitate model building in the application domains

      • Container terminal logistics
      • Production systems

    • desmoj.extensions.experimentation provides a basic graphical user interface to DESMO-J to run experiments and view results.

    • desmoj.extensions.visualization2d contains the extension for 2d animation.

    • desmoj.extensions.visualization3d contains the 3d visualization component (Java 3D required).

Please refer to the version history if you are interested in DESMO-J's development.