-
Notifications
You must be signed in to change notification settings - Fork 340
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Break always placed in first position #385
Comments
I can reproduce this problem. It looks like a flaw in the validity checks that result in discarding the option of putting jobs before the break in that case. Then some jobs just get unassigned if there is not enough room for them after the break (all jobs unassigned in the second example). |
Fun fact: this only happens with zero service. The expected solutions are reached when changing the service values to any non-zero value. |
I've added a biggest instance with shipments where the rest is supposed to be placed in the middle of the day. As there is less jobs to perform at this moment, but the solution uses 5 vehicles with breaks and place them at the beginning of the day. |
I've narrowed down the initial problem. The
When trying to insert a job in an empty route in the examples, both arrival times are OK whatever the order. But because the job service time is zero, the overall end time is the same (travel time to the job can be done before the break in the Now the flaw for |
I pushed a commit in #386 that does the job for the initial problems. It adds checks to avoid suggesting an ordering that turns out to be invalid while the other one is valid. Solutions provided for both |
We have another problem with Say we check validity for insertion of a shipment into an empty route with a break. At first, we have ordering options What makes it even worse is we have a (usually clever) way of reducing local search checks by marking jobs/shipments as incompatible with a given vehicle as soon as insertion in an empty route is invalid. Thus such shipments are wrongly seen as totally not doable and are discarded throughout the search, ending up unassigned. I think 809bd20 fixes this problem, we'll have to see whether it's enough in the general case. |
Moving the internal implementation discussion to #386 (comment). |
@braktar thanks for reporting, this should now be fixed in |
In some cases, the break is always placed in first position of the route.
It has for consequence to unassigned job, wheras it is possible to perform these job before the break.
Here are two JSON which illustrate this case :
https://gist.github.com/braktar/fe118d6abeaf72e9c004943eae52b096
The text was updated successfully, but these errors were encountered: