[Coin-discuss] OsiCpx optimality for MIPs
Matthew Saltzman
mjs at ces.clemson.edu
Fri Jan 28 15:07:35 EST 2005
On Fri, 28 Jan 2005, Brady Hunsaker wrote:
> I just ran into a quirk with OsiCpx solving a MIP. CPLEX 9.0 has default gap
> parameters so that it stops the branch-and-bound process if the gap gets
> within 0.01% or an absolute value of 0.000001.
>
> This caused the solution process to stop, but OsiCpx->isProvenOptimal()
> returned false, because CPLEX returns a separate return code
> (CPXMIP_OPTIMAL_TOL) for this situation.
>
> I believe this should be corrected. I can see two possible solutions:
> 1. Reply true to isProvenOptimal() if CPXMIP_OPTIMAL_TOL is returned, even
> though this is technically incorrect.
> 2. Explicitly set the gap parameters to 0 in branchAndBound().
>
> I'm using the first solution right now, but I'd like to hear any other
> opinions, especially from OsiCpx maintainers.
>
> Brady
My first reaction is in favor of solution 1.
(1) Overriding tolerances that users may have reason to set is a bad idea.
(2) Most users probably would accept that a solution that's within
tolerance is optimal "for all practical purposes". If a user wants a
guarantee of optimality, he can set CPXMIP_OPTIMAL_TOL to zero himself.
Is this a small enough example to pass around for testing? I wonder how
other solver/SI combinations handle this issue.
--
Matthew Saltzman
Clemson University Math Sciences
mjs AT clemson DOT edu
http://www.math.clemson.edu/~mjs
More information about the Coin-discuss
mailing list