Like the ILOG CPLEX simplex optimizers, the 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:
set logfile filenameto change the name of the log file.
CPXsetlogfile()with arguments to indicate the log file.
You can control the level of information that ILOG CPLEX records about barrier optimization by setting the
BarDisplay parameter. Its allowed values and their meanings are as follows:
display normal information (default)
display detailed (diagnostic) output
Here is an example of a log file for a barrier optimization (without crossover):
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 section in the log file indicates which ordering algorithm the default
Automatic setting 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 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 continues with the number of nonzeros in the factored matrix. 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.
The final line of information indicates how many floating-point operations are required to compute the Cholesky factor. This number is the best predictor of the time that will be required to perform each iteration of the barrier method.
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 5.10.
In log file
|b - Ax|
|u - (x + s)|
|c - yA - z + w|
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, if you have set
BarAlg to either 1 or 2, as discussed later in this chapter), 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 infeasible or unbounded, this ratio will decrease to a very small number.