Model notes, assumptions & sources
The model
Nagel–Schreckenberg cellular automaton: a single-lane ring of 300 cells, at most one car per cell, top speed 5 cells per step. Every step all cars update in parallel:
- speed up by 1 (to at most 5);
- slow to the number of empty cells ahead, so no car ever hits another;
- with probability p, slow by 1 more (random hesitation);
- everyone moves at once.
Cars start evenly spaced at the fastest speed their own gap allows. Car order never changes; car identities are kept.
The controlled pulse
Car 1's speed is forced to 0 for three updates starting at step 25 (0:04 on the clock), applied before anyone moves. In comparisons the pulse is identical in both runs. The gold “footprint” in the space–time chart marks cars moving slower than in a twin run with every setting and random draw the same but no pulse; “pulse reach” counts cars whose speed differed at any point. A car reacts only to the car ahead, so the influence can travel back at most one car per step.
Views
Space–time chart: the ring unrolled at its far side, pulse site in the middle, newest step at the top; every line is one car's exact trajectory, coloured by speed. Probe: starts as a fixed camera at the pulse site; once the pulse's queue has existed for 4 steps it eases onto that queue's measured centre line (past steps only), so the header switches to “following” and the road ticks slide by.
What is measured
A queue is two or more consecutive stopped cars. Queues are followed from step to step by the cars they share; drift is the least-squares slope of the queue centre over the last ≤ 8 s of steps already shown. Labels report that measured value for the current run — the direction is not assumed. Validated with seed 20261009: sparse (0.10, p 0) — the pulse changed 7 cars' speeds and was gone by 0:06; busy (0.25, p 0) — a 3-car queue drifts −1.00 cells/step for the whole run; hesitant (0.25, p 0.20, no pulse) — queues appear on their own and drift about −0.6 to −0.8 cells/step.
Units, seed and time
Space is in cells, time in model steps, speed in cells per step. The animation plays 6 steps per second and loops every 1:30; clock times are animation time, not real time. The seed is fixed (20261009), so the same settings always replay the same run. One random number is drawn per car per step even when unused, so the pulse and its twin share every draw, and changing p reuses the same draws with a new threshold.
Limits
One lane, identical drivers, integer speeds, no ramps, lane changes or bottlenecks (the ring removes them on purpose). Car shapes, colours and road width are illustrative; positions and speeds are exact model output. It is not calibrated to any road and is not a traffic forecast. A density change does not guarantee a persistent jam for every setting — check the measured labels.
Sources
- K. Nagel & M. Schreckenberg (1992), “A cellular automaton model for freeway traffic”, Journal de Physique I 2, 2221–2229. doi:10.1051/jp1:1992277
- Y. Sugiyama et al. (2008), “Traffic jams without bottlenecks — experimental evidence for the physical mechanism of the formation of a jam”, New Journal of Physics 10, 033001. doi:10.1088/1367-2630/10/3/033001
Keyboard: Space play/pause (outside form controls), R reset, B brake pulse on/off. Original code and procedural art by ExplainerTools.