[Clp] Hot start fails to find optimal solution

John Forrest john.forrest at fastercoin.com
Thu Jul 6 09:18:56 EDT 2017


solver.getModelPtr()->setIntParam(ClpMaxNumIterationHotStart, 999999);


On 03/07/17 20:56, Aleksandr M. Kazachkov wrote:
> Hi everyone,
>
> I am working with the LP relaxation of the attached problem, which is 
> some variant on the MIPLIB v3 instance arki001 (after a few 
> modifications), and I have run into a possible issue with hot start, 
> which I am using to check strong branching candidates.
>
> After changing the upper bound on variable 877 from 1 to 0, and 
> calling "solveFromHotStart", the solver status is not optimal 
> (isIterationLimitReached returns true). However, it seems to me that 
> neither the iteration limit nor time limit is reached (looking at the 
> source code, I see those are not the only two reasons for that 
> status). If instead I solve the subproblem with resolve, an optimal 
> solution is found.
>
> Is this a bug? Or is it a case of numerical issues with the instance? 
> If it is the latter, is the following workaround the right approach? I 
> unmarkHotStart, call resolve to get the optimal solution to the 
> subproblem, change the bounds back to their original values, resolve, 
> markHotStart again, and then continue.
>
> My setup: Clp version 1.16 on a Fedora machine. The compilation 
> options are: enable_debug=yes, enable_gnu_packages=yes, with blas and 
> lapack.
>
> I would appreciate any advice. Thank you!
> Alex
>
> P.S. Here is some test code, where solver is an instance of 
> OsiClpSolverInterface.
>
> // Initial solve
>
>   solver.initialSolve();
>
>
> // Down branch on 877
>
>   solver.enableFactorization();// Is this recommended? I may have run 
> into an issue some time ago without factorization when doing hot 
> starting... but I cannot recall for sure. It should not affect this 
> example.
>
>   solver.markHotStart();
>
>
>   solver.setColUpper(877,0);
>
>   solver.solveFromHotStart();
>
> if(solver.isProvenOptimal()) {
>
>     printf("Optimal. Objective: %e.\n", solver.getObjValue());
>
>   } elseif(solver.isIterationLimitReached()) {
>
>     printf("Iteration limit reached.\n");
>
>   } else{
>
>     printf("Something else happened.\n");
>
>   }
>
>
>   solver.unmarkHotStart();
>
>   solver.disableFactorization();
>
>   solver.resolve();
>
> if(solver.isProvenOptimal()) {
>
>     printf("Resolve optimal. Objective: %e.\n", solver.getObjValue());
>
>   } elseif(solver.isIterationLimitReached()) {
>
>     printf("Iteration limit reached.\n");
>
>   } else{
>
>     printf("Something else happened.\n");
>
>   }
>
>
>
> _______________________________________________
> Clp mailing list
> Clp at list.coin-or.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_clp&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=js2M0T-3OIMIVDvokcKjokJbk0F8QOCd0mT4FsVFE88&m=PsP0iwnuDDXSddrao4I1UKJiR-6TBM5qBqPs79oW4x8&s=UkQlK1CGWfXEb6sK-sjBxguVkV4JzbpAdIbn5bBeSDI&e=


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/clp/attachments/20170706/ae7a3e2e/attachment.html>


More information about the Clp mailing list