ILOG CPLEX 11.0 User's Manual > Continuous Optimization > Solving LPs: Barrier Optimizer > Overcoming Numeric Difficulties > Difficulties during Optimization

Numeric difficulties can degrade performance of the ILOG CPLEX Barrier Optimizer or even prevent convergence toward a solution. There are several possible sources of numeric difficulties:

The following subsections offer guidance about overcoming those difficulties.

Numeric Instability Due to Elimination of Too Many Dense Columns

Detecting and Eliminating Dense Columns explains how to change parameters to encourage ILOG CPLEX to detect and eliminate as many dense columns as possible. However, in some problems, if ILOG CPLEX removes too many dense columns, it may cause numeric instability.

You can check how many dense columns ILOG CPLEX removes by looking at the preprocessing statistics at the beginning of the log file. For example, the following log file shows that CPLEX removed 2249 columns, of which nine were dense.

Selected objective sense:  MINIMIZE
Selected objective  name:  obj
Selected RHS        name:  rhs
Selected bound      name:  bnd

Problem 'XXX.mps' read.
Read time =    0.03 sec.
Tried aggregator 1 time.
LP Presolve eliminated 2200 rows and 2249 columns.
Aggregator did 8 substitutions.
Reduced LP has 171 rows, 182 columns, and 1077 nonzeros.
Presolve time =    0.02 sec.

***NOTE: Found 9 dense columns.

Number of nonzeros in lower triangle of A*A' = 6071
Using Approximate Minimum Degree ordering
Total time for automatic ordering = 0.00 sec.
Summary statistics for Cholesky factor:
  Rows in Factor            = 180
  Integer space required    = 313
  Total non-zeros in factor = 7286
  Total FP ops to factor    = 416448

If you observe that the removal of too many dense columns results in numeric instability in your problem, then increase the column nonzeros parameter, BarColNz.

The default value of the column nonzeros parameter is 0 (zero); that value tells ILOG CPLEX to calculate the parameter automatically.

To see the current value of the column nonzeros parameter (either one you have set or one ILOG CPLEX has automatically calculated) you need to look at the level two display, by setting the BarDisplay parameter to 2.

If you decide that the current value of the column nonzeros parameter is inappropriate for your problem and thus tells ILOG CPLEX to remove too many dense columns, then you can increase the parameter BarColNz to keep the number of dense columns removed low.

Small Numeric Inconsistencies and Tight Convergence Tolerance

If your problem contains small numeric inconsistencies, it may be difficult for the ILOG CPLEX Barrier Optimizer to achieve a satisfactory solution at the default setting of the complementarity convergence tolerance. In such a case, you should increase the convergence tolerance parameter (BarEpComp for LP or QP models, BarQCPEpComp for QCP models).

Unbounded Variables and Unbounded Optimal Faces

An unbounded optimal face occurs in a model that contains a sequence of optimal solutions, all with the same value for the objective function and unbounded variable values. The ILOG CPLEX Barrier Optimizer will fail to terminate normally if an undetected unbounded optimal face exists.

Normally, the ILOG CPLEX Barrier Optimizer uses its barrier growth parameter, BarGrowth, to detect such conditions. If this parameter is increased beyond its default value, the ILOG CPLEX Barrier Optimizer will be less likely to detect that the problem has an unbounded optimal face and more likely to encounter numeric difficulties.

Consequently, you should change the barrier growth parameter only if you find that the ILOG CPLEX Barrier Optimizer is terminating its work before it finds the true optimum because it has falsely detected an unbounded face.