School of Simulation Logo - Navigate to Homepage

Trustpilot Reviews

← All articles

What Is Discrete Event Simulation? (And Why Should You Care?)

Discrete event simulation sounds academic. It’s not. It’s one of the most practical tools an engineer can learn.

The One-Sentence Explanation

Discrete event simulation (DES) models systems where things happen at specific points in time—customers arrive, machines break, orders ship—and lets you see what happens next.

Why “Discrete”?

Time in DES jumps from event to event. Nothing happens in between.

Customer arrives at 9:00. Gets served at 9:05. Leaves at 9:12. The simulation doesn’t care about 9:01, 9:02, 9:03—nothing interesting happens then.

This is different from continuous simulation, where things change constantly (think: chemical reactions, population growth). DES is for systems with distinct events.

A Mental Model

Imagine a queue at a coffee shop.

  • 9:00 - Customer A arrives
  • 9:00 - Customer A starts ordering (barista was free)
  • 9:03 - Customer B arrives
  • 9:03 - Customer B waits (barista busy)
  • 9:05 - Customer A served, leaves
  • 9:05 - Customer B starts ordering
  • 9:08 - Customer B served, leaves

That’s discrete event simulation. Events happen. Time jumps. State changes. Repeat.

What DES Captures

Good DES models capture:

Randomness Customers don’t arrive exactly every 5 minutes. Service doesn’t take exactly 3 minutes. Real systems have variation. DES models it.

Queuing When demand exceeds capacity, queues form. DES tracks who’s waiting, how long, and what happens when resources free up.

Resource Constraints There are only 3 tills. Only 5 nurses. Only 1 machine. DES respects these limits and shows what happens because of them.

Interdependencies Step B can’t start until Step A finishes. Machine 2 needs output from Machine 1. DES handles these dependencies.

Real-World Applications

DES is everywhere, whether you recognise it or not:

IndustryExample Problem
HealthcareHow many beds do we need?
ManufacturingWhere’s the bottleneck?
LogisticsHow many trucks should we schedule?
RetailHow many checkouts during peak hours?
Call centresWhat’s the right staffing level?
AirportsHow long will security queues be?

Why Not Just Use Spreadsheets?

You could calculate averages: 100 customers, 3 minutes each, 300 minutes of work.

But averages lie.

They don’t show you what happens when 20 customers arrive in 10 minutes. They don’t capture the queue building up. They don’t reveal that most customers wait 2 minutes but some wait 30.

DES shows you the distribution, not just the average. It shows you the worst case, not just the typical case.

Why Not Just Watch the Real System?

Because you can’t afford to.

  • Want to know if 3 checkouts is enough? Don’t guess—simulate.
  • Considering a new machine? Test it virtually first.
  • Planning for Black Friday? Don’t wait for disaster.

Simulation lets you experiment without consequences. Test ideas. Break things safely. Learn before committing.

The Building Blocks

Every DES model has:

  1. Entities - The things moving through your system (customers, products, patients)
  2. Resources - The limited things entities need (staff, machines, beds)
  3. Processes - The activities that take time (serving, processing, treating)
  4. Events - Things that happen at specific times (arrivals, completions, breakdowns)
  5. Queues - Where entities wait for resources

Understand these, and you can model almost any operational system.

DES vs Other Methods

MethodBest For
Discrete EventProcesses, queues, operations
Agent-BasedIndividual behaviour, emergence
System DynamicsFeedback loops, high-level trends
Monte CarloRisk analysis, uncertainty

DES is the workhorse of operational improvement.

Getting Started

The easiest way to learn DES is to build something simple:

  1. Model a single-server queue
  2. Add random arrivals
  3. Track waiting times
  4. Experiment with capacity

In Python, SimPy makes this straightforward:

import simpy

def customer(env, counter):
    arrival = env.now
    with counter.request() as req:
        yield req
        print(f"Waited {env.now - arrival:.1f}")
        yield env.timeout(3)

env = simpy.Environment()
counter = simpy.Resource(env, capacity=1)
for i in range(5):
    env.process(customer(env, counter))
env.run()

Why This Matters for Your Career

Engineers who can simulate are engineers who can predict.

Instead of “I think we need more capacity,” you say “The model shows a 95% chance of exceeding targets with current resources.”

Instead of opinions, you bring evidence. Instead of gut feel, you bring data. Instead of guessing, you know.

That’s why discrete event simulation matters.

Next Steps