Every terminal, depot and weighbridge in the corridor has a gate, and every gate has a queue. The mathematics of that queue has been understood since Erlang worked out telephone congestion in 1917 — and it behaves in a way that surprises almost everyone the first time they see it. Waiting time does not grow in proportion to traffic. It creeps, then it explodes. This analysis builds the model, validates it two independent ways, and shows what it means for anyone who runs — or waits at — a gate.
Utilisation beyond which waiting time grows explosively (model result)
Average wait cut by merging two gate queues into one — same lanes, same demand
Combined effect of pooling plus appointment-style arrival smoothing
Gap between the analytic result and a 200,000-arrival simulation
Every number in this analysis is the output of a stated mathematical model, not a measurement of any North Queensland terminal. The parameters (a gate that processes a truck in three minutes on average) are illustrative. The point is the shape of the behaviour — which is universal — not the specific figures. The Review does not publish operational statistics it cannot verify against a primary source.
A gate is a service system: trucks arrive, each takes time to process, and anyone who arrives while the lanes are busy waits. Two features make it tractable. Arrivals from many independent operators behave like a Poisson process — random, uncoordinated, clumpy. And processing times vary around a mean. A gate with c lanes then behaves as the classic M/M/c queue, whose average wait has a closed-form answer known since Erlang.
The term that matters is the denominator: (c·μ − λ) — the gate's spare capacity. As demand approaches capacity it goes to zero and the wait explodes — not gradually, hyperbolically. This is why a gate that felt fine on Tuesday can fall apart on Thursday with only slightly more traffic.
"Busy all day" is fragility, not efficiency: at 95% utilisation there is no slack for the clumping random arrivals guarantee. And averages deceive — congestion must be analysed at the peak hour, not the daily mean.
A model that has not been checked is a guess with equations. The Erlang-C results were therefore cross-examined with a discrete-event simulation: 200,000 synthetic arrivals per scenario, served by whichever lane frees first — no queueing formulas anywhere in the code. If the two methods disagree, one of them is wrong.
Queueing behaviour is a property of randomness itself, not of any particular gate. The shape of the curve is not an opinion — and it holds whether the servers are gate lanes, berths, cranes or customs officers.
The instinctive response to congestion is capital: add a lane. The theory says two cheaper levers come first. Pooling: two lanes fed by one shared queue outperform two separate single-lane queues at identical demand, because a shared queue never leaves one lane idle while trucks wait at the other. Variability reduction: waiting is driven by randomness as much as load — Kingman's approximation ties the wait to arrival variability. A slot system doesn't change how many trucks come; it changes how randomly they come, and the queue responds as if capacity had been added.
Pool first, smooth second, build last. Concrete is the most expensive and slowest lever — and the model shows most of the available improvement is organisational.
Before any fix: count arrivals per hour at the peak and time the average service. Their ratio against capacity is ρ — and it tells you which region of Fig. 1 you live in. Everything else depends on this one number.
Daily averages hide the 7–9am story. If the peak hour runs above ~85% utilisation, that is where the delay — and the demurrage exposure — is being manufactured.
If parallel lanes or windows serve separate queues, merge them. The model puts the saving at roughly half the average wait, for the cost of some line marking and a sign.
Slots, appointments, staggered carrier windows — anything that reduces the randomness of arrivals acts like free capacity. In the model it is worth more than an extra lane at high load.
Queue length = arrival rate × wait (Lq = λ·Wq). Count the trucks in the queue, divide by the arrival rate, and you have the average wait without a stopwatch. If the number surprises you, the gate is telling you something.
Model: M/M/c queue solved with the Erlang-C formula; cross-validated with an independent discrete-event simulation (200,000 arrivals per scenario; agreement within ~3%). Arrival smoothing modelled by reducing the coefficient of variation of inter-arrival times from 1.0 to 0.25. Assumptions and limits: stationary demand within the modelled hour, exponential service times, no balking or lane-switching, homogeneous trucks. Real gates have peaks, breakdowns and mixed traffic — so treat the figures as directional and the shape of the behaviour as exact. The model deliberately uses illustrative parameters rather than unverified operational data from any local terminal, in line with the Review's editorial rule: if a number cannot be traced to a primary source, it is not presented as fact.
Theory sources: A.K. Erlang, "Solution of some problems in the theory of probabilities" (1917) — the Erlang-C formula. J.D.C. Little, "A proof for the queuing formula L = λW" (1961). J.F.C. Kingman, "The single server queue in heavy traffic" (1961) — the variability approximation. All results reproduced independently for this analysis.
Analysis, model, simulation, charts and text by Javier Inostroza, industrial engineer, Townsville. The model was built in Python and every analytic figure was reproduced by an independent simulation before publication. This is the working method behind everything the Review publishes: state the assumptions, show the mathematics, validate twice, and label what is illustrative as illustrative.
If you run a gate, a yard or a depot in North Queensland and want this model pointed at your actual arrival data — utilisation, peak analysis, slot-system design — that is advisory work I take on directly. Reach me via flowmanagerqld.com or javierinostrozao95@gmail.com. The first conversation is always free.