This is to announce the release of SIMEX version 3.0 beta.
SIMEX is a set of C++ classes, along with a few Bourne shell and
Tcl/Tk scripts. The goal of SIMEX is to provide a framework for
building discrete event simulation models, with an emphasis on models
of large biological populations. SIMEX is the current incarnation of
a project that began two decades ago with a model of influenza
epidemiology. Since then versions of the software have been used to
model coronary heart disease, HIV spread through social networks, and
family pedigrees with genetic diseases. SIMEX is based on a process-oriented
world view and is therefore akin to ModSim and Sim_Plus_Plus.
SIMEX is known to run on a SparcStation with g++ 2.6.0. When
configured without the optional support for light weight threads and
Tcl/Tk, it contains only platform independent C++ code and should work
on any system with a C++ compiler with good support for templates.
The shell scripts are useful for creating program stubs, but could be
ignored for use on non-Unix platforms.
SIMEX was developed at the National Micropopulation Simulation Resource
and is freely available and supported. However, our funding
depends on knowing our user base so please contact us if you find the
software useful and acknowledge our grant number in any publications
arising from the use of the software. This is a beta release and all
feedback is welcome.
This project was funded by NIH P41-RR01632
More information can be obtained from
The software itself can be obtained from
You may also wish to contact the following staff
Jan Marie Lundgren (User Contact) jan at simvax.labmed.umn.edu
Qing Zhuo (Collaborations Coordinator) zhuo at simvax.labmed.umn.edu
Michael Altmann (Development Director) michael at simvax.labmed.umn.edu
SIMEX provides classes for the following aspects of modeling:
Event scheduling and process modeling
At the core of SIMEX is an event scheduler that uses a bucket
scheme (a.k.a. the calendar algorithm) for fast event management. On
top of this are built a number of types of events. The most useful
of these is a state transition diagram, for which a user specifies
the durations in states and the transitions among states. Each state
is implemented by the user as a C++ method. There are also classes
for light weight processes, repeatedly performing
a function, and for synchronization.
Since most simulation programs have a similar flow of control,
a base class is provided from which a user derives and specializes
a class for a particular model.
The hardest part about micropopulation models is assembling
macropopulation information. A suite of classes lets you easily
find the number of individuals that have a certain set of attributes.
Generic data structures
Because we wanted SIMEX to be able to stand alone, we have reinvented
the wheel for a few of the standard data structures.
A class is provided that lets you easily add a user interface
to your model. The interface is fairly simple, but it does let
you specify which parameters should be modifiable at run time. If
Tcl/Tk is installed, a graphical interface can also be generated.
The random number generators are based on Marsaglia, Ananthanarayanan
& Paul, 1973. In addition to the usual distributions, classes
are provided for general discrete distributions.