Solving Constraint Integer Programs

heuristics.c File Reference

Detailed Description

methods commonly used by primal heuristics

Gregor Hendel

Definition in file heuristics.c.

#include "scip/heuristics.h"
#include "scip/cons_linear.h"
#include "scip/scipdefplugins.h"
#include "pub_heur.h"
#include "scip/cons_indicator.h"
#include "scip/cons_sos1.h"

Go to the source code of this file.


#define MINLPITER   10000


static SCIP_RETCODE solveLP (SCIP *scip, SCIP_DIVESET *diveset, SCIP_Longint maxnlpiterations, SCIP_Bool *lperror, SCIP_Bool *cutoff)
static SCIP_RETCODE selectNextDiving (SCIP *scip, SCIP_DIVESET *diveset, SCIP_SOL *worksol, SCIP_Bool onlylpbranchcands, SCIP_Bool storelpcandscores, SCIP_VAR **lpcands, SCIP_Real *lpcandssol, SCIP_Real *lpcandsfrac, SCIP_Real *lpcandsscores, SCIP_Bool *lpcandroundup, int *nviollpcands, int nlpcands, SCIP_Bool *enfosuccess, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPperformGenericDivingAlgorithm (SCIP *scip, SCIP_DIVESET *diveset, SCIP_SOL *worksol, SCIP_HEUR *heur, SCIP_RESULT *result, SCIP_Bool nodeinfeasible)
static SCIP_RETCODE createRows (SCIP *scip, SCIP *subscip, SCIP_HASHMAP *varmap)
SCIP_RETCODE SCIPcopyLargeNeighborhoodSearch (SCIP *sourcescip, SCIP *subscip, SCIP_HASHMAP *varmap, const char *suffix, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool uselprows, SCIP_Bool copycuts, SCIP_Bool *success, SCIP_Bool *valid)

Macro Definition Documentation


#define MINLPITER   10000

minimal number of LP iterations allowed in each LP solving call

Definition at line 31 of file heuristics.c.

Referenced by SCIPperformGenericDivingAlgorithm(), and solveLP().

Function Documentation

◆ solveLP()

static SCIP_RETCODE solveLP ( SCIP scip,
SCIP_Longint  maxnlpiterations,
SCIP_Bool lperror,
SCIP_Bool cutoff 

solve probing LP

scipSCIP data structure
divesetdiving settings
maxnlpiterationsmaximum number of allowed LP iterations
lperrorpointer to store if an internal LP error occurred
cutoffpointer to store whether the LP was infeasible

Definition at line 36 of file heuristics.c.

References MAX, MINLPITER, NULL, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIPdivesetGetName(), SCIPdivesetGetNLPIterations(), SCIPgetNLPIterations(), SCIPsolveProbingLP(), SCIPupdateDivesetLPStats(), and SCIPwarningMessage().

Referenced by SCIPperformGenericDivingAlgorithm().

◆ selectNextDiving()

static SCIP_RETCODE selectNextDiving ( SCIP scip,
SCIP_SOL worksol,
SCIP_Bool  onlylpbranchcands,
SCIP_Bool  storelpcandscores,
SCIP_VAR **  lpcands,
SCIP_Real lpcandssol,
SCIP_Real lpcandsfrac,
SCIP_Real lpcandsscores,
SCIP_Bool lpcandroundup,
int *  nviollpcands,
int  nlpcands,
SCIP_Bool enfosuccess,
SCIP_Bool infeasible 

select the next variable and type of diving

scipSCIP data structure
divesetdive set
worksolcurrent working solution
onlylpbranchcandsshould only LP branching candidates be considered?
storelpcandscoresshould the scores of the LP candidates be updated?
lpcandsLP branching candidates, or NULL if not needed
lpcandssolsolution values LP branching candidates, or NULL if not needed
lpcandsfracfractionalities of LP branching candidates, or NULL if not needed
lpcandsscoresarray with LP branching candidate scores, or NULL
lpcandrounduparray to remember whether the preferred branching direction is upwards
nviollpcandspointer to store the number of LP candidates whose solution value already violates local bounds
nlpcandsnumber of current LP cands
enfosuccesspointer to store whether a candidate was sucessfully found
infeasiblepointer to store whether the diving can be immediately aborted because it is infeasible

Definition at line 79 of file heuristics.c.

References NULL, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_DIVETYPE_INTEGRALITY, SCIP_OKAY, SCIP_Real, SCIP_REAL_MIN, SCIPaddDiveBoundChange(), SCIPceil(), SCIPclearDiveBoundChanges(), SCIPfloor(), SCIPgetDiveBoundChanges(), SCIPgetDivesetScore(), SCIPgetSolVal(), SCIPisGE(), SCIPisLE(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

Referenced by SCIPperformGenericDivingAlgorithm().

◆ createRows()

static SCIP_RETCODE createRows ( SCIP scip,
SCIP subscip,

creates the rows of the subproblem

sciporiginal SCIP data structure
subscipSCIP data structure for the subproblem
varmapa hashmap to store the mapping of source variables to the corresponding target variables

Definition at line 833 of file heuristics.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPcolGetVar(), SCIPcreateConsLinear(), SCIPfreeBufferArray, SCIPgetLPRowsData(), SCIPhashmapGetImage(), SCIPreleaseCons(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetRhs(), SCIProwGetVals(), SCIProwIsLocal(), and TRUE.

Referenced by SCIPcopyLargeNeighborhoodSearch().