Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

dynamic partition search

Author
Katrin Halbig

The dynamic partition search (DPS) is a construction heuristic which additionally needs a user decomposition with linking constraints only.

This heuristic splits the problem into several sub-SCIPs according to the given decomposition. Thereby the linking constraints with their right-hand and left-hand sides are also split. DPS searches for a partition of the sides on the blocks so that a feasible solution is obtained. For each block the parts of the original linking constraints are extended by slack variables. Moreover, the objective function is replaced by the sum of these additional variables weighted by penalty parameters lambda. If all blocks have an optimal solution of zero, the algorithm terminates with a feasible solution for the main problem. Otherwise, the partition and the penalty parameters are updated, and the sub-SCIPs are solved again.

Definition in file heur_dps.c.

#include "scip/heur_dps.h"
#include "scip/pub_dcmp.h"
#include "scip/pub_heur.h"
#include "scip/pub_misc.h"
#include "scip/scipdefplugins.h"
#include "scip/scip_cons.h"
#include "scip/scip_dcmp.h"
#include "scip/scip_general.h"
#include "scip/scip_heur.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"

Go to the source code of this file.

Data Structures

struct  Blockproblem
 
struct  Linking
 

Macros

#define HEUR_NAME   "dps"
 
#define HEUR_DESC   "primal heuristic for decomposable MIPs"
 
#define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_LNS
 
#define HEUR_PRIORITY   75000
 
#define HEUR_FREQ   -1
 
#define HEUR_FREQOFS   0
 
#define HEUR_MAXDEPTH   -1
 
#define HEUR_TIMING   SCIP_HEURTIMING_BEFORENODE
 
#define HEUR_USESSUBSCIP   TRUE
 
#define DEFAULT_MAXIT   50
 
#define DEFAULT_PENALTY   100.0
 
#define EVENTHDLR_NAME   "Dps"
 
#define EVENTHDLR_DESC   "event handler for " HEUR_NAME " heuristic"
 

Typedefs

typedef struct Blockproblem BLOCKPROBLEM
 
typedef struct Linking LINKING
 

Functions

static SCIP_RETCODE assignLinking (SCIP *scip, SCIP_DECOMP *newdecomp, SCIP_VAR **vars, SCIP_CONS **conss, int *varlabels, int *conslabels, int nvars, int nconss, int nlinkvars)
 
static SCIP_RETCODE createSubscip (SCIP *scip, SCIP **subscip)
 
static SCIP_RETCODE copyToSubscip (SCIP *scip, SCIP *subscip, const char *name, SCIP_VAR **vars, SCIP_CONS **conss, SCIP_HASHMAP *varsmap, SCIP_HASHMAP *conssmap, int nvars, int nconss, SCIP_Bool *success)
 
static SCIP_RETCODE createBlockproblem (SCIP *scip, BLOCKPROBLEM *blockproblem, LINKING **linkings, SCIP_CONS **conss, SCIP_VAR **vars, int nconss, int nvars, SCIP_CONS **linkingconss, int nlinking, int blocknumber, SCIP_Bool *success)
 
static SCIP_RETCODE createAndSplitProblem (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_DECOMP *decomp, BLOCKPROBLEM **blockproblem, LINKING **linkings, SCIP_VAR **vars, SCIP_CONS **conss, SCIP_Bool *success)
 
static SCIP_RETCODE roundPartition (SCIP *scip, LINKING *linking, BLOCKPROBLEM **blockproblem, SCIP_Bool roundbyrhs)
 
static SCIP_RETCODE initCurrent (SCIP *scip, LINKING **linkings, BLOCKPROBLEM **blockproblem, int nlinking, SCIP_Bool *success)
 
static SCIP_RETCODE updatePartition (SCIP *scip, LINKING *linking, BLOCKPROBLEM **blockproblem, int *nviolatedblocksrhs, int *nviolatedblockslhs, int iteration)
 
static SCIP_RETCODE updateLambda (SCIP *scip, SCIP_HEURDATA *heurdata, LINKING **linkings, BLOCKPROBLEM **blockproblem, int *nviolatedblocksrhs, int *nviolatedblockslhs, int nlinking)
 
static SCIP_RETCODE reuseSolution (LINKING **linkings, BLOCKPROBLEM **blockproblem, int nblocks)
 
static SCIP_RETCODE reoptimize (SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *sol, BLOCKPROBLEM **blockproblem, int nblocks, SCIP_SOL **newsol, SCIP_Bool *success)
 
static SCIP_DECL_EVENTEXEC (eventExecDps)
 
static SCIP_DECL_HEURCOPY (heurCopyDps)
 
static SCIP_DECL_HEURFREE (heurFreeDps)
 
static SCIP_DECL_HEUREXEC (heurExecDps)
 
SCIP_RETCODE SCIPincludeHeurDps (SCIP *scip)
 

Macro Definition Documentation

◆ HEUR_NAME

#define HEUR_NAME   "dps"

◆ HEUR_DESC

#define HEUR_DESC   "primal heuristic for decomposable MIPs"

Definition at line 51 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ HEUR_DISPCHAR

#define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_LNS

Definition at line 52 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ HEUR_PRIORITY

#define HEUR_PRIORITY   75000

Definition at line 53 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ HEUR_FREQ

#define HEUR_FREQ   -1

Definition at line 54 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ HEUR_FREQOFS

#define HEUR_FREQOFS   0

Definition at line 55 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ HEUR_MAXDEPTH

#define HEUR_MAXDEPTH   -1

Definition at line 56 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ HEUR_TIMING

#define HEUR_TIMING   SCIP_HEURTIMING_BEFORENODE

Definition at line 57 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ HEUR_USESSUBSCIP

#define HEUR_USESSUBSCIP   TRUE

does the heuristic use a secondary SCIP instance?

Definition at line 58 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ DEFAULT_MAXIT

#define DEFAULT_MAXIT   50

maximum number of iterations

Definition at line 60 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ DEFAULT_PENALTY

#define DEFAULT_PENALTY   100.0

multiplier for absolute increase of penalty parameters

Definition at line 61 of file heur_dps.c.

Referenced by SCIPincludeHeurDps().

◆ EVENTHDLR_NAME

#define EVENTHDLR_NAME   "Dps"

Definition at line 64 of file heur_dps.c.

Referenced by SCIP_DECL_EVENTEXEC(), and SCIP_DECL_HEUREXEC().

◆ EVENTHDLR_DESC

#define EVENTHDLR_DESC   "event handler for " HEUR_NAME " heuristic"

Definition at line 65 of file heur_dps.c.

Referenced by SCIP_DECL_HEUREXEC().

Typedef Documentation

◆ BLOCKPROBLEM

typedef struct Blockproblem BLOCKPROBLEM

Definition at line 96 of file heur_dps.c.

◆ LINKING

typedef struct Linking LINKING

Definition at line 116 of file heur_dps.c.

Function Documentation

◆ assignLinking()

static SCIP_RETCODE assignLinking ( SCIP scip,
SCIP_DECOMP newdecomp,
SCIP_VAR **  vars,
SCIP_CONS **  conss,
int *  varlabels,
int *  conslabels,
int  nvars,
int  nconss,
int  nlinkvars 
)
static

assigns linking variables to last block

The labels are copied to newdecomp and the linking variables are assigned to the last block (i.e., highest block label). Constraint labels and statistics are recomputed.

Parameters
scipSCIP data structure
newdecompdecomposition with assigned linking variables
varssorted array of variables
consssorted array of constraints
varlabelssorted array of variable labels
conslabelssorted array of constraint labels
nvarsnumber of variables
nconssnumber of constraints
nlinkvarsnumber of linking variables

Definition at line 128 of file heur_dps.c.

References NULL, SCIP_CALL, SCIP_DECOMP_LINKVAR, SCIP_OKAY, SCIPcomputeDecompConsLabels(), SCIPcomputeDecompStats(), SCIPdebugMsg, SCIPdecompGetConsLabels(), SCIPdecompGetNBorderVars(), SCIPdecompGetVarsLabels(), SCIPdecompSetConsLabels(), SCIPdecompSetVarsLabels(), SCIPsortIntPtr(), and TRUE.

Referenced by SCIP_DECL_HEUREXEC().

◆ createSubscip()

static SCIP_RETCODE createSubscip ( SCIP scip,
SCIP **  subscip 
)
static

creates a sub-SCIP and sets parameters

Parameters
scipmain SCIP data structure
subscippointer to store created sub-SCIP

Definition at line 202 of file heur_dps.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIPcopyLimits(), SCIPcreate(), SCIPincludeDefaultPlugins(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetPresolving(), SCIPsetSeparating(), SCIPsetSubscipsOff(), and TRUE.

Referenced by SCIP_DECL_HEUREXEC().

◆ copyToSubscip()

static SCIP_RETCODE copyToSubscip ( SCIP scip,
SCIP subscip,
const char *  name,
SCIP_VAR **  vars,
SCIP_CONS **  conss,
SCIP_HASHMAP varsmap,
SCIP_HASHMAP conssmap,
int  nvars,
int  nconss,
SCIP_Bool success 
)
static

copies the given variables and constraints to the given sub-SCIP

Parameters
scipsource SCIP
subsciptarget SCIP
namename for copied problem
varsarray of variables to copy
conssarray of constraints to copy
varsmaphashmap for copied variables
conssmaphashmap for copied constraints
nvarsnumber of variables to copy
nconssnumber of constraints to copy
successwas copying successful?

Definition at line 249 of file heur_dps.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPABORT, SCIPaddCons(), SCIPconsGetHdlr(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPcreateProb(), SCIPdebugMsg, SCIPgetConsCopy(), SCIPgetNOrigVars(), SCIPgetVarCopy(), SCIPreleaseCons(), and SCIPwarningMessage().

Referenced by createBlockproblem().

◆ createBlockproblem()

static SCIP_RETCODE createBlockproblem ( SCIP scip,
BLOCKPROBLEM blockproblem,
LINKING **  linkings,
SCIP_CONS **  conss,
SCIP_VAR **  vars,
int  nconss,
int  nvars,
SCIP_CONS **  linkingconss,
int  nlinking,
int  blocknumber,
SCIP_Bool success 
)
static

creates the subscip for a given block

Parameters
scipSCIP data structure
blockproblemblockproblem that should be created
linkingslinkings that will be (partially) initialized
consssorted array of constraints of this block
varssorted array of variables of this block
nconssnumber of constraints of this block
nvarsnumber of variables of this block
linkingconsslinking constraints in the original problem
nlinkingnumber of linking constraints in the original problem
blocknumbernumber of block that should be created
successpointer to store whether creation was successful

Definition at line 328 of file heur_dps.c.

References Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, copyToSubscip(), FALSE, Linking::haslhs, Linking::hasrhs, HEUR_NAME, Blockproblem::linkingconss, Blockproblem::linkingindices, MAX, Linking::maxactivity, Linking::minactivity, Linking::nblocks, Blockproblem::nblockvars, Blockproblem::nlinking, Linking::nslacks, Linking::nslacksperblock, Blockproblem::nslackvars, NULL, Blockproblem::origobj, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_NEGATED, SCIP_VARTYPE_CONTINUOUS, SCIP_VERBLEVEL_FULL, SCIPaddCons(), SCIPaddVar(), SCIPallocBufferArray, SCIPblkmem(), SCIPcalcMemGrowSize(), SCIPchgVarObj(), SCIPconsGetHdlr(), SCIPconsGetLhs(), SCIPconsGetName(), SCIPconsGetRhs(), SCIPconshdlrGetName(), SCIPcreateConsBasicLinear(), SCIPcreateVarBasic(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfreeBufferArray, SCIPgetConsNVars(), SCIPgetConsVals(), SCIPgetConsVars(), SCIPgetNegatedVar(), SCIPgetNVars(), SCIPgetProbName(), SCIPgetVars(), SCIPhashmapCreate(), SCIPhashmapExists(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPinfinity(), SCIPisInfinity(), SCIPisLE(), SCIPreallocBufferArray, SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPverbMessage(), Linking::slacks, Blockproblem::slackvars, and TRUE.

Referenced by createAndSplitProblem().

◆ createAndSplitProblem()

static SCIP_RETCODE createAndSplitProblem ( SCIP scip,
SCIP_HEURDATA heurdata,
SCIP_DECOMP decomp,
BLOCKPROBLEM **  blockproblem,
LINKING **  linkings,
SCIP_VAR **  vars,
SCIP_CONS **  conss,
SCIP_Bool success 
)
static

creates data structures and splits problem into blocks

Parameters
scipSCIP data structure
heurdataheuristic data
decompdecomposition data structure
blockproblemarray of blockproblem data structures
linkingsarray of linking data structures
varssorted array of variables
consssorted array of constraints
successpointer to store whether splitting was successful

Definition at line 639 of file heur_dps.c.

References createBlockproblem(), SCIP_Decomp::nblocks, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPdecompGetConssSize(), SCIPdecompGetVarsSize(), and SCIPfreeBufferArray.

Referenced by SCIP_DECL_HEUREXEC().

◆ roundPartition()

static SCIP_RETCODE roundPartition ( SCIP scip,
LINKING linking,
BLOCKPROBLEM **  blockproblem,
SCIP_Bool  roundbyrhs 
)
static

rounds partition for one linking constraint to integer value if variables and coefficients are integer

changes only currentrhs/currentlhs

Parameters
scipSCIP data structure
linkingone linking data structure
blockproblemarray of blockproblem data structures
roundbyrhsround by right hand side?

Definition at line 692 of file heur_dps.c.

References b, Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, Linking::currentlhs, Linking::currentrhs, Linking::haslhs, Linking::hasrhs, Linking::nblocks, Linking::nslacksperblock, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetConsNVars(), SCIPgetConsVals(), SCIPgetConsVars(), SCIPisGE(), SCIPisGT(), SCIPisIntegral(), SCIPsortIntIntReal(), SCIPsortIntReal(), SCIPsortRealInt(), and SCIPvarGetType().

Referenced by initCurrent(), and updatePartition().

◆ initCurrent()

static SCIP_RETCODE initCurrent ( SCIP scip,
LINKING **  linkings,
BLOCKPROBLEM **  blockproblem,
int  nlinking,
SCIP_Bool success 
)
static

calculates initial partition and sets rhs/lhs in blockproblems

Parameters
scipSCIP data structure of main scip
linkingsarray of linking data structures
blockproblemarray of blockproblem data structures
nlinkingnumber of linking constraints
successpointer to store whether initialization was successful

Definition at line 853 of file heur_dps.c.

References b, Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, Linking::currentlhs, Linking::currentrhs, Linking::haslhs, Linking::hasrhs, Linking::linkingcons, MAX, Linking::maxactivity, Linking::minactivity, Linking::nblocks, NULL, roundPartition(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPchgLhsLinear(), SCIPchgRhsLinear(), SCIPconsGetLhs(), SCIPconsGetName(), SCIPconsGetRhs(), SCIPconsIsChecked(), and SCIPdebugMsg.

Referenced by SCIP_DECL_HEUREXEC().

◆ updatePartition()

static SCIP_RETCODE updatePartition ( SCIP scip,
LINKING linking,
BLOCKPROBLEM **  blockproblem,
int *  nviolatedblocksrhs,
int *  nviolatedblockslhs,
int  iteration 
)
static

update partition

Parameters
scipSCIP data structure of main scip
linkingone linking data structure
blockproblemarray of blockproblem data structures
nviolatedblocksrhspointer to store number of blocks which violate rhs
nviolatedblockslhspointer to store number of blocks which violate lhs
iterationnumber of iteration

Definition at line 950 of file heur_dps.c.

References Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, BMSclearMemoryArray, Linking::currentlhs, Linking::currentrhs, Linking::haslhs, Linking::hasrhs, MAX, Linking::maxactivity, Linking::minactivity, Linking::nblocks, Linking::nslacksperblock, NULL, roundPartition(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPchgLhsLinear(), SCIPchgRhsLinear(), SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetSolVal(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), Linking::slacks, and subsol.

Referenced by SCIP_DECL_HEUREXEC().

◆ updateLambda()

static SCIP_RETCODE updateLambda ( SCIP scip,
SCIP_HEURDATA heurdata,
LINKING **  linkings,
BLOCKPROBLEM **  blockproblem,
int *  nviolatedblocksrhs,
int *  nviolatedblockslhs,
int  nlinking 
)
static

update penalty parameters lambda

if a linking constraint is violated two times in succession, the corresponding penalty parameter is increased in each block

Parameters
scipSCIP data structure
heurdataheuristic data
linkingsarray of linking data structures
blockproblemarray of blockproblem data structures
nviolatedblocksrhsnumber of blocks which violate rhs
nviolatedblockslhsnumber of blocks which violate lhs
nlinkingnumber of linking constraints

Definition at line 1153 of file heur_dps.c.

References b, Linking::blocknumbers, Blockproblem::blockscip, Linking::haslhs, Linking::hasrhs, Linking::lastviolations, Linking::nblocks, Linking::nslacksperblock, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPchgVarObj(), SCIPvarGetObj(), and Linking::slacks.

Referenced by SCIP_DECL_HEUREXEC().

◆ reuseSolution()

static SCIP_RETCODE reuseSolution ( LINKING **  linkings,
BLOCKPROBLEM **  blockproblem,
int  nblocks 
)
static

computes feasible solution from last stored solution for each block and adds it to the solution storage

Parameters
linkingsarray of linking data structures
blockproblemarray of blockproblem data structures
nblocksnumber of blocks

Definition at line 1219 of file heur_dps.c.

References b, Linking::blocknumbers, Blockproblem::blockscip, Linking::haslhs, Linking::hasrhs, Blockproblem::linkingindices, MAX, Linking::nblocks, Blockproblem::nlinking, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddSolFree(), SCIPallocBufferArray, SCIPcreateOrigSol(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetActivityLinear(), SCIPgetLhsLinear(), SCIPgetNSols(), SCIPgetNVars(), SCIPgetRhsLinear(), SCIPgetSolOrigObj(), SCIPgetSols(), SCIPgetSolVal(), SCIPgetSolVals(), SCIPgetVars(), SCIPisGE(), SCIPsetSolVal(), SCIPsetSolVals(), and Linking::slacks.

Referenced by SCIP_DECL_HEUREXEC().

◆ reoptimize()

static SCIP_RETCODE reoptimize ( SCIP scip,
SCIP_HEUR heur,
SCIP_SOL sol,
BLOCKPROBLEM **  blockproblem,
int  nblocks,
SCIP_SOL **  newsol,
SCIP_Bool success 
)
static

reoptimizes the heuristic solution with original objective function

Parameters
scipSCIP data structure
heurpointer to heuristic
solheuristic solution
blockproblemarray of blockproblem data structures
nblocksnumber of blockproblems
newsolpointer to store improved solution
successpointer to store whether reoptimization was successful

Definition at line 1339 of file heur_dps.c.

References b, Blockproblem::blockscip, FALSE, Linking::nblocks, Blockproblem::nblockvars, NULL, SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_Real, SCIP_STATUS_BESTSOLLIMIT, SCIP_STATUS_OPTIMAL, SCIPallocBufferArray, SCIPchgVarLb(), SCIPchgVarObj(), SCIPchgVarUb(), SCIPcopyLimits(), SCIPcreateSol(), SCIPfindVar(), SCIPfreeBufferArray, SCIPfreeTransform(), SCIPgetBestSol(), SCIPgetNOrigVars(), SCIPgetNSols(), SCIPgetOrigVars(), SCIPgetRealParam(), SCIPgetSolVals(), SCIPgetStatus(), SCIPgetTotalTime(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetPresolving(), SCIPsetRealParam(), SCIPsetSeparating(), SCIPsetSolVal(), SCIPsetSubscipsOff(), SCIPsolve(), SCIPtransformProb(), SCIPvarGetName(), and TRUE.

Referenced by SCIP_DECL_HEUREXEC().

◆ SCIP_DECL_EVENTEXEC()

◆ SCIP_DECL_HEURCOPY()

static SCIP_DECL_HEURCOPY ( heurCopyDps  )
static

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

Definition at line 1523 of file heur_dps.c.

References HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurDps().

◆ SCIP_DECL_HEURFREE()

static SCIP_DECL_HEURFREE ( heurFreeDps  )
static

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

Definition at line 1537 of file heur_dps.c.

References NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPheurGetData(), and SCIPheurSetData().

◆ SCIP_DECL_HEUREXEC()

static SCIP_DECL_HEUREXEC ( heurExecDps  )
static

execution method of primal heuristic



free memory

Definition at line 1556 of file heur_dps.c.

References assignLinking(), b, Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, BMSclearMemoryArray, createAndSplitProblem(), createSubscip(), Linking::currentlhs, Linking::currentrhs, EVENTHDLR_DESC, EVENTHDLR_NAME, FALSE, Linking::haslhs, Linking::hasrhs, HEUR_NAME, initCurrent(), Linking::lastviolations, Linking::linkingcons, Linking::maxactivity, Linking::minactivity, Linking::nblocks, Blockproblem::nblockvars, Blockproblem::nlinking, Linking::nslacks, Linking::nslacksperblock, Blockproblem::nslackvars, NULL, reoptimize(), reuseSolution(), SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_DECOMP_LINKCONS, SCIP_DECOMP_LINKVAR, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_EVENTTYPE_LPSOLVED, SCIP_FOUNDSOL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_TIMELIMIT, SCIP_STATUS_UNBOUNDED, SCIPallocBlockMemory(), SCIPallocBufferArray, SCIPblkmem(), SCIPcatchEvent(), SCIPcomputeDecompStats(), SCIPcopyLimits(), SCIPcreateSol(), SCIPdebugMsg, SCIPdecompCreate(), SCIPdecompFree(), SCIPdecompGetConsLabels(), SCIPdecompGetNBlocks(), SCIPdecompGetNBorderConss(), SCIPdecompGetNBorderVars(), SCIPdecompGetVarsLabels(), SCIPdecompIsOriginal(), SCIPdecompPrintStats(), SCIPdecompUseBendersLabels(), SCIPdropEvent(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfindVar(), SCIPfree(), SCIPfreeBlockMemory, SCIPfreeBufferArray, SCIPfreeSol(), SCIPfreeTransform(), SCIPgetBestSol(), SCIPgetBoolParam(), SCIPgetConss(), SCIPgetDecomps(), SCIPgetIntParam(), SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetNConss(), SCIPgetNSols(), SCIPgetNVars(), SCIPgetOrigVars(), SCIPgetPrimalbound(), SCIPgetRealParam(), SCIPgetSolOrigObj(), SCIPgetSolVals(), SCIPgetSolvingTime(), SCIPgetStatus(), SCIPgetVars(), SCIPheurGetData(), SCIPincludeEventhdlrBasic(), SCIPisParamFixed(), SCIPisZero(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetSolVal(), SCIPsolve(), SCIPsortIntPtr(), SCIPtransformProb(), SCIPtrySolFree(), SCIPvarGetName(), Linking::slacks, TRUE, updateLambda(), and updatePartition().