[Coin-lpsolver] determining infeasibility in ClpInterior
John J Forrest
jjforre at us.ibm.com
Wed Nov 22 04:14:54 EST 2006
coin-lpsolver-bounces at list.coin-or.org wrote on 11/21/2006 08:38:39 PM:
> John,
>
> Thanks again for your reply!
>
> On Friday 17 November 2006 09:40, John J Forrest wrote:
> > It is a known defect that the Clp barrier does not detect infeasibility
or
> > unboundedness correctly. It is on my list of the 100 things most
wanted
> > :-)
> >
> > On getting solutions use dualRowSolution() and/or
primalColumnSolution()
> > and check feasibility (either by hand or by checkSolution();
> >
> I looked at ClpInterior's checkSolution(), which does not take any
> arguments, and have
> a void return type. It seems to update sumPrimalInfeasibilities_ and
> sumDualnfeasibilites_.
> If I use this function, do I still need to calld primalColumnSolution()
first?
It does update sum..Infeasibilities etc and primal solution value. You
only need to use primal solution if you want to finetune things.
>
> I am a bit confused: ClpInterior's has sumDualInfeasibilities(),
> which I assume should indicate
> if the problem is feasible or not (if the sum < 1e-5 or something
> like that). Can I just call
> sumDualInfeasibilities() to check the feasibility?
Infeasibilities are treated very differently in Simplex and Interior -
Simplex on an individual basis, Interior on a norm basis.
sumDualInfeasibilities was mainly meant for internal use but will tell you
if you are approximately dual feasible.
>
> On a related question: if I get the dual solution values using
> dualRowSolution(), is there anyway
> I can get the dual objective value from this? Or is there an easier
> way to get the dual objective
> value?
I have just added dualObjective() and primalObjective() to trunk - hope it
helps. Otherwise it is fixed part of objective value and then add duals
times rhs and reduced costs times bounds with correct signs.
>
> Thanks and cheers,
>
> Kish
>
>
> > messages should be out by default on trunk and branches/devel
> >
> > John Forrest
> >
> >
> >
> > Kish Shen
> > <kish.shen at crossc
> > oreop.com>
To
> > Sent by: coin-lpsolver at list.coin-or.org
> > coin-lpsolver-bou
cc
> > nces at list.coin-or
> > .org
Subject
> > [Coin-lpsolver] determining
> > infeasibility in ClpInterior
> > 11/16/06 07:49 PM
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Hi,
> >
> > I have been testing out ClpInterior with some test cases, and for the
> > following simple problem:
> >
> > objective: min(X)
> >
> > subject to:
> >
> > X + Y >= 3
> > X + Y <= 2
> > X - Y = 0
> >
> > which is obviously infeasible, and when I solve the problem with Clp's
> > Simplex, this is indeed
> > what I get. However, when I solve the problem with ClpInterior, I get a
> > solution (with X and
> > Y = 1).
> >
> > Looking at the code:
> >
> > lpd->lp->interiormodel->setCholesky(cholesky);
> > lpd->lp->interiormodel->primalDual();
> > // Barrier done
> >
> > if (lpd->lp->interiormodel->isProvenOptimal())
> > {
> > // Do crossover if optimal...
> > .....
> > }
> >
> > where lpd->lp->interiormodel is a ClpInterior *, the isProvenOptimal()
> > method returns true.
> > I assume it should not?
> >
> > --Kish Shen
> >
> > _______________________________________________
> > Coin-lpsolver mailing list
> > Coin-lpsolver at list.coin-or.org
> > http://list.coin-or.org/mailman/listinfo/coin-lpsolver
> >
> >
> > _______________________________________________
> > Coin-lpsolver mailing list
> > Coin-lpsolver at list.coin-or.org
> > http://list.coin-or.org/mailman/listinfo/coin-lpsolver
> >
> _______________________________________________
> Coin-lpsolver mailing list
> Coin-lpsolver at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-lpsolver
More information about the Clp
mailing list