# A Python-based simulation package

Date: | 2007-01-31 gav
Revision: | 1.1.1.13 gav

SimPy is a process-based discrete-event simulation language based on standard Python and released under the GNU LGPL. It provides the modeller with components of a simulation model including processes, for active components like customers, messages, and vehicles, and resources, for passive components that form limited capacity congestion points like servers, checkout counters, and tunnels. It also provides monitor variables to aid in gathering statistics. Random variates are provided by the standard Python random module.

SimPy is based on ideas from Simula and Simscript but uses standard Python. It provides efficient implementation of co-routines using Python's generators capability. It requires Python 2.3 or later.

More information is available on the SimPy Homepage and the SimPy wiki.

# Download

SimPy can be downloaded from the Simpy page on Sourceforge.

A number of example SimPy models are included in the download package.

# Getting support

SimPy users are encouraged to subscribe to the Simpy User mailing list (simpy-user list). This is the best place to ask questions to the user community about SimPy use and to discuss any problems.

Any SimPy errors should be reported to the SimPy bug tracker on SourceForge.net. A SimPy developer will then undertake the resolution of that error.

Proposals for new features for SimPy should be discussed first on the SimPy User list or on the SimPy wiki. After such discussion, they should be submitted to SimPy Feature Requests. They will then be considered for inclusion in a future version/release of SimPy. Feature requests which have been discussed with the user community as addressed above stand a much better chance of being implemented than ones coming 'out of the blue'.

# Documentation

A Manual, (pdf) with simple examples.

A brief, clearly structured cheat-sheet (in spreadsheet format ) of SimPy commands and their semantics.

Two tutorials for SimPy, The Bank (TheBank.pdf) and The Bank2 (TheBank2.pdf) showing the gradual development of a multi-server bank model and the use of a few special facilities.

A brief introduction to interfacing SimPy models with the matplotlib plotting package for producing publication-quality plots.

SimPlot, a basic plotting package for SimPy.

SimGUI, a version of SimPy that provides a graphical way for users to interact with a SimPy program, changing its parameters and examining the output.

SimulationTrace, a version of SimPy modified for tracing for education and debugging.

SimulationStep a version of SimPy which can assist with debugging models, interacting with them on an event-by-event basis, getting event-by-event output from a model.

SimulationRT a version of SimPy which allows synchronizing simulation time and real (wallclock) time.

# Mailing list

There is a mailing list for users and modellers using SimPy. You can join it at the simpy-user list.

# Other links

Klaus Muller and Tony Vignaux, SimPy: Simulating Systems in Python, O'Reilly ONLamp.com, 2003-Feb-27, http://www.onlamp.com.pub/a/python/2003/2/27/simpy.html

Norman Matloff, Introduction to the SimPy Discrete-Event Simulation Package, U Cal: Davis, 2003, http://heather.cs.ucdavis.edu/~matloff/simpy.html

David Mertz, Charming Python: SimPy simplifies complex models, IBM Developer Works, Dec 2002, http://www-106.ibm.com/developerworks/linux/library/l-simpy.html

Web-site: | http://simpy.sourceforge.net/
Date: | $Date: 2007/01/31 08:03:41 $ gav
Revision: | $Revision: 1.1.1.14 $ gav