Discrete event simulation
From Wikipedia, the free encyclopedia
In discrete-event simulation, the operation of a system is represented as a chronological sequence of events. Each event occurs at an instant in time and marks a change of state in the system . For example, if an elevator is simulated, an event could be "level 6 button pressed", with the resulting system state of "lift moving" and eventually (unless one chooses to simulate the failure of the lift) "lift at level 6".
A common exercise in learning how to build discrete-event simulations is to model a queue, such as customers arriving at a bank to be served by a teller. In this example, the system entities are CUSTOMER-QUEUE and TELLERS. The system events are CUSTOMER-ARRIVAL and CUSTOMER-DEPARTURE. (The event of TELLER-BEGINS-SERVICE can be part of the logic of the arrival and departure events.) The system states, which are changed by these events, are NUMBER-OF-CUSTOMERS-IN-THE-QUEUE (an integer from 0 to n) and TELLER-STATUS (busy or idle). The random variables that need to be characterized to model this system stochastically are CUSTOMER-INTERARRIVAL-TIME and TELLER-SERVICE-TIME.
A number of mechanisms have been proposed for carrying out discrete-event simulation, among them are the event-based, activity-based, process-based and three-phase approaches (Pidd, 1998). The three-phase approach is used by a number of commercial simulation software packages, but from the user's point of view, the specifics of the underlying simulation method are generally hidden.
Contents |
[edit] Components of a Discrete-Event Simulation
In addition to the representation of system state variables and the logic of what happens when system events occur, discrete event simulations include the following:
[edit] Clock
The simulation must keep track of the current simulation time, in whatever measurement units are suitable for the system being modeled. In discrete-event simulations, as opposed to real time simulations, time ‘hops’ because events are instantaneous – the clock skips to the next event start time as the simulation proceeds.
[edit] Events List
The simulation maintains at least one list of simulation events. An event must have a start time, some kind of code that constitutes the performance of the event itself, and possibly an end time. In some approaches, there are separate lists for current and future events. Events in their lists are sorted by event start time. Typically, events are “bootstrapped” – that is, they are scheduled dynamically as the simulation proceeds. For example, in the bank example noted above, the event CUSTOMER-ARRIVAL at time t would, if the CUSTOMER_QUEUE was empty and TELLER was idle, include the creation of the subsequent event CUSTOMER-DEPARTURE to occur at time t+s, where s is a number generated from the SERVICE-TIME distribution.
[edit] Random-Number Generators
The simulation needs to generate random variables of various kinds, depending on the system model. This is accomplished by one or more pseudorandom-number generators. The use of pseudorandom numbers as opposed to true random numbers is a benefit should a simulation need a rerun with exactly the same behaviour.
[edit] Statistics
The simulation typically keeps track of the system's statistics, which quantify the aspects of interest. In the bank example, it is of interest to track the mean service times.
[edit] Ending Condition
Because events are bootstrapped, theoretically a discrete-event simulation could run forever. So the simulation designer must decide when the simulation will end. Typical choices are “at time t” or “after processing n number of events” or, more generally, “when statistical measure X reaches the value x”.
[edit] Simulation Engine Logic
The main loop of a discrete-event simulation will be something like this:
[edit] Start
- Initialize Ending Condition to FALSE.
- Initialize system state variables.
- Initialize Clock (usually starts at simulation time zero).
- Schedule an initial event (i.e., put some initial event into the Events List).
[edit] “Do loop” or “While loop”
While (Ending Condition is FALSE) then do the following:
- Set clock to next event time.
- Do next event and remove from the Events List.
- Update statistics.
[edit] End
- Generate statistical report.
[edit] See also
[edit] System Modeling Approaches
- Finite-state machine and a special case, Markov chain
- Stochastic process and a special case, Markov process
- Queueing theory and in particular Birth-death process
- Petri net and the interactive stochastic Petri-net software tool StpnPlay
[edit] Computational Techniques
- Computer simulation
- Monte Carlo method
- Variance reduction
- Random-number generation
[edit] Languages
- Software choice for discrete-event simulations
[edit] Simulation software
- GPSS is the time tested and trust DES platform: different implementation are available through vendors.
- SimEvents is a discrete-time simulation tool offered by The MathWorks as an add-on package for Simulink and MATLAB.
- ExtendSim is a graphical general purpose environment for discrete event, continuous, discrete rate, and agent based simulation.
- SIMUL8 is the globally recognised standard for Business Process Simulation and has a user base in every country of the world.
- Simula was the first object-oriented programming language, and was designed specifically for simulation
- SimPy is an Open Source process-oriented discrete event simulation package implemented in Python. It is based on Simula concepts, but goes significantly beyond Simula in its synchronization constructs.
- PLANT SIMULATION (eM-Plant, SiMPLE++) was one of the first commercial, object-oriented simulation tools with a graphical UI and an integrated simulation language (SimTalk), details see at SIEMENS PLM
- CACI's SIMPROCESS is used for process simulation.
- jemula is an open-source event-driven simulation environment in JAVA.
- VS7
[edit] References
- ^ Stewart Robinson (2004). Simulation - The practice of model development and use. Wiley.
- Michael Pidd (1998). Computer simulation in management science - fourth edition. Wiley.
[edit] Further reading
- Jerry Banks, John Carson, Barry Nelson and David Nicol (2005). Discrete-event system simulation - fourth edition. Pearson.
- Averill M. Law and W. David Kelton (2000). Simulation modeling and analysis - third edition. McGraw-Hill.
- Bernard P. Zeigler, Herbert Praehofer and Tag Gon Kim (2000). Theory of modeling and simulation: Integrating discrete event and continuous complex dynamic systems - second edition. Academic Press.
- Roger W. McHaney (1991). Computer Simulation: A Practical Perspective. Academic Press.
- William Delaney, Erminia Vaccari (1988). Dynamic Models and Discrete Event Simulation. Dekker INC.
[edit] External links
- Facsimile - a free, open-source discrete-event simulation/emulation library
- Simulation Frameworks list of simulation software development frameworks.
- Simulation tools list of simulation tools
- SimPy an opensource general purpose DES.
- OPNET Modeler a network modeling and simulation tool with a DES engine.