Decision Optimization

 View Only
  • 1.  Force interger bound with CPLEX

    Posted Fri March 01, 2024 08:53 AM
    Edited by Mikaël Capelle Fri March 01, 2024 08:52 AM

    Hi,

    I'm triyng to solve MILP with CPLEX where the objective is a sum of integer variables.

    When looking at the logs, I noticed that the Best Bound is often a non-integer value, e.g., 14.63, I don't understand why CPLEX does not update this directly to integer value to obtain tighter bound? If the best bound is 14.63, then the actual best bound would be 15 (for a minimization problem), which is much better.

    Any reason why this is not done? Any way to force this?

    Thanks,



    ------------------------------
    Mikaël
    ------------------------------



  • 2.  RE: Force interger bound with CPLEX

    Posted Mon March 04, 2024 08:29 AM

    Hi Mikaël,
    Is the variable/expression to minimize is explicitly declared as Integer before to be set as the objective ?
    What Cplex interface are you using ? 



    ------------------------------
    Cédric Doens
    ------------------------------



  • 3.  RE: Force interger bound with CPLEX

    Posted Fri March 15, 2024 05:01 AM

    Yes - My objective is the sum of binary variables, I also tried using a single integer variable and I get the same behavior. I am using docplex to build and solve the model.



    ------------------------------
    Mikaël Capelle
    ------------------------------



  • 4.  RE: Force interger bound with CPLEX

    Posted Tue March 05, 2024 12:34 PM

    Say your problem is a minimization one.

    The best bound is by definition the 'best' value of the relaxation of the open nodes, eg the one with the smallest LP_relaxation. Its is no surprise that it can be  fractional

    On the other hand, you're right that CPLEX could/should take into account of the integrality of the objective function to derive a better best bound but if this is done, I guess this is done through a cutting plane approach or something similar



    ------------------------------
    David Gravot
    ------------------------------



  • 5.  RE: Force interger bound with CPLEX

    Posted Fri March 15, 2024 05:02 AM

    I know the best bound is from the relaxation, but adding a "rounding cut" should be trivial. If you have code to add a cut through callback using the Python API, then I'd like to try it, because it seems overly complicated for such a simple thing.



    ------------------------------
    Mikaël Capelle
    ------------------------------