user_send_lp_solution

int user_send_lp_solution(void *user, int varnum, var_desc **vars, 
                          double *x, int where)

Description:

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

Arguments:

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.

Return values:

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.

Wrapper invoked from:
fathom_branch() after an LP relaxation has been solved. The message is always sent to the cut generator (if there is one). The message is sent to the cut pool if a search tree node at the top of a chain is being processed (except at the root in the first phase), or if a given number (cut_pool_check_freq) of LP relaxations have been solved since the last check.

Note:

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.