CPXXstrongbranch and CPXstrongbranch
The routine CPXXstrongbranch/CPXstrongbranch computes information for
selecting a branching variable in an integer-programming branch-and-cut
search.
int CPXXstrongbranch( CPXCENVptr env, CPXLPptr lp, CPXDIM const * indices, CPXDIM cnt, double * downobj, double * upobj, CPXCNT itlim )
int CPXstrongbranch( CPXCENVptr env, CPXLPptr lp, int const * indices, int cnt, double * downobj, double * upobj, int itlim )
Description
This is an advanced routine. Advanced routines typically demand a thorough understanding of the algorithms used by CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, the team encourages you to consider carefully whether you can accomplish the same task by means of other Callable Library routines instead.
The routine CPXXstrongbranch/CPXstrongbranch computes information for
selecting a branching variable in an integer-programming branch-and-cut
search.
To describe this routine, let's assume that an LP has been solved and
that the optimal solution is resident. Let indices[] be the
list of variable indices for this problem and cnt be the
length of that list. Then indices[] gives rise to
2*cnt different LPs in which each of the listed variables
in turn is fixed to the greatest integer value less than or equal to its
value in the current optimal solution, and then each variable is fixed to
the least integer value greater than or equal to its value in the current
optimal solution. CPXXstrongbranch/CPXstrongbranch performs at most
itlim dual Simplex iterations on each of these
2*cnt LPs, starting from the current optimal solution of
the base LP. The objective values that these iterations yield are placed
in the arrays downobj[] for the downward fix and
upobj[] for the upward fix. If either of the fixings results
in a problem which is dual unbounded (primal infeasible), the corresponding
objective value is set to a large positive value for a minimization problem
and a large negative value for a maximization problem. This value is
system dependent, but it is usually of magnitude 1.0e+75.
Setting the parameter that specifies the
dual simplex pricing algorithm
(CPXPARAM_Simplex_DGradient)
to 2 may give more
informative values for the arguments downobj[] and
upobj[] for a given number of iterations
itlim.
A user might use other routines of the Callable Library
directly to build a function that computes the same values as
CPXXstrongbranch/CPXstrongbranch. However, CPXXstrongbranch/CPXstrongbranch
should be faster because it takes advantage of direct access to internal
CPLEX data structures.
Arguments
- env
-
The pointer to the CPLEX environment, as returned by
CPXXopenCPLEX/CPXopenCPLEX. - lp
-
A pointer to a CPLEX LP problem object, as returned by
CPXXcreateprob/CPXcreateprob. - indices
-
An array of integers. The length of the array must be at least
cnt. - cnt
-
An integer specifying the number of entries in
indices[]. - downobj
-
An array containing objective values that are the result of the downward fix of branching variables in dual steepest-edge iterations carried out by
CPXXstrongbranch/CPXstrongbranch. The length of the array must be at leastcnt. - upobj
-
An array containing objective values that are the result of the upward fix of branching variables in dual steepest-edge iterations carried out by
CPXXstrongbranch/CPXstrongbranch. The length of the array must be at leastcnt. - itlim
-
An integer specifying the limit on the number of dual steepest-edge iterations carried out by
CPXXstrongbranch/CPXstrongbranchon each LP.