Examining the engine log

Describes the Engine Log tab.

The Engine Log tab in the Output window shows the CPLEX node log when an LP model is solved.

Figure 1. Engine log for the warehouse example (scalable warehouse.mod)
CPLEX log

When 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. 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 CPLEX parameters.

  • The MIPDisplay parameter controls the general nature of the output that goes to the node log.

  • The MIP node log interval parameter, MIPInterval, controls how frequently node log lines are printed. Its default value is 100.

These parameters can be set in the OPL settings file. See Changing a CPLEX parameter value. The values for these parameters are also given in CPLEX parameters and OPL parameters.

CPLEX records a line in the node log for every node with an integer solution if the parameter controlling MIP node log display information (MIPDisplay) is set to 1 or higher. If MIPDisplay is set to 2 or higher, then for any node whose number is a multiple of the MIPInterval value, a line is recorded in the node log for every node with an integer solution.

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 Objective column, 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 the objective function at the node is worse than the cutoff value for branch & cut; or if the linear programming relaxation at the node supplies an integer solution.) This column is left blank for lines that report that CPLEX found a new incumbent by primal heuristics. A plus (+) after the node number distinguishes such lines.

In the column labeled IInf, 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 objective value of 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 of the solution pool is invoked, the printed gap value may become negative after the optimal solution has been found and proven optimal.

CPLEX also logs its addition of cuts to a model. Cuts generated at intermediate nodes are not logged individually unless they happen to be generated at a node logged for other reasons. CPLEX logs the number of applied cuts of all classes at the end.

CPLEX also indicates, in the node log file, each instance of a successful application of the node heuristic. The + denotes an incumbent generated by the heuristic. Periodically, if the MIP display parameter is 2 or greater, CPLEX records the cumulative time spent since the beginning of the current MIP optimization and the amount of memory used by branch & cut. (For example, if the MIPInterval parameter is set to 10, time and memory information appears either every 20 nodes or ten times the MIP interval parameter, whichever is greater.)

CPLEX 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.