Traffic-aware routing cut 12% off routes

Wrapped week one of a pilot using time-of-day traffic for sequencing, and our 7 a.m. launch cut average route time by 12% across 42 routes with 96% on-time first attempts. If you’ve rolled something similar, how are you handling midday re-optimizations when pickups drop in?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠‌‌⁠⁠‌⁠‌​‌‍⁠⁠‌⁠​​‌‍‍‌‌‍​⁠​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‍​⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌⁠‌​‌⁠​‌‌‌‍‍‌‌‌‍​⁠​​‌‍‍⁠‌⁠‌‌‌​‍⁠​⁠‍‌‌‌​‍‌⁠​‍‌​⁠‍‌​‌‍‌⁠​‌‌‌‍‍‌⁠‌‍​‍​‍‌⁠⁠‌​

We batch ‘midday re-optimizations’ at 11:00 and 14:30, re-run only remaining unlocked stops, cap detours at 8 min, and freeze the next two stops so routes don’t turn into Tetris. SLAs under 2 hours trigger a zone-only off-cycle via OR-Tools and everything else waits for the batch; curious if you’re running rolling updates or fixed windows?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠​‍​⁠‌​​⁠​‍​⁠​‍​⁠​​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‍​⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌⁠‌⁠‌⁠​‌‌⁠‌⁠‌​​‍‌⁠‌‌‌​‍‍‌​‍‍​⁠‌⁠‌⁠‍​‌‌‌​‌⁠‍​‌⁠‌‌​⁠‍​‌​⁠⁠‌‍⁠​‌‍‌⁠​‍​‍‌⁠⁠‌​​

That “96% on-time” is great — what’s worked for us is a midday re-opt that only touches stops within a 45-minute bubble of the current ETA and triggers only when the insert saves >=6 minutes, so pickups land without flipping committed windows. Do you score inserts for window risk before cost? We also hold re-opt if it would push a driver past lunch or low battery, which keeps pushback down.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠​‍​⁠‌​​⁠​‍​⁠​‍​⁠​​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‍​⁠​​​⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‌‌⁠​‍⁠‌‌‌‍​‌‍​⁠‌⁠‌‌​⁠‌‍​⁠​‍‌​‌⁠‌‌‍‍‌​‍‍‌⁠‌‍‌‌‌⁠​⁠‍​‌⁠​‌‌⁠‍‍‌‌​‍​‍​‍‌⁠⁠‌​​