Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.

 View Only
  • 1.  CPLEX 12.10 doesn't apply cutoff value to MIP start

    Posted Thu April 30, 2020 04:53 AM
    As the title says, CPLEX Doesn't apply cutoff value to MIP start in my situation. I noticed that this was a bug in version 12.2 as this report  described. However, it seems this bug comes back again.

    To reproduce this bug, follow the steps:
    1. solve an MIP model with a cutoff and time limit set, and obtain a feasible solution or nothing (if time limit is reached);
    2. do some other work such as a heuristic search that may either obtain or fail to obtain a better solution.
    3. resolve the MIP model by setting the current best solution found as the new cutoff (the current best solution can be the solution obtained in step 1 or the solution obtained in step 2). 
    I suppose that if a feasible solution is obtained in step 1, and step failed to obtain a better solution, the MIP solved in the step 3 will have the info acquired in step 1 (via warm start, note: I also use MIP start if a better solution is found in step 2), and the corresponding solution is set as cutoff.  It seems in this situation CPLEX will skip applying the cutoff.

    Thanks for your attention!

    ------------------------------
    Feng
    Researcher
    ------------------------------

    #DecisionOptimization


  • 2.  RE: CPLEX 12.10 doesn't apply cutoff value to MIP start

    Posted Thu April 30, 2020 05:17 AM

    I cannot reproduce this. I tried with the public markshare1.mps.gz model for which the optimal value is 1 and CPLEX 12.10 interactive optimizer:
    CPLEX> read markshare1.mps.gz
    CPLEX> opt
    I let this run for a while, then hit Ctrl-C. At this point the best feasible solution has objective value 21. Then I do
    CPLEX> write markshare.mst
    CPLEX> set mip tol up 1
    CPLEX> opt
    The optimization continues where I interrupted before. No new solutions are found but of course the log still shows 21 as best known solution.
    I kill that run and now do this with a new session:
    CPLEX> read markshare1
    CPLEX> read markshare.mst
    CPLEX> set mip tol up 1
    CPLEX> opt
    As expected, I get this message:
    Warning: No solution found from 1 MIP starts.
    Now, again, with a new session, I do this:
    CPLEX> read markshare1
    CPLEX> opt
    and I stop with a primal bound of 34. Then I do
    CPLEX> read markshare.mst
    CPLEX> set mip tol up 21
    CPLEX> opt
    Again, as expected, the solution is accepted since it is less than or equal than the cutoff.
    If I repeat the experiment but set the cutoff to 1 instead then the solution is rejected, again as expected.

    So can you please provided step-by-step instructions that exactly describe what to do to reproduce your issue? Also, I am not clear why you expect a solution to be ignored if it matches the cutoff. Only solutions exceeding the cutoff are ignored.



    ------------------------------
    Daniel Junglas
    ------------------------------



  • 3.  RE: CPLEX 12.10 doesn't apply cutoff value to MIP start

    Posted Thu April 30, 2020 09:45 AM
    Edited by System Admin Fri January 20, 2023 04:40 PM
    Daniel, thanks for replying so promptly.  It is my misuse that cause the problem. I finally realized that changing parameters during optimization is not allowed and supported. Thanks for your attention!

    ------------------------------
    Feng
    Researcher
    ------------------------------
    #DecisionOptimization


  • 4.  RE: CPLEX 12.10 doesn't apply cutoff value to MIP start

    Posted Mon May 04, 2020 01:30 AM
    Actually, it is allowed to change parameters if you explicitly stop, change parameters and then solve again. However, there is one caveat: parameter changes apply only to the things to come. More specifically, if you change any of the tolerances then CPLEX will not go back to what it did before and re-check the tolerances. The cutoff is a tolerance parameter, so it applies only to things after the re-solve. Existing solutions are not checked against that. If you want to apply the cutoff to already existing stuff then you have no choice but to restart optimization from scratch: Set CPX_PARAM_ADVIND to 0 or 2 and solve again.

    ------------------------------
    Daniel Junglas
    ------------------------------