[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