When the ILOG CPLEX Barrier Optimizer terminates and reports an infeasible solution, all the usual solution information is available. However, the solution values, reduced costs, and dual variables reported then do not correspond to a basis; hence, that information does not have the same meaning as the corresponding output from the ILOG CPLEX simplex optimizers.
Actually, since the ILOG CPLEX Barrier Optimizer works in a single phase, all reduced costs and dual variables are calculated in terms of the original objective function.
If the ILOG CPLEX Barrier Optimizer reports to you that a problem is infeasible, but you still need a basic solution for the problem, use the primal simplex optimizer. For example, in the Interactive Optimizer, use the command primopt
. ILOG CPLEX will then use the solution provided by the barrier optimizer to determine a starting basis for the primal simplex optimizer. When the primal simplex optimizer finishes its work, you will have an infeasible basic solution for further infeasibility analysis.
If the default algorithm in the ILOG CPLEX Barrier Optimizer determines that your problem is primal infeasible or dual infeasible, then try the alternate algorithms in the barrier optimizer. These algorithms, though slower than the default, are better at detecting primal and dual infeasibility. To change the algorithm:
In Finding a Set of Irreducibly Inconsistent Constraints, we explained how to invoke the infeasibility finder on a solution basis found by one of the simplex optimizers. If you are using the pure barrier optimizer (that is, with no crossover to a simplex optimizer), then it will not generate a basis on which you can call the infeasibility finder to analyze your constraints and locate an IIS. Consequently, if you are interested in finding an IIS for your problem, you should invoke the ILOG CPLEX Barrier Optimizer with crossover, as explained in Controlling Crossover.