SCIPtreeBranchVar

Function SCIPtreeBranchVar 

Source
pub unsafe extern "C" fn SCIPtreeBranchVar(
    tree: *mut SCIP_TREE,
    reopt: *mut SCIP_REOPT,
    blkmem: *mut BMS_BLKMEM,
    set: *mut SCIP_SET,
    stat: *mut SCIP_STAT,
    transprob: *mut SCIP_PROB,
    origprob: *mut SCIP_PROB,
    lp: *mut SCIP_LP,
    branchcand: *mut SCIP_BRANCHCAND,
    eventqueue: *mut SCIP_EVENTQUEUE,
    eventfilter: *mut SCIP_EVENTFILTER,
    var: *mut SCIP_VAR,
    val: f64,
    downchild: *mut *mut SCIP_NODE,
    eqchild: *mut *mut SCIP_NODE,
    upchild: *mut *mut SCIP_NODE,
) -> SCIP_RETCODE
Expand description

branches on a variable x if x is a continuous variable, then two child nodes will be created (x <= x’, x >= x’) but if the bounds of x are such that their relative difference is smaller than epsilon, the variable is fixed to val (if not SCIP_INVALID) or a well chosen alternative in the current node, i.e., no children are created if x is not a continuous variable, then: if solution value x’ is fractional, two child nodes will be created (x <= floor(x’), x >= ceil(x’)), if solution value is integral, the x’ is equal to lower or upper bound of the branching variable and the bounds of x are finite, then two child nodes will be created (x <= x“, x >= x“+1 with x“ = floor((lb + ub)/2)), otherwise (up to) three child nodes will be created (x <= x’-1, x == x’, x >= x’+1) if solution value is equal to one of the bounds and the other bound is infinite, only two child nodes will be created (the third one would be infeasible anyway)