Flight Delay Cascade Simulator

System-dynamics model · pure-Python propagation engine

Flight Delay Cascade Simulator

One delay at one hub, and the whole day unravels. This is not a forecast — it's a mechanistic model of why delays spread: aircraft waiting on aircraft, crews timing out, gates gridlocking. Pick a shock and watch it cascade across the real European network in real time.

05:00
Local ops clock
on time 15–45 min 45–90 min 90 min+ ✕ cancelled
speed
Airborne now
0
flights in the air
Delayed >15 min
0
departed so far
Cancelled
0
crew timeout / no aircraft
Delay accrued
0
flight-minutes

Highest-leverage airports

System-wide disruption caused by the same +90 min morning ground stop, injected at each airport in turn. Leverage is defined by the dynamics — what a delay here actually does — not by size alone.

Recovery curve

Total system delay through the day for the selected scenario. Buffers soak up the shock and the network heals — the playhead tracks the map.

The non-linear signature — how delay compounds at BRU

Delay does not grow in proportion to the shock. Small shocks are absorbed by schedule buffers; past a threshold the excess propagates and multiplies. Push far enough and crews hit their FAR-117 duty limit — the network stops delaying flights and starts cancelling them. That knee is the cliff.

Where the delay lands

Arrival-delay distribution across all 1220 flights in the selected scenario.

Most vulnerable routes

Directed routes carrying the most reactionary delay, aggregated across every hub-seeded scenario — the network's fragile arteries.

How the model works

A flight leg cannot leave until every operational predecessor is satisfied — so a delay is the longest path through a dependency graph of the day's flights. Three real coupling channels create the edges; the non-linearity is inherent.

Aircraft rotation · tail chain

A jet flies a string of legs. The next leg can't push back until the aircraft lands and completes minimum turnaround. Late in → late out, minus any schedule buffer.

Crew pairing · crew chain

Crews fly trips that hop between aircraft at hubs, so crew delay spreads on a different graph than the metal. Exceed the FAR-117 duty limit and the crew times out — the trip cancels.

Gate conflict · gate chain

Gates are finite. An arriving aircraft can't dock until the previous occupant pushes back, so a stretched turnaround gridlocks the next flight through a shared resource.

Data & method. The network is real — 70 European airports and their real routes from the public OpenFlights dataset (coordinates, connectivity). The daily schedule is synthesized (deterministic, seeded): fleet rotations, crew pairings and gate occupancy layered on the real topology, because tail-level schedules aren't openly available. The propagation engine is pure Python — no graph libraries: a from-scratch directed graph, Kahn topological sort, and a longest-path relaxation with buffer absorption, enroute recovery, and a crew-duty cancellation fixed point.