PythonPDEVS 
   

PythonPDEVS (a.k.a. PyPDEVS, PyDEVS, and PythonDEVS)


Introduction
PythonPDEVS belongs to the Parallel DEVS family of simulation modelling languages, and is grafted on the Python programming language. While Parallel DEVS is the default formalism used, it is possible to use Classic DEVS and Dynamic Structure DEVS (for both Classic and Parallel DEVS) too.

Tutorial
At SpringSim 2016 and 2017, a tutorial was given on Parallel DEVS using PythonPDEVS. You can download the presentation.
At WinterSim 2017, a tutorial was given on Classic DEVS using PythonPDEVS. You can download the presentation.

Features
PythonPDEVS supports a variety of features, most of them geared towards a combination of performance and modularity. What follows is a non-exhaustive list of features. For a more detailed list, we refer to the PythonPDEVS documentation.
  • Different formalisms
  • PythonPDEVS supports a variety of different formalisms, all of them related to DEVS. The following formalisms are supported:
    • Parallel DEVS
    • Classic DEVS
    • Dynamic Structure Classic DEVS
    • Dynamic Structure Parallel DEVS
  • Distributed simulation
  • PythonPDEVS can perform distributed simulations, using Time Warp synchronization. The middleware is MPI.
  • Tracers
  • PythonPDEVS contains several different tracers by default, which can be used to visualize a running simulation. The following tracers are included by default:
    • Verbose
    • XML
    • VCD
    • Cell
    • User-defined
  • Simulation hints
  • Modelers can specify hints to the simulator, which can then be used to improve performance. This is a form of leaky abstraction, as the modeler has to think about the simulation algorithm. These hints are optional, and safe defaults are used if they are not provided. Some of these hints are:
    • Message copy mechanism
    • State saving mechanism
    • Scheduler implementation
    • Activity metrics for local and distributed simulation

Publications
The main detailed scientific reference is Yentl Van Tendeloo's Master thesis:
  • Yentl Van Tendeloo. Activity-aware DEVS simulation. Master's thesis, University of Antwerp, 2014. [pdf]
PythonPDEVS is also described in several technical reports and papers. The earlier publications are meant as a historical overview. They describe some of our earlier developments on which the current PythonPDEVS is based. The most recent publications refer to the current version of PythonPDEVS.
  • Jean-Sebastien Bolduc and Hans Vangheluwe. The modelling and simulation package PythonDEVS for Classical hierarchical DEVS. Technical report, McGill University, 2001. [pdf]
  • Hongyan Song. Infrastructure for DEVS modelling and experimentation. Master's thesis, School of Computer Science, McGill University, 2006. [pdf]
  • Yentl Van Tendeloo. Efficient DEVS simulation. Technical report, University of Antwerp, 2013. [pdf]
  • Yentl Van Tendeloo. Distributed and Parallel DEVS simulation. Technical report, University of Antwerp, 2013. [pdf]
  • Yentl Van Tendeloo. Logisim to DEVS translation. In Proceedings of the 2013 IEEE/ACM 17th International Symposium on Distributed Simulation and Real Time Applications, pages 13-20, 2013. [pdf]
  • Yentl Van Tendeloo. Activity-aware DEVS simulation. Master's thesis, University of Antwerp, 2014. [pdf]
  • Yentl Van Tendeloo and Hans Vangheluwe. Activity in PythonPDEVS. In Proceedings of ACTIMS 2014, 2014. [pdf]
  • Yentl Van Tendeloo and Hans Vangheluwe. The modular architecture of the Python(P)DEVS simulation kernel. In Proceedings of the 2014 Symposium on Theory of Modeling and Simulation - DEVS, pages 387-392, 2014. [pdf]
  • Yentl Van Tendeloo and Hans Vangheluwe. PythonPDEVS: A distributed Parallel DEVS simulator. In Proceedings of the 2015 Symposium on Theory of Modeling and Simulation - DEVS (TMS/DEVS), pages 844-851, 2015. [pdf]
  • Simon Van Mierlo, Yentl Van Tendeloo, Sadaf Mustafiz, Bruno Barocca and Hans Vangheluwe. Explicit Modelling of a Parallel DEVS Experimentation Environment. In Proceedings of the 2015 Symposium on Theory of Modeling and Simulation - DEVS (TMS/DEVS), pages 860-867, 2015. [pdf]
  • Yentl Van Tendeloo and Hans Vangheluwe. An Overview of PythonPDEVS. In Proceedings of Journées DEVS Francophones (JDF), 2016. [pdf]
  • Simon Van Mierlo, Yentl Van Tendeloo, and Hans Vangheluwe. Debugging Parallel DEVS. Simulation: Transactions of the Society for Modeling and Simulation International. 2017, 93(4): 285-306. DOI: 10.1177/0037549716658360 [pdf]
  • Yentl Van Tendeloo and Hans Vangheluwe. An Evaluation of DEVS Simulation Tools. Simulation: Transactions of the Society for Modeling and Simulation International. 2017, 93(2): 103-121. DOI: 10.1177/0037549716678330 [pdf]
  • Yentl Van Tendeloo and Hans Vangheluwe. Introduction to Parallel DEVS Modelling and Simulation. Tutorial at the 2017 SpringSim multi-conference. [pdf]
  • Yentl Van Tendeloo, Simon Van Mierlo, and Hans Vangheluwe. Time- and Space-Conscious Omniscient Debugging of Parallel DEVS. In Proceedings of the 2017 Symposium on Theory of Modeling and Simulation - DEVS (TMS/DEVS) (Accepted), 2017 [pdf]
PythonPDEVS is used in many of our other projects, often for performance modelling and simulation, for example in the context of deployment-space exploration. Is is also used in projects of other research groups.

Documentation
The PythonPDEVS documentation is generated using Sphinx, and contains an overview of features (including examples of use), and an overview of the implementation. It is also included in the PythonPDEVS package.

Collaborations
PythonPDEVS is used as the simulation kernel of DEVSimPy, a visual modelling and experimentation environment developed at the University of Corsica.

Download
The latest version is PythonPDEVS v2.4.1 (changelog). The PythonPDEVS Git repository is also publicly available.
Maintained by Hans Vangheluwe. Last Modified: 2017/12/06 14:54:55.