ILOG CPLEX .NET Reference Manual

Cplex.BranchCallback.MakeBranch Method (INumVar, Double, BranchDirection, Double)

Creates a child node for the current node with the estimated objective value by setting one more restrictive bound on the specified variable.

protected virtual NodeId MakeBranch(
   INumVar var,
   double bound,
   BranchDirection dir,
   double objestimate
);

Parameters

var
The variable for which a new bounds will be set in the branch.
bound
The new bound for variable var.
dir
The branching direction for var. Setting dir to Cplex.BranchDirection.Up specifies that the lower bound of variable var is to be set to bound. Setting dir to Cplex.BranchDirection.Down specifies that the upper bound of variable var is to be set to bound.
objestimate
An estimate of the objective value at the subnode specified by this branch.

Return Value

The Cplex.NodeId of the created child node.

Remarks

This method or any of the other makeBranch methods can be called zero, one or two times. Each time one of the makeBranch methods is called a child node of the current node is created, thereby overriding the branch decision taken by the invoking Cplex object. It is an error to call one of the makeBranch methods more than twice. If no makeBranch method is called and the method prune is not called as well, the search is continued with the branching decision taken by the invoking Cplex object.

Each call specifies a branch; in other words, it instructs the invoking Cplex optimizer how to create a subnode from the current node. In this method, this task is done by specifying a new, tighter bound for one variable.

The argument objestimate provides an estimate of the resulting optimal objective value for the subnode specified by this branch. The invoking instance of Cplex may use this estimate to select nodes to process. A poor estimate will not influence the correctness of the solution, but it may influence performance. Using the objective value of the current node is usually a safe choice.

See Also

Cplex.BranchCallback Class | ILOG.CPLEX Namespace | Cplex.BranchCallback.MakeBranch Overload List