methods and files provided by the default cut selectors of SCIP
A detailed description what a cut selector does and how to add a cut selector to SCIP can be found here.
Topics | |
Inclusion methods | |
methods to include specific cut selectors into SCIP | |
Functions | |
SCIP_RETCODE | SCIPselectCutsDynamic (SCIP *scip, SCIP_ROW **cuts, SCIP_ROW **forcedcuts, SCIP_RANDNUMGEN *randnumgen, char filtermode, SCIP_Real mingain, SCIP_Real maxparall, SCIP_Real dircutoffdistweight, SCIP_Real efficacyweight, SCIP_Real objparalweight, SCIP_Real intsupportweight, int ncuts, int nforcedcuts, int maxselectedcuts, int *nselectedcuts) |
SCIP_RETCODE | SCIPselectCutsEnsemble (SCIP *scip, SCIP_ROW **cuts, SCIP_ROW **forcedcuts, SCIP_CUTSELDATA *cutseldata, SCIP_Bool root, int ncuts, int nforcedcuts, int maxselectedcuts, int *nselectedcuts) |
SCIP_RETCODE | SCIPselectCutsHybrid (SCIP *scip, SCIP_ROW **cuts, SCIP_ROW **forcedcuts, SCIP_RANDNUMGEN *randnumgen, SCIP_Real goodscorefac, SCIP_Real badscorefac, SCIP_Real goodmaxparall, SCIP_Real maxparall, SCIP_Real dircutoffdistweight, SCIP_Real efficacyweight, SCIP_Real objparalweight, SCIP_Real intsupportweight, int ncuts, int nforcedcuts, int maxselectedcuts, int *nselectedcuts) |
Files | |
file | cutsel_dynamic.h |
dynamic cut selector | |
file | cutsel_ensemble.h |
ensemble cut selector | |
file | cutsel_hybrid.h |
hybrid cut selector | |
SCIP_RETCODE SCIPselectCutsDynamic | ( | SCIP * | scip, |
SCIP_ROW ** | cuts, | ||
SCIP_ROW ** | forcedcuts, | ||
SCIP_RANDNUMGEN * | randnumgen, | ||
char | filtermode, | ||
SCIP_Real | mingain, | ||
SCIP_Real | maxparall, | ||
SCIP_Real | dircutoffdistweight, | ||
SCIP_Real | efficacyweight, | ||
SCIP_Real | objparalweight, | ||
SCIP_Real | intsupportweight, | ||
int | ncuts, | ||
int | nforcedcuts, | ||
int | maxselectedcuts, | ||
int * | nselectedcuts ) |
perform a cut selection algorithm for the given array of cuts
This is an extension of the hybrid cutselector to employ a dynamic range when applying orthogonality filtering, dependent on the efficacy ratio between cuts.
The input cuts array should be resorted such that the selected cuts come first.
perform a cut selection algorithm for the given array of cuts
This is the selection method of the dynamic cut selector which implements the dynamic orthognality filtering based on the ratio of efficacies. The input cuts array gets resorted s.t the selected cuts come first and the remaining ones are the end.
scip | SCIP data structure |
cuts | array with cuts to perform selection algorithm |
forcedcuts | array with forced cuts |
randnumgen | random number generator for tie-breaking, or NULL |
filtermode | filtering strategy during cut selection ( 'd'ynamic- and 'f'ull dynamic parallelism) |
mingain | minimum efficacy gain in percentage to filter cuts |
maxparall | maximal parallelism for all cuts that are not good |
dircutoffdistweight | weight of directed cutoff distance in cut score calculation |
efficacyweight | weight of efficacy in cut score calculation |
objparalweight | weight of objective parallelism in cut score calculation |
intsupportweight | weight of integral support in cut score calculation |
ncuts | number of cuts in cuts array |
nforcedcuts | number of forced cuts |
maxselectedcuts | maximal number of cuts from cuts array to select |
nselectedcuts | pointer to return number of selected cuts from cuts array |
Definition at line 539 of file cutsel_dynamic.c.
References assert(), computeProjectionScore(), filterWithDynamicParallelism(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMsg, SCIPfreeBufferArray, SCIProwGetName(), scoring(), and selectBestCut().
Referenced by SCIP_DECL_CUTSELSELECT().
SCIP_RETCODE SCIPselectCutsEnsemble | ( | SCIP * | scip, |
SCIP_ROW ** | cuts, | ||
SCIP_ROW ** | forcedcuts, | ||
SCIP_CUTSELDATA * | cutseldata, | ||
SCIP_Bool | root, | ||
int | ncuts, | ||
int | nforcedcuts, | ||
int | maxselectedcuts, | ||
int * | nselectedcuts ) |
perform a cut selection algorithm for the given array of cuts
This is the selection method of the ensemble cut selector. It uses a weighted sum of normalised efficacy, normalised directed cutoff distance, normalised expected improvements, objective parallelism, integer support, sparsity, dynamism, pseudo-costs, and variable locks. In addition to the weighted sum score, there are optionally parallelism-based filtering and penalties, and density filtering. There are also additional budget constraints on the number of cuts that should be added. The input cuts array gets re-sorted such that the selected cuts come first and the remaining ones are the end.
scip | SCIP data structure |
cuts | array with cuts to perform selection algorithm |
forcedcuts | array with forced cuts |
cutseldata | cut selector data |
root | whether we are at the root node or not |
ncuts | number of cuts in cuts array |
nforcedcuts | number of forced cuts |
maxselectedcuts | maximal number of cuts from cuts array to select |
nselectedcuts | pointer to return number of selected cuts from cuts array |
Definition at line 681 of file cutsel_ensemble.c.
References assert(), filterWithDensity(), filterWithParallelism(), i, NULL, penaliseWithParallelism(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetNLPCols(), SCIProwGetNNonz(), scoring(), and selectBestCut().
Referenced by SCIP_DECL_CUTSELSELECT().
SCIP_RETCODE SCIPselectCutsHybrid | ( | SCIP * | scip, |
SCIP_ROW ** | cuts, | ||
SCIP_ROW ** | forcedcuts, | ||
SCIP_RANDNUMGEN * | randnumgen, | ||
SCIP_Real | goodscorefac, | ||
SCIP_Real | badscorefac, | ||
SCIP_Real | goodmaxparall, | ||
SCIP_Real | maxparall, | ||
SCIP_Real | dircutoffdistweight, | ||
SCIP_Real | efficacyweight, | ||
SCIP_Real | objparalweight, | ||
SCIP_Real | intsupportweight, | ||
int | ncuts, | ||
int | nforcedcuts, | ||
int | maxselectedcuts, | ||
int * | nselectedcuts ) |
perform a cut selection algorithm for the given array of cuts
This is the selection method of the hybrid cut selector which uses a weighted sum of the efficacy, parallelism, directed cutoff distance, and the integral support. The input cuts array gets resorted s.t the selected cuts come first and the remaining ones are the end.
scip | SCIP data structure |
cuts | array with cuts to perform selection algorithm |
forcedcuts | array with forced cuts |
randnumgen | random number generator for tie-breaking, or NULL |
goodscorefac | factor of best score among the given cuts to consider a cut good and filter with less strict settings of the maximum parallelism |
badscorefac | factor of best score among the given cuts to consider a cut bad and discard it regardless of its parallelism to other cuts |
goodmaxparall | maximum parallelism for good cuts |
maxparall | maximum parallelism for non-good cuts |
dircutoffdistweight | weight of directed cutoff distance in cut score calculation |
efficacyweight | weight of efficacy in cut score calculation |
objparalweight | weight of objective parallelism in cut score calculation |
intsupportweight | weight of integral support in cut score calculation |
ncuts | number of cuts in cuts array |
nforcedcuts | number of forced cuts |
maxselectedcuts | maximal number of cuts from cuts array to select |
nselectedcuts | pointer to return number of selected cuts from cuts array |
Definition at line 438 of file cutsel_hybrid.c.
References assert(), filterWithParallelism(), i, MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, scoring(), and selectBestCut().
Referenced by doSeparation(), SCIP_DECL_CUTSELSELECT(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAEXECLP(), and separateRltCuts().