Decision Optimization

Decision Optimization

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

 View Only
  • 1.  Manual Setting of Objective Lower Bound

    Posted Sun June 26, 2011 08:44 PM

    Originally posted by: Daniel_1


    Dear All,

    I am a beginner in CPLEX so maybe my questions is an easy one but any search on the web didn't help me. I have a mixed integer minimization problem and I know some good lower bound for its objective. In order to use it I set the CutUp parameter (set mip tolerances uppercutoff <my lower bound>). After that I execute optimization. If CPLEX would indeed take my value as a proven lower bound, it would stop as soon as it finds a solution with the same objective value. But in fact, after finding the corresponding solution, it continues the optimization without any respect to my lower bound.

    Since I wasn't sure that I use the proper parameter, I also tried to set CutLo (lowercutoff) but it still didn't help.

    Does anyone know please, should I use some different parameter or maybe I need a totally different approach to reach my goal?

    Thank you in advance!
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Manual Setting of Objective Lower Bound

    Posted Mon June 27, 2011 04:47 AM

    Originally posted by: SystemAdmin


    If I understand correctly, you have a lower bound B for your minimization problem? In other words, for any feasible solution s you have
    B <= obj(s)
    

    where obj(s) is the objective function value of solution s. Is that correct?
    Setting the upper cutoff to B tells CPLEX that B is an upper bound for the objective function value of the optimal solution. This allows CPLEX to discard any node that has an objective function value larger than B.
    If a solution with objective function value B exists then CPLEX will eventually return this solution. If no such solution exists then CPLEX will eventually return and claim the problem to be infeasible.
    When CPLEX finds a solution with objective function value B then it will not necessarily stop immediately. Up to this point it has only proven that the best objective function value cannot be larger than B. It has no proof that there is no solution with a value smaller than B. Such a proof requires to raise the dual bound (the "best node" column in the interactive output) above B. That CPLEX has no proof for optimality yet is indicated by a non-zero gap. Do you observe a non-zero gap when CPLEX finds the solution with objective function value B? Maybe you can post your CPLEX output here?

    The lower cutoff parameter can only be used for maximization problems.

    If you have your lower bound B and want to stop CPLEX as soon as an objective function with value B is found then there are two ways:
    • Add a constraint 'objective function >= B' to the model. This is usually not recommended as it may deteriorate performance but you may still try it.
    • Use a callback to monitor the solutions that CPLEX finds. From the callback you can instruct CPLEX to stop as soon as you see a solution that is good enough.

    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Manual Setting of Objective Lower Bound

    Posted Wed May 09, 2012 09:48 AM

    Originally posted by: J5JK_chao_lei


    Dear Daniel,

    I am trying to solve a minimization MIP problem in which the Best Bound improves quite slowly. But I can obtain a relatively better lower bound by solving another (relaxed) MIP problem. I hope to utilize this lower bound information properly without adding an extra "low bound constraint" because of the drawbacks you've mentioned. The way of using callback is also not practical, since the objective value (which I think is upper bound) of feasible solution is not likely to reach this lower bound.

    What should I do to make use of this lower bound information via CPLEX 12.3?

    Any suggestions are welcome! Thanks!

    C.L
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Manual Setting of Objective Lower Bound

    Posted Thu May 10, 2012 04:34 AM

    Originally posted by: SystemAdmin


    I would still go with the info callback.
    If your lower bound is better than CPLEX's lower bound then you can use your lower bound to calculate and display the real MIP gap. If the MIP gap computed in this way is small enough you can stop the optimization. The upper bound (best feasible solution) is not required to reach the lower bound in that case. That is the only way I see right now how you can benefit from your lower bound.

    Is it possible to transfer some of the constraints of your special relaxation to the model you are trying to solve? So that adding these constraints to the main model would also raise the lower bound for the main model?
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Manual Setting of Objective Lower Bound

    Posted Mon June 27, 2011 05:11 AM

    Originally posted by: SystemAdmin


    Daniel's answer is completely correct. I just like to emphasize the following point: it is (currently) not possible to provide a known dual bound (a lower bound for minimization problems) for a MIP via a parameter setting. You need to use one of the two solutions that Daniel provided, with the info callback most probably being the better alternative.

    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: Manual Setting of Objective Lower Bound

    Posted Mon June 27, 2011 08:17 PM

    Originally posted by: Daniel_1


    Thank you very much for your answers! Yes, your understanding of my problem is absolutely correct; I know the lower bound B such that B <= obj(s) for every feasible s and I want to use this knowledge as efficiently as possible. If fact, I thought that a good lower bound can work as a cut but now I realized that it is not true. So I implemented the callback to stop CPLEX as soon as it reaches my lower bound and this works well.

    Thank you again!
    #CPLEXOptimizers
    #DecisionOptimization