[Coin-discuss] Basis status query

fmargot at andrew.cmu.edu fmargot at andrew.cmu.edu
Mon Aug 6 10:11:07 EDT 2007


John:

I assume that this would also involve change in getBasisStatus().
Several cut generators would be affected (I wonder how it is possible
that they work at all with a different convention for status than the one 
from OsiClp).

It seems that this amounts to changing the sign when adding the slack: 
In OsiClp, up to now, all slacks are added with a coefficent +1 
and are nonnegative for L, nonpositive for G and 0 for E.
As I understand the change, it would mean that a slack for a L row
would now be added with a -1 coefficient and be nonpositive. This does
not look natural.

Cplex adds slack that are nonnegative with a coefficent +1 for L rows and
nonnegative with a coefficient -1 in G rows. OsiCpx is flipping signs
around to match what OsiClp is currently doing.

I agree that Osi should impose an identical behavior for all Osi interfaces
for status of slacks, but I would prefer to keep the way OsiClp and
OsiCpx is working, as it seems the simplest way to add the slacks: all
with coefficient +1.

Unless there is more code using the planned convention than the current
one, it would seem better to switch the other Osi interfaces to the convention
used in OsiClp, OsiCpx and (I believe) OsiXpr.

Francois




On Mon, 6 Aug 2007, John J Forrest wrote:

> Stefan Vigerske pointed out to me that OsiClp was returning an incorrect
> CoinWarmStartBasis status for an L row.  I realized that Clp has the
> correct status but that for several years I have been carefully swapping
> atLowerBound and atUpperBound on artificials when using
> OsiClpSolverInterface.  I thought that the Osi convention was to use the
> status of the slack which would be at lower bound if at 0 i.e. tight on
> upper bound on constraint.
>
> Testing with DyLP, Glpk and Osl they all gave atUpperBound for an L row so
> I intend to fix my error.  I also intend to add a simple test in the Osi
> unit test to make sure that all solvers that can return a basis will give
> the same result.
>
> Can anyone see any problems with this.  I don't want to break anyone's
> code.  I also hope that other solvers which give a basis will return
> correct status.
>
> John Forrest
>
>
>



More information about the Coin-discuss mailing list