CPXXpivotin and CPXpivotin

The routine CPXXpivotin/CPXpivotin forcibly pivots slacks that appear on a list of inequality rows into the basis.

int  CPXXpivotin( CPXCENVptr env, CPXLPptr lp, CPXDIM const * rlist, CPXDIM rlen )

int  CPXpivotin( CPXCENVptr env, CPXLPptr lp, int const * rlist, int rlen )

Description

Warning:

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 CPXXpivotin/CPXpivotin forcibly pivots slacks that appear on a list of inequality rows into the basis. If equality rows appear among those specified on the list, they are ignored.

Motivation

In the implementation of cutting-plane algorithms for integer programming, it is occasionally desirable to delete some of the added constraints (that is, cutting planes) when they no longer appear to be useful. If the slack on some such constraint (that is, row) is not in the resident basis, the deletion of that row may destroy the quality of the basis. Pivoting the slack in before the deletion avoids that difficulty.

Dual Steepest-Edge Norms

If one of the dual steepest-edge algorithms is in use when this routine is called, the corresponding norms are automatically updated as part of the pivot. (Primal steepest-edge norms are not automatically updated in this way because, in general, the deletion of rows invalidates those norms.)

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.
rlist
An array of length rlen, containing distinct row indices of slack variables that are not basic in the current solution. If rlist[] contains negative entries or entries exceeding the number of rows, CPXXpivotin/CPXpivotin returns an error code. Entries of nonslack rows are ignored.
rlen
An integer that specifies the number of entries in the array rlist[]. If rlen is negative or greater than the number of rows, CPXXpivotin/CPXpivotin returns an error code.

Return

The routine returns 0 (zero) if successful and nonzero if an error occurs.