[Coin-lpsolver] optimality of a dual solution after rhs change
John J Forrest
jjforre at us.ibm.com
Thu Mar 9 09:36:22 EST 2006
Stefan,
Will look into it in the next few days. Abandoned may be "best" return
setting - it really should be "unknown" (Clp problem status -1).
Could be something simple such as slack is at ub, ub is increased but
value of slack stays same. So problem is still primal feasible but
complementarity has gone. Code knows it has to be at bound but might put
it to wrong bound. As I said I can try and look at it soon.
John Forrest
Stefan Vigerske <stefan at mathematik.hu-berlin.de>
Sent by: coin-lpsolver-bounces at list.coin-or.org
03/09/2006 06:50 AM
To
coin-lpsolver at list.coin-or.org
cc
Subject
Re: [Coin-lpsolver] optimality of a dual solution after rhs change
Hi,
Thanks a lot for your help. I've never tried these methods before.
But now I've a problem that after changing the bounds of a row of the
problem,
the dual solution becomes infeasible. From my understanding of duality
theory, changing a right-hand-side shouldn't affect the feasibility space
of
the dual problem, since the right-hand-side of the primal is the objective
of
the dual.
I tried this on a small example (see appendix). After increasing an upper
bound, there is a dual infeasibility reported which is exactly the value
of
the dual variable for the row which bound had been changed.
Also isProvenAbandoned() returns true, while isProvenOptimal() returns
false.
I know that the last primal point might be not feasible or not optimal
after
a change of the bounds of a row, but the dual point should stay feasible,
and
I'm only interested whether it is still optimal.
Is there a way to check only if the dual solution is still optimal after a
change of the bounds, like a isProvenDualOptimal() ?
> In my understanding the two methods you mention will re-compute the
> reduced costs and duals for a new objective BUT it would be up to the
user
> to check whether the solution is still optimal. The simplest function
to
> use is Clp's checksolution method. If you modify the problem in any way
> and then use getModelPtr() to get a Clp pointer then after
> clpPpointer->checkSolution() you can check if the problem is still
optimal
> (and returned as such by OsiSolverInterface::isProvenOptimal). You
could
> also interrogate such ClpSimplex functions as numberDualInfeasibiliies()
> or sumDualInfeasibilities() or their primal counterparts for more subtle
> information.
Thanks again :-),
Stefan
--
Stefan Vigerske
Humboldt University Berlin, Numerical Mathematics
http://www.math.hu-berlin.de/~stefan
_______________________________________________
Coin-lpsolver mailing list
Coin-lpsolver at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/coin-lpsolver
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/clp/attachments/20060309/0dc4015f/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: clptest.cpp
Type: application/octet-stream
Size: 2136 bytes
Desc: not available
URL: <http://list.coin-or.org/pipermail/clp/attachments/20060309/0dc4015f/attachment.obj>
More information about the Clp
mailing list