Scippy

SCIP

Solving Constraint Integer Programs

heur_gins.c File Reference

Detailed Description

LNS heuristic that tries to delimit the search region to a neighborhood in the constraint graph.

Author
Gregor Hendel

Graph Induced Neighborhood Search (GINS) is a Large Neighborhood Search Heuristic that attempts to improve an incumbent solution by fixing a suitable percentage of integer variables to the incumbent and solving the resulting, smaller and presumably easier sub-MIP.

Its search neighborhoods are based on distances in a bipartite graph \(G\) with the variables and constraints as nodes and an edge between a variable and a constraint, if the variable is part of the constraint. Given an integer \(k\), the \(k\)-neighborhood of a variable \(v\) in \(G\) is the set of variables, whose nodes are connected to \(v\) by a path not longer than \(2 \cdot k\). Intuitively, a judiciously chosen neighborhood size allows to consider a local portion of the overall problem.

An initial variable selection is made by randomly sampling different neighborhoods across the whole main problem. The neighborhood that offers the largest potential for improvement is selected to become the local search neighborhood, while all variables outside the neighborhood are fixed to their incumbent solution values.

GINS also supports a rolling horizon approach, during which several local neighborhoods are considered with increasing distance to the variable selected for the initial sub-problem. The rolling horizon approach ends if no improvement could be found or a sufficient part of the problem component variables has been part of at least one neighborhood.

Definition in file heur_gins.c.

#include "blockmemshell/memory.h"
#include "scip/heur_gins.h"
#include "scip/heuristics.h"
#include "scip/pub_heur.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_sol.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_general.h"
#include "scip/scip_heur.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_nodesel.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_randnumgen.h"
#include "scip/scip_sol.h"
#include "scip/scip_solve.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_timing.h"
#include <string.h>

Go to the source code of this file.

Data Structures

struct  RollingHorizon
 
struct  SolveLimits
 

Macros

#define HEUR_NAME   "gins"
 
#define HEUR_DESC   "gins works on k-neighborhood in a variable-constraint graph"
 
#define HEUR_DISPCHAR   'K'
 
#define HEUR_PRIORITY   -1103000
 
#define HEUR_FREQ   20
 
#define HEUR_FREQOFS   8
 
#define HEUR_MAXDEPTH   -1
 
#define HEUR_TIMING   SCIP_HEURTIMING_AFTERNODE
 
#define HEUR_USESSUBSCIP   TRUE
 
#define DEFAULT_NODESOFS   500
 
#define DEFAULT_MAXNODES   5000
 
#define DEFAULT_MINIMPROVE   0.01
 
#define DEFAULT_MINNODES   50
 
#define DEFAULT_MINFIXINGRATE   0.66
 
#define DEFAULT_NODESQUOT   0.15
 
#define DEFAULT_NWAITINGNODES   100
 
#define DEFAULT_USELPROWS   FALSE
 
#define DEFAULT_COPYCUTS   TRUE
 
#define DEFAULT_BESTSOLLIMIT   3
 
#define DEFAULT_FIXCONTVARS   FALSE
 
#define DEFAULT_POTENTIAL   'r'
 
#define DEFAULT_MAXDISTANCE   3
 
#define DEFAULT_RANDSEED   71
 
#define DEFAULT_RELAXDENSECONSS   FALSE
 
#define DEFAULT_USEROLLINGHORIZON   TRUE
 
#define DEFAULT_ROLLHORIZONLIMFAC   0.4
 

Typedefs

typedef struct RollingHorizon ROLLINGHORIZON
 
typedef struct SolveLimits SOLVELIMITS
 

Functions

static SCIP_RETCODE rollingHorizonCreate (SCIP *scip, ROLLINGHORIZON **rollinghorizon)
 
static SCIP_RETCODE rollingHorizonFree (SCIP *scip, ROLLINGHORIZON **rollinghorizon)
 
static SCIP_Bool rollingHorizonRunAgain (SCIP *scip, ROLLINGHORIZON *rollinghorizon, SCIP_HEURDATA *heurdata)
 
static void rollingHorizonStoreDistances (SCIP *scip, ROLLINGHORIZON *rollinghorizon, int *distances)
 
static SCIP_Real getPotential (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_SOL *sol, SCIP_VAR **vars, int nvars)
 
static SCIP_Bool isVariableInNeighborhood (SCIP_VAR *var, int *distances, int maxdistance)
 
static SCIP_RETCODE fixNonNeighborhoodVariables (SCIP *scip, SCIP_HEURDATA *heurdata, ROLLINGHORIZON *rollinghorizon, SCIP_SOL *sol, SCIP_VAR **vars, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int *distances, int maxdistance, int *nfixings)
 
static SCIP_RETCODE determineMaxDistance (SCIP *scip, SCIP_HEURDATA *heurdata, int *distances, int *choosevardistance)
 
static SCIP_Real heurdataAvgDiscreteNeighborhoodSize (SCIP_HEURDATA *heurdata)
 
static SCIP_RETCODE selectInitialVariable (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_VGRAPH *vargraph, int *distances, SCIP_VAR **selvar, int *selvarmaxdistance)
 
static SCIP_RETCODE selectNextVariable (SCIP *scip, SCIP_HEURDATA *heurdata, ROLLINGHORIZON *rollinghorizon, int *distances, SCIP_VAR **selvar, int *selvarmaxdistance)
 
static SCIP_RETCODE determineVariableFixings (SCIP *scip, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int *nfixings, SCIP_HEURDATA *heurdata, ROLLINGHORIZON *rollinghorizon, SCIP_Bool *success)
 
static SCIP_RETCODE createNewSol (SCIP *scip, SCIP *subscip, SCIP_VAR **subvars, SCIP_HEUR *heur, SCIP_SOL *subsol, SCIP_Bool *success)
 
static SCIP_RETCODE setLimits (SCIP *subscip, SOLVELIMITS *solvelimits)
 
static SCIP_RETCODE setupSubScip (SCIP *scip, SCIP *subscip, SOLVELIMITS *solvelimits, SCIP_HEUR *heur)
 
static SCIP_RETCODE determineLimits (SCIP *scip, SCIP_HEUR *heur, SOLVELIMITS *solvelimits, SCIP_Bool *runagain)
 
static void updateFailureStatistic (SCIP *scip, SCIP_HEURDATA *heurdata)
 
static SCIP_DECL_HEURCOPY (heurCopyGins)
 
static SCIP_DECL_HEURFREE (heurFreeGins)
 
static SCIP_DECL_HEURINIT (heurInitGins)
 
static SCIP_DECL_HEUREXIT (heurExitGins)
 
static SCIP_DECL_HEUREXEC (heurExecGins)
 
SCIP_RETCODE SCIPincludeHeurGins (SCIP *scip)
 

Macro Definition Documentation

◆ HEUR_NAME

#define HEUR_NAME   "gins"

Definition at line 69 of file heur_gins.c.

Referenced by updateFailureStatistic().

◆ HEUR_DESC

#define HEUR_DESC   "gins works on k-neighborhood in a variable-constraint graph"

Definition at line 70 of file heur_gins.c.

◆ HEUR_DISPCHAR

#define HEUR_DISPCHAR   'K'

Definition at line 71 of file heur_gins.c.

◆ HEUR_PRIORITY

#define HEUR_PRIORITY   -1103000

Definition at line 72 of file heur_gins.c.

◆ HEUR_FREQ

#define HEUR_FREQ   20

Definition at line 73 of file heur_gins.c.

◆ HEUR_FREQOFS

#define HEUR_FREQOFS   8

Definition at line 74 of file heur_gins.c.

◆ HEUR_MAXDEPTH

#define HEUR_MAXDEPTH   -1

Definition at line 75 of file heur_gins.c.

◆ HEUR_TIMING

#define HEUR_TIMING   SCIP_HEURTIMING_AFTERNODE

Definition at line 76 of file heur_gins.c.

◆ HEUR_USESSUBSCIP

#define HEUR_USESSUBSCIP   TRUE

does the heuristic use a secondary SCIP instance?

Definition at line 77 of file heur_gins.c.

◆ DEFAULT_NODESOFS

#define DEFAULT_NODESOFS   500

number of nodes added to the contingent of the total nodes

Definition at line 79 of file heur_gins.c.

◆ DEFAULT_MAXNODES

#define DEFAULT_MAXNODES   5000

maximum number of nodes to regard in the subproblem

Definition at line 80 of file heur_gins.c.

◆ DEFAULT_MINIMPROVE

#define DEFAULT_MINIMPROVE   0.01

factor by which Gins should at least improve the incumbent

Definition at line 81 of file heur_gins.c.

◆ DEFAULT_MINNODES

#define DEFAULT_MINNODES   50

minimum number of nodes to regard in the subproblem

Definition at line 82 of file heur_gins.c.

◆ DEFAULT_MINFIXINGRATE

#define DEFAULT_MINFIXINGRATE   0.66

minimum percentage of integer variables that have to be fixed

Definition at line 83 of file heur_gins.c.

◆ DEFAULT_NODESQUOT

#define DEFAULT_NODESQUOT   0.15

subproblem nodes in relation to nodes of the original problem

Definition at line 84 of file heur_gins.c.

◆ DEFAULT_NWAITINGNODES

#define DEFAULT_NWAITINGNODES   100

number of nodes without incumbent change that heuristic should wait

Definition at line 85 of file heur_gins.c.

◆ DEFAULT_USELPROWS

#define DEFAULT_USELPROWS   FALSE

should subproblem be created out of the rows in the LP rows, < otherwise, the copy constructors of the constraints handlers are used

Definition at line 86 of file heur_gins.c.

◆ DEFAULT_COPYCUTS

#define DEFAULT_COPYCUTS   TRUE

if DEFAULT_USELPROWS is FALSE, then should all active cuts from the < cutpool of the original scip be copied to constraints of the subscip

Definition at line 89 of file heur_gins.c.

◆ DEFAULT_BESTSOLLIMIT

#define DEFAULT_BESTSOLLIMIT   3

limit on number of improving incumbent solutions in sub-CIP

Definition at line 92 of file heur_gins.c.

◆ DEFAULT_FIXCONTVARS

#define DEFAULT_FIXCONTVARS   FALSE

should continuous variables outside the neighborhoods get fixed?

Definition at line 93 of file heur_gins.c.

◆ DEFAULT_POTENTIAL

#define DEFAULT_POTENTIAL   'r'

the reference point to compute the neighborhood potential: (r)oot or (p)seudo solution

Definition at line 94 of file heur_gins.c.

◆ DEFAULT_MAXDISTANCE

#define DEFAULT_MAXDISTANCE   3

maximum distance to selected variable to enter the subproblem, or -1 to select the distance that best approximates the minimum fixing rate from below

Definition at line 95 of file heur_gins.c.

◆ DEFAULT_RANDSEED

#define DEFAULT_RANDSEED   71

Definition at line 98 of file heur_gins.c.

◆ DEFAULT_RELAXDENSECONSS

#define DEFAULT_RELAXDENSECONSS   FALSE

should dense constraints (at least as dense as 1 - minfixingrate) be ignored by connectivity graph?

Definition at line 99 of file heur_gins.c.

◆ DEFAULT_USEROLLINGHORIZON

#define DEFAULT_USEROLLINGHORIZON   TRUE

should the heuristic solve a sequence of sub-MIP's around the first selected variable

Definition at line 102 of file heur_gins.c.

◆ DEFAULT_ROLLHORIZONLIMFAC

#define DEFAULT_ROLLHORIZONLIMFAC   0.4

limiting percentage for variables already used in sub-SCIPs to terminate rolling horizon approach

Definition at line 103 of file heur_gins.c.

Typedef Documentation

◆ ROLLINGHORIZON

Definition at line 133 of file heur_gins.c.

◆ SOLVELIMITS

typedef struct SolveLimits SOLVELIMITS

Definition at line 185 of file heur_gins.c.

Function Documentation

◆ rollingHorizonCreate()

static SCIP_RETCODE rollingHorizonCreate ( SCIP scip,
ROLLINGHORIZON **  rollinghorizon 
)
static

create a rolling horizon data structure

Parameters
scipSCIP data structure
rollinghorizonpointer to rolling horizon data structure

Definition at line 222 of file heur_gins.c.

◆ rollingHorizonFree()

static SCIP_RETCODE rollingHorizonFree ( SCIP scip,
ROLLINGHORIZON **  rollinghorizon 
)
static

free a rolling horizon data structure

Parameters
scipSCIP data structure
rollinghorizonpointer to rolling horizon data structure

Definition at line 246 of file heur_gins.c.

◆ rollingHorizonRunAgain()

static SCIP_Bool rollingHorizonRunAgain ( SCIP scip,
ROLLINGHORIZON rollinghorizon,
SCIP_HEURDATA heurdata 
)
static

is there potential to run another iteration of the rolling horizon approach?

Parameters
scipSCIP data structure
rollinghorizonrolling horizon data structure
heurdataheuristic data

Definition at line 268 of file heur_gins.c.

References RollingHorizon::distances, RollingHorizon::nnonreachable, RollingHorizon::nused, rollingHorizonStoreDistances(), SCIPgetNBinVars(), and SCIPgetNIntVars().

Referenced by selectNextVariable().

◆ rollingHorizonStoreDistances()

static void rollingHorizonStoreDistances ( SCIP scip,
ROLLINGHORIZON rollinghorizon,
int *  distances 
)
static

store the distances from the selected variable permanently for the rolling horizon approach

Parameters
scipSCIP data structure
rollinghorizonrolling horizon data structure
distancesbreadth-first distances indexed by Probindex of variables

Definition at line 285 of file heur_gins.c.

References BMScopyMemoryArray, RollingHorizon::distances, RollingHorizon::distancessize, getPotential(), RollingHorizon::lastdistance, RollingHorizon::nnonreachable, and SCIP_Real.

Referenced by determineVariableFixings(), and rollingHorizonRunAgain().

◆ getPotential()

static SCIP_Real getPotential ( SCIP scip,
SCIP_HEURDATA heurdata,
SCIP_SOL sol,
SCIP_VAR **  vars,
int  nvars 
)
static

get the potential of a subset of variables (distance to a reference point such as the pseudo-solution or root LP solution)

Parameters
scipSCIP data structure
heurdataheuristic data
solsolution
varsvariable array
nvarslength of variable array

Definition at line 308 of file heur_gins.c.

References RollingHorizon::distances, isVariableInNeighborhood(), NULL, REALABS, SCIP_Bool, SCIP_Real, SCIPerrorMessage, SCIPgetSolVal(), SCIPisInfinity(), SCIPisZero(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetRootSol(), and SCIPvarGetUbGlobal().

Referenced by rollingHorizonStoreDistances(), and selectInitialVariable().

◆ isVariableInNeighborhood()

static SCIP_Bool isVariableInNeighborhood ( SCIP_VAR var,
int *  distances,
int  maxdistance 
)
static

is the variable in the current neighborhood which is given by the breadth-first distances from a central variable?

Parameters
varproblem variable
distancesbreadth-first distances indexed by Probindex of variables
maxdistancemaximum distance (inclusive) to be considered for neighborhoods

Definition at line 373 of file heur_gins.c.

References fixNonNeighborhoodVariables(), NULL, and SCIPvarGetProbindex().

Referenced by getPotential(), and selectInitialVariable().

◆ fixNonNeighborhoodVariables()

static SCIP_RETCODE fixNonNeighborhoodVariables ( SCIP scip,
SCIP_HEURDATA heurdata,
ROLLINGHORIZON rollinghorizon,
SCIP_SOL sol,
SCIP_VAR **  vars,
SCIP_VAR **  fixedvars,
SCIP_Real fixedvals,
int *  distances,
int  maxdistance,
int *  nfixings 
)
static

fixes variables in subproblem based on long breadth-first distances in variable graph

Parameters
scipSCIP data structure
heurdataheuristic data
rollinghorizonrolling horizon data structure to save relevant information, or NULL if not needed
solsolution in main SCIP for fixing values
varsvariables in the main SCIP
fixedvarsbuffer to store variables that should be fixed
fixedvalsbuffer to store fixing values for fixed variables
distancesbreadth-first distances indexed by Probindex of variables
maxdistancemaximum distance (inclusive) to be considered for neighborhoods
nfixingspointer to store number of fixed variables

Definition at line 389 of file heur_gins.c.

References determineMaxDistance(), RollingHorizon::distances, RollingHorizon::lastmaxdistance, RollingHorizon::niterations, NULL, RollingHorizon::nused, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPgetSolVal(), SCIPgetVarsData(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), TRUE, and RollingHorizon::used.

Referenced by determineVariableFixings(), and isVariableInNeighborhood().

◆ determineMaxDistance()

static SCIP_RETCODE determineMaxDistance ( SCIP scip,
SCIP_HEURDATA heurdata,
int *  distances,
int *  choosevardistance 
)
static

determine the maximum allowed distance to stay within the restriction to fix at least minfixingrate many non neighborhood variables

Parameters
scipSCIP data structure
heurdataheuristic data
distancesbreadth-first distances indexed by Probindex of variables
choosevardistancepointer to store the computed maximum distance

Definition at line 462 of file heur_gins.c.

References heurdataAvgDiscreteNeighborhoodSize(), MAX, MIN, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetVarsData(), SCIPsortedvecFindInt(), and SCIPsortInt().

Referenced by fixNonNeighborhoodVariables(), selectInitialVariable(), and selectNextVariable().

◆ heurdataAvgDiscreteNeighborhoodSize()

static SCIP_Real heurdataAvgDiscreteNeighborhoodSize ( SCIP_HEURDATA heurdata)
static

gets the average size of a discrete neighborhood over all variables tested

Parameters
heurdataheuristic data

Definition at line 518 of file heur_gins.c.

Referenced by determineMaxDistance(), and selectInitialVariable().

◆ selectInitialVariable()

static SCIP_RETCODE selectInitialVariable ( SCIP scip,
SCIP_HEURDATA heurdata,
SCIP_VGRAPH vargraph,
int *  distances,
SCIP_VAR **  selvar,
int *  selvarmaxdistance 
)
static

select a good starting variable at the first iteration of a rolling horizon approach

Parameters
scipSCIP data structure
heurdataheuristic data
vargraphvariable graph data structure to work on
distancesbreadth-first distances indexed by Probindex of variables
selvarpointer to store the selected variable
selvarmaxdistancemaximal distance k to consider for selected variable neighborhood

Definition at line 527 of file heur_gins.c.

References determineMaxDistance(), RollingHorizon::distances, getPotential(), heurdataAvgDiscreteNeighborhoodSize(), isVariableInNeighborhood(), MIN, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_REAL_MIN, SCIPallocBufferArray, SCIPdebugMsg, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetVarsData(), SCIPisPositive(), SCIPrandomGetInt(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvariablegraphBreadthFirst(), SCIPvarIsActive(), SCIPvarIsIntegral(), and selectNextVariable().

Referenced by determineVariableFixings().

◆ selectNextVariable()

static SCIP_RETCODE selectNextVariable ( SCIP scip,
SCIP_HEURDATA heurdata,
ROLLINGHORIZON rollinghorizon,
int *  distances,
SCIP_VAR **  selvar,
int *  selvarmaxdistance 
)
static

select the next variable using the rolling horizon

Parameters
scipSCIP data structure
heurdataheuristic data
rollinghorizonrolling horizon data structure to save relevant information, or NULL if not needed
distancesbreadth-first distances indexed by Probindex of variables
selvarpointer to store the selected variable
selvarmaxdistancemaximal distance k to consider for selected variable neighborhood

Definition at line 717 of file heur_gins.c.

References determineMaxDistance(), determineVariableFixings(), RollingHorizon::distances, RollingHorizon::lastdistance, RollingHorizon::lastmaxdistance, MIN, NULL, RollingHorizon::nused, rollingHorizonRunAgain(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPgetVarsData(), SCIPvarGetProbindex(), SCIPvariablegraphBreadthFirst(), TRUE, RollingHorizon::used, and RollingHorizon::variablegraph.

Referenced by determineVariableFixings(), and selectInitialVariable().

◆ determineVariableFixings()

static SCIP_RETCODE determineVariableFixings ( SCIP scip,
SCIP_VAR **  fixedvars,
SCIP_Real fixedvals,
int *  nfixings,
SCIP_HEURDATA heurdata,
ROLLINGHORIZON rollinghorizon,
SCIP_Bool success 
)
static

determines the graph-induced variable fixings

Parameters
sciporiginal SCIP data structure
fixedvarsbuffer to store variables that should be fixed
fixedvalsbuffer to store fixing values for fixed variables
nfixingspointer to store the number of fixed variables
heurdataheuristic data
rollinghorizonrolling horizon data structure to save relevant information, or NULL if not needed
successused to store whether the creation of the subproblem worked

Definition at line 794 of file heur_gins.c.

References createNewSol(), RollingHorizon::distances, FALSE, fixNonNeighborhoodVariables(), RollingHorizon::lastmaxdistance, RollingHorizon::niterations, NULL, rollingHorizonStoreDistances(), SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetVarsData(), SCIPvarGetName(), SCIPvariablegraphBreadthFirst(), SCIPvariableGraphCreate(), SCIPvariableGraphFree(), selectInitialVariable(), selectNextVariable(), TRUE, and RollingHorizon::variablegraph.

Referenced by selectNextVariable().

◆ createNewSol()

static SCIP_RETCODE createNewSol ( SCIP scip,
SCIP subscip,
SCIP_VAR **  subvars,
SCIP_HEUR heur,
SCIP_SOL subsol,
SCIP_Bool success 
)
static

creates a new solution for the original problem by copying the solution of the subproblem

Parameters
sciporiginal SCIP data structure
subscipSCIP structure of the subproblem
subvarsthe variables of the subproblem
heurgins heuristic structure
subsolsolution of the subproblem
successused to store whether new solution was found or not

Definition at line 909 of file heur_gins.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcreateSol(), SCIPfreeBufferArray, SCIPgetNOrigVars(), SCIPgetSolVals(), SCIPgetVarsData(), SCIPsetSolVals(), SCIPtrySolFree(), setLimits(), and TRUE.

Referenced by determineVariableFixings().

◆ setLimits()

static SCIP_RETCODE setLimits ( SCIP subscip,
SOLVELIMITS solvelimits 
)
static

set sub-SCIP solving limits

Parameters
subscipSCIP data structure
solvelimitspointer to solving limits data structure

Definition at line 955 of file heur_gins.c.

Referenced by createNewSol(), and setupSubScip().

◆ setupSubScip()

static SCIP_RETCODE setupSubScip ( SCIP scip,
SCIP subscip,
SOLVELIMITS solvelimits,
SCIP_HEUR heur 
)
static

◆ determineLimits()

static SCIP_RETCODE determineLimits ( SCIP scip,
SCIP_HEUR heur,
SOLVELIMITS solvelimits,
SCIP_Bool runagain 
)
static

determine limits for a sub-SCIP

Parameters
scipSCIP data structure
heurthis heuristic
solvelimitspointer to solving limits data structure
runagaincan we solve another sub-SCIP with these limits

Definition at line 1072 of file heur_gins.c.

References FALSE, SolveLimits::memorylimit, MIN, SolveLimits::nodelimit, NULL, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetNNodes(), SCIPgetRealParam(), SCIPgetSolvingTime(), SCIPheurGetData(), SCIPheurGetNBestSolsFound(), SCIPisInfinity(), SolveLimits::timelimit, and updateFailureStatistic().

Referenced by setupSubScip().

◆ updateFailureStatistic()

static void updateFailureStatistic ( SCIP scip,
SCIP_HEURDATA heurdata 
)
static

updates heurdata after a run of GINS

Parameters
sciporiginal SCIP data structure
heurdataprimal heuristic data

Definition at line 1127 of file heur_gins.c.

References HEUR_NAME, MAX, NULL, SCIP_DECL_HEURCOPY(), SCIP_Real, SCIP_VERBLEVEL_HIGH, SCIPheurGetName(), and SCIPverbMessage().

Referenced by determineLimits().

◆ SCIP_DECL_HEURCOPY()

static SCIP_DECL_HEURCOPY ( heurCopyGins  )
static

copy method for primal heuristic plugins (called when SCIP copies plugins)

Definition at line 1174 of file heur_gins.c.

Referenced by updateFailureStatistic().

◆ SCIP_DECL_HEURFREE()

static SCIP_DECL_HEURFREE ( heurFreeGins  )
static

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

Definition at line 1188 of file heur_gins.c.

◆ SCIP_DECL_HEURINIT()

static SCIP_DECL_HEURINIT ( heurInitGins  )
static

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

Definition at line 1208 of file heur_gins.c.

◆ SCIP_DECL_HEUREXIT()

static SCIP_DECL_HEUREXIT ( heurExitGins  )
static

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

Definition at line 1241 of file heur_gins.c.

◆ SCIP_DECL_HEUREXEC()

static SCIP_DECL_HEUREXEC ( heurExecGins  )
static

execution method of primal heuristic

Definition at line 1269 of file heur_gins.c.