Flowline › Learn › Variability and queues
Kingman’s equation: why a balanced line still stalls
Give every station on a line exactly equal capacity and it will still stall, still starve, and still miss the output the arithmetic promised. Nothing is broken. The missing term is variability, and Kingman’s equation is how it gets priced.
CT_q ≈ [(c_a² + c_e²) / 2] × [u / (1 − u)] × t_e
Variability × Utilization × Time
The VUT form multiplies three factors: how variable arrivals and service are, a utilization term u/(1−u), and the process time itself. The middle factor is the one that ruins plans. At 80% utilization it is 4. At 90% it is 9. At 95% it is 19. Pushing a line from 90% to 95% busy roughly doubles its queue time while adding almost nothing to output.
This is why “run everything flat out” and “keep lead times short” are not two goals to balance but two ends of one dial, and why the high-utilization end of it is so much steeper than intuition suggests.
The three buffers
Variability does not disappear; it gets absorbed by one of three buffers, and choosing which is a real decision with real costs.
- Inventory — hold work-in-process so a starved station has something to do. Costs carrying charges and lengthens lead time.
- Capacity — keep utilization off the cliff. Costs machines that are deliberately not busy, which is politically hard to defend.
- Time — quote a longer lead time. Free to implement and often the first thing customers actually notice.
How variable is this simulation, actually
Measured process-time dispersion sits at roughly c² ≈ 0.80, less variable than exponential — so textbook theory predicts throughput should land above the Practical Worst Case curve rather than on it. Swept across Kanban card counts over five seeds at two hours each, it does, by 17–24%.
| WIP (cards) | Measured | vs. Best Case | vs. Practical Worst Case |
|---|---|---|---|
| 1 | 5.83/min | 75% | 117% |
| 4 | 8.15/min | 88% | 124% |
| 12 | 9.02/min | 98% | 122% |
| 40 | 9.18/min | 99.5% | 119% |
A deterministic control run — zero variability — settles exactly on the Best-Case curve, which is what makes the gap above attributable to variability rather than to a modelling error. The first attempt at this measurement failed by about 34% at every level; the cause was the benchmark computing bottleneck rate in gross units while throughput counted only good ones, which is exactly four-station scrap compounding. Finding that instead of loosening the tolerance is the point of certifying against a real law.
Try it on a real line
Each of these is a fixed-seed puzzle factory in Flowline’s Challenge Mode. Every one is verified before it ships: the intended fix must win, doing nothing must fail, and a plausible wrong fix must also fail — so the puzzle isolates the idea it claims to teach. They run in your browser.
- Deep Freeze — Ship $1,400 of furniture — without buying a single machine Capacity is genuinely fine and the line still stalls. Buying more machines is a proven non-fix.
- The Utilization Trap — Ship 800 units with under 3,500 late unit-seconds, at a 15s quote A line run at ~95% of its real capacity against a promised delivery date. Lateness has a price here.
- Die Change — Ship machines at ≥ 15/min Setup time versus batch size — SMED’s own lesson, with a measured optimum rather than "bigger is better".