Discrete-event simulation for business processes
Discrete-event simulation (DES) represents a process as a sequence of events: arrival, start of processing, end of processing, shift change. The clock jumps to the next scheduled event instead of advancing in fixed steps, which is why a modelled day costs milliseconds of compute. Entities are the cases, resources are processing capacity, and queues emerge where the two do not match. For business processes, three decisions matter: exponential inter-arrival times as the default assumption, right-skewed distributions for processing durations, and enough repetitions that the result band stays stable.
Table of contents
Why "discrete" and why "event-driven"
There are two ways to handle time in a simulation.
Time-step driven: the clock advances in fixed steps (every minute, every second), and at each step you check what happened. Easy to program, wasteful to run: in an approval process, hours pass between two events in which nothing happens and yet computation continues.
Event-driven: the clock jumps to the time of the next scheduled event. Nothing changes in between, so nothing needs computing.
Event list (sorted by time):
09:14 Arrival of case #418
09:22 End of processing #402 at step "Review"
09:40 Shift change at Approval
...
Clock jumps to 09:14, processes it, schedules follow-up events, jumps on.
"Discrete" means the state changes in jumps at individual points in time rather than continuously. That fits business processes exactly. An application is processed or not; half-processed does not exist.
The four building blocks
| Block | In your process | What it does |
|---|---|---|
| Entity | Invoice, application, ticket, candidate | Moves through the model, carries attributes |
| Resource | Case handler, approver, review desk | Has capacity, is free or busy |
| Queue | In-tray, ticket list, follow-up list | Emerges by itself when the resource is busy |
| Event | Arrival, start, end, shift change | Changes the state, schedules follow-ups |
The most important property: queues are not modelled, they emerge. Entering a three-day wait as a fixed step presupposes the result you set out to compute. Afterwards you cannot show how that time changes when capacity or variation changes.
The three decisions that sink models
1. Which distribution?
For inter-arrival times: exponential. That is the default assumption when cases arrive independently of each other, such as invoices from different suppliers or tickets from different users. It produces exactly the behaviour you observe in an in-tray: long quiet stretches, then three at once.
Arrivals are not exponential when they are batched: a month-end run, a daily handover at 08:00. Then you need a calendar, not a distribution.
For processing durations: right-skewed. Lognormal or gamma. When you only have estimates, triangular from minimum, most likely and maximum. The reason: processing times have a hard lower bound and a long right tail. A normal distribution produces negative durations and underestimates the outliers that create the queue.
Practical rule of thumb: if all you know is "5 to 15 minutes", use a triangular distribution with a mode at 8. The choice between lognormal and gamma moves the result less than the question of whether you allow variation at all.
2. Warm-up period
A simulation starts with empty queues. That is a state your process never occupies. The first modelled days are therefore systematically too good.
Treatment: either exclude the first days from the analysis (warm-up) or start with a realistic initial backlog. For processes well below 85 % utilisation a few days suffice; close to the limit, settling can take weeks.
How you notice: if the average of the first week is well below that of the second, the warm-up was too short.
3. How many runs?
A single run is a sample of one. It says as much about the process as a single working day. Repeat with fresh random numbers until the result band is stable.
Practical criterion: double the number of runs. If P50 and P90 move by less than a few percent, the count is sufficient. For business processes it is typically several hundred.
More important than the exact number: that repetition happens at all and that the output is a band. A simulation that reports a single number has missed the point of the method.
The two modelling views
| Process-oriented | Event-oriented | |
|---|---|---|
| You describe | the life of an entity | what happens at each event type |
| Example | "Invoice arrives, waits, is reviewed, waits, is approved" | "On arrival: enqueue. On resource free: pull next" |
| Common in | SimPy, Simul8, most commercial tools | older libraries, custom implementations |
For business processes the process-oriented view is the more natural one: you write down what happens to a case, which is exactly how a department describes its own flow.
Validation: three checks
1. Little's Law. Work in progress ÷ throughput must roughly equal lead time, in the model and in reality. This check holds without assumptions about distributions and is therefore the strongest available.
2. Utilisation against hand calculation. ρ = demand ÷ capacity can be recomputed per step with a calculator. A large deviation means a branch or a calendar is wrong.
3. Extreme value test. Double the capacity of one step. If nothing changes, that step was never the constraint. If you did not expect that, your model disagrees with your mental picture. That is exactly when the interesting discussion starts.
Where DES is not the right method
- Participants make their own decisions that change the flow (customers abandon, handlers cherry-pick cases) → agent-based simulation.
- The question is about stocks and feedback over years (workforce build-up, market dynamics) → system dynamics.
- There are no queues because capacity is ample → addition suffices.
- The question is what actually happened → process mining. DES computes an assumption, not a log.
Frequently asked
What is the difference between discrete-event and agent-based simulation?
DES represents cases moving through fixed stations and waiting in front of busy resources. The logic sits in the process. Agent-based simulation represents participants with their own rules who interact. The logic sits in the agents. For an approval process, DES is right; once participants themselves decide whether and how to continue, ABS becomes interesting.
Which distribution should I use for processing times?
A right-skewed one: lognormal or gamma when you have data, triangular from minimum, most likely and maximum when you estimate. Not normal. It produces negative durations and underestimates the long cases that drive the queue. More important than the choice among right-skewed candidates is that variation exists at all.
How long does the warm-up period need to be?
Long enough that work in progress and waiting stop building up systematically. Well below 85 % utilisation that is a few modelled days; near the capacity limit it can be weeks, because the queue settles very slowly there. A simple test: if the first week's average is well below the second's, the period was too short.
Why does the clock jump instead of advancing evenly?
Because nothing that needs computing happens between two events. In an approval process, hours often pass between arrival and start of processing with no state change. Event jumping makes a modelled year computable in seconds. It is the reason hundreds of repetitions are practical.
Do I need a programming language for DES?
No. Libraries such as SimPy require code; commercial tools and lean decision instruments do not. The difference lies in responsibility: with a library you choose distribution, warm-up period and replication count yourself; a tool with an interface takes some of those decisions off your hands and computes more shallowly in return.
Run the numbers on your own process
FlowVisual turns the figures in this article into a model that runs, with your volumes, your capacities, your range.
Guide: seven steps to the number- Method
What is process simulation? Definition, methods, limits
Process simulation executes a flow artificially instead of describing it. The difference is not academic: it decides whether you have an opinion about a change or a number.
Read - Method
Monte Carlo simulation for business processes: what it does and when it lies
Monte Carlo is not a magic word, it is systematic dice-rolling: the same process, hundreds of times, with different random draws each time. What comes out is not a number but a distribution. That is the whole point.
Read - Method
How to calculate a bottleneck: why 85 % utilisation is already too much
The bottleneck is not the longest step, it is the step with the highest utilisation. And waiting time does not grow linearly with utilisation. It explodes just before the limit. The maths behind it fits on one page.
Read