[Coin-lpsolver] basisIsAvailable()

Matthew Saltzman mjs at ces.clemson.edu
Tue Nov 8 18:53:24 EST 2005


I can also add that CLP and CPLEX are the only OSIs currently implementing 
basisIsAvailable().

On Tue, 8 Nov 2005, Matthew Saltzman wrote:

> On Tue, 8 Nov 2005, John J Forrest wrote:
>
>> Francois,
>> 
>> The description of basisIsAvailable does not say anything about an optimal
>> basis.  I thought it was more so you can distinguish Volume algorithm.
>> 
>> I can add optimalBasisIsAvailable if you want but can the OsiCpx
>> maintainer tell me what they think basisIsAvailable means?
>
> I think Tobias must have written it, but the implementation of 
> OsiCpxSolverInterface::basisIsAvailable() calls CPXsolninfo() and returns the 
> value of the expression solntype == CPX_BASIC_SOLN.  So it is reporting 
> whether there is a current solution together with basis.  Other return codes 
> from CPXsolninfo() (according to cplex.h) are CPX_NO_SOLN, CPX_NONBASIC_SOLN, 
> CPX_PRIMAL_SOLN.
>
>> From the CPXsolninfo() man page, one parameter is:
>
>    [a] pointer to an integer variable indicating the type of solution
>    currently available. Possible return values are CPX_BASIC_SOLN,
>    CPX_NONBASIC_SOLN, CPX_PRIMAL_SOLN, and CPX_NO_SOLN, meaning the model
>    either has a simplex basis, has a primal and dual solution but no
>    basis, has a primal solution but no corresponding dual solution, or
>    has no solution, respectively.
>
> The status is valid until the problemis destroyed or the solution is rendered 
> invalid by problem mods.
>
> Originally, Francois wrote:
>
>> 
>> 
>> The function OsiClpSolverInterface::basisIsAvailable() always returns
>> true. This is a little bit dangerous. If modifications are made to the
>> solver after the last optimization (change of bound on variables, in
>> particular), the available basis might be (primal or dual, or both)
>> infeasible.
>> 
>> Then, calling cut generators such as Gomory and Reduce-and-Split might
>> result in invalid cuts. The only way (as far as I can tell) to prevent
>> this
>> is to rely on basisIsAvailable() to stop the cut generator if the current
>> basis is not optimal anymore.
>> 
>> Cplex is tracking the status of the basis accurately, but Clp does not.
>> Is it possible to fix that?
>
>

-- 
 		Matthew Saltzman

Clemson University Math Sciences
mjs AT clemson DOT edu
http://www.math.clemson.edu/~mjs



More information about the Clp mailing list