Originally posted by: SystemAdmin
>
> Thanks Paul, you always have useful comments.
Maybe not so useful this time, as I garbled what I wrote before. A nonbinding constraint has to have a zero dual value, period. A binding constraint will have a nonzero dual value except when the primal solution is degenerate -- which is not what I wrote before, and probably not what you were interested in either.
> Actually the point is that I have tens of thousands of variables and a model which is finally solved to optimality.
> for the same reason as you mentioned I have degeneracy multiple optimality in primal. I need to stay on the face of optimality and choose the one I like (moving over the face).
I assume then that what you have is multiple optimality in the primal and degeneracy in the dual, which makes sense given your original question.
What is your criterion for "the one I like"? How do you choose among the competing optima? (This isn't a multicriterion problem, is it?)
> I need to do it as efficient as possible because it is very expensive. I can use the reduced costs to fix some of the variables but there are thousands more which can be fixed is I can access the dual variable corresponding to a constraint which is not binding. then if it is not binding I can fix it.
I got lost here. Are you talking about fixing some nonbasic primal variables at zero?
If the dual is degenerate, some binding primal constraints may have zero duals (but all nonbinding primal constraints
must have zero duals). So you cannot tell which primal constraints are binding by looking at the duals, but you can tell by looking at their slack values. CPLEX provides the slack values via getSlack/getSlacks; it just doesn't provide the slack variables themselves.
/Paul
Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
#CPLEXOptimizers#DecisionOptimization