The science
Queues. Each stall is an M/M/c queue: Poisson arrivals at rate λ, c sellers each serving at rate μ. With load ρ = λ/(cμ) the Erlang C probability of waiting is C(c, a) and the mean wait is Wq = C / (cμ − λ). The table compares this with the waits measured in the run.
Crowds. Walking speed falls with density D following Weidmann's fundamental diagram v = v0 [1 − exp(−γ (1/D − 1/Dmax))] with v0 = 1.34 m/s, γ = 1.913, Dmax = 5.4 persons/m². Comfort classes follow Fruin's area per person (A: 3.3 m² and above … F: under 0.5 m²).
Choice and light. Guests pick a stall with a Huff-type probability proportional to attractiveness × distance^−β. Light is an inverse-square point-source model, E = I·h / d³, with 5 lx and 15 lx thresholds.
Honest limits. A game-scale model: guests are point agents with simple steering, the weather is two presets, and the numbers show behaviour, not a safety assessment for a real event. This page uses the same model module as the 3D planner.
Not run yet. The checks compare the code with closed-form Erlang C, a long discrete-event simulation, Little's law and the pedestrian formulas.