I am using OptaPlanner to optimize a vehicle routing problem very similar to the provided example.
I am faced with the following challenge and will appreciate some ideas.
Some of the visits to customers have relations to other visits, for example:
- A visit must start at the same time with another visit.
- A visit must start 2 hours after another visit finishes.
- A visit must be allocated to the same vehicle allocated to another visit.
The challenge is: How to allow moves of the visits without resulting in lower score while moving one of them?
Each visit might be on a different chine (allocated to a different vehicle), so that all provided moves selectors will most likely provide moves that change only one visit. Such moves most probably result in lower score due to the dependency and will never be selects.
Same start scenario: any move that change the start time of one visit will result in lower score. Same vehicle scenario: any move that change one visit to a different vehicle will result in lower score.
Currently I am using Tabu Search with satisfying results. Late Acceptance might be the answer.
Thanks.