[Coin-discuss] Principles for maintaing solutions in a solver interface.
Lou Hafer
lou at cs.sfu.ca
Wed Apr 30 12:13:48 EDT 2003
Folks,
I've been trying to work out some underlying principles for the
behaviour of a solver interface (SI) with respect to the pre-solver solution,
and I'm left with some puzzles. Here's a sampling.
* unitTest clearly expects a SI to generate an initial solution when it reads
a problem from an MPS file --- it tests for this directly. It's easy enough
to extend this to loadProblem. Both are batch activities.
But what about when the client is incrementally building a system using
addCol/addRow? Should the SI incrementally maintain a valid pre-solver
solution? It's possible, but some work would be required to do it
efficiently.
* Does a SI possess exactly one solution, or is there a notion of `the
solution provided by the client' vs. `the solution provided by the
solver'? If there are conceptually two solutions, which takes precedence?
The chronologically most recent?
* If I have a solution from the solver, and the client incrementally
modifies the problem, what are the rules? Should the solver attempt to
incrementally maintain a solution? Or is it invalid until the next time a
complete solution is provided (either by the client or the solver)?
* If the SI has a valid solution (from client or solver), and a call to the
solver fails, is the existing solution invalidated?
If I were to make a proposal, for maintenance of solutions in general,
it would be something like this:
* The SI possesses a single, unique solution.
* The SI will implement a method, inventSolution, that generates a
`reasonable' initial solution appropriate for the solver. Definition of
reasonable to be determined.
* When a problem is loaded, either in batch or incrementally, no solution
exists until the client calls inventSolution or initialSolve.
* Modifications to the problem invalidate the existing solution until the
next call to inventSolution, initialSolve, or resolve.
* A failed call to the solver invalidates any existing solution.
* Solutions may be imposed on the SI by the client (setColSolution,
setRowSolution) but the SI is under no obligation to attempt to impose
them on the solver.
Admittedly, there's a bias here toward ease of SI implementation.
Matt, you mentioned `the original spec'. Is it still relevant? Is there a copy
around somewhere?
Lou
More information about the Coin-discuss
mailing list