NO FRAMES

CPXaddusercuts

int CPXPUBLIC CPXaddusercuts(CPXCENVptr env, CPXLPptr lp, int rcnt, int nzcnt, const double * rhs, const char * sense, const int * rmatbeg, const int * rmatind, const double * rmatval)
Definition file: cplex.h
Include files: cplex.h

The routine CPXaddusercuts is used to add constraints to the list of constraints that should be added to the LP subproblem of a MIP optimization if they are violated. CPLEX handles addition of the constraints and makes sure that all integer solutions satisfy all the constraints. The constraints are added to those specified in prior calls to CPXaddusercuts.

The constraints must be cuts, which are implied by the constraint matrix. The CPLEX parameter CPX_PARAM_PRELINEAR should be set to CPX_OFF (0).

Use CPXfreeusercuts to clear the list of cuts.

The arguments of CPXaddusercuts are the same as those of CPXaddrows, with the exception that new columns may not be specified, so there are no ccnt and colname arguments, and row names may not be specified, so there is no rowname argument. Furthermore, unlike CPXaddrows, CPXaddusercuts does not accept a NULL pointer for the array of right-hand side values.

Example

 status = CPXaddusercuts (env, lp, cutcnt, 
                          cutnzcnt, cutrhs,
                          cutsense, cutbeg, 
                          cutind, cutval);
 

See also admipex4.c in the standard distribution.

Values of sense
sense[i]= 'L'≤ constraint
sense[i]= 'E'= constraint
sense[i]= 'G'≥ constraint
sense[i]= 'R'ranged constraint

Parameters:

env

A pointer to the CPLEX environment as returned by CPXopenCPLEX.

lp

A pointer to a CPLEX problem object as returned by CPXcreateprob.

rcnt

An integer that indicates the number of new rows to be added to the constraint matrix.

nzcnt

An integer that indicates the number of nonzero constraint coefficients to be added to the constraint matrix. This specifies the length of the arrays rmatind and rmatval.

rhs

An array of length rcnt containing the right-hand side term for each constraint to be added to the CPLEX problem object.

sense

An array of length rcnt containing the sense of each constraint to be added to the CPLEX problem object. May be NULL, in which case the new constraints are created as equality constraints. Possible values of this argument appear in the table.

rmatbeg

An array used with rmatind and rmatval to define the rows to be added.

rmatind

An array used with rmatbeg and rmatval to define the rows to be added.

rmatval

An array used with rmatbeg and rmatind to define the rows to be added. The format is similar to the format used to describe the constraint matrix in the routine CPXcopylp (see description of matbeg, matcnt, matind, and matval in that routine), but the nonzero coefficients are grouped by row instead of column in the array rmatval. The nonzero elements of every row must be stored in sequential locations in this array from position rmatbeg[i] to rmatbeg[i+1]-1 (or from rmatbeg[i] to nzcnt -1 if i=rcnt-1). Each entry, rmatind[i], indicates the column index of the corresponding coefficient, rmatval[i]. Unlike CPXcopylp, all rows must be contiguous, and rmatbeg[0] must be 0.

Returns:

The routine returns zero on success and nonzero if an error occurs.