[Osi] [Clp] set row solution (activities)
mjs at clemson.edu
Thu Aug 20 18:17:00 EDT 2009
On Thu, 2009-08-20 at 14:06 -0700, Lou Hafer wrote:
> Laci, et al.,
> My take on this is that nothing new is needed in OSI. A correctly
> functioning OsiXXX should reflect the most recent valid primal or dual solution
> when asked for row activity or reduced costs, whether the solution was obtained
> from the solver or imposed by the user. It's simply a bug if this doesn't
> In an earlier email to Matt G. (which I didn't post to the list), I was
> pointing out that this isn't quite as simple as it sounds. There are multiple
> 1) When an OsiXXX object is created, it's expected to construct some sort of
> valid solution.
> 2) The user can impose a solution.
> 3) The solver can supply a solution.
> It's also possible changes have been made to the problem (coefficients, bounds,
> rhs, costs) so that the solution may no longer be valid. From memory, the OSI
> spec is not clear about what should happen in this case, and it's something that
> we should specify.
If the solution is the solver's, then it's generally easy to get the row
activities (b - s, where s is the row slacks returned by the
solver--AFAIK, all solvers offer that information directly).
Both other cases involve a solution imposed on the solver exogenously.
In that case, there needs to be a mechanism to compute Ax for the
current A and the given x. In the case of the initial solution, Ax can
be computed before the matrix is loaded into the solver and freed.
In the case of a solution imposed by the user, the mechanism is solver
dependent. For solvers that have the ability to compute Ax for
arbitrary x and unpreprocessed A, that's the thing to do. For solvers
that don't, about the only thing to do would be to copy out the current
unpreprocessed A and do the multiplication in OSI.
What are conditions for a solution to be "valid"? I don't think it's a
synonym for "feasible".
Clemson University Math Sciences
mjs AT clemson DOT edu
More information about the Osi