ILOG CPLEX 11.0 User's Manual > Discrete Optimization > Solving Mixed Integer Programming Problems (MIP) > Progress Reports: Interpreting the Node Log

As explained earlier, when ILOG CPLEX optimizes mixed integer programs, it builds a tree with the linear relaxation of the original MIP at the root and subproblems to optimize at the nodes of the tree. ILOG CPLEX reports its progress in optimizing the original problem in a node log file as it traverses this tree.

You control how information in the log file is recorded and displayed, through two ILOG CPLEX parameters. The MIPDisplay parameter controls the general nature of the output that goes to the node log. Table 14.13 summarizes its possible values and their effects.

Table 14.13 Settings of the MIP Display Parameter
Setting 
Effect 
0 
no display 
1 
display integer feasible solutions 
2 
display nodes under mip interval control 
3 
same as 2, but add information on node cuts 
4 
same as 3, but add LP display for root node 
5 
same as 3, but add LP display for all nodes 

The MIPInterval parameter controls how frequently node log lines are printed. Its default is 100 and can be set to any positive integer value. A line is recorded in the node log for every node with an integer solution if the MIPDisplay parameter is set to 1 (one) or higher, and also for any node whose number is a multiple of the MIPInterval value if the MIPDisplay is set to 2 or higher.

Here is an example of a log file from the Interactive Optimizer, where the MIPInterval parameter has been set to 10:

Tried aggregator 1 time.
No MIP presolve or aggregator reductions.
Presolve time =    0.00 sec.
Root relaxation solution time = 0.00 sec
Objective is integral.

       Nodes                                     Cuts/
  Node Left  Objective  IInf  Best Integer   Best Node  ItCnt Gap

     0   0     4.0000     6                     4.0000     12
*    4   2                0        5.0000       4.0000     17 20.00%
    10   1     cutoff              5.0000       4.0000     31 20.00%

Solution pool: 1 solution saved
MIP-Integer optimal solution:  Objective =   5.0000000000e+000
Solution time =    0.02 sec.    Iterations = 41   Nodes = 13


In that example, ILOG CPLEX found the optimal objective function value of 5.0 after exploring 13 nodes and performing 41 (dual simplex) iterations, and ILOG CPLEX found an optimal integer solution at node 4. The MIP interval parameter was set at 10, so every tenth node was logged, in addition to the node where an integer solution was found.

As you can see in that example, ILOG CPLEX logs an asterisk (*) in the left-most column for any node where it finds an integer-feasible solution or new incumbent. In the next column, it logs the node number. It next logs the number of nodes left to explore.

In the next column, Objective, ILOG CPLEX either records the objective value at the node or a reason to fathom the node. (A node is fathomed if the solution of a subproblem at the node is infeasible; or if the value of objective function at the node is worse than the cutoff value for branch & cut; or if the node supplies an integer solution.) This column is left blank for lines where the first column contains an asterisk (*) indicating a node where ILOG CPLEX found an integer-feasible solution or new incumbent.

In the column labeled IInf, ILOG CPLEX records the number of integer-infeasible variables and special ordered sets. If no solution has been found, the column titled Best Integer is blank; otherwise, it records the best integer solution found so far.

The column labeled Cuts/Best Node records the best objective function value achievable. If the word Cuts appears in this column, it means various cuts were generated; if a particular name of a cut appears, then only that kind of cut was generated.

The column labeled ItCnt records the cumulative iteration count of the algorithm solving the subproblems. Until a solution has been found, the column labeled Gap is blank. If a solution has been found, the relative gap value is printed: when it is less than 999.99, the value is printed; otherwise, hyphens are printed. The gap is computed as:

(best integer - best node ) * objsen / (abs (best integer) + 1e-10)

Consequently, the printed gap value may not always move smoothly. In particular, there may be sharp improvements whenever a new best integer solution is found. Moreover, if the populate procedure is invoked, the printed gap value may become negative after the optimal solution has been found and proven optimal.

ILOG CPLEX also logs its addition of cuts to a model. Here is an example of a node log file from a problem where ILOG CPLEX added several cover cuts.

MIP Presolve eliminated 0 rows and 1 columns.
MIP Presolve modified 12 coefficients.
Reduced MIP has 15 rows, 32 columns, and 97 nonzeros.
Presolve time =    0.00 sec.

    Nodes                                      Cuts/
 Node  Left   Objective  IInf  Best Integer  Best Node  ItCnt Gap

    0     0   2819.3574     7                2819.3574     35
              2881.8340     8                Covers: 4     44
              2881.8340    12                Covers: 3     48
*   7     6                 0     3089.0000  2904.0815     62 5.99%

Cover cuts applied:  30
Solution pool: 1 solution saved
MIP-Integer optimal solution:  Objective =   3.0890000000e+003
Solution time =    0.10 sec.    Iterations = 192   Nodes = 44


ILOG CPLEX also logs the number of clique inequalities in the clique table at the beginning of optimization. Cuts generated at intermediate nodes are not logged individually unless they happen to be generated at a node logged for other reasons. ILOG CPLEX logs the number of applied cuts of all classes at the end.

ILOG CPLEX also indicates, in the node log file, each instance of a successful application of the node heuristic. The following example shows a node log file for a problem where the heuristic found a solution at node 0. The + denotes an incumbent generated by the heuristic.

 Nodes                                      Cuts/
  Node  Left   Objective  IInf  Best Integer  Best Node  ItCnt Gap
    0     0      403.8465  640                 403.8465   4037
                 405.2839  609              Cliques: 10   5208
                 405.2891  612              Cliques:  2   5288
Heuristic: feasible at 437.000, still looking
Heuristic: feasible at 437.000, still looking
Heuristic complete
*   0+    0                  0      436.0000   405.2891   5288 7.04%


Periodically, if the MIP display parameter is 2 or greater, ILOG CPLEX records the cumulative time spent since the beginning of the current MIP optimization and the amount of memory used by branch & cut. (Periodically means that time and memory information appear either every 20 nodes or ten times the MIP display parameter, whichever is greater.)

The Interactive Optimizer prints an additional summary line in the log if optimization stops before it is complete. This summary line shows the best MIP bound, that is, the best objective value among all the remaining node subproblems. The following example shows you lines from a node log file where an integer solution has not yet been found, and the best remaining objective value is 2973.9912281.

MIP-Node limit, no integer solution.
Current MIP best bound =    2.9739912281e+03 (gap is infinite)
Solution time =    0.01 sec.  Iterations = 68  Nodes = 7 (7)

Stating a MIP Problem presents a typical MIP problem. Here is the node log file for that problem with the default setting of the MIP display parameter:

Tried aggregator 1 time.
Aggregator did 1 substitutions.
Reduced MIP has 2 rows, 3 columns, and 6 nonzeros.
Presolve time =    0.00 sec.
Clique table:0 GUB, 0 GUBEQ, 0 two-covers, 0 probed
ImplBd table: 0 bounds
Root relaxation solution time =    0.00 sec.

      Nodes                                     Cuts/
 Node  Left  Objective  IInf  Best Integer  Best Node  ItCnt Gap

   0     0    125.2083     1                 125.2083      3 
*                          0      122.5000   Cuts:  2      4 

Mixed integer rounding cuts applied: 1

Solution pool: 1 solution saved
MIP-Integer optimal solution:  Objective =   1.2250000000e+002
Solution time =    0.02 sec.    Iterations = 4   Nodes = 0


These additional items appear only in the node log file (not on screen) in conventional branch & cut:

Those additional items are not applicable in dynamic search.