The Discrete Event System Specification (DEVS) is a popular formalism devised by Bernard Zeigler in the late 1970s for modeling complex dynamical systems using a discrete event abstraction. At this abstraction level, a timed sequence of pertinent "events" input to a system (or internal timeouts) causes instantaneous changes to the state of the system. Main advantages of DEVS are its precise, implementation independent specification, and its support for modular composition. This tutorial introduces the Classic DEVS formalism in a bottom-up fashion, using a simple traffic light example. The syntax and operational semantics of Atomic (i.e., non-hierarchical) models are introduced first. Coupled (i.e., hierarchical) models are introduced to structure and couple Atomic models. We continue to actual applications of DEVS, with an example in performance analysis of queueing systems. This uses generator, queue, etc. components from our PythonPDEVS Building Block Library. All examples in the paper are presented using the language PythonPDEVS and its simulator, though this introduction is equally applicable to other DEVS implementations. We conclude with further reading on DEVS theory, variants, and tools.
INTRODUCTIONThe Discrete Event System Specification (DEVS) (Zeigler et al. 2000) first introduced by Bernard Zeigler in the late 1970s is a popular formalism for modeling complex dynamic systems using a discrete event abstraction. At this abstraction level, a timed sequence of pertinent "events" input to a system cause instantaneous changes to the state of the system. These events can be generated externally (i.e., by another model, of the system's environment) or internally (i.e., by the model itself due to timeouts). If a system has no (or does not react to) external events, it is called autonomous. The next state of the system is defined based on both the previous state of the system and the event. Between events, the state does not change, resulting in a piecewise constant state trajectory. Simulation kernels may thus only consider times at which events occur, skipping over all intermediate points in time. This is in contrast to discrete time models, where time is increased with a fixed increment, and only at those times the state is updated. Discrete event models have the advantage that their time granularity can, in theory, become arbitrarily small or large. However, only a finite number of events are allowed in any finite time span. Without this restriction, discrete event would become equivalent to continuous time. The added complexity of the discrete event abstraction makes it less appropriate for systems that naturally have a fixed time step.This tutorial provides an introduction to DEVS (often referred to as Classic DEVS) using a simple traffic light example. This paper is a revised and extended version of our tutorial paper at the 2019 Winter Simulation Conference (Van Tendeloo, Vangheluwe, and Franceschini 2019). We start from a simple autonomous traffic light, incrementally extended up to a trafficlight with...