I’m currently running into this exact problem but it doesn’t seem like a proper solution has been described quite yet. Example:
Vehicle A -----------Service C-------------Service B
Vehicle A is “assigned” to Service B in a 1-job initial route due to a decision in a previous optimization. Service C gets added to the problem since that previous optimization and it’s between Vehicle A and Service B. Despite it being less efficient to do so, I’d like for Vehicle A to go to Service B before Service C. It was my understanding that this is how initial routes worked, but it appears that Service C can get added between Vehicle A and Service B.
Is there any way to treat the initial route ordering of Vehicle A -> Service B as “immutable”? I’ve set the THRESHOLD_ALPHA to 0.0 but that did not seem to help.
One approach that I’m considering is adding a HardRouteConstraint that takes the list of services added to initial routes in its constructor and returns NOT_FULFILLED whenever nextAct is one of the services added to the initial routes.
Thanks in advance for any direction that can be offered here! These discussions have been incredibly helpful.