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
------------------------------
Original Message:
Sent: Tue March 05, 2024 12:34 PM
From: David Gravot
Subject: Force interger bound with CPLEX
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
Original Message:
Sent: Fri March 01, 2024 08:52 AM
From: Mikaël Capelle
Subject: Force interger bound with CPLEX
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
------------------------------