next up previous contents Back to SYMPHONY Home Page
Next: user_print_branch_stat Up: User-written functions of the Previous: user_compare_candidates

   
user_select_child

int user_select_child(void *user, double ub, branch_obj *can, char *action)

Description:

By the time this function is invoked, the candidate for branching has been chosen. Based on this information and the current best upper bound, the user has to decide what to do with each child. Possible actions for a child are KEEP_THIS_CHILD (the child will be kept at this LP for further processing, i.e., the process dives into that child), PRUNE_THIS_CHILD (the child will be pruned based on some problem specific property--no questions asked...), PRUNE_THIS_CHILD_FATHOMABLE (the child will be pruned based on its pre-solved LP relaxation) and RETURN_THIS_CHILD (the child will be sent back to tree manager). Note that at most one child can be kept at the current LP process.

There are two default options--in both of them, objective values of the pre-solved LP relaxations are compared (for those children whose pre-solve did not terminate with primal infeasibility or high cost). One rule prefers the child with the lowest objective function value and the other prefers the child with the higher objective function value.

Arguments:

void *user IN Pointer to the user-defined LP data structure.
     
int ub IN The current best upper bound.
double etol IN Epsilon tolerance.
branch_obj *can IN The branching candidate.
     
char *action OUT Array of actions for the children. The array is already allocated to length can->number.

Return values:

ERROR Error. DEFAULT is used.
USER_NO_PP User filled out *action.
USER_AND_PP User filled out *action and did an equivalent of the post-processing.
DEFAULT Regulated by the select_child_default parameter, which is initially set to PREFER_LOWER_OBJ_VALUE, unless over-ridden by the user.
PREFER_HIGHER_OBJ_VALUE Choose child with the highest objective value.
PREFER_LOWER_OBJ_VALUE Choose child with the lowest objective value.

Post-processing:

Checks which children can be fathomed based on the objective value of their pre-solved LP relaxation.

Wrapper invoked from:
branch().




next up previous contents
Next: user_print_branch_stat Up: User-written functions of the Previous: user_compare_candidates
Ted Ralphs
2000-09-08