Route Optimization with Time Windows (2025): Real Schedules, Real Savings
Read time: ~8 min
Last updated: 30 Oct 2025
Turn stops, service times, and time windows into realistic routes your drivers can actually run. Less overtime, fewer missed SLAs, and lower kilometers.
Time windows in simple terms
A time window says: “arrive between tw_start and tw_end.” Example: tw_start=09:30, tw_end=11:30. If you reach early, you may wait; if late, it’s a failed SLA or a fee.
- service_time_min: minutes spent at the stop (unload, paperwork).
- priority: 1 (must do) to 3 (nice to do).
- vehicle_class: small vs standard (for low clearance, gates).
Step 1 — Clean your stops (with a template)
Use a standard CSV with names, addresses or GPS, service times, and time windows. We included contacts and notes for dock rules.
Time windows are 24h format (HH:MM) in local time.
Step 2 — Set vehicle shifts and limits
Drivers can’t run more drops than their shift allows. Add shift_start/shift_end, capacity_units, and max_stops per vehicle.
Include vehicle_class for restricted sites.
Step 3 — Sequence with buffers
- Use realistic speeds (e.g., 30–45 km/h urban average)
- Add a buffer (5–10 min) for parking and elevators
- Respect time windows, then minimize km
- Keep a spare slot for emergencies
Step 4 — Re‑optimize during the day
If a stop runs long or traffic spikes, re-run the optimizer for the remaining drops. Drivers get updated ETAs in the app.
Prove it with numbers
| Metric | Before | After | Delta |
|---|---|---|---|
| On‑time % | 82 | 95 | +13 |
| Avg km/route | 220 | 195 | -25 |
| Driver OT hrs/wk | 14 | 6 | -8 |
| Detention fees (AED/mo) | 3200 | 900 | -2300 |
- Download the editable sheet: SLA savings calculator (CSV)
💬 FAQs
What are tw_start and tw_end exactly?
They are the earliest and latest minutes you may start service at a stop (local time). Planning must schedule arrival so service begins inside the window.
What if my drivers reach early?
Either wait until the window opens or move to another nearby stop and return later—your optimizer should simulate both.
How do I handle restricted sites?
Tag stops with vehicle_class and assign “small” vehicles to low‑clearance or gated sites.
What about lunch breaks?
Add a soft time window (e.g., 12:30–13:00) with a 30‑minute service_time_min.
Can I add priorities?
Yes: set priority=1 for must‑deliver stops. The optimizer should fill lower priority stops after meeting all priority‑1 windows.
Glossary
- Time window: Allowed arrival interval at a stop.
- Service time: Minutes spent serving the stop.
- Priority: Importance of completing a stop (1=high).
- Vehicle class: Constraints like size/height/permits.
Share
LinkedIn
X