int user_send_lp_solution(void *user, int varnum, var_desc **vars, double *x, int where)
This function is only used in the case of parallel execution. The user has the option to send the LP solution to either the cut pool or the cut generator in some user-defined form if desired. There are two default options—sending the indices and values for all nonzero variables (SEND_NONZEROS) and sending the indices and values for all fractional variables (SEND_FRACTIONS).
void *user | IN | Pointer to the user-defined LP data structure. |
int varnum | IN | The number of variables currently in the LP relaxation. (The length of the *vars and x arrays.) |
var_desc **vars | IN | The variables currently in the LP relaxation. |
double *x | IN | Values of the above variables. |
int where | IN | Where the solution is to be sent—LP_SOL_TO_CG or LP_SOL_TO_CP. |
USER_ERROR | Error. No message will be sent. |
USER_SUCCESS | User packed and sent the message. |
USER_DEFAULT | Regulated by the pack_lp_solution_default parameter, initially set to SEND_NOZEROS. |
SEND_NONZEROS | Send user indices and values of variables at nonzero level. |
SEND_FRACTIONS | Send user indices and values of variables at fractional level. |
The wrapper automatically packs the level, index, and iteration number corresponding to the current LP solution within the current search tree node, as well as the objective value and upper bound in case the solution is sent to a cut generator. This data will be unpacked by SYMPHONY on the receiving end, the user will have to unpack there exactly what he has packed here.