When planning delivery routes, there are two distinct parts that we can reason about separately:
Allocation: Which vehicle should perform which delivery
Sequence: In which order should each vehicle perform its deliveries
As humans, we tend to think of these as two distinct steps.
First decide who's doing what, Then decide the sequence.
They don't have to be two steps, but let's go with it for now.
Excuses, Excuses, Excuses...
A lot of companies believe that they don't want to optimise their Allocation, they only want to use an algorithm to improve the Sequence.
Here are some common excuses.
We use delivery zones
Our drivers know their area, we don't want to send them somewhere less familiar
It's harder to plan if you don't know which driver does which job
When our customers order, we immediately allocate the delivery to a driver
Yes, you heard me, excuses.
Because all of these excuses boil down to the same thing:
We don't want to change our processes
Unfortunately, they're leaving a lot of money on the table.
By optimising both the Sequence and Allocation of your deliveries you're going to plan driving routes that are substantially shorter than if you only optimise the Sequence.
But wait, there's more!
Optimising the Allocation and then the Sequence is materially worse than optimising the Allocation and Sequence Simultaneously.
In our experience, it's 20% worse.
If you have a pre-planned Allocation of deliveries to delivery runs, you're wasting money, even if that pre-planned **Allocation **was optimal at the start of the month.
Really? How does that work?
Divide and Conquer
In the world of Operations Research (the study of operational problems that can be modelled mathematically to improve efficiency), one strategy for solving optimisation problems is called "Divide and Conquer".
It consists of splitting your problem into smaller parts (Divide), and then solving each of those smaller parts separately (Conquer) before somehow squashing the solutions to the small parts into one big solution.
It's a useful tool, because it means that problems which are too big to optimise in one go can still be handled.
But there's a tradeoff.
Solutions found by Divide and Conquer are usually worse than solutions found in one go.
Think about it.
If you Allocate deliveries to a driver without thinking about the Sequence she's going to drive in, you might give her too much (or too little) work to do that day.
However, if you're planning her delivery Sequence at the same time as the Allocation, you'll immediately realise that she can't perform all those deliveries, and you'll update the Allocation to take this into to account.
...and it's the same for algorithms.
Do the Right Thing
So, now you know.
If you ever find your company or yourself making one of those excuses, stop, take a step back, and consider if maybe it is actually worth changing that 20 year old process.