Home - roland-ewald/sessl GitHub Wiki

REPOSITORY MOVED!

The contents of this repository have been moved to a new location, where it will be maintained further.

The code in this repository will not be updated anymore, and is only kept for reference.

SESSL: Simulation Experiment Specification via a Scala Layer

  • SESSL is a domain-specific language for simulation experiments.
  • SESSL experiments are reproducible and easy to specify.
  • SESSL is implemented in Scala, hence fully compatible with Java.
  • SESSL is open source (Apache 2.0 license).

Sample experiment

execute{
  new Experiment {
    model = "my.model"
    stopCondition = AfterWallClockTime(seconds = 3) or AfterSimSteps(100)
    scan("x" <~ range(1,1,10), "y" <~ range(2,2,20))
    replications = 10
  }
}

This experiment simulates the model stored in my.model until the execution time exceeds 3 seconds or until a simulation time of 100 is reached. A parameter scan is configured, where the model parameters x and y are iterated over 1,2,...,10 and 2,4,...,20, respectively, so that 1000 simulation runs are carried out overall: each of the 100 model configurations (x,y) = (1,2), (1,4), ..., (1,20), (2,2), (2,4), ... (10,20) is replicated 10 times.

Features

  • Parameter scans
  • Result storage
  • Output aggregation
  • Report generation
  • Parallel Execution
  • Event handling
  • Runtime performance analysis
  • Complex replication and simulation stopping conditions
  • Algorithm configuration (RNGs, simulators, etc.)
  • Simulation-based optimization

Which of these features are available depends on the binding to a concrete simulation system.

Bindings are currently available for:

If you want to use SESSL with another simulation system, just get in touch --- developing a new binding is usually straightfoward (also see the Developer Guide). The functionality available depends on the binding that is used. (So far, the JAMES II binding is the most powerful one.)

Installation

New Project: a 3 Minute Setup

The easiest way to try out SESSL is to clone the sample repository at https://github.com/roland-ewald/sessl-examples and execute the Maven project inside. This assumes you have git, Java 7 and Maven 3 installed.

Open the command line and do

git clone https://github.com/roland-ewald/sessl-examples

and then

cd sessl-examples

and finally

mvn scala:run

which executes the included sample experiments (see https://github.com/roland-ewald/sessl-examples for details).

Existing Project

Alternatively, you can download the latest release and add the JAR files to your project. This assumes that you already have Scala (version 2.10.2) installed.

Using Maven

If you use Maven, you can simply add dependencies to sessl (or sessl-james, sessl-omnetpp, sessl-sbmlsim etc.) to your pom.xml like this:

<dependency>
  <groupId>org.sessl</groupId>
  <artifactId>sessl</artifactId> <!-- Change to desired binding -->
  <version>0.9</version> <!-- Use current version here-->
</dependency>

The SESSL artifacts and their dependencies are available via a public repository, which you also need to add:

<repositories>
  <!-- Hosts all SESSL artifacts and their dependencies - except Scala... -->
  <repository>
    <id>sessl-repo</id>
    <name>sessl-repo</name>
    <url>http://sessl.org/maven</url>
  </repository>
  <!-- ... so you need to include the Scala repository as well -->
  <repository>
    <id>scala-tools.org</id>
    <name>Scala-tools Maven2 Repository</name>
    <url>http://scala-tools.org/repo-releases</url>
  </repository> 
  <!-- ... -->
</repositories>

Documentation

How to contribute

Please use the issue tracker for feature requests and bug reports.

Contributions, particularly regarding bindings for other simulation systems, are always welcome.

For more details, see the Developer Guide.

How to cite

R. Ewald and A. M. Uhrmacher.

SESSL: A Domain-Specific Language for Simulation Experiments.

ACM Transactions on Modeling and Computer Simulation 24(2), February 2014

(preprints available on request)

Source Code Contributions

Acknowledgements

The development of this tool was supported by the DFG (German Research Foundation) via the research training group 1387 (dIEM oSiRiS) and the ALeSiA research project (grant //EW 127/1-1). The work on both projects was carried out in the Modeling & Simulation research group at the Institute for Computer Science of the University of Rostock.

DFG University of Rostock
Institute of Computer Science @ University of Rostock Modeling & Simulation Research Group @ University of Rostock
Research Training Group dIEM oSiRiS ALeSiA project
⚠️ **GitHub.com Fallback** ⚠️