simtools

Tools to support Discrete-Event Simulation (DES) and Monte-Carlo Simulation education and practice

Binder DOI PyPI version fury.io Anaconda-Server Badge Anaconda-Server Badge Read the Docs License: MIT Python 3.10+ License: MIT

sim-tools is being developed to support Discrete-Event Simulation (DES) and Monte-Carlo Simulation education and applied simulation research. It is MIT licensed and freely available to practitioners, students and researchers via PyPi and conda-forge

Vision for sim-tools#

  1. Deliver high quality reliable code for DES and Monte-Carlo Simulation education and practice with full documentation.

  2. Provide a simple to use pythonic interface.

  3. To improve the quality of simulation education using FOSS tools and encourage the use of best practice.

Features:#

  1. Implementation of classic Optimisation via Simulation procedures such as KN, KN++, OBCA and OBCA-m

  2. Theoretical and empirical distributions module that includes classes that encapsulate a random number stream, seed, and distribution parameters.

  3. An extendable Distribution registry that provides a quick reproduible way to parameterise simulation models.

  4. Implementation of Thinning to sample from Non-stationary Poisson Processes (time-dependent) in a DES.

  5. Automatic selection of the number of replications to run via the Replications Algorithm.

  6. EXPERIMENTAL: model trace functionality to support debugging of simulation models.

Installation#

Pip and PyPi#

pip install sim-tools

Conda-forge#

conda install -c conda-forge sim-tools

Mamba#

mamba is a FOSS alternative to conda that is also quicker at resolving and installing environments.

mamba install sim-tools

Binder#

Binder

Learn how to use sim-tools#

  • Online documentation: https://tommonks.github.io/sim-tools

  • Introduction to DES in python: https://health-data-science-or.github.io/simpy-streamlit-tutorial/

Citation#

If you use sim0tools for research, a practical report, education or any reason please include the following citation.

Monks, Thomas. (2021). sim-tools: tools to support the forecasting process in python. Zenodo. http://doi.org/10.5281/zenodo.4553642

@software{sim_tools,
  author       = {Thomas Monks},
  title        = {sim-tools: fundamental tools to support the simulation process in python},
  year         = {2021},
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.4553642},
  url          = {http://doi.org/10.5281/zenodo.4553642}
}

Online Tutorials#

  • Optimisation Via Simulation Colab

Contributing to sim-tools#

Please fork Dev, make your modifications, run the unit tests and submit a pull request for review.

Development environment:

  • conda env create -f binder/environment.yml

  • conda activate sim_tools

All contributions are welcome!

Tips#

Once in the sim_tools environment, you can run tests using the following command:

pytest

To view the documentation, navigate to the top level directory of the code repository in your terminal and issue the following command to build the Jupyter Book:

jb build docs/

To lint the repository, run:

bash lint.sh