[Coin-lpsolver] basisIsAvailable()

Francois Margot fmargot at andrew.cmu.edu
Thu Nov 10 13:29:57 EST 2005



On Thu, 10 Nov 2005, Matthew Saltzman wrote:

> On Thu, 10 Nov 2005, Francois Margot wrote:
>
>> 
>> 
>> On Thu, 10 Nov 2005, Matthew Saltzman wrote:
>> 
>>> On Wed, 9 Nov 2005, Francois Margot wrote:
>>>> 
>>>> I must add that the Doxygen doc of OsiSolverInterface could be improved 
>>>> (I know, I can do it myself; except that to figure out what is supposed 
>>>> to
>>>> be returned by isProvenOptimal() you have to look at solver 
>>>> implementations
>>>> and they are not consistent with each other ...). The current doc on
>>>> isProvenOptimal() is the terse:
>>>> 
>>>>   Is optimality proven?
>>> 
>>> Of course, what that means is algorithm dependent.
>>> 
>> 
>> Well, this is exactly what I don't like. The purpose of Osi, I thought, is 
>> to have an interface that is solver independent. To obtain that,
>> Osi has to impose return codes that are solver independent, and have
>> enough documentation so that people implementing a solver interface know 
>> exactly what is required.
>
> In the early days of OSI design, much care was taken to avoid using the term 
> "solver independent".  Instead, "solver agnostic" was adopted to imply that, 
> while the API was the same, the interface would "adapt" in certain ways to 
> the behavior of the underlying solver.  That choice made development of SIs 
> simpler, but has proved problematic in just the ways one would have 
> predicted.
>
> I don't think the choice was entirely unjustifiable.  The driving idea was 
> the "principle of least surprise", but the question was, who's surprise is to 
> be minimized?  A CPLEX user migrating to OsiCpxSolverInterface would be least 
> surprised by solver-agnostic behavior, but an OSI user migrating from CPLEX 
> to CLP or vice versa would be least surprised by solver-independent behavior.
>
> One example was that, because we called the underlying solver's MPS reader 
> (simplifying development), you couldn't guarantee that you were solving the 
> same problem when you switched underlying solvers.  You could, however 
> guarantee that the problem read into CPLEX and the problem read into 
> OsiCpxSolverInterface would be the same. The result was John's readMPS(), a 
> retrofit to make sure that we had a consistent way to get the same problem 
> into any solver in the same way.
>
> Another example is the kind of thing we are discussing here.
>
> For the next version, we've largely abandonded solver agnosticism as a design 
> principle.
>

This begs for the following question: When will mere mortal have access to the
new version of Osi?

Francois



More information about the Clp mailing list