Detailed Description
hybrid cut selector
Definition in file cutsel_hybrid.c.
#include "scip/scip_cutsel.h"#include "scip/scip_cut.h"#include "scip/scip_lp.h"#include "scip/scip_randnumgen.h"#include "scip/cutsel_hybrid.h"Go to the source code of this file.
Macros | |
| #define | CUTSEL_NAME "hybrid" |
| #define | CUTSEL_DESC "weighted sum of efficacy, dircutoffdist, objparal, and intsupport" |
| #define | CUTSEL_PRIORITY 8000 |
| #define | RANDSEED 0x5EED |
| #define | GOODSCORE 0.9 |
| #define | BADSCORE 0.0 |
| #define | DEFAULT_EFFICACYWEIGHT 1.0 |
| #define | DEFAULT_DIRCUTOFFDISTWEIGHT 0.0 |
| #define | DEFAULT_OBJPARALWEIGHT 0.1 |
| #define | DEFAULT_INTSUPPORTWEIGHT 0.1 |
| #define | DEFAULT_MINORTHO 0.90 |
| #define | DEFAULT_MINORTHOROOT 0.90 |
Functions | |
| static SCIP_Real | scoring (SCIP *scip, SCIP_ROW **cuts, SCIP_RANDNUMGEN *randnumgen, SCIP_Real dircutoffdistweight, SCIP_Real efficacyweight, SCIP_Real objparalweight, SCIP_Real intsupportweight, int ncuts, SCIP_Real *scores) |
| static void | selectBestCut (SCIP_ROW **cuts, SCIP_Real *scores, int ncuts) |
| static int | filterWithParallelism (SCIP_ROW *cut, SCIP_ROW **cuts, SCIP_Real *scores, int ncuts, SCIP_Real goodscore, SCIP_Real goodmaxparall, SCIP_Real maxparall) |
| static | SCIP_DECL_CUTSELCOPY (cutselCopyHybrid) |
| static | SCIP_DECL_CUTSELFREE (cutselFreeHybrid) |
| static | SCIP_DECL_CUTSELINIT (cutselInitHybrid) |
| static | SCIP_DECL_CUTSELEXIT (cutselExitHybrid) |
| static | SCIP_DECL_CUTSELSELECT (cutselSelectHybrid) |
| SCIP_RETCODE | SCIPincludeCutselHybrid (SCIP *scip) |
| 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) |
Macro Definition Documentation
◆ CUTSEL_NAME
| #define CUTSEL_NAME "hybrid" |
Definition at line 42 of file cutsel_hybrid.c.
◆ CUTSEL_DESC
| #define CUTSEL_DESC "weighted sum of efficacy, dircutoffdist, objparal, and intsupport" |
Definition at line 43 of file cutsel_hybrid.c.
◆ CUTSEL_PRIORITY
| #define CUTSEL_PRIORITY 8000 |
Definition at line 44 of file cutsel_hybrid.c.
◆ RANDSEED
| #define RANDSEED 0x5EED |
Definition at line 46 of file cutsel_hybrid.c.
◆ GOODSCORE
| #define GOODSCORE 0.9 |
Definition at line 47 of file cutsel_hybrid.c.
◆ BADSCORE
| #define BADSCORE 0.0 |
Definition at line 48 of file cutsel_hybrid.c.
◆ DEFAULT_EFFICACYWEIGHT
| #define DEFAULT_EFFICACYWEIGHT 1.0 |
weight of efficacy in score calculation
Definition at line 50 of file cutsel_hybrid.c.
◆ DEFAULT_DIRCUTOFFDISTWEIGHT
| #define DEFAULT_DIRCUTOFFDISTWEIGHT 0.0 |
weight of directed cutoff distance in score calculation
Definition at line 51 of file cutsel_hybrid.c.
◆ DEFAULT_OBJPARALWEIGHT
| #define DEFAULT_OBJPARALWEIGHT 0.1 |
weight of objective parallelism in score calculation
Definition at line 52 of file cutsel_hybrid.c.
◆ DEFAULT_INTSUPPORTWEIGHT
| #define DEFAULT_INTSUPPORTWEIGHT 0.1 |
weight of integral support in cut score calculation
Definition at line 53 of file cutsel_hybrid.c.
◆ DEFAULT_MINORTHO
| #define DEFAULT_MINORTHO 0.90 |
minimal orthogonality for a cut to enter the LP
Definition at line 54 of file cutsel_hybrid.c.
◆ DEFAULT_MINORTHOROOT
| #define DEFAULT_MINORTHOROOT 0.90 |
minimal orthogonality for a cut to enter the LP in the root node
Definition at line 55 of file cutsel_hybrid.c.
Function Documentation
◆ scoring()
|
static |
returns the maximum score of cuts; if scores is not NULL, then stores the individual score of each cut in scores
- Parameters
-
scip SCIP data structure cuts array with cuts to score randnumgen random number generator for tie-breaking, or NULL 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 scores array to store the score of cuts or NULL
Definition at line 83 of file cutsel_hybrid.c.
References MAX, NULL, SCIP_Real, SCIPgetBestSol(), SCIPgetCutEfficacy(), SCIPgetCutLPSolCutoffDistance(), SCIPgetRowNumIntCols(), SCIPgetRowObjParallelism(), SCIPrandomGetReal(), SCIProwGetNNonz(), SCIProwIsInGlobalCutpool(), and SCIProwIsLocal().
Referenced by SCIPselectCutsHybrid().
◆ selectBestCut()
move the cut with the highest score to the first position in the array; there must be at least one cut
- Parameters
-
cuts array with cuts to perform selection algorithm scores array with scores of cuts to perform selection algorithm ncuts number of cuts in given array
Definition at line 199 of file cutsel_hybrid.c.
References NULL, SCIP_Real, SCIPswapPointers(), and SCIPswapReals().
Referenced by SCIPselectCutsHybrid().
◆ filterWithParallelism()
|
static |
filters the given array of cuts to enforce a maximum parallelism constraint w.r.t the given cut; moves filtered cuts to the end of the array and returns number of selected cuts
- Parameters
-
cut cut to filter orthogonality with cuts array with cuts to perform selection algorithm scores array with scores of cuts to perform selection algorithm ncuts number of cuts in given array goodscore threshold for the score to be considered a good cut goodmaxparall maximal parallelism for good cuts maxparall maximal parallelism for all cuts that are not good
Definition at line 232 of file cutsel_hybrid.c.
References NULL, SCIP_Real, SCIProwGetParallelism(), SCIPswapPointers(), and SCIPswapReals().
Referenced by SCIPselectCutsHybrid().
◆ SCIP_DECL_CUTSELCOPY()
|
static |
copy method for cut selector plugin (called when SCIP copies plugins)
Definition at line 275 of file cutsel_hybrid.c.
References CUTSEL_NAME, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STRINGEQ, SCIPcutselGetName(), and SCIPincludeCutselHybrid().
◆ SCIP_DECL_CUTSELFREE()
|
static |
destructor of cut selector to free user data (called when SCIP is exiting) ! [SnippetCutselFreeHybrid]
Definition at line 291 of file cutsel_hybrid.c.
References NULL, SCIP_OKAY, SCIPcutselGetData(), SCIPcutselSetData(), and SCIPfreeBlockMemory.
◆ SCIP_DECL_CUTSELINIT()
|
static |
! [SnippetCutselFreeHybrid] initialization method of cut selector (called after problem was transformed)
Definition at line 307 of file cutsel_hybrid.c.
References NULL, RANDSEED, SCIP_CALL, SCIP_OKAY, SCIPcreateRandom(), SCIPcutselGetData(), and TRUE.
◆ SCIP_DECL_CUTSELEXIT()
|
static |
deinitialization method of cut selector (called before transformed problem is freed)
Definition at line 321 of file cutsel_hybrid.c.
References NULL, SCIP_OKAY, SCIPcutselGetData(), and SCIPfreeRandom().
◆ SCIP_DECL_CUTSELSELECT()
|
static |
cut selection method of cut selector
Definition at line 336 of file cutsel_hybrid.c.
References MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPcutselGetData(), and SCIPselectCutsHybrid().