Skip to main content
FRAMES NO FRAMES

Conflict Refiner in CPLEX
PREVIOUS NEXT

Given an infeasible model, the conflict refiner can identify conflicting constraints and bounds within the model to help you identify the causes of the infeasibility. In this context, a conflict is a subset of the constraints and bounds of the model which are mutually contradictory. The conflict refiner first examines the full infeasible model to identify portions of the conflict that it can remove. By this process of refinement, the conflict refiner arrives at a minimal conflict. A minimal conflict is usually smaller than the full infeasible model and thus makes infeasibility analysis easier. To invoke the conflict refiner, call the method IloCplex::refineConflict.

If a model happens to include multiple independent causes of infeasibility, then it may be necessary for the user to repair one such cause and then repeat the diagnosis with further conflict analysis.

A conflict does not provide information about the magnitude of change in data values needed to achieve feasibility. The techniques that CPLEX uses to refine a conflict include or remove constraints or bounds in trial conflicts; the techniques do not vary the data in constraints nor in bounds. To gain insight about changes in bounds on variables and constraints, consider the FeasOpt feature.

Also consider FeasOpt for an approach to automatic repair of infeasibility.

In some ways a conflict resembles an irreducibly inconsistent set (IIS). Detection of an IIS among the constraints of a model is a standard methodology in the published literature. Both the CPLEX conflict refiner and the IIS methodology attempt to identify an infeasible subproblem of a provably infeasible model.

However, a conflict is more general than an IIS. The IIS methodology is applicable only to continuous LP models, (including those obtained from a continuous QP by removing the quadratic objective terms). In contrast, the conflict refiner is capable of doing its work on all continuous and discrete problem types that CPLEX supports, except for those with explicit second order cone constraints.

Also, you can specify one or more groups of constraints for a conflict; a group will either be present together in the conflict, or else will not be part of it at all.

See the method IloCplex::refineConflictExt for more about groups.

You can also assign a numeric preference to a constraint or to groups of constraints. In the case of an infeasible model that has more than one possible conflict, the preferences you assign will guide the tool toward detecting the conflict you want. Preferences allow you to specify aspects of the model that may otherwise be difficult to encode.

While the conflict refiner usually will deliver a smaller set of constraints to consider than using the IIS methodology will, the methods are different enough that the reverse can sometimes be true. In general, the conflict refiner can be thought of as usually doing everything the IIS methodology can, and often more. In fact, you might think of the conflict refiner as an extension and generalization of the IIS methodology.

PREVIOUS NEXT