A discrete event process oriented simulation framework written in Julia inspired by the Python library SimPy.
Build Status & Coverage
SimJulia.jl is a registered package, and is installed by running
- Ben Lauwens, Royal Military Academy, Brussels, Belgium.
- To discuss problems or feature requests, file an issue. For bugs, please include as much information as possible, including operating system, julia version, and version of the dependencies:
- To contribute, make a pull request. Contributions should include tests for any new features/bug fixes.
- v0.5 (2017)
- The old way of making processes is deprecated in favor of the semi-coroutine approach as implemented in ResumableFunctions. The
@process macro replaces the
@coroutine macro. The old
@process macro is temporarily renamed
@oldprocess and will be removed when the infrastructure supporting the
produce and the
consume functions is no longer available in Julia. (DONE)
- This version no longer integrates a continuous time solver. A continuous simulation framework based on DISCO and inspired by the standalone QSS solver using SimJulia as its discrete-event engine can be found in the repository QuantizedStateSystems (WIP):
- Documentation is automated with Documenter.jl (WIP: Overview and Tutorial OK).
- v0.4.1 (2017)
@yield macros are put in a seperate package ResumableFunctions:
- Users have to take into account the following syntax change:
@yield return arg is replaced by
- v0.4 (2017) only supports Julia v0.6 and above. It is a complete rewrite: more julian and less pythonic. The discrete event features are on par with v0.3 (SimPy v3) and following features are added:
- Scheduling of events can be done with
- Two ways of making
Processes are provided:
- using the existing concept of
- using a novel finite-statemachine approach
- A continuous time solver based on the standalone QSS solver is implemented. Only non-stiff systems can be solved efficiently.
- v0.3 (2015) synchronizes the API with SimPy v3 and is Julia v0.3, v0.4 and v0.5 compatible:
- Documentation is available at readthedocs.
- The continuous time solver is not implemented.
- v0.2 (2014) introduces a continuous time solver inspired by the Simula library DISCO and is Julia v0.2 and v0.3 compatible.
- v0.1 (2013) is a Julia clone of SimPy v2 and is Julia v0.2 compatible.
- Transparent statistics gathering for resources.