SCIP Doxygen Documentation
Loading...
Searching...
No Matches

Detailed Description

dynamic cut selector

Author
Christoph Graczyk

Definition in file cutsel_dynamic.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_dynamic.h"

Go to the source code of this file.

Macros

#define CUTSEL_NAME   "dynamic"
#define CUTSEL_DESC   "dynamic orthogonality for hybrid cutsel"
#define CUTSEL_PRIORITY   7000
#define RANDSEED   0x5EED
#define DEFAULT_EFFICACYWEIGHT   1.0
#define DEFAULT_DIRCUTOFFDISTWEIGHT   0.0
#define DEFAULT_OBJPARALWEIGHT   0.0
#define DEFAULT_INTSUPPORTWEIGHT   0.0
#define DEFAULT_MINORTHO   0.9
#define DEFAULT_MINGAIN   0.01
#define DEFAULT_MAXDEPTH   (-1)
#define DEFAULT_FILTERMODE   'd'

Functions

static void scoring (SCIP *scip, SCIP_ROW **cuts, SCIP_RANDNUMGEN *randnumgen, SCIP_Real dircutoffdistweight, SCIP_Real efficacyweight, SCIP_Real objparalweight, SCIP_Real intsupportweight, int *currentncuts, SCIP_Real *scores)
static SCIP_RETCODE computeProjectionScore (SCIP *scip, SCIP_ROW *bestcut, SCIP_ROW *cut, SCIP_Real *score)
static void selectBestCut (SCIP_ROW **cuts, SCIP_Real *scores, int ncuts)
static int filterWithDynamicParallelism (SCIP *scip, SCIP_ROW *bestcut, SCIP_ROW **cuts, SCIP_Real *scores, SCIP_Real mingain, SCIP_Real maxparall, int ncuts)
static SCIP_DECL_CUTSELCOPY (cutselCopyDynamic)
static SCIP_DECL_CUTSELFREE (cutselFreeDynamic)
static SCIP_DECL_CUTSELINIT (cutselInitDynamic)
static SCIP_DECL_CUTSELEXIT (cutselExitDynamic)
static SCIP_DECL_CUTSELSELECT (cutselSelectDynamic)
SCIP_RETCODE SCIPincludeCutselDynamic (SCIP *scip)
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)

Macro Definition Documentation

◆ CUTSEL_NAME

◆ CUTSEL_DESC

#define CUTSEL_DESC   "dynamic orthogonality for hybrid cutsel"

◆ CUTSEL_PRIORITY

#define CUTSEL_PRIORITY   7000

◆ RANDSEED

#define RANDSEED   0x5EED

◆ DEFAULT_EFFICACYWEIGHT

#define DEFAULT_EFFICACYWEIGHT   1.0

weight of efficacy in score calculation

Definition at line 49 of file cutsel_dynamic.c.

◆ DEFAULT_DIRCUTOFFDISTWEIGHT

#define DEFAULT_DIRCUTOFFDISTWEIGHT   0.0

weight of directed cutoff distance in score calculation

Definition at line 50 of file cutsel_dynamic.c.

Referenced by SCIPincludeCutselDynamic(), SCIPincludeCutselEnsemble(), SCIPincludeCutselHybrid(), SCIPincludeSepaRlt(), and SCIPincludeSepaZerohalf().

◆ DEFAULT_OBJPARALWEIGHT

#define DEFAULT_OBJPARALWEIGHT   0.0

weight of objective parallelism in score calculation

Definition at line 51 of file cutsel_dynamic.c.

Referenced by SCIPincludeCutselDynamic(), SCIPincludeCutselEnsemble(), SCIPincludeCutselHybrid(), SCIPincludeSepaRlt(), and SCIPincludeSepaZerohalf().

◆ DEFAULT_INTSUPPORTWEIGHT

#define DEFAULT_INTSUPPORTWEIGHT   0.0

weight of integral support in cut score calculation

Definition at line 52 of file cutsel_dynamic.c.

◆ DEFAULT_MINORTHO

#define DEFAULT_MINORTHO   0.9

minimal orthogonality in percent for a cut to enter the LP

Definition at line 53 of file cutsel_dynamic.c.

Referenced by SCIPincludeCutselDynamic(), and SCIPincludeCutselHybrid().

◆ DEFAULT_MINGAIN

#define DEFAULT_MINGAIN   0.01

minimal efficacy gain for a cut to enter the LP

Definition at line 54 of file cutsel_dynamic.c.

Referenced by SCIPincludeCutselDynamic().

◆ DEFAULT_MAXDEPTH

#define DEFAULT_MAXDEPTH   (-1)

maximum depth at which this cutselector is used (-1 : all nodes)

Definition at line 55 of file cutsel_dynamic.c.

◆ DEFAULT_FILTERMODE

#define DEFAULT_FILTERMODE   'd'

filtering strategy during cut selection ( 'd'ynamic- and 'f'ull dynamic parallelism)

Definition at line 56 of file cutsel_dynamic.c.

Referenced by SCIPincludeCutselDynamic().

Function Documentation

◆ scoring()

void scoring ( SCIP * scip,
SCIP_ROW ** cuts,
SCIP_RANDNUMGEN * randnumgen,
SCIP_Real dircutoffdistweight,
SCIP_Real efficacyweight,
SCIP_Real objparalweight,
SCIP_Real intsupportweight,
int * currentncuts,
SCIP_Real * scores )
static

returns the maximum score of cuts; if scores is not NULL, then stores the individual score of each cut in scores

Parameters
scipSCIP data structure
cutsarray with cuts to score
randnumgenrandom number generator for tie-breaking, or NULL
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
currentncutscurrent number of cuts in cuts array
scoresarray to store the score of cuts or NULL

Definition at line 87 of file cutsel_dynamic.c.

References i, MAX, NULL, SCIP_Real, SCIPgetBestSol(), SCIPgetCutEfficacy(), SCIPgetCutLPSolCutoffDistance(), SCIPgetRowNumIntCols(), SCIPgetRowObjParallelism(), SCIPisLE(), SCIPrandomGetReal(), SCIProwGetNNonz(), SCIProwIsInGlobalCutpool(), SCIProwIsLocal(), SCIPswapPointers(), SCIPswapReals(), and sol.

Referenced by SCIPselectCutsDynamic().

◆ computeProjectionScore()

SCIP_RETCODE computeProjectionScore ( SCIP * scip,
SCIP_ROW * bestcut,
SCIP_ROW * cut,
SCIP_Real * score )
static

compute projectioncut score for cuts from a given bestcut.

Parameters
scipSCIP data structure
bestcutcut to filter orthogonality with
cutcut to perform scoring on
scorescore for cut

Definition at line 223 of file cutsel_dynamic.c.

References NULL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetCutEfficacy(), SCIPinfinity(), SCIPisEQ(), SCIProwGetName(), and SCIProwGetParallelism().

Referenced by SCIPselectCutsDynamic().

◆ selectBestCut()

void selectBestCut ( SCIP_ROW ** cuts,
SCIP_Real * scores,
int ncuts )
static

move the cut with the highest score to the first position in the array; there must be at least one cut

Parameters
cutsarray with cuts to perform selection algorithm
scoresarray with scores of cuts to perform selection algorithm
ncutsnumber of cuts in given array

Definition at line 257 of file cutsel_dynamic.c.

References assert(), i, NULL, SCIP_Real, SCIPswapPointers(), and SCIPswapReals().

Referenced by SCIPselectCutsDynamic().

◆ filterWithDynamicParallelism()

int filterWithDynamicParallelism ( SCIP * scip,
SCIP_ROW * bestcut,
SCIP_ROW ** cuts,
SCIP_Real * scores,
SCIP_Real mingain,
SCIP_Real maxparall,
int ncuts )
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
scipSCIP data structure
bestcutcut to filter orthogonality with
cutsarray with cuts to perform selection algorithm
scoresarray with scores of cuts to perform selection algorithm
mingainminimum gain enforced on the two-cut efficacy
maxparallmaximal parallelism for all cuts that are not good
ncutsnumber of cuts in given array

Definition at line 290 of file cutsel_dynamic.c.

References assert(), i, MAX, NULL, SCIP_Bool, SCIP_Real, SCIPdebugMsg, SCIPgetCutEfficacy(), SCIPisGE(), SCIPisGT(), SCIProwGetParallelism(), SCIPswapPointers(), and SCIPswapReals().

Referenced by SCIPselectCutsDynamic().

◆ SCIP_DECL_CUTSELCOPY()

SCIP_DECL_CUTSELCOPY ( cutselCopyDynamic )
static

copy method for cut selector plugin (called when SCIP copies plugins)

Definition at line 366 of file cutsel_dynamic.c.

References assert(), CUTSEL_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPcutselGetName(), and SCIPincludeCutselDynamic().

◆ SCIP_DECL_CUTSELFREE()

SCIP_DECL_CUTSELFREE ( cutselFreeDynamic )
static

destructor of cut selector to free user data (called when SCIP is exiting) ! [SnippetCutselFreeDynamic]

Definition at line 381 of file cutsel_dynamic.c.

References NULL, SCIP_OKAY, SCIPcutselGetData(), SCIPcutselSetData(), and SCIPfreeBlockMemory.

◆ SCIP_DECL_CUTSELINIT()

SCIP_DECL_CUTSELINIT ( cutselInitDynamic )
static

! [SnippetCutselFreeDynamic] initialization method of cut selector (called after problem was transformed)

Definition at line 397 of file cutsel_dynamic.c.

References assert(), NULL, RANDSEED, SCIP_CALL, SCIP_OKAY, SCIPcreateRandom(), SCIPcutselGetData(), and TRUE.

◆ SCIP_DECL_CUTSELEXIT()

SCIP_DECL_CUTSELEXIT ( cutselExitDynamic )
static

deinitialization method of cut selector (called before transformed problem is freed)

Definition at line 411 of file cutsel_dynamic.c.

References assert(), NULL, SCIP_OKAY, SCIPcutselGetData(), and SCIPfreeRandom().

◆ SCIP_DECL_CUTSELSELECT()

SCIP_DECL_CUTSELSELECT ( cutselSelectDynamic )
static

cut selection method of cut selector

Definition at line 426 of file cutsel_dynamic.c.

References assert(), NULL, result, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPcutselGetData(), SCIPgetDepth(), and SCIPselectCutsDynamic().