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

Detailed Description

hybrid cut selector

Author
Leona Gottwald
Felipe Serrano
Mark Turner

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.

◆ CUTSEL_DESC

#define CUTSEL_DESC   "weighted sum of efficacy, dircutoffdist, objparal, and intsupport"

Definition at line 45 of file cutsel_hybrid.c.

◆ CUTSEL_PRIORITY

#define CUTSEL_PRIORITY   8000

Definition at line 46 of file cutsel_hybrid.c.

◆ RANDSEED

#define RANDSEED   0x5EED

Definition at line 48 of file cutsel_hybrid.c.

◆ 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.

◆ DEFAULT_DIRCUTOFFDISTWEIGHT

#define DEFAULT_DIRCUTOFFDISTWEIGHT   0.0

weight of directed cutoff distance in score calculation

Definition at line 53 of file cutsel_hybrid.c.

◆ DEFAULT_OBJPARALWEIGHT

#define DEFAULT_OBJPARALWEIGHT   0.1

weight of objective parallelism in score calculation

Definition at line 54 of file cutsel_hybrid.c.

◆ DEFAULT_INTSUPPORTWEIGHT

#define DEFAULT_INTSUPPORTWEIGHT   0.1

weight of integral support in cut score calculation

Definition at line 55 of file cutsel_hybrid.c.

◆ 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.

◆ 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()

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

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
ncutsnumber of cuts in cuts array
scoresarray to store the score of cuts or NULL

Definition at line 85 of file cutsel_hybrid.c.

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

Referenced by SCIPselectCutsHybrid().

◆ 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 201 of file cutsel_hybrid.c.

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

Referenced by SCIPselectCutsHybrid().

◆ filterWithParallelism()

int filterWithParallelism ( SCIP_ROW * cut,
SCIP_ROW ** cuts,
SCIP_Real * scores,
int ncuts,
SCIP_Real goodscore,
SCIP_Real goodmaxparall,
SCIP_Real maxparall )
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
cutcut to filter orthogonality with
cutsarray with cuts to perform selection algorithm
scoresarray with scores of cuts to perform selection algorithm
ncutsnumber of cuts in given array
goodscorethreshold for the score to be considered a good cut
goodmaxparallmaximal parallelism for good cuts
maxparallmaximal parallelism for all cuts that are not good

Definition at line 234 of file cutsel_hybrid.c.

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

Referenced by SCIPselectCutsHybrid().

◆ SCIP_DECL_CUTSELCOPY()

SCIP_DECL_CUTSELCOPY ( cutselCopyHybrid )
static

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

Definition at line 277 of file cutsel_hybrid.c.

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

◆ SCIP_DECL_CUTSELFREE()

SCIP_DECL_CUTSELFREE ( cutselFreeHybrid )
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()

SCIP_DECL_CUTSELINIT ( cutselInitHybrid )
static

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

Definition at line 308 of file cutsel_hybrid.c.

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

◆ SCIP_DECL_CUTSELEXIT()

SCIP_DECL_CUTSELEXIT ( cutselExitHybrid )
static

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

Definition at line 322 of file cutsel_hybrid.c.

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

◆ SCIP_DECL_CUTSELSELECT()

SCIP_DECL_CUTSELSELECT ( cutselSelectHybrid )
static

cut selection method of cut selector

Definition at line 337 of file cutsel_hybrid.c.

References assert(), MAX, NULL, result, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPcutselGetData(), and SCIPselectCutsHybrid().