Detailed Description
hybrid cut selector
Definition in file cutsel_hybrid.c.
#include <assert.h>
#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 44 of file cutsel_hybrid.c.
Referenced by SCIP_DECL_CUTSELCOPY(), and SCIPincludeCutselHybrid().
◆ CUTSEL_DESC
#define CUTSEL_DESC "weighted sum of efficacy, dircutoffdist, objparal, and intsupport" |
Definition at line 45 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ CUTSEL_PRIORITY
#define CUTSEL_PRIORITY 8000 |
Definition at line 46 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ RANDSEED
#define RANDSEED 0x5EED |
Definition at line 48 of file cutsel_hybrid.c.
Referenced by SCIP_DECL_CUTSELINIT().
◆ GOODSCORE
#define GOODSCORE 0.9 |
Definition at line 49 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ BADSCORE
#define BADSCORE 0.0 |
Definition at line 50 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ DEFAULT_EFFICACYWEIGHT
#define DEFAULT_EFFICACYWEIGHT 1.0 |
weight of efficacy in score calculation
Definition at line 52 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ DEFAULT_DIRCUTOFFDISTWEIGHT
#define DEFAULT_DIRCUTOFFDISTWEIGHT 0.0 |
weight of directed cutoff distance in score calculation
Definition at line 53 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ DEFAULT_OBJPARALWEIGHT
#define DEFAULT_OBJPARALWEIGHT 0.1 |
weight of objective parallelism in score calculation
Definition at line 54 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ DEFAULT_INTSUPPORTWEIGHT
#define DEFAULT_INTSUPPORTWEIGHT 0.1 |
weight of integral support in cut score calculation
Definition at line 55 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ DEFAULT_MINORTHO
#define DEFAULT_MINORTHO 0.90 |
minimal orthogonality for a cut to enter the LP
Definition at line 56 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
◆ DEFAULT_MINORTHOROOT
#define DEFAULT_MINORTHOROOT 0.90 |
minimal orthogonality for a cut to enter the LP in the root node
Definition at line 57 of file cutsel_hybrid.c.
Referenced by SCIPincludeCutselHybrid().
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 85 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 201 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 234 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 277 of file cutsel_hybrid.c.
References CUTSEL_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPcutselGetName(), and SCIPincludeCutselHybrid().
◆ SCIP_DECL_CUTSELFREE()
|
static |
destructor of cut selector to free user data (called when SCIP is exiting) ! [SnippetCutselFreeHybrid]
Definition at line 292 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 308 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 322 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 337 of file cutsel_hybrid.c.
References MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPcutselGetData(), and SCIPselectCutsHybrid().