|
complemented mixed integer rounding cuts separator (Marchand's version)
- Author
- Kati Wolter
-
Tobias Achterberg
Definition in file sepa_cmir.h.
Go to the source code of this file.
|
SCIP_RETCODE | SCIPcutGenerationHeuristicCmir (SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_Real *varsolvals, int maxtestdelta, SCIP_Real *rowweights, SCIP_Real maxweight, int *weightinds, int nweightinds, int rowlensum, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Bool trynegscaling, SCIP_Bool cutremovable, const char *cutclassname, SCIP_Bool *cutoff, int *ncuts, SCIP_Real *delta, SCIP_Bool *deltavalid) |
|
SCIP_RETCODE | SCIPincludeSepaCmir (SCIP *scip) |
|
SCIP_RETCODE SCIPcutGenerationHeuristicCmir |
( |
SCIP * |
scip, |
|
|
SCIP_SEPA * |
sepa, |
|
|
SCIP_SOL * |
sol, |
|
|
SCIP_Real * |
varsolvals, |
|
|
int |
maxtestdelta, |
|
|
SCIP_Real * |
rowweights, |
|
|
SCIP_Real |
maxweight, |
|
|
int * |
weightinds, |
|
|
int |
nweightinds, |
|
|
int |
rowlensum, |
|
|
SCIP_Real |
boundswitch, |
|
|
SCIP_Bool |
usevbds, |
|
|
SCIP_Bool |
allowlocal, |
|
|
SCIP_Bool |
fixintegralrhs, |
|
|
int |
maxmksetcoefs, |
|
|
SCIP_Real |
maxweightrange, |
|
|
SCIP_Real |
minfrac, |
|
|
SCIP_Real |
maxfrac, |
|
|
SCIP_Bool |
trynegscaling, |
|
|
SCIP_Bool |
cutremovable, |
|
|
const char * |
cutclassname, |
|
|
SCIP_Bool * |
cutoff, |
|
|
int * |
ncuts, |
|
|
SCIP_Real * |
delta, |
|
|
SCIP_Bool * |
deltavalid |
|
) |
| |
Performs the cut generation heuristic of the c-MIR separation algorithm, i.e., tries to generate a c-MIR cut which is valid for the mixed knapsack set corresponding to the current aggregated constraint. Cuts will only be added here if no pointer to store best scaling factor delta is given.
- Parameters
-
scip | SCIP data structure |
sepa | separator |
sol | the solution that should be separated, or NULL for LP solution |
varsolvals | LP solution value of all variables in LP |
maxtestdelta | maximal number of different deltas to try (-1: unlimited) |
rowweights | weight of rows in aggregated row |
maxweight | largest magnitude of weights; set to -1.0 if sparsity information is unknown |
weightinds | sparsity pattern of weights; size nrowinds; NULL if sparsity info is unknown |
nweightinds | number of nonzeros in weights; -1 if rowinds is NULL |
rowlensum | total number of non-zeros in used rows (row associated with nonzero weight coefficient); -1 if unknown |
boundswitch | fraction of domain up to which lower bound is used in transformation |
usevbds | should variable bounds be used in bound transformation? |
allowlocal | should local information allowed to be used, resulting in a local cut? |
fixintegralrhs | should complementation tried to be adjusted such that rhs gets fractional? |
maxmksetcoefs | maximal number of nonzeros allowed in aggregated base inequality |
maxweightrange | maximal valid range max(|weights|)/min(|weights|) of row weights |
minfrac | minimal fractionality of rhs to produce MIR cut for |
maxfrac | maximal fractionality of rhs to produce MIR cut for |
trynegscaling | should negative values also be tested in scaling? |
cutremovable | should the cut be removed from the LP due to aging or cleanup? |
cutclassname | name of cut class to use for row names |
cutoff | whether a cutoff has been detected |
ncuts | pointer to count the number of generated cuts |
delta | pointer to store best delta found; NULL, if cut should be added here |
deltavalid | pointer to store whether best delta value is valid or NULL |
Definition at line 429 of file sepa_cmir.c.
References addCut(), FALSE, MAX, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPcalcMIR(), SCIPfreeBufferArray, SCIPgetNContVars(), SCIPgetNVars(), SCIPgetVars(), SCIPisEfficacious(), SCIPisEQ(), SCIPisFeasZero(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarIsActive(), SCIPvarIsIntegral(), TRUE, tryDelta(), and varIsContinuous().
Referenced by aggregation(), createZerohalfCutFromZerohalfWeightvector(), and tryDelta().
|