user_same_cuts

[cf]user_same_cuts
int user_same_cuts (void *user, cut_data *cut1, cut_data *cut2, 
                    int *same_cuts)

Description:

Determine whether the two cuts are comparable (the normals of the half-spaces corresponding to the cuts point in the same direction) and if yes, which one is stronger. The default is to declare the cuts comparable only if the type, sense and coef fields of the two cuts are the same byte by byte; and if this is the case to compare the right hand sides to decide which cut is stronger.

Arguments:

void *user IN Pointer to the user-defined LP data structure.
     
cut_data *cut1 IN The first cut.
cut_data *cut2 IN The second cut.
int *same_cuts OUT Possible values: SAME, FIRST_CUT_BETTER, SECOND_CUT_BETTER and DIFFERENT (i.e., not comparable).

Return values:

USER_ERROR Error. DEFAULT is used.
USER_SUCCESS User did the comparison, filled out *same_cuts.
USER_DEFAULT Compare byte by byte (see above).

Wrapper invoked from:
process_message() when a PACKED_CUT arrives.

Note:

This function is used to check whether a newly arrived cut is already in the local pool. If so, or if it is weaker than a cut in the local pool, then the new cut is discarded; if it is stronger then a cut in the local pool, then the new cut replaces the old one and if the new is different from all the old ones, then it is added to the local pool.

Ted Ralphs
2011-05-30