int user_pack_cp_data(void *user, void **user_cp)
If the user wishes to employ parallelism and wants to use the cut pool to
store user-defined cuts, this function can be used to send all
problem-specific data that will be needed by the cut pool module. This could
include instance data, as well as user parameter settings (see Section
5.5.1 for a discussion of this). This is one of the few places
where the user may need to worry about the configuration of the modules. If
either the tree manager or the LP are running as a separate process (either
COMPILE_IN_LP or COMPILE_IN_TM are FALSE in the make file), then the data will be sent and received through message-passing.
See user_receive_cp_data for more discussion. Otherwise, it can be
copied through shared memory. The easiest solution, which is set up by default
is to simply copy over a pointer to a single user data structure where
instance data is stored. The code for the two cases is put in the same source
file by use of #ifdef statements. See the comments in the code stub for
this function for more details.
Note that there is support for cuts generated and stored as explicit matrix
rows. The cut pool module is already configured to deal with such cuts, so no
user implementation is required. Only the use of user-defined cuts requires
customization of the Cut Pool module.
void *user | IN | Pointer to the user-defined data structure. |
void **user_cp | OUT | Pointer to the user-defined data structure for the cut pool module. |
USER_ERROR | Error. SYMPHONY stops. |
USER_SUCCESS | Packing is done. |
USER_DEFAULT | No data to send to the cut pool (no user-defined cut classes or cut pool not used). |