The constraint
The solver minimised distance. The business paid for driver time, vehicle utilisation, and missed delivery windows — three things distance only loosely predicts.
What we changed
We spent the first fortnight in the depot rather than the codebase, then re-stated the objective function to match how dispatch actually makes decisions. The algorithmic work afterwards was comparatively minor.
- Objective rewritten around cost per drop, not kilometres
- Driver-break and window constraints modelled explicitly
- Dispatcher overrides captured as training signal
Where it landed
Cost per drop fell eighteen percent and on-time delivery reached 99.4%, with dispatchers overriding the solver far less often than before.


