Traffic flow · TASEP
Why does a road jam — and is there a best density at which it carries the most cars?

▶ Run the simulationSee the measured result
Units: cars per bond per sweep — the maximal TASEP steady-state current J_max = ¼ at half filling (L → ∞); secondary knowns: J(ρ) = ρ(1−ρ), finite-ring J_L = ρ(1−ρ)·L/(L−1), rival zero-range current ρ/(1+ρ)
How the lab tests it
Run the totally asymmetric exclusion process (TASEP) on nine rings of L=200 sites at densities ρ=0.1…0.9: each car hops one step forward only if the site ahead is empty (hard-core exclusion). Measure each ring's steady current J = hops/attempts under random-sequential updates and overlay the nine points on the exact fundamental diagram.
What it checks
the closed-form current J(ρ) = ρ(1−ρ) — a downward parabola peaking at J = ¼ at ρ = ½ (flow is MAXIMAL at half-occupancy; packing in more cars past that point lowers throughput) and obeying particle–hole symmetry J(ρ) = J(1−ρ) (a 90%-jammed road carries the same flow as a 10%-empty one). TASEP's current fluctuations are themselves in the KPZ class
Traffic flow, jam density & TASEP fundamental-diagram calculator
Why a road jams, and the one traffic model whose answer is exact rather than fitted. Put cars on a ring of L sites, let each one hop forward only if the site ahead is empty, and the question 'how many cars carry the most traffic' has a closed answer nobody had to measure: the flow is ρ(1−ρ), it peaks at exactly half filling, and the best any such road can do is a quarter of a car per bond per sweep. Below half there are too few cars; above it, too few gaps — and the symmetry between those two sentences is exact, because swapping cars for holes leaves the hop rule unchanged. That is the whole of why a jam is not a failure of the road but a property of counting. This page computes all of it and stores none of it. The quarter is never typed: it arrives once as ρ*(1−ρ*) at the fixed point of ρ ↦ 1−ρ, and again from a completely disjoint route — the l = 1 end of the extended-particle diagram 1/(1+√l)², which consumes no density at all — and the two land on the same double to the last bit. A finite ring is where this gets sharper than a textbook. The exact stationary state of the ring is the UNIFORM measure over configurations, so the current is the probability that a site holds a car and the next is empty: N(L−N)/(L(L−1)), a ratio of two integers small enough to be exact in a double, which makes the answer correctly rounded rather than merely close. That ring carries MORE than the infinite road, by a factor L/(L−1) — and the excess is where the arithmetic matters, because J_L − J_∞ is a difference of two numbers that agree in their first ten digits. Written that way it has lost nine figures by L = 10⁷; written as J_∞/(L−1) it is correctly rounded, and the RELATIVE excess is then exactly 1/(L−1) at every density, which is the 0.503% floor this lab's own screen reports as its 'mean error'. The inverse has the same lesson with a sharper edge. Asking which density carries a given flow is a quadratic, and the textbook writes its lower root as (1−√(1−4J))/2 — a subtraction of two numbers that both approach 1 as the road empties. At J = 10⁻¹⁶ that spelling is 11% wrong; its conjugate 2J/(1+√(1−4J)) is exact, and near capacity the two agree to the last bit, which is exactly why the bad spelling survives every test anyone would think to run. Both roots are printed, and they close Vieta's identities — they sum to 1 and multiply to J — to zero ulps. One box carries the rival this lab falsified: delete the exclusion and cars stack, giving the zero-range current ρ/(1+ρ), which rises forever, has no peak, and breaks the car–hole symmetry it should obey. Four things this page will not do are stated where they belong: it will not claim exactness for a ring so large that L(L−1) leaves the safe-integer range, it will not invert a flow that no density on the chosen ring can carry, it will not apply the square-lattice extrapolation to an odd ring where half filling is not an achievable density, and it will not correct a single number this lab recovered — the last direction scores the simulation's 0.250158 against the closed form and reports its disclosed finite-size floor, it does not revise it.
J_L = N(L−N)/(L(L−1)) · J_∞ = ρ(1−ρ), peak ¼ at ρ = ½ · excess = J_∞/(L−1) · ρ = 2J/(1+√(1−4J)) and (1+√(1−4J))/2 · l-mers: J_max = 1/(1+√l)² at ρ* = 1/(l+√l) · rival ZRP: J = ρ/(1+ρ)