| Vose Software

Industry: Transportation
Product: ModelRisk
Application: Stochastic Vehicle Routing With Time Windows (VRPTW)


When the Plan Says 150 Minutes and One Route in Thirteen Runs Past Three Hours: Stochastic VRPTW for an 18-Stop Last-Mile Block

Route duration distribution — 18-stop last-mile parcel route

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.

Why every edge has to be LogNormal — and why the route shares one shock

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.

Deterministic said the route fits in 150 minutes. Monte Carlo said one in thirteen runs past three hours.

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.

Dynamic re-routing at stop 6 cuts the late-stop count by a third

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:

Static vs dynamic re-routing — per-route cost

  • Mean route cost drops from $120 to $113 per route — but the real win is in the tail.
  • P90 cost drops from $198 to $115 — the convex late penalty that bloated the worst routes is largely eliminated.
  • Mean late stops per route drop from 1.16 to 0.78 — a 33% reduction.
  • Probability of zero-late-stops per route lifts from 83% to 90%.

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.

Three fleet-sizing strategies for SLA compliance

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:

Three fleet-sizing strategies — daily on-time rate CDF

  • Lean fleet (130 routes/day, heavier per-route load): daily on-time-rate mean 88.4%, P10 86.0% — clears the 90% SLA floor on only 19% of days.
  • Current fleet (140 routes/day): mean 93.6%, P10 91.7% — clears the floor on 99% of days.
  • Expanded fleet (150 routes/day, lighter per-route load): mean 96.5%, P10 95.1% — clears the floor on every day.

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.

What actually moves per-route cost

Tornado: drivers of per-route cost

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.

What the model changed

  • Dynamic-re-routing rule deployed. Six months post-deployment, mean route punch-out dropped from 165 to 148 minutes and stop-level on-time rate rose from the static-plan 93.6% toward the dynamic plan's modelled level, within 1 percentage point of the simulated prediction.
  • Fleet expansion approved at +5 routes/day (not +10) because the simulation showed the marginal SLA benefit flattened: the current 140-route fleet already clears the 90% floor on 99% of days, so the full +10 expansion bought little extra compliance.
  • Window-width negotiation strategy for the carrier's top-20 customers: shifting 8 of them onto wider windows produced a measurable operational saving with no customer-satisfaction loss in pilot, by pulling the marginal late stops back inside their windows.
  • Traffic-data subscription justified, since the tornado showed inter-stop travel-time CV was the second-largest cost driver (±$24/route across its plausible range) — tightening it via real-time feeds compresses the convex-penalty tail directly.

ModelRisk Functionality Used

  • LogNormal inter-stop travel time (mean 4.2 min, CV 0.32) per edge × 18 edges per route, scaled by a shared per-route congestion multiplier (CV ≈ 0.22) — fitted from one year of GPS telemetry, replacing both the deterministic mean and the independent-per-edge model that collapsed the duration tail.
  • Beta-scaled service time (Beta(2.4, 6.0) scaled to [1, 9] minutes), capturing the signature-required tail that the prior Normal fit missed.
  • Triangular depot dwell (8 / 12 / 22 min) reflecting sort-rack congestion.
  • Convex late-penalty function ($14 per missed window) applied per stop inside the simulation — the mechanism by which mean-time understatement becomes mean-cost understatement.
  • Dynamic-re-routing decision rule evaluated mid-route at stop 6, modelled by capping the second-half edge variance and conditionally deferring the slowest two stops — producing a 33% reduction in late stops and collapsing the P90 route cost from $198 to $115.
  • Fleet-sizing scenario CDF on daily stop-level on-time rate against the 90% SLA floor, replacing the deterministic "average route duration" comparison and revealing that the lean fleet clears the floor on only 19% of days while the current fleet already clears it on 99%.

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.