Full disclosure: I'm not a computer programmer. Despy is a hobby project.My goals with this project are to improve my programming skills, learn about discrete event simulation, and give myself something to do on Sunday mornings besides read the comics. If someday this turns into a functional framework for discrete event simulation, that's just icing.
Despy is a discrete event simulation framework that is written in
Python 3.5 and is heavily influenced by
DESMO-J <http://desmoj.sourceforge.net/>
_ and
SimPy <https://simpy.readthedocs.org/en/latest/>
_. Eventually, Despy
will support working through the examples in the Discrete Event
Simulation text by Banks, Carson, Nelson, and Nicol.
I am concerned that as a scripted language, Python may be slow for complex simulations, but so far I haven't had any speed issues. Furthermore, for a hobby project like Despy, the benefits of the math, statistics, and plotting packages that are available for Python outweigh my speed concerns. If I run into problems in the future with more complex simulations, then I'll have a follow-on hobby project: teaching myself how to reprogram parts of the framework in C++.
My goals for despy are to:
- Support both event and process world views.
- Provide typical simulation output parameters (queue length, system time, utilization) by default.
- Support a high level of customization, but set sensible defaults for simulation parameters to reduce the amount of code needed to run a simulation.
- Write the simulation using only the standard Python library or
mainstream packages that are available in the
Anaconda Python stack <https://store.continuum.io/cshop/anaconda/>
. Despy relies heavily onNumpy <http://www.numpy.org/>
andMatplotlib <http://matplotlib.org/>
_. - Eventually I would like to use Jinja or another template framework to give simulation designers the ability to generate custom reports. I also intend to set up the framework to allow Despy simulations to run within iPython. It will take a while (I have a day job) -- check back next year.