Industry: Transportation Product: ModelRisk Application: HOS-Constrained Crew and Vehicle Scheduling for Regional LTL
A US regional less-than-truckload carrier with 380 tractors and the same number of drivers had a scheduling problem the deterministic planning system could not even see. Planners built 8-day rolling blocks targeting 6.8 hours of driving per duty-day — comfortably under the FMCSA 49 CFR 395 11-hour driving cap and the 14-hour on-duty window — and assumed the 70-hour / 8-day cumulative cap was a non-issue because 6.8 × 8 = 54 hours of driving leaves a 16-hour buffer. But on-duty time = driving + dwell + fueling + delays, and a single bad week pushed cumulative on-duty hours to 70+.
The distribution above is what the point estimate hid. Mean 8-day on-duty hours land at about 65, but the P90 sits at 71 — right on top of the 70-hour cap. The reality, telematics-fed: about 1 driver in 7 was running into the 70-hour rolling cap by day 7 or 8, forcing last-minute relief-driver assignments at $580 each in deadheading, layover and overtime, against a planned relief-pool that covered only 5% of the fleet. Annual cost of unplanned relief: $4.2M.
The carrier rebuilt the schedule in ModelRisk: per-driver per-day driving hours are LogNormal (capped at 11), dwell is Beta-scaled, breakdowns are a Bernoulli with a Triangular adder, and the 8-day cumulative on-duty hours are integrated across the rolling window. The simulation produces a P(violation) per driver and a fleet-wide relief-pool sizing CDF that the deterministic plan never could.
Per-driver per-day driving hours are LogNormal with mean 6.8 hr, σ_log 0.22, capped at the legal 11 hours. Mean below the cap is fine; the issue is variance — actual driving hours stretch toward 9 or 10 on bad-traffic days, when a customer dwell extends, a port appointment runs late, or weather slows the run. Each such day pulls the 8-day cumulative cap closer.
Per-day on-duty hours = driving + 0.5 hr fueling + Beta(2, 5) × 2.5 hr customer dwell + breakdown adder. Breakdowns are Bernoulli(0.018) per duty-day with a Triangular(4, 7, 12) hour repair-roadside adder when they occur. On-duty hours per day are also capped at the legal 14.
Aggregate to 8 days: mean cumulative on-duty hours about 65, P90 around 71, P99 around 77. The P90 sits right at the 70-hour cap. That means roughly 1 in 7 drivers (the simulation says about 14%) hits the rolling cap before completing the planned schedule — under normal conditions. Run an aggressive utilization posture and the number triples.
A deterministic plan that compares 6.8 × 8 + (0.5 + 0.86) × 8 = 65 hours of expected on-duty and concludes the relief-pool sizing should cover the mean of driver-days needing relief gives 5% of the 380-tractor fleet, or 19 relief drivers.
The simulation, which treats each driver as an independent draw from the 8-day on-duty distribution and aggregates fleet-wide:
Sizing the pool to the P95 — 65 drivers, or 17% of fleet — covers daily demand on 95% of days and resolves the recurring last-minute scramble. The marginal cost of the additional 46 relief drivers (about $2.3M/year in base wages) is more than offset against the $4.2M/year of unplanned-relief premium it eliminates — a net swing of roughly $1.9M/year in favour of pre-staffed relief over last-minute scramble.
The dispatcher could run the fleet at one of three utilization postures. The simulation compares them on 8-day cumulative on-duty hours per driver:
The aggressive posture squeezes another 4% utilisation out of the fleet but pushes the HOS-violation probability past two drivers in five — the regulatory and operational exposure is unmanageable. The current posture is genuinely cost-effective if and only if the relief pool is resized to handle the P95 demand.
The Gantt-style chart shows how cumulative on-duty hours accrue across the rolling 8-day window for a representative driver: the P50 cumulative on day 8 sits around 65 hours; the P90 sits around 71 hours; the P10 sits around 59 hours. The dispatcher needs to see this band, not just the P50, to know when a driver is at meaningful risk of needing a 34-hour restart before the start of the next block.
Mean daily driving hours dominates — sweeping the planned mean across its 8.4–10.4 hr/day range swings cumulative on-duty by ±7.8 hr, almost the entire safety margin to the 70-hour cap. Daily driving-hour CV is next (a 0.10–0.28 CV range moves the cumulative ±6.5 hr because variance compounds). Driver-pool size enters through the per-driver loading and matters more than mean-dwell. Breakdown probability per day, while rare, contributes a measurable ±3.2 hr because each breakdown adds a 4–12 hour Triangular hit at full on-duty cost.
A schedule built on mean driving hours is a schedule that runs out of legal hours one driver in seven without anyone seeing it coming. ModelRisk gave the carrier the distribution of cumulative on-duty hours and a relief-pool sized to the P95 — and the roughly $1.9M/year that the deterministic plan was structurally unable to save.