Originally posted by: EdKlotz
>
> What I'm about to say is pure speculation, since I don't know exactly how conflict refiner works. One possibility is that conflict refiner looks for a Farkas certificate (essentially, an unbounded ray in the dual problem) to identify a conflict set, and then possibly takes steps to reduce it. (I'm not sure, but I don't think the conflict set identified by a Farkas certificate is guaranteed to be minimal.) When you specify that C2 must be excluded, you in effect say the ray must have a zero component corresponding to C2. The docs say that when specify that C1 must be included "no further checking is performed" on it; that
may mean that, rather than requiring the dual ray to have a nonzero component corresponding to C1, there is no condition on the C1 component. (Again, I'm speculating.)
>
> Now suppose that the dual has more than one ray with a zero component corresponding to C2. It's possible that CPLEX 11.x finds one where the C1 component is non-zero (so C1 membership is confirmed), and CPLEX 12.x finds a different ray where the C1 component is zero (so C1 membership is unconfirmed). Maybe.
>
> If you feel like experimenting, you might set up the model
without constraint C2 in both versions of CPLEX, solve it, then use IloCplex::dualFarkas and see if you get the same Farkas certificate both times.
>
> /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)
First of all, I think we need to know whether the model in question is an LP or a MIP, as the
conflict refiner uses different methodologies depending on the problem type. In the LP case,
Paul's description is essentially correct for the initial implementation of the Conflict
Refiner in early versions of CPLEX. Recent versions of CPLEX use an approach described in a
paper by Gleeson/Ryan around 1991 that can just solve a single LP. But, it too is based
on Farkas' Lemma and the fact that both the primal and dual simplex methods provide a Farkas
certificate when they conclude a model is infeasible. The certificate in the primal simplex
method consists of the dual variables associated with the Phase I objective; use IloCplex::getDuals
to obtain them. The certificate in the dual simplex method is the row of the basis inverse
associated with the dual simplex ratio test that concluded dual unboundedness, and hence primal
infeasibility. Use IloCplex::DualFarkas, as mentioned above, to get that. And, as Paul said,
if different versions of CPLEX give different Farkas infeasibility certificates, you will also
probably see different conflicts.
MIP is different, since Farkas infeasibility certificates are much harder to calculate. I won't
go into the details here. But, as with LPs, it is possible that different versions of CPLEX will
yield different conflicts. So, overall, I don't think you need to be concerned about the behavior
you see, as long as the different conflicts you get with different versions of CPLEX satisfy the
definition of a conflict, namely that the conflict is infeasible, and removal of any single constraint
or bound in the conflict makes this infeasible submodel feasible.
Ed
#CPLEXOptimizers#DecisionOptimization