Introduction to Discrete Event Simulation
Course Material
The following slides are from the course IFT3245 taught in Fall 2016 at the Université de Montréal. The sources are available on GitHub.Basic Principles
- Introduction
- Discrete Event Simulation Principles
- Lindley's Recurrence (Jupyter notebook)
- Process-based M/M/1 Queue (Jupyter notebook)
Random Number Generators
- Generation of U(0,1) Random Variables
- MRG Generators
- Structure of MRGs
- Combined MRG Generators
- Random Number Generators on F2
- U(0,1) Random Number Generators: Statistical Tests
- Generation of Non-Uniform Variables
- Generation of Non-Uniform Variables (continued)
- On Cumulative Distribution Functions (Jupyter notebook)
- Cumulative Distribution Function Inversion (Jupyter notebook)
Confidence Intervals
- Confidence Intervals (CI) (Julia code)
- Sequential Approach
- Bootstrap Method
- Confidence Intervals for M/M/1 Queues (Jupyter notebook)
- Initial Bias Reduction
- Delta Method
- M/M/1 and Delta Method (Jupyter notebook)
- CI on a Single Simulation
- M/M/1 and Batch Means (Jupyter notebook)
Efficiency Improvement Techniques
- Efficiency Improvement: Principles
- Common Random Variables
- Control Variates
- M/M/1: Control Variates and Stratification (Jupyter notebook)
- Antithetic Variates
- M/M/1: Common Random Numbers and Antithetic Variates (Jupyter notebook)
- Quasi-Monte Carlo Methods
- Conditional Monte Carlo
Julia
The models presented are implemented using Julia, for which an introduction (notebook) is available, using the SimJulia library, and the RandomStreams generator. A notebook inspired by the SimJulia documentation illustrates its basic use. The notebooks above can also be viewed using the nbviewer utility.Statistical Collectors
The following code snippets are currently under review.- Tally Collector
- TallyStore Collector