Scippy

GCG

Branch-and-Price & Column Generation for Everyone

heur_masterdiving.c File Reference

Detailed Description

primal heuristic interface for LP diving heuristics on the master variables

Author
Tobias Achterberg
Christian Puchert

Definition in file heur_masterdiving.c.

#include <assert.h>
#include <string.h>
#include "heur_masterdiving.h"
#include "pricer_gcg.h"
#include "relax_gcg.h"

Go to the source code of this file.

Data Structures

struct  SCIP_HeurData
 

Macros

#define HEUR_TIMING   SCIP_HEURTIMING_AFTERLPPLUNGE
 
#define HEUR_USESSUBSCIP   FALSE
 
#define DEFAULT_MINRELDEPTH   0.0
 
#define DEFAULT_MAXRELDEPTH   1.0
 
#define DEFAULT_MAXLPITERQUOT   0.05
 
#define DEFAULT_MAXLPITEROFS   1000
 
#define DEFAULT_MAXPRICEROUNDS   0
 
#define DEFAULT_USEFARKASONLY   FALSE
 
#define DEFAULT_MAXDIVEUBQUOT   0.8
 
#define DEFAULT_MAXDIVEAVGQUOT   0.0
 
#define DEFAULT_MAXDIVEUBQUOTNOSOL   0.1
 
#define DEFAULT_MAXDIVEAVGQUOTNOSOL   0.0
 
#define DEFAULT_BACKTRACK   FALSE
 
#define DEFAULT_MAXDISCREPANCY   2
 
#define DEFAULT_MAXDISCDEPTH   0
 
#define MINLPITER   10000
 

Functions

static SCIP_DECL_HEURFREE (heurFreeMasterdiving)
 
static SCIP_DECL_HEURINIT (heurInitMasterdiving)
 
static SCIP_DECL_HEUREXIT (heurExitMasterdiving)
 
static SCIP_DECL_HEURINITSOL (heurInitsolMasterdiving)
 
static SCIP_DECL_HEUREXITSOL (heurExitsolMasterdiving)
 
static SCIP_DECL_HEUREXEC (heurExecMasterdiving)
 
GCG_DIVINGDATAGCGheurGetDivingDataMaster (SCIP_HEUR *heur)
 
void GCGheurSetDivingDataMaster (SCIP_HEUR *heur, GCG_DIVINGDATA *divingdata)
 
SCIP_RETCODE GCGincludeDivingHeurMaster (SCIP *scip, SCIP_HEUR **heur, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, GCG_DECL_DIVINGFREE((*divingfree)), GCG_DECL_DIVINGINIT((*divinginit)), GCG_DECL_DIVINGEXIT((*divingexit)), GCG_DECL_DIVINGINITSOL((*divinginitsol)), GCG_DECL_DIVINGEXITSOL((*divingexitsol)), GCG_DECL_DIVINGINITEXEC((*divinginitexec)), GCG_DECL_DIVINGEXITEXEC((*divingexitexec)), GCG_DECL_DIVINGSELECTVAR((*divingselectvar)), GCG_DIVINGDATA *divingdata)
 
SCIP_RETCODE SCIPincludeEventHdlrMasterdiving (SCIP *scip)
 

Macro Definition Documentation

◆ HEUR_TIMING

#define HEUR_TIMING   SCIP_HEURTIMING_AFTERLPPLUNGE

Definition at line 44 of file heur_masterdiving.c.

◆ HEUR_USESSUBSCIP

#define HEUR_USESSUBSCIP   FALSE

does the heuristic use a secondary SCIP instance?

Definition at line 45 of file heur_masterdiving.c.

◆ DEFAULT_MINRELDEPTH

#define DEFAULT_MINRELDEPTH   0.0

minimal relative depth to start diving

Definition at line 52 of file heur_masterdiving.c.

◆ DEFAULT_MAXRELDEPTH

#define DEFAULT_MAXRELDEPTH   1.0

maximal relative depth to start diving

Definition at line 53 of file heur_masterdiving.c.

◆ DEFAULT_MAXLPITERQUOT

#define DEFAULT_MAXLPITERQUOT   0.05

maximal fraction of diving LP iterations compared to node LP iterations

Definition at line 54 of file heur_masterdiving.c.

◆ DEFAULT_MAXLPITEROFS

#define DEFAULT_MAXLPITEROFS   1000

additional number of allowed LP iterations

Definition at line 55 of file heur_masterdiving.c.

◆ DEFAULT_MAXPRICEROUNDS

#define DEFAULT_MAXPRICEROUNDS   0

maximal number of allowed pricing rounds (-1: no limit)

Definition at line 56 of file heur_masterdiving.c.

◆ DEFAULT_USEFARKASONLY

#define DEFAULT_USEFARKASONLY   FALSE

perform pricing only if infeasibility is encountered

Definition at line 57 of file heur_masterdiving.c.

◆ DEFAULT_MAXDIVEUBQUOT

#define DEFAULT_MAXDIVEUBQUOT   0.8

maximal quotient (curlowerbound - lowerbound)/(cutoffbound - lowerbound) where diving is performed (0.0: no limit)

Definition at line 58 of file heur_masterdiving.c.

◆ DEFAULT_MAXDIVEAVGQUOT

#define DEFAULT_MAXDIVEAVGQUOT   0.0

maximal quotient (curlowerbound - lowerbound)/(avglowerbound - lowerbound) where diving is performed (0.0: no limit)

Definition at line 60 of file heur_masterdiving.c.

◆ DEFAULT_MAXDIVEUBQUOTNOSOL

#define DEFAULT_MAXDIVEUBQUOTNOSOL   0.1

maximal UBQUOT when no solution was found yet (0.0: no limit)

Definition at line 62 of file heur_masterdiving.c.

◆ DEFAULT_MAXDIVEAVGQUOTNOSOL

#define DEFAULT_MAXDIVEAVGQUOTNOSOL   0.0

maximal AVGQUOT when no solution was found yet (0.0: no limit)

Definition at line 63 of file heur_masterdiving.c.

◆ DEFAULT_BACKTRACK

#define DEFAULT_BACKTRACK   FALSE

single backtracking by choosing another variable in case of infeasibility

Definition at line 64 of file heur_masterdiving.c.

◆ DEFAULT_MAXDISCREPANCY

#define DEFAULT_MAXDISCREPANCY   2

maximal discrepancy allowed in backtracking and limited discrepancy search

Definition at line 65 of file heur_masterdiving.c.

◆ DEFAULT_MAXDISCDEPTH

#define DEFAULT_MAXDISCDEPTH   0

maximal depth until which a limited discrepancy search is performed

Definition at line 66 of file heur_masterdiving.c.

◆ MINLPITER

#define MINLPITER   10000

minimal number of LP iterations allowed in each LP solving call

Definition at line 68 of file heur_masterdiving.c.

Function Documentation

◆ SCIP_DECL_HEURFREE()

static SCIP_DECL_HEURFREE ( heurFreeMasterdiving  )
static

destructor of primal heuristic to free user data (called when SCIP is exiting)

Definition at line 150 of file heur_masterdiving.c.

◆ SCIP_DECL_HEURINIT()

static SCIP_DECL_HEURINIT ( heurInitMasterdiving  )
static

initialization method of primal heuristic (called after problem was transformed)

Definition at line 176 of file heur_masterdiving.c.

◆ SCIP_DECL_HEUREXIT()

static SCIP_DECL_HEUREXIT ( heurExitMasterdiving  )
static

deinitialization method of primal heuristic (called before transformed problem is freed)

Definition at line 205 of file heur_masterdiving.c.

◆ SCIP_DECL_HEURINITSOL()

static SCIP_DECL_HEURINITSOL ( heurInitsolMasterdiving  )
static

solving process initialization method of primal heuristic (called when branch and bound process is about to begin)

Definition at line 230 of file heur_masterdiving.c.

◆ SCIP_DECL_HEUREXITSOL()

static SCIP_DECL_HEUREXITSOL ( heurExitsolMasterdiving  )
static

solving process deinitialization method of primal heuristic (called before branch and bound process data is freed)

Definition at line 271 of file heur_masterdiving.c.

◆ SCIP_DECL_HEUREXEC()

static SCIP_DECL_HEUREXEC ( heurExecMasterdiving  )
static

execution method of primal heuristic

Definition at line 294 of file heur_masterdiving.c.

References EVENTHDLR_NAME, GCGmasterGetOrigprob(), GCGrelaxIsOrigSolFeasible(), and MINLPITER.

◆ GCGheurGetDivingDataMaster()

GCG_DIVINGDATA* GCGheurGetDivingDataMaster ( SCIP_HEUR *  heur)

gets diving rule specific data of a diving heuristic

Parameters
heurprimal heuristic

Definition at line 975 of file heur_masterdiving.c.

◆ GCGheurSetDivingDataMaster()

void GCGheurSetDivingDataMaster ( SCIP_HEUR *  heur,
GCG_DIVINGDATA divingdata 
)

sets diving rule specific data of a diving heuristic

Parameters
heurprimal heuristic
divingdatadiving rule specific data

Definition at line 991 of file heur_masterdiving.c.

◆ GCGincludeDivingHeurMaster()

SCIP_RETCODE GCGincludeDivingHeurMaster ( SCIP *  scip,
SCIP_HEUR **  heur,
const char *  name,
const char *  desc,
char  dispchar,
int  priority,
int  freq,
int  freqofs,
int  maxdepth,
GCG_DECL_DIVINGFREE((*divingfree))  ,
GCG_DECL_DIVINGINIT((*divinginit))  ,
GCG_DECL_DIVINGEXIT((*divingexit))  ,
GCG_DECL_DIVINGINITSOL((*divinginitsol))  ,
GCG_DECL_DIVINGEXITSOL((*divingexitsol))  ,
GCG_DECL_DIVINGINITEXEC((*divinginitexec))  ,
GCG_DECL_DIVINGEXITEXEC((*divingexitexec))  ,
GCG_DECL_DIVINGSELECTVAR((*divingselectvar))  ,
GCG_DIVINGDATA divingdata 
)

creates a master diving heuristic and includes it in GCG

Parameters
scipSCIP data structure
heurpointer to diving heuristic
namename of primal heuristic
descdescription of primal heuristic
dispchardisplay character of primal heuristic
prioritypriority of the primal heuristic
freqfrequency for calling primal heuristic
freqofsfrequency offset for calling primal heuristic
maxdepthmaximal depth level to call heuristic at (-1: no limit)
divingdatadiving rule specific data (or NULL)

Definition at line 1008 of file heur_masterdiving.c.

References DEFAULT_BACKTRACK, DEFAULT_MAXDISCDEPTH, DEFAULT_MAXDISCREPANCY, DEFAULT_MAXDIVEAVGQUOT, DEFAULT_MAXDIVEAVGQUOTNOSOL, DEFAULT_MAXDIVEUBQUOT, DEFAULT_MAXDIVEUBQUOTNOSOL, DEFAULT_MAXLPITEROFS, DEFAULT_MAXLPITERQUOT, DEFAULT_MAXPRICEROUNDS, DEFAULT_MAXRELDEPTH, DEFAULT_MINRELDEPTH, DEFAULT_USEFARKASONLY, EVENTHDLR_NAME, HEUR_TIMING, and HEUR_USESSUBSCIP.

Referenced by GCGincludeHeurMastercoefdiving(), GCGincludeHeurMasterfracdiving(), GCGincludeHeurMasterlinesdiving(), and GCGincludeHeurMastervecldiving().

◆ SCIPincludeEventHdlrMasterdiving()

SCIP_RETCODE SCIPincludeEventHdlrMasterdiving ( SCIP *  scip)

creates event handler for masterdiving event

Parameters
scipSCIP data structure

Definition at line 1158 of file heur_masterdiving.c.

References EVENTHDLR_DESC, and EVENTHDLR_NAME.

Referenced by GCGincludeMasterPlugins().