Other Debugging Techniques

Another useful built-in function is write_mps(), which will write the current LP relaxation to a file in MPS format. This file can then be read into the LP solver interactively or examined by hand for errors. Many times, CPLEX gives much more explicit error messages interactively than through the callable library. The form of the function is

void write_mps(LPdata *lp_data, char *fname)
where fname is the name of the file to be written. If SYMPHONY is forced to abandon solution of an LP because the LP solver returns an error code, the current LP relaxation is automatically written to the file matrix.[bc_index].[iter_num].mps where bc_index is the index of the current subproblem and iter_num is the current iteration number. The write_mps() function can be called using breakpoint code to examine the status of the matrix at any point during execution.

Logging is another useful feature. Logging the state of the search tree can help isolate some problems more easily. See Section 6.4.4 for the appropriate parameter settings to use logging.

Ted Ralphs