Each event occurs at a particular instant in time and marks a change of state in the system. This contrasts with continuous simulation in which the simulation continuously tracks the system dynamics over time. Because discrete-event simulations do not have simulation modeling and analysis averill m law pdf simulate every time slice, they can typically run much faster than the corresponding continuous simulation.
In this approach, the first phase is to jump to the next chronological event. The three phase approach is a refinement of the event-based approach in which simultaneous events are ordered so as to make the most efficient use of computer resources. 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. 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 random variables that need to be characterized to model this system stochastically are Customer-Interarrival-Time and Teller-Service-Time.
An agent-based framework for performance modeling of an optimistic parallel discrete event simulator is another example for a discrete event simulation. A system state is a set of variables that captures the salient properties of the system to be studied.
The simulation must keep track of the current simulation time, in whatever measurement units are suitable for the system being modeled. 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.
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. Single-threaded simulation engines based on instantaneous events have just one current event. In contrast, multi-threaded simulation engines and simulation engines supporting an interval-based event model may have multiple current events.
In both cases, there are significant problems with synchronization between current events. The pending event set is typically organized as a priority queue, sorted by event time. That is, regardless of the order in which events are added to the event set, they are removed in strictly chronological order. Several general-purpose priority queue algorithms have proven effective for discrete-event simulation, most notably, the splay tree.
More recent alternatives include skip lists, calendar queues, and ladder queues. Typically, events are scheduled dynamically as the simulation proceeds.
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 pseudo-random numbers as opposed to true random numbers is a benefit should a simulation need a rerun with exactly the same behavior.