[Coin-lpsolver] OsiSimplexInterface behaviour
Lou Hafer
lou at cs.sfu.ca
Fri Apr 11 13:26:01 EDT 2003
> > (Lou)
> >
> > << Context is behaviour of solvers when OsiSimplexInterface is enabled.
> > Question (broadly) is the effect/implications of asking a solver to
> > perform a pivot sequence that might normally be considered a violation
> > of the rules for the current simplex phase. >>
> >
> > Does a solver really need to be `in a phase' at all times? Well, no,
> > not really. The various checks (in dylp, at least) really are sanity checks.
> > Given a phase, you can assume certain things shouldn't happen. That allows
> > some simplifications in the code. Violations are normally a good indication
> > of a coding error. So being in a phase serves a useful purpose.
> >
> > Now I've written that last paragraph, I guess I'd say the real problem
> > is that dylp assumes that if it's doing simplex pivots, then it's in one of
> > primal I, primal II, or dual II. It probably wouldn't be too difficult to
add
> > a `no phase' phase (:-) to various specific routines (pivot, factorization).
>
> (Mikhail)
>
> OK. But then it probably makes sense to have a "richer" enabling routine
> in OsiSimplexInterface. We should have at least three modes: primal, dual
> and "neither". There is also an issue of what OsiSolverInterface calls
> would be allowed in either of these modes. E.g., would adding a row while
> in "primal" or "column" while in "dual" be allowed? How about changing
> objective coefficients, right-hand-side, bounds? Can resolve() be called?
> I though it would be reasonable to, at least, be able to call resolve().
> Etc, etc, ...
dylp could likely cope with chunks of this --- addition/deletion of
rows & columns is native. Some nontrivial interface work would be
required. Efficiency could be an issue where the basis inverse is
augmented. The math is straightforward, but I'd have to have a hard
look at Makhorin's basis package to see how an incremental update
would be handled. Might be worth it. For dylp would be the potential
for efficiency gains in other places.
> > What sort of behaviour would be expected at the transition back to
> > solver control? Would the solver be allowed to assess it's state and proceed
> > accordingly?
>
> What does transition mean? If it is a call to resolve(), should not
> solver state assessment happen automatically?
That's the answer I was hoping for.
I'll have to go back and dig up the original emails and docs on
OsiSimplexInterface and have a hard look. And give and mark a final.
I'll dive back into this once marking is done.
Lou
More information about the Clp
mailing list