I am currently implementing breaks in my VRPTW case.
I have noticed that implementing them really decreases quality of the output - that is, I made for example a test case where I have the following nodes
- node 1 with setRange 8:00-17:00, idle time at node 2h
- node 2 with setRange 13:00-15:00, idle time at node 1h
- node 3 with setRange 8:00-8:00, idle time at node 2h
with a break with FixedDurationIntervalVar(12:00, 13:00, 30min)
(times are in ms but I'm just showing real times to make it more readable)
and in this test case, all nodes are at the same location
I would expect the route to be:
node 3 (8:00-10:00) > node 1 (10:00-12:00) > break (12:00-12:30) > node 2 (12:30-14:30)
Yet what happens is this:
node 3 (8:00-10:00) > break (12:00-12:30) > node 2 (12:30-13:30) > node 1 (13:30-15:30)
Does anyone have an idea of why this could happen? It happens also when using a SetSpanCostCoefficientForAllVehicles which incorporates a cost for total time taken.
In general I have noticed that OR tools has an extremely difficult time when running 10+ nodes with a large TW range, no matter which search strategy or first solution strategy I chose.
Is this to be expected?
Thank you for your help.