int user_unpack_cuts(void *user, int from, int type, int varnum, var_desc **vars, int cutnum, cut_data **cuts, int *new_row_num, waiting_row ***new_rows)
If the user has defined application-specific cut classes, these cuts must be
interpreted as constraints for the current LP relaxation, i.e., the user must
decode the compact representation of the cuts (see the cut_data structure) into rows for the matrix. A pointer
to the array of generated rows must be returned in ***new_rows (the
user has to allocate this array) and their number in *new_row_num.
Note that SYMPHONY has built-in support for cuts generated explicitly as matrix rows with no user-defined packed form, i.e., cuts whose indices and coefficients are given explicitly (see the function user_find_cuts(). These cuts can be constructed and added using the helper function cg_add_explicit_cut() and are packed and unpacked automatically, so the user does not need to implement this function. In post processing, SYMPHONY unpacks explicitly defined cuts and internally generated generic cuts.
|void *user||IN||Pointer to the user-defined LP data structure.|
|int from||IN||See below in ``Notes''.|
|int type||IN||UNPACK_CUTS_SINGLE or UNPACK_CUTS_MULTIPLE (see notes below).|
|int varnum||IN||The number of variables.|
|var_desc **vars||IN||The variables currently in the problem.|
|int cutnum||IN||The number of cuts to be decoded.|
|cut_data **cuts||IN||Cuts that need to be converted to rows for the current LP. See ``Warning'' below.|
|int *new_row_num||OUT||Pointer to the number of rows in **new_rows.|
|waiting_row ***new_rows||OUT||Pointer to the array of pointers to the new rows.|
|USER_ERROR||Error. The cuts are discarded.|
|USER_SUCCESS||User unpacked the cuts.|
|USER_DEFAULT||There are no user cut types defined. In this case, SYMPHONY deals with only explicit cuts and internally generated cuts.|
Explicit row cuts are processed, as well as SYMPHONY's internally generated cuts. Also, the pointers to each cut are transferred to the waiting_rows data structure (in previous version, this was done by the user).