ILOG CPLEX .NET Reference Manual

Cplex.BranchCallback.MakeBranch Method (INumVar[], Double[], BranchDirection[], Double, Object)

Creates a child node for the current node with the estimated objective value and additional user data by specifying more restrictive bounds on the variables in the array passed as an argument.

protected virtual NodeId MakeBranch(
   INumVar[] vars,
   double[] bounds,
   BranchDirection[] dirs,
   double objestimate,
   object data
);

Parameters

vars
The array of variables for which new bounds will be set in the branch.
bounds
The array of new bounds for the variables corresponding to the variables in vars.
dirs
The array of branching directions for the variables in vars. Setting dirs[j] to Cplex.BranchDirection.Up specifies that the lower bound of variable vars[j] is to be set to bounds[j]. Setting dirs[j] to Cplex.BranchDirection.Down specifies that the upper bound of variable vars[j] is to be set to bounds[j].
objestimate
An estimate of the objective value at the subnode specified by this branch.
data
A user object that will be assigned to the newly created node. This object can later be queried from other callbacks with the method getNodeData.

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 to create a subnode from the current node and indicates how to do so. This method specifies new, tighter bounds for a set of variables. The parameter 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