6 min read • Loading views • 2025-01-12

Why One Broken Escalator Can Paralyse a Mall

Queueing theory explains why a single stalled escalator at peak time causes gridlock.


Introduction

Picture a busy Saturday at Westfield. Shoppers flow smoothly up two parallel escalators, until one suddenly lurches to a halt.
Within minutes a knot of people forms, blocking the landing, spilling back onto shop floors and even jamming the still‑working escalator.

Why does one failure bring the whole system to its knees?
The answer sits at the heart of queueing theory.


Escalators as Servers

Treat each escalator as an independent server with:

  • Arrival rate λ\lambda (people per second)
  • Service rate μ\mu (how many people the escalator transports per second)

With two functioning escalators we have an M/M/2 system (Poisson arrivals, exponential service, two servers).
When one breaks, it instantly degrades to M/M/1, doubling utilisation and destroying spare capacity.

Utilisation is

ρ=λnμ\rho = \frac{\lambda}{n\mu}

so dropping from n=2n=2 to n=1n=1 makes
ρnew=2ρold\rho_{\text{new}} = 2\rho_{\text{old}}.

Even if the mall was operating at a comfortable ρold=0.45\rho_{\text{old}} = 0.45, the failure pushes it to 0.90.9: dangerously near saturation.


Little’s Law: How Many People Are Stuck?

Little’s Law links average number in system LL, arrival rate λ\lambda, and waiting time WW:

L=λW.L = \lambda W.

As ρ ⁣ ⁣1\rho\!\to\!1, waiting time WW (and thus queue length LL) explodes non‑linearly.

For an M/M/1 queue

Lq=ρ21ρ,Wq=ρμ(1ρ).L_q = \frac{\rho^{2}}{1-\rho}, \quad W_q = \frac{\rho}{\mu(1-\rho)}.

At ρ=0.9\rho=0.9 we expect nine people on average per metre of escalator, ignoring the growing tail.


Birth–Death Chains & Steady State

The queue length over time follows a birth–death Markov chain where:

  • Births occur at rate λ\lambda (arrivals)
  • Deaths occur at rate μ\mu (services)

Steady‑state probabilities are

πk=(1ρ)ρk,k0.\pi_k = (1-\rho)\,\rho^{k}, \quad k \ge 0.

The missing escalator removes a ‘death’ process, instantly shifting the distribution to heavier tails, more probability mass in long queues.


A Quick Simulation

Below is a discrete‑event simulation of Saturday traffic.
Watch how queue length skyrockets the moment one escalator stops:

Queue length over time

# Simplified sim (Poisson arrivals, exponential service)
import random, heapq

def mmn_sim(lam, mu, n, t_max):
    t, q, busy, next_arrival = 0.0, 0, 0, random.expovariate(lam)
    departures, timeline = [], []

    events = [(next_arrival, 'arr')]
    while t < t_max:
        t, typ = heapq.heappop(events)
        if typ == 'arr':
            q += 1
            if busy < n:
                busy += 1
                dep = t + random.expovariate(mu)
                heapq.heappush(events, (dep, 'dep'))
            heapq.heappush(events, (t + random.expovariate(lam), 'arr'))
        else:                       # departure
            q -= 1; busy -= 1
            if q:
                busy += 1
                dep = t + random.expovariate(mu)
                heapq.heappush(events, (dep, 'dep'))
        timeline.append((t, q))
    return timeline

Run two minutes with n=2n=2, then switch to n=1n=1, queue length leaps from single digits to hundreds.


Takeaways

  1. Redundancy hides fragility. Parallel servers mask high utilisation until one fails.
  2. Utilisation, not capacity, drives delay. Crossing (\rho = 1) is catastrophic.
  3. Design for failure. Add buffer space and overflow paths or implement real‑time redirection (e.g. open staircases).

Next time you’re trapped on a broken escalator landing, remember: it’s just a birth–death chain gone rogue.