An event based Discrete Event Simulation engine for Julia.
Intended as a support library for teaching basic principles of Discrete Event Simulation.
- register/interrupt execution of events
- resource (continuous homogenous good) reservoir
- queue (arbitrary objects) reservoir
A quick start tutorial can be found here.
Examples contained in
mms_example.jl: comparison of several implementations of M/M/s queue
mm1_example.jl: basic implementation of M/M/1 queue with use of monitor
bank_renege_1.jl: bank renege model (reimplementation of SimPy example)
bank_renege_2.jl: bank renege model (reimplementation of SimPy example)
movie_renege.jl: movie renege model (reimplementation of SimPy example)
faxqueue.jl: a two-stage fax queue model; adaptation of Nelson (2013): Foundations and Methods of Stochastic Simulation, chap. 4.6, example
seq_queue.jl: Experiment 4.1 from: C.-H. Chen, L.H. Lee (2011): Stochastic Simulation Optimization
Quck overview of EventSimulation functionality
Action: information that a given function should be executed at given time
AbstractState: abstract type used for holding global simulation state
EmptyState: simplest empty concrete subtype of
Scheduler: central object in the library jused to store information about event queue
Schedulerthat will affect multiple objects
Schedulerthat will affect multiple objects repeatedly
interrupt!: removes one given event from
terminate!: removes all events from
go!: executes the simulation
AbstractReservoir: abstract type for defining reservoirs
SimResource: reservoir for divisible and homogeneous matter
ResourceRequest: information about request for a resource
SimQueue: reservoir for objects having unique identity
request!: registers demand for a resource/object
waive!: remove registered request from waiting list
provide!: add resource/object to reservoir (or remove resource from
withdraw!: remove object from
PriorityTime: custom subtype of
Realproviding additional attribute
priorityto normal time. Useful for giving execution priority of events happening at the same time.
Full documentation of types and functions defined in EventSimulation package can be found here.