Discrete-event simulation: Difference between revisions

Content deleted Content added
Events list: {{redirect|Future event list|lists of future events|Timelines of the future}}; see related Wikipedia:Redirects_for_discussion/Log/2022_March_11#Future_Event_List
OAbot (talk | contribs)
m Open access bot: url-access updated in citation with #oabot.
 
(14 intermediate revisions by 10 users not shown)
Line 2:
A '''discrete-event simulation''' ('''DES''') models the operation of a [[system]] as a ([[discrete time|discrete]]) [[sequence of events]] in time. Each event occurs at a particular instant in time and marks a change of [[State (computer science)|state]] in the system.<ref>{{cite book|title=''Simulation – The practice of model development and use''|author=Stewart Robinson|publisher=Wiley|year=2004}}</ref> Between consecutive events, no change in the system is assumed to occur; thus the simulation time can directly jump to the occurrence time of the next event, which is called '''next-event time progression'''.
 
In addition to next-event time progression, there is also an alternative approach, called '''fixed-incrementincremental time progression''', where time is broken up into small time slices and the system state is updated according to the set of events/activities happening in the time slice.<ref name="matloff">{{cite web|last=Matloff|first=Norm|title=Introduction to Discrete-Event Simulation and the SimPy Language|url=http://heather.cs.ucdavis.edu/~matloff/156/PLN/DESimIntro.pdf|access-date=24 January 2013}}</ref> Because not every time slice has to be simulated, a next-event time simulation can typically run much faster than a corresponding fixed-incrementincremental time simulation.
 
Both forms of DES contrast with [[continuous simulation]] in which the system state is changed continuously over time on the basis of a set of [[Differential equation|differential equations]] defining the rates of change offor state variables.
 
In the past, these three types of simulation have also been referred to, respectively, as: event scheduling simulation, activity scanning simulation, and process interaction simulation. It can also be noted that there are similarities between the implementation of the event queue in event scheduling, and the [[Scheduling (computing)|scheduling queue]] used in operating systems.
 
== Example ==
A common exercise in learning how to build discrete-event simulations is to model a [[Queueing theory|queuequeueing system]], such as customers arriving at a bank teller to be served by a tellerclerk. In this example, the system entitiesobjects are '''Customer-queue''Customer' and '''Tellers'''. The system events are '''Customer-Arrival''' and '''Customer-Departure''Teller'. (The event of '''Teller-Begins-Service''', can be part ofwhile the logic of the arrival and departure events.) The system states, which are changed by these events, are '''Number-of-Customers-in-the-Queue''Customer-Arrival' (an integer from 0 to n) and '''Teller-Status', '' (busy or idle). The [[random variable]]s that need to be characterized to model this system [[stochastic]]ally are '''CustomerService-Interarrival-TimeStart''''' and '''Teller-''Service-TimeEnd'''''. An agent-based framework for performance modelingEach of anthese optimisticevents parallelcomes discretewith eventits simulatorown isdynamics anotherdefined exampleby forthe a discretefollowing event simulation.<ref>{{cite journal |author1=Aditya Kurve |author2=Khashayar Kotobi |author3=George Kesidis |title=An agent-based framework for performance modeling of an optimistic parallel discrete event simulator | doi=10.1186/2194-3206-1-12 |volume=1 |journal=Complex Adaptive Systems Modeling |pages=12|year=2013 |doi-access=freeroutines: }}</ref>
 
# When a ''Customer-Arrival'' event occurs, the state variable ''queue-length'' is incremented by 1, and if the state variable ''teller-status'' has the value "available", a ''Service-Start'' follow-up event is scheduled to happen without any delay, such that the newly arrived customer will be served immediately.
==Components==
# When a ''Service-Start'' event occurs, the state variable ''teller-status'' is set to "busy" and a ''Service-End'' follow-up event is scheduled with a delay (obtained from sampling a ''service-time'' random variable).
In addition to the logic of what happens when system events occur, discrete event simulations include the following:
# When a ''Service-End'' event occurs, the state variable ''queue-length'' is decremented by 1 (representing the customer's departure). If the state variable ''queue-length'' is still greater than zero, a ''Service-Start'' follow-up event is scheduled to happen without any delay. Otherwise, the state variable ''teller-status'' is set to "available".
* Priority queue,
* Animation event handler, and
* Time re-normalization handler (as simulation runs, time variables lose precision. After a while all time variables should be re-normalized by subtracting the last processed event time).
 
The [[random variable]]s that need to be characterized to model this system [[stochastic]]ally are the ''interarrival-time'' for recurrent ''Customer-Arrival'' events and the ''service-time'' for the delays of ''Service-End'' events.
 
==Components==
===State===
 
Line 25 ⟶ 28:
===Events list===
{{redirect|Future event list|lists of future events|Timelines of the future}}
The simulation maintains at least one list of simulation events. This is sometimes called the ''pending event set'' because it lists events that are pending as a result of previously simulated event but have yet to be simulated themselves. An event is described by the time at which it occurs and a type, indicating the code that will be used to simulate that event. It is common for the event code to be parametrized, in which case, the event description also contains parameters to the event code.{{cn|date=March 2022}} The event list is also referred to as the ''future event list'' (FEL) or ''future event set'' (FES).<ref>{{Cite journal |lastlast1=Park |firstfirst1=Hyungwook |last2=Fishwick |first2=Paul A. |date=2010|title=A GPU-Based Application Framework Supporting Fast Discrete-Event Simulation |url=http://journals.sagepub.com/doi/10.1177/0037549709340781 |journal=SIMULATIONSimulation |language=en |volume=86 |issue=10 |pages=613–628 |doi=10.1177/0037549709340781 |s2cid=9731021 |issn=0037-5497|url-access=subscription }}</ref><ref>{{Cite web |last=Dannenberg |first=Roger |title=An Introduction to Discrete-Event Simulation |url=https://www.cs.cmu.edu/~music/cmsip/readings/intro-discrete-event-sim.html |access-date=2022-03-11 |website=[[Carnegie Mellon School of Computer Science]]}}</ref><ref>{{Cite web |last=Güneş |first=Mesut |title=Chapter 3: General Principles |url=https://www.mi.fu-berlin.de/inf/groups/ag-tech/teaching/2012_SS/L_19540_Modeling_and_Performance_Analysis_with_Simulation/03.pdf |access-date=2022-03-11 |website=[[Freie Universität Berlin]]}}</ref><ref>{{Cite journal |lastlast1=Damerdji |firstfirst1=Halim |last2=Glynn |first2=Peter W. |date=1998 |title=Limit Theory for Performance Modeling of Future Event Set Algorithms |url=https://www.jstor.org/stable/2634704 |journal=Management Science |volume=44 |issue=12 |pages=1709–1722 |doi=10.1287/mnsc.44.12.1709 |jstor=2634704 |issn=0025-1909|url-access=subscription }}</ref>
 
When events are instantaneous, activities that extend over time are modeled as sequences of events. Some simulation frameworks allow the time of an event to be specified as an interval, giving the start time and the end time of each event.{{cn|date=March 2022}}
Line 61 ⟶ 64:
 
===Hospital applications===
An operating theater is generally shared between several surgical disciplines. Through better understanding the nature of these procedures it may be possible to increase the patient throughput.<ref>{{cite journal |author1=John J. Forbus |author2=Daniel Berleant |title=Discrete-Event Simulation in Healthcare Settings: A Review | doi=10.3390/modelling3040027 |volume=3 |journal=Modelling |pages=417–433|year=2022 |issue=4 |doi-access=free |arxiv=2211.00061 }}</ref> Example: If a heart surgery takes on average four hours, changing an operating room schedule from eight available hours to nine will not increase patient throughput. On the other hand, if a hernia procedure takes on average twenty minutes providing an extra hour may also not yield any increased throughput if the capacity and average time spent in the recovery room is not considered.
Example: If a heart surgery takes on average four hours, changing an operating room schedule from eight available hours to nine will not increase patient throughput. On the other hand, if a hernia procedure takes on average twenty minutes providing an extra hour may also not yield any increased throughput if the capacity and average time spent in the recovery room is not considered.
 
===Lab test performance improvement ideas===
Line 81 ⟶ 83:
* [[Stochastic process]] and a special case, [[Markov process]]
* [[Queueing theory]] and in particular [[birth–death process]]
* [[DEVS|Discrete Event System Specification]]
* [[Transaction-level modeling]] (TLM)
Computational techniques:
Line 101 ⟶ 103:
 
==Further reading==
*{{cite book|title=Simulating Computer Systems: Techniques and Tools|url=https://archive.org/details/simulatingcomput00myro|url-access=registration|author=Myron H. MacDougall|publisher= MIT Press| year=1987|isbn=9780262132299 }}
*{{cite book|title=Dynamic Models and Discrete Event Simulation|author1=William Delaney |author2=Erminia Vaccari |publisher= Dekker INC| year=1988}}
*{{cite book|title=Computer Simulation: A Practical Perspective|author=Roger W. McHaney|publisher=Academic Press|year=1991}}
Line 111 ⟶ 113:
*{{cite book|title=Building software for simulation: theory and algorithms, with applications in C++|author=James J. Nutaro|publisher=Wiley|year=2010}}
 
[[Category:Modeling andStochastic simulation]]
[[Category:Events (computing)]]