Difficulties during optimization

Suggests strategies for overcoming difficulties during optimization with the barrier optimizer.

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

  • elimination of too many dense columns may cause numeric instability;

  • tight convergence tolerance may aggravate small numeric inconsistencies in a problem;

  • unbounded optimal faces may remain undetected and thus prevent convergence.

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 CPLEX to detect and eliminate as many dense columns as possible. However, in some problems, if CPLEX removes too many dense columns, it may cause numeric instability.

You can check how many dense columns 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. (0.69 ticks)
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. (0.46 ticks)

***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. (0.23 ticks)
Summary statistics for Cholesky factor:
  Rows in Factor            = 180
  Integer space required    = 313
  Total nonzeros 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 CPLEX to calculate the parameter automatically.

To see the current value of the column nonzeros parameter (either one you have set or one 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 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 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 CPLEX barrier optimizer will fail to terminate normally if an undetected unbounded optimal face exists.

Normally, the CPLEX barrier optimizer uses its barrier growth parameter, BarGrowth , to detect such conditions. If this parameter is increased beyond its default value, the 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 CPLEX barrier optimizer is terminating its work before it finds the true optimum because it has falsely detected an unbounded face.