-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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 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).
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.
- 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.
- JAMES II
- SBMLsimulator
- Systems Biology Workbench
- OMNeT++ (requires separate installation of OMNeT++ 4.2)
- Stochastic Simulation in Java library (SSJ) (the binding is available in a separate repostitory, due to potential license problems)
- Opt4J (for simulation-based optimization)
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.)
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).
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.
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>
- User Guide
- Developer Guide
- Poster at the Wintersim '12 introducing the general ideas behind SESSL (madness slides)
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.
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)
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.