dynamic partition search
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.
A detailed description can be found in K. Halbig, A. Göß and D. Weninger (2023). Exploiting user-supplied Decompositions inside Heuristics. https://optimization-online.org/?p=23386
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 | SCIP_HEURTIMING_AFTERNODE |
#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" |
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, SCIP_HEURTIMING heurtiming, int nlinking, SCIP_Bool *success) |
static SCIP_RETCODE | calculateShift (SCIP *scip, BLOCKPROBLEM **blockproblem, LINKING *linking, SCIP_Real **shift, int *nviolatedblocksrhs, int *nviolatedblockslhs, SCIP_Bool *update) |
static SCIP_RETCODE | updatePartition (SCIP *scip, LINKING **linkings, BLOCKPROBLEM **blockproblem, int **nviolatedblocksrhs, int **nviolatedblockslhs, int nlinking, int nblocks, int iteration, SCIP_Bool *oneupdate) |
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_Bool limits, 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) |
#define HEUR_NAME "dps" |
Definition at line 62 of file heur_dps.c.
#define HEUR_DESC "primal heuristic for decomposable MIPs" |
Definition at line 63 of file heur_dps.c.
#define HEUR_DISPCHAR SCIP_HEURDISPCHAR_LNS |
Definition at line 64 of file heur_dps.c.
#define HEUR_PRIORITY 75000 |
Definition at line 65 of file heur_dps.c.
#define HEUR_FREQ -1 |
Definition at line 66 of file heur_dps.c.
#define HEUR_FREQOFS 0 |
Definition at line 67 of file heur_dps.c.
#define HEUR_MAXDEPTH -1 |
Definition at line 68 of file heur_dps.c.
#define HEUR_TIMING SCIP_HEURTIMING_BEFORENODE | SCIP_HEURTIMING_AFTERNODE |
Definition at line 69 of file heur_dps.c.
#define HEUR_USESSUBSCIP TRUE |
does the heuristic use a secondary SCIP instance?
Definition at line 70 of file heur_dps.c.
#define DEFAULT_MAXIT 50 |
maximum number of iterations
Definition at line 72 of file heur_dps.c.
Referenced by SCIPincludeHeurDps().
#define DEFAULT_PENALTY 100.0 |
multiplier for absolute increase of penalty parameters
Definition at line 73 of file heur_dps.c.
Referenced by SCIPincludeHeurDps().
#define EVENTHDLR_NAME "Dps" |
Definition at line 76 of file heur_dps.c.
#define EVENTHDLR_DESC "event handler for " HEUR_NAME " heuristic" |
Definition at line 77 of file heur_dps.c.
typedef struct Blockproblem BLOCKPROBLEM |
Definition at line 111 of file heur_dps.c.
Definition at line 131 of file heur_dps.c.
|
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.
scip | SCIP data structure |
newdecomp | decomposition with assigned linking variables |
vars | sorted array of variables |
conss | sorted array of constraints |
varlabels | sorted array of variable labels |
conslabels | sorted array of constraint labels |
nvars | number of variables |
nconss | number of constraints |
nlinkvars | number of linking variables |
Definition at line 143 of file heur_dps.c.
References assert(), NULL, nvars, SCIP_CALL, SCIP_DECOMP_LINKVAR, SCIP_OKAY, SCIPcomputeDecompConsLabels(), SCIPcomputeDecompStats(), SCIPdebugMsg, SCIPdecompGetConsLabels(), SCIPdecompGetNBorderVars(), SCIPdecompGetVarsLabels(), SCIPdecompSetConsLabels(), SCIPdecompSetVarsLabels(), SCIPsortIntPtr(), TRUE, and vars.
Referenced by SCIP_DECL_HEUREXEC().
|
static |
creates a sub-SCIP and sets parameters
scip | main SCIP data structure |
subscip | pointer to store created sub-SCIP |
Definition at line 217 of file heur_dps.c.
References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_Real, SCIPcopyLimits(), SCIPcreate(), SCIPgetRealParam(), SCIPincludeDefaultPlugins(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetPresolving(), SCIPsetRealParam(), SCIPsetSeparating(), SCIPsetSubscipsOff(), and TRUE.
Referenced by SCIP_DECL_HEUREXEC().
|
static |
copies the given variables and constraints to the given sub-SCIP
scip | source SCIP |
subscip | target SCIP |
name | name for copied problem |
vars | array of variables to copy |
conss | array of constraints to copy |
varsmap | hashmap for copied variables |
conssmap | hashmap for copied constraints |
nvars | number of variables to copy |
nconss | number of constraints to copy |
success | was copying successful? |
Definition at line 270 of file heur_dps.c.
References assert(), FALSE, i, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPABORT, SCIPaddCons(), SCIPconsGetHdlr(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPcreateProb(), SCIPdebugMsg, SCIPgetConsCopy(), SCIPgetNOrigVars(), SCIPgetVarCopy(), SCIPreleaseCons(), SCIPwarningMessage(), and vars.
Referenced by createBlockproblem().
|
static |
creates the subscip for a given block
scip | SCIP data structure |
blockproblem | blockproblem that should be created |
linkings | linkings that will be (partially) initialized |
conss | sorted array of constraints of this block |
vars | sorted array of variables of this block |
nconss | number of constraints of this block |
nvars | number of variables of this block |
linkingconss | linking constraints in the original problem |
nlinking | number of linking constraints in the original problem |
blocknumber | number of block that should be created |
success | pointer to store whether creation was successful |
Definition at line 349 of file heur_dps.c.
References assert(), Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, c, 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, nvars, 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, TRUE, and vars.
Referenced by createAndSplitProblem().
|
static |
creates data structures and splits problem into blocks
scip | SCIP data structure |
heurdata | heuristic data |
decomp | decomposition data structure |
blockproblem | array of blockproblem data structures |
linkings | array of linking data structures |
vars | sorted array of variables |
conss | sorted array of constraints |
success | pointer to store whether splitting was successful |
Definition at line 660 of file heur_dps.c.
References assert(), createBlockproblem(), heurdata, i, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPdecompGetConssSize(), SCIPdecompGetVarsSize(), SCIPfreeBufferArray, and vars.
Referenced by SCIP_DECL_HEUREXEC().
|
static |
rounds partition for one linking constraint to integer value if variables and coefficients are integer
changes only currentrhs/currentlhs
scip | SCIP data structure |
linking | one linking data structure |
blockproblem | array of blockproblem data structures |
roundbyrhs | round by right hand side? |
Definition at line 713 of file heur_dps.c.
References assert(), b, Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, Linking::currentlhs, Linking::currentrhs, Linking::haslhs, Linking::hasrhs, i, 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().
|
static |
calculates initial partition and sets rhs/lhs in blockproblems
scip | SCIP data structure of main scip |
linkings | array of linking data structures |
blockproblem | array of blockproblem data structures |
heurtiming | current point in the node solving process |
nlinking | number of linking constraints |
success | pointer to store whether initialization was successful |
Definition at line 874 of file heur_dps.c.
References assert(), b, Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, c, Linking::currentlhs, Linking::currentrhs, FALSE, Linking::haslhs, Linking::hasrhs, i, Linking::linkingcons, MAX, Linking::maxactivity, MIN, Linking::minactivity, Linking::nblocks, Linking::nslacksperblock, NULL, roundPartition(), SCIP_Bool, SCIP_CALL, SCIP_HEURTIMING_AFTERNODE, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPchgLhsLinear(), SCIPchgRhsLinear(), SCIPconsGetLhs(), SCIPconsGetName(), SCIPconsGetRhs(), SCIPconsIsChecked(), SCIPdebugMsg, SCIPfindVar(), SCIPfreeBufferArray, SCIPgetConsNVars(), SCIPgetConsVals(), SCIPgetConsVars(), SCIPisEQ(), SCIPisGE(), SCIPisLE(), SCIPisZero(), SCIPvarGetLPSol(), and SCIPvarGetName().
Referenced by SCIP_DECL_HEUREXEC().
|
static |
calculates shift
scip | SCIP data structure of main scip |
blockproblem | array of blockproblem data structures |
linking | one linking data structure |
shift | pointer to store direction vector |
nviolatedblocksrhs | pointer to store number of blocks which violate rhs |
nviolatedblockslhs | pointer to store number of blocks which violate lhs |
update | should we update the partition? |
Definition at line 1064 of file heur_dps.c.
References assert(), Linking::blocknumbers, Blockproblem::blockscip, Linking::currentlhs, Linking::currentrhs, FALSE, Linking::haslhs, Linking::hasrhs, MAX, Linking::maxactivity, MIN, Linking::minactivity, Linking::nblocks, Linking::nslacksperblock, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetSolVal(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), Linking::slacks, and TRUE.
Referenced by updatePartition().
|
static |
update partition
scip | SCIP data structure of main scip |
linkings | linking data structure |
blockproblem | array of blockproblem data structures |
nviolatedblocksrhs | pointer to store number of blocks which violate rhs |
nviolatedblockslhs | pointer to store number of blocks which violate lhs |
nlinking | number of linking constraints |
nblocks | number of blocks |
iteration | number of iteration |
oneupdate | is at least partition of one constraint updated? |
Definition at line 1227 of file heur_dps.c.
References assert(), Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, BMSclearMemoryArray, c, calculateShift(), Linking::currentlhs, Linking::currentrhs, Linking::haslhs, Linking::hasrhs, Linking::nblocks, NULL, roundPartition(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPchgLhsLinear(), SCIPchgRhsLinear(), SCIPfreeBufferArray, SCIPisFeasZero(), and TRUE.
Referenced by SCIP_DECL_HEUREXEC().
|
static |
update penalty parameters lambda
if a linking constraint is violated two times in succession, the corresponding penalty parameter is increased in each block
scip | SCIP data structure |
heurdata | heuristic data |
linkings | array of linking data structures |
blockproblem | array of blockproblem data structures |
nviolatedblocksrhs | number of blocks which violate rhs |
nviolatedblockslhs | number of blocks which violate lhs |
nlinking | number of linking constraints |
Definition at line 1318 of file heur_dps.c.
References assert(), b, Linking::blocknumbers, Blockproblem::blockscip, c, Linking::haslhs, Linking::hasrhs, heurdata, Linking::lastviolations, Linking::nblocks, Linking::nslacksperblock, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPchgVarObj(), SCIPvarGetObj(), and Linking::slacks.
Referenced by SCIP_DECL_HEUREXEC().
|
static |
computes feasible solution from last stored solution for each block and adds it to the solution storage
linkings | array of linking data structures |
blockproblem | array of blockproblem data structures |
nblocks | number of blocks |
Definition at line 1384 of file heur_dps.c.
References assert(), b, Linking::blocknumbers, Blockproblem::blockscip, c, Linking::haslhs, Linking::hasrhs, i, Blockproblem::linkingindices, MAX, Linking::nblocks, Blockproblem::nlinking, NULL, nvars, 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(), Linking::slacks, and sol.
Referenced by SCIP_DECL_HEUREXEC().
|
static |
reoptimizes the heuristic solution with original objective function
scip | SCIP data structure |
heur | pointer to heuristic |
sol | heuristic solution |
blockproblem | array of blockproblem data structures |
nblocks | number of blockproblems |
limits | should strict limits be set? |
newsol | pointer to store improved solution |
success | pointer to store whether reoptimization was successful |
Definition at line 1504 of file heur_dps.c.
References assert(), b, Blockproblem::blockscip, FALSE, Linking::nblocks, Blockproblem::nblockvars, NULL, nvars, 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(), sol, and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP(), and SCIP_DECL_HEUREXEC().
|
static |
Definition at line 1688 of file heur_dps.c.
References assert(), EVENTHDLR_NAME, NULL, SCIP_CALL, SCIP_EVENTTYPE_LPSOLVED, SCIP_OKAY, SCIPdebugMsg, SCIPeventGetType(), SCIPeventhdlrGetName(), SCIPgetDualbound(), SCIPgetNSols(), SCIPinterruptSolve(), and SCIPisFeasGT().
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 1714 of file heur_dps.c.
References assert(), HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurDps().
|
static |
destructor of primal heuristic to free user data (called when SCIP is exiting)
Definition at line 1728 of file heur_dps.c.
References assert(), heurdata, NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPheurGetData(), and SCIPheurSetData().
|
static |
execution method of primal heuristic
Definition at line 1747 of file heur_dps.c.
References assert(), assignLinking(), b, Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, BMSclearMemoryArray, c, createAndSplitProblem(), createSubscip(), Linking::currentlhs, Linking::currentrhs, EVENTHDLR_DESC, EVENTHDLR_NAME, FALSE, Linking::haslhs, Linking::hasrhs, HEUR_NAME, heurdata, initCurrent(), Linking::lastviolations, Linking::linkingcons, Linking::maxactivity, Linking::minactivity, Linking::nblocks, Blockproblem::nblockvars, Blockproblem::nlinking, Linking::nslacks, Linking::nslacksperblock, Blockproblem::nslackvars, NULL, nvars, reoptimize(), result, reuseSolution(), SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_DECOMP_LINKCONS, SCIP_DECOMP_LINKVAR, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_EVENTTYPE_LPSOLVED, SCIP_FOUNDSOL, SCIP_HEURTIMING_AFTERNODE, SCIP_HEURTIMING_BEFORENODE, 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(), SCIPheurGetNCalls(), SCIPincludeEventhdlrBasic(), SCIPisParamFixed(), SCIPisZero(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetSolVal(), SCIPsolve(), SCIPsortIntPtr(), SCIPtransformProb(), SCIPtrySolFree(), SCIPvarGetName(), Linking::slacks, TRUE, updateLambda(), updatePartition(), and vars.