inria-UFF / VRPSolverEasy

A simple Python interface for VRPSolver, a state-of-the-art Branch-Cut-and-Price exact solver for vehicle routing problems
https://vrpsolvereasy.readthedocs.io/en/latest/
MIT License
106 stars 10 forks source link

RCSP solver WARNING : the best solution could not be retrieved #10

Closed theSubsurfaceGuy closed 11 months ago

theSubsurfaceGuy commented 11 months ago

Hi, am working of a VRP problem with capacities and time window constraints, i wonder what does it mean when we see "RCSP solver WARNING : the best solution could not be retrieved" .

rrsadykov commented 11 months ago

This warning can be ignored if it does not appear for the last iteration of column generation. In some rare cases, the best pricing solution may not be retrieved, but it is ok as long as other solutions with negative reduced cost can be retrieved.

theSubsurfaceGuy commented 11 months ago

I see, can you please clarify on this:

CASE1: when is it not the last iteration of column generation: in some rare cases, the best pricing solution may not be retrieved, but it is ok as long as other solutions with negative reduced cost can be retrieved, as these reduced cost will drive the algorithm to optimal solution. I hope this is correct.

CASE2: when is it the last iteration of column generation: If we cannot retrieve for the last iteration of column generation so does vrpsolvereasy assumes it to be optimal nonetheless?

rrsadykov commented 11 months ago

Yes, case 1 is correct. Case 2 is correct if the best solution has the reduced cost zero. If the best solution has a negative reduced cost and cannot be retrieved and all other solutions have non-negative reduced cost, then the algorithm is not correct. But it is almost impossible to have this case in practice, at least we never had it during our very extensive use of BaPCod and VRPSolver.

I agree that the incorrect case should have been determined by the code which is not the case now. For the moment, there is just this warning, and the user should analyse the log to see whether this warning critical or not. You should set printLevel to 0 to see every column generation iteration.

theSubsurfaceGuy commented 11 months ago

@rrsadykov thanks for the clear explanation, i think my question is answered so am closing this issue.