Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    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.

    Modules

     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
     

    Function Documentation

    ◆ SCIPselectCutsDynamic()

    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 re-sorted 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 re-sorted s.t the selected cuts come first and the remaining ones are the end.

    Parameters
    scipSCIP data structure
    cutsarray with cuts to perform selection algorithm
    forcedcutsarray with forced cuts
    randnumgenrandom number generator for tie-breaking, or NULL
    filtermodefiltering strategy during cut selection ( 'd'ynamic- and 'f'ull dynamic parallelism)
    mingainminimum efficacy gain in percentage to filter cuts
    maxparallmaximal parallelism for all cuts that are not good
    dircutoffdistweightweight of directed cutoff distance in cut score calculation
    efficacyweightweight of efficacy in cut score calculation
    objparalweightweight of objective parallelism in cut score calculation
    intsupportweightweight of integral support in cut score calculation
    ncutsnumber of cuts in cuts array
    nforcedcutsnumber of forced cuts
    maxselectedcutsmaximal number of cuts from cuts array to select
    nselectedcutspointer to return number of selected cuts from cuts array

    Definition at line 539 of file cutsel_dynamic.c.

    References computeProjectionScore(), filterWithDynamicParallelism(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMsg, SCIPfreeBufferArray, SCIProwGetName(), scoring(), and selectBestCut().

    Referenced by SCIP_DECL_CUTSELSELECT().

    ◆ SCIPselectCutsEnsemble()

    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.

    Parameters
    scipSCIP data structure
    cutsarray with cuts to perform selection algorithm
    forcedcutsarray with forced cuts
    cutseldatacut selector data
    rootwhether we are at the root node or not
    ncutsnumber of cuts in cuts array
    nforcedcutsnumber of forced cuts
    maxselectedcutsmaximal number of cuts from cuts array to select
    nselectedcutspointer to return number of selected cuts from cuts array

    Definition at line 681 of file cutsel_ensemble.c.

    References filterWithDensity(), filterWithParallelism(), NULL, penaliseWithParallelism(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetNLPCols(), SCIProwGetNNonz(), scoring(), and selectBestCut().

    Referenced by SCIP_DECL_CUTSELSELECT().

    ◆ SCIPselectCutsHybrid()

    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 re-sorted s.t the selected cuts come first and the remaining ones are the end.

    Parameters
    scipSCIP data structure
    cutsarray with cuts to perform selection algorithm
    forcedcutsarray with forced cuts
    randnumgenrandom number generator for tie-breaking, or NULL
    goodscorefacfactor of best score among the given cuts to consider a cut good and filter with less strict settings of the maximum parallelism
    badscorefacfactor of best score among the given cuts to consider a cut bad and discard it regardless of its parallelism to other cuts
    goodmaxparallmaximum parallelism for good cuts
    maxparallmaximum parallelism for non-good cuts
    dircutoffdistweightweight of directed cutoff distance in cut score calculation
    efficacyweightweight of efficacy in cut score calculation
    objparalweightweight of objective parallelism in cut score calculation
    intsupportweightweight of integral support in cut score calculation
    ncutsnumber of cuts in cuts array
    nforcedcutsnumber of forced cuts
    maxselectedcutsmaximal number of cuts from cuts array to select
    nselectedcutspointer to return number of selected cuts from cuts array

    Definition at line 438 of file cutsel_hybrid.c.

    References filterWithParallelism(), MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, scoring(), and selectBestCut().

    Referenced by doSeparation(), SCIP_DECL_CUTSELSELECT(), SCIP_DECL_SEPAEXECLP(), and separateRltCuts().