Like the ILOG CPLEX Simplex Optimizers, the ILOG CPLEX Barrier Optimizer records information about its progress in a log file as it works. Some users find it helpful to keep a new log file for each session. By default, ILOG CPLEX records information in a file named cplex.log
. In the:
You can control the level of information about barrier optimization that ILOG CPLEX records in the log file.
To give you an idea about a barrier log file, here is the log file for a pure barrier optimization (that is, the baropt
command with the stop
option) at display level one (the default).
The opening lines of that log file record information about preprocessing by the ILOG CPLEX presolver and aggregator. After those preprocessing statistics, the next line records the number of nonzeros in the lower triangle of a particular matrix, AAT, denoted A*A
' in the log file.
The number of nonzeros in the lower triangle of AAT gives an early indication of how long each barrier iteration will take. The larger this number, the more time each barrier iteration requires. If this number is close to 50% of the square of the number of rows, then the problem may contain dense columns that are not being detected. In that case, examine the histogram of column counts; then consider setting the barrier column-nonzeros parameter to a value that enables ILOG CPLEX to treat more columns as being dense.
After the number of nonzeros in the lower triangle of AAT, ILOG CPLEX records the time required by the ordering algorithm. (The ILOG CPLEX Barrier Optimizer offers you a choice of four ordering algorithms, explained in Choosing an Ordering Algorithm.) This line in the log file verifies that ILOG CPLEX is using the order you chose.
After the time required by the ordering algorithm, ILOG CPLEX records information about the Cholesky factor. ILOG CPLEX computes this matrix on each iteration. The number of rows in the Cholesky factor represents the number after preprocessing. The size of the dense window indicates how dense the factored matrix is. If the size of the dense window is large with respect to the number of rows, then the Cholesky factor is dense, and consequently, the ILOG CPLEX Barrier Optimizer will require more time per iteration.
The next line of information about the Cholesky factor-integer space required-indicates the amount of memory needed to store the sparsity pattern of the factored matrix. If this number is low, then the factor can be computed more quickly than when the number is high.
Information about the Cholesky factor ends with the number of nonzeros in the factored matrix. This number is directly related to the time required per iteration of the ILOG CPLEX Barrier Optimizer. In fact, the difference between this number and the number of nonzeros in AAT indicates the fill-level of the Cholesky factor. If the fill-level is large, consider an alternate ordering algorithm.
After the information about the Cholesky factor, the log file records progress at each iteration. It records both primal and dual objectives (as Primal Obj
and Dual Obj
) per iteration.
It also records absolute infeasibilities per iteration. Internally, the ILOG CPLEX Barrier Optimizer treats inequality constraints as equality constraints with added slack and surplus variables. Consequently, primal constraints in a problem are written as Ax = b and x + s = u, and the dual constraints are written as ATy + z - w = c. As a result, in the log file, the infeasibilities represent norms, as summarized in Table 4.10.
If solution values are large in absolute value, then the infeasibilities may appear inordinately large because they are recorded in the log file in absolute terms. The optimizer uses relative infeasibilities as termination criteria.
If you are using one of the barrier infeasibility algorithms available in the ILOG CPLEX Barrier Optimizer (that is, in the Interactive Optimizer you have used the command set
barrier algorithm 1 or set barrier algorithm 2
or from the Callable Library, you used the routine CPXsetintparam()
to set the parameter CPX_PARAM_BARALG
to the value 1
or 2
), then ILOG CPLEX records an additional column of output titled Inf Ratio
, the infeasibility ratio. This ratio, always positive, is a measure of progress for that particular algorithm. In a problem with an optimal solution, you will see this ratio increase to a large number. In contrast, in a problem that is primal infeasible or dual infeasible, this ratio will decrease to a very small number.