Interpreting Solution Statistics

By default, individual infeasibilities are written to a log file but not displayed on the screen. To display the infeasibilities on your screen, use the command set output logonly y cplex.log.

Regardless of whether a solution is infeasible or optimal, the command display solution quality in the Interactive Optimizer displays the bound and reduced-cost infeasibilities for both the scaled and unscaled problem. In fact, it displays the following summary statistics for both the scaled and unscaled problem:

The following sections discuss these summary statistics in greater detail.

Maximum Bound Infeasibility: Identifying Largest Bound Violation

The maximum bound infeasibility identifies the largest bound violation. This information may help you determine the cause of infeasibility in your problem. If the largest bound violation exceeds the feasibility tolerance of your problem by only a small amount, then you may be able to get a feasible solution to the problem by increasing the feasibility tolerance.

Maximum Reduced-Cost Infeasibility

The maximum reduced-cost infeasibility identifies a value for the optimality tolerance that would cause ILOG CPLEX to perform additional iterations. It refers to the infeasibility in the dual slack associated with reduced costs. Whether ILOG CPLEX terminated with an optimal or infeasible solution, if the maximum reduced-cost infeasibility is only slightly smaller in absolute value than the optimality tolerance, then solving the problem with a smaller optimality tolerance may result in an improvement in the objective function.

To lower the optimality tolerance in your problem in the Interactive Optimizer, use the command set simplex tolerances optimality n, substituting a lower value for n. Its range is between 1e-9 and 0.1. Its default value is 1e-06. To lower the optimality tolerance when using the Component Libraries set the parameter IloCplex::EpOpt or CPX_PARAM_EPOPT.

Maximum Row Residual

The maximum row residual identifies the maximum constraint violation. ILOG CPLEX Simplex Optimizers control these residuals only indirectly by applying numerically sound methods to solve the given linear system. When ILOG CPLEX terminates with an infeasible solution, all infeasibilities will appear as bound violations on structural or slack variables, not constraint violations. The maximum row residual may help you determine whether a model of your problem is poorly scaled, or whether the final basis (whether it is optimal or infeasible) is ill-conditioned.

Maximum Dual Residual

The maximum dual residual indicates whether the current optimality tolerance is set appropriately. If the maximum dual residual exceeds the optimality tolerance, ILOG CPLEX may stall before it reaches an optimal solution. In particular, if ILOG CPLEX stalls during Phase I after almost reducing the sum of infeasibilities to 0 (zero), then you may be able to find a feasible solution if you increase the optimality tolerance.

To increase the optimality tolerance in your problem in the Interactive Optimizer, use the command set simplex tolerances optimality n, substituting a larger value for n. Its range is between 1e-09 and 0.1. Its default value is 1e-06. To increase the optimality tolerance when using the Component Libraries set the parameter IloCplex::EpOpt or CPX_PARAM_EPOPT.

Maximum Absolute Values: Detecting Ill-Conditioned Problems

When you are trying to determine whether your problem is ill-conditioned, you need to consider the following maximum absolute values, all available in the infeasibility analysis that ILOG CPLEX provides you:

When using the Component Libraries, use the method cplex.getQuality() or the routine CPXgetdblquality() to access the information provided by the command display solution quality in the Interactive Optimizer.

If you determine from this analysis that your model is indeed ill-conditioned, then you need to reformulate it. Coping with an Ill-Conditioned Problem or Handling Unscaled Infeasibilities outlines steps to follow in this situation.


Previous Page: Coping with an Ill-Conditioned Problem or Handling Unscaled Infeasibilities  Return to Top Next Page: Finding a Set of Irreducibly Inconsistent Constraints