Industry: Transportation Product: ModelRisk Application: Stochastic Vehicle Routing With Time Windows (VRPTW)
A US parcel carrier dispatched 140 routes per day out of a regional last-mile depot using a deterministic VRP solver — TSP-with-time-windows, fixed travel-time matrix, single mean service-time-per-stop. The solver's promised route duration averaged 150 minutes; the dispatcher noticed driver punch-outs averaging closer to 165 minutes, with a meaningful share of routes running past three hours. The deterministic solver was right about the mean. It was structurally wrong about everything else: travel times between stops are LogNormal, service times have a fat right tail (signature-required deliveries, building-access friction), the whole route shares a single bad-traffic-morning shock, and the convex penalty function — late stops cost real money — means averaging the inputs systematically understates expected cost.
The chart above is the distribution the solver never produced. The mean sits at 150.6 minutes and the median at 148.7, but the body is right-skewed by a shared congestion multiplier: the P90 is 175.9 minutes, the P99 is 203.7, and 7.3% of routes run past the 180-minute (three-hour) mark — the route the dispatcher sees at punch-out and the customer sees as a 7pm delivery. The carrier rebuilt the routing model in ModelRisk: each inter-stop edge is a LogNormal travel time scaled by a per-route congestion shock, each stop's service time is a Beta-scaled draw, the depot dwell is Triangular, and the simulation produces a per-route duration distribution and a stop-level on-time-rate distribution. The solver now compares candidate sequences on the CVaR of cost, not the mean of time.
Urban inter-stop travel time on the carrier's grid-pattern network has a mean of 4.2 minutes between adjacent stops and a CV of 0.32 — fitted from one year of telematics. A LogNormal captures the bounded-below, fat-right-tail shape that real urban travel time has (you cannot beat the speed limit, you can absolutely sit at a left-turn signal for three cycles).
The critical modelling choice is that the 18 edges on a route are not independent. A bad-traffic morning slows the whole route, not one edge, so the simulation applies a shared per-route LogNormal congestion multiplier (CV ≈ 0.22) on top of the edge-level noise. An independent-per-edge model would average that correlation away across 18 edges and collapse the route-duration tail — which is exactly the CLT trap that left the prior planner blind to the P99.
Per-stop service time is not Normal either. Most stops are dropped-at-door packages (1–3 minutes); a meaningful minority require signature, building entry, missed-attempt reattempt notes (5–9 minutes). A Beta(2.4, 6.0) scaled to [1, 9] minutes matches the empirical histogram from RFID-on-package dwell scans, with a mean of 3.3 min per stop. Depot dwell (sort-rack loading + manifest verification) is Triangular(8, 12, 22) minutes, with the long upper tail reflecting morning sort-line congestion.
The deterministic plan totalled 150 minutes (mean depot dwell + 18 mean-travel + 18 mean-service). The simulation says the mean is 150.6 min (close to the deterministic mean by construction) but the P90 is 175.9 min, the P99 is 203.7 min, and 7.3% of routes run past 180 min under the realised stochastic conditions including the convex window-penalty pile-up.
Stop-level on-time rate (arrival within a 20-minute window past the planned per-stop arrival): 93.6% of stops on the static plan, and only 82.8% of routes land every one of their 18 stops on time. Both fall short of the carrier's contractual stop-level SLA floor.
After stop 6, the dispatch console knows the actual cumulative time, the cumulative-time variance, and the remaining 12-stop sequence. A re-optimisation that defers the bottom-two slowest stops into the next-day block when sequencing permits (about 18% of routes) and caps the variance on the second half of the route via alternate-edge selection produces:
The collapse in the P90 cost is the dominant economic effect: the static plan crosses the $200 profitability ceiling on 10% of routes, the dynamic plan on only 6%. At 140 routes per day and $14 per late stop, the late-stop reduction alone is worth roughly $190k per year per depot.
The carrier had three fleet-sizing options on the table — keep current, lean by 7% (cost saving), or expand by 7% (SLA insurance). The simulation evaluates each strategy not on average duration but on daily stop-level on-time rate (the fraction of all delivered stops across a 140-route fleet-day that landed inside their windows), against the contract's 90% stop-level SLA floor:
The lean-fleet option, despite its fleet-cost saving, would breach the SLA four days out of five — a number the deterministic planner could not produce because it could not produce the distribution. The current fleet already meets the floor with comfortable headroom; the marginal SLA gain from expanding flattens out, which is the finding that capped the eventual fleet expansion at +5 routes rather than +10.
Stops-per-route dominates — moving from 15 stops to 22 stops swings cost by ±$30 — but it is also the variable the dispatcher controls most directly. Inter-stop travel-time CV is second — uncertainty itself costs money: the 0.20–0.45 CV range swings cost ±$24 through the convex penalty, so real-time traffic feeds that tighten the CV pay for themselves. Customer window width is third (a 60–120 min window range swings cost ±$22) because windows enter the cost through the same penalty function. Service-time shape, depot dwell, driver wage rate, and per-stop late penalty follow.
A deterministic VRP solver minimises a mean. A stochastic VRP simulation minimises a tail. On a last-mile network where the SLA is paid on the right-hand side of the distribution, the carrier needs the second kind — and the carrier's punch-out variance is where the first kind quietly fails.