Overview | Group | Tree | Graph | Index | Concepts |
The routine CPXaddlazyconstraints
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 CPXaddlazyconstraints
.
Lazy constraints are constraints not specified in the constraint matrix of the MIP problem, but that must be not be violated in a solution. Using lazy constraints makes sense when there are a large number of constraints that must be satisfied at a solution, but are unlikely to be violated if they are left out.
The CPLEX parameter CPX_PARAM_REDUCE
should be set to
CPX_PREREDUCE_NOPRIMALORDUAL (0)
or to
CPX_PREREDUCE_PRIMALONLY (1)
in order to turn off dual
reductions.
Use CPXfreelazyconstraints
to clear the list of lazy
constraints.
The arguments of CPXaddlazyconstraints
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
,
CPXaddlazyconstraints
does not accept a NULL pointer for
the array of right-hand side values.
Example
status = CPXaddlazyconstraints(env, lp, cnt, nzcnt, rhs, sense, beg, ind, val);
env | A pointer to the CPLEX environment as returned by |
lp | A pointer to a CPLEX problem object as returned by |
rcnt | An integer that indicates the number of new lazy constraints to be added. |
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 |
rhs | An array of length |
sense | An array of length |
rmatbeg | An array used with |
rmatind | An array used with |
rmatval | An array used with |