Scippy

SCIP

Solving Constraint Integer Programs

heur_padm.c File Reference

Detailed Description

PADM primal heuristic.

Author
Dieter Weninger
Katrin Halbig

Primal heuristic based on ideas published in the papers "A Decomposition Heuristic for Mixed-Integer Supply Chain Problems" by Martin Schmidt, Lars Schewe, and Dieter Weninger, and "Exploiting user-supplied Decompositions inside Heuristics" by Katrin Halbig, Adrian Göß and Dieter Weninger.

The penalty alternating direction method (PADM) heuristic is a construction heuristic which additionally needs a user decomposition with linking variables only.

PADM splits the problem into several sub-SCIPs according to the decomposition, whereby the linking variables get copied and the difference is penalized. Then the sub-SCIPs are solved on an alternating basis until they arrive at the same values of the linking variables (ADM-loop). If they don't reconcile after a couple of iterations, the penalty parameters are increased (penalty-loop) and the sub-SCIPs are solved again on an alternating basis.

Definition in file heur_padm.c.

#include <assert.h>
#include <string.h>
#include "blockmemshell/memory.h"
#include "scip/cons_linear.h"
#include "scip/debug.h"
#include "scip/heur_padm.h"
#include "scip/heuristics.h"
#include "scip/pub_cons.h"
#include "scip/pub_tree.h"
#include "scip/pub_heur.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_select.h"
#include "scip/pub_sol.h"
#include "scip/pub_var.h"
#include "scip/scipdefplugins.h"
#include "scip/scip_branch.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_dcmp.h"
#include "scip/scip_general.h"
#include "scip/scip_heur.h"
#include "scip/scip_lp.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_table.h"
#include "scip/scip_timing.h"
#include "scip/scip_tree.h"
#include "scip/scip_var.h"

Go to the source code of this file.

Data Structures

struct  Block
 
struct  set
 
struct  blockinfo
 

Macros

#define HEUR_NAME   "padm"
 
#define HEUR_DESC   "penalty alternating direction method primal heuristic"
 
#define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_LNS
 
#define HEUR_PRIORITY   70000
 
#define HEUR_FREQ   0
 
#define HEUR_FREQOFS   0
 
#define HEUR_MAXDEPTH   -1
 
#define HEUR_TIMING   SCIP_HEURTIMING_BEFORENODE | SCIP_HEURTIMING_AFTERNODE
 
#define HEUR_USESSUBSCIP   TRUE
 
#define COUPLINGSIZE   3
 
#define DEFAULT_MINNODES   50LL
 
#define DEFAULT_MAXNODES   5000LL
 
#define DEFAULT_NODEFAC   0.8
 
#define DEFAULT_ADMIT   4
 
#define DEFAULT_PENALTYIT   100
 
#define DEFAULT_GAP   2.0
 

Typedefs

typedef struct Problem PROBLEM
 
typedef struct Block BLOCK
 
typedef struct set SET
 
typedef struct blockinfo BLOCKINFO
 

Functions

static SCIP_DECL_HASHKEYEQ (indexesEqual)
 
static SCIP_DECL_HASHKEYVAL (indexesHashval)
 
static SCIP_RETCODE initBlock (PROBLEM *problem)
 
static SCIP_RETCODE freeBlock (BLOCK *block)
 
static SCIP_RETCODE initProblem (SCIP *scip, PROBLEM **problem, int nblocks)
 
static SCIP_RETCODE freeProblem (PROBLEM **problem, int nblocks)
 
static SCIP_RETCODE createSubscip (SCIP *scip, SCIP **subscip)
 
static SCIP_RETCODE copyToSubscip (SCIP *scip, SCIP *subscip, const char *name, SCIP_CONS **conss, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, int nconss, SCIP_Bool useorigprob, SCIP_Bool *success)
 
static SCIP_RETCODE blockCreateSubscip (BLOCK *block, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_CONS **conss, int nconss, SCIP_Bool useorigprob, SCIP_Bool *success)
 
static SCIP_RETCODE createAndSplitProblem (SCIP *scip, SCIP_CONS **sortedconss, int nconss, int *consssize, int nblocks, PROBLEM **problem, SCIP_Bool useorigprob, SCIP_Bool *success)
 
static SCIP_RETCODE assignLinking (SCIP *scip, SCIP_DECOMP *newdecomp, SCIP_VAR **vars, SCIP_CONS **sortedconss, int *varlabels, int *conslabels, int nvars, int nconss, int nlinkconss)
 
static SCIP_RETCODE reuseSolution (SCIP *subscip, BLOCK *block)
 
static SCIP_RETCODE reoptimize (SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *sol, SCIP_VAR **vars, int nvars, SCIP_VAR **linkvars, int nlinkvars, SCIP_SOL **newsol, SCIP_Bool *success)
 
static SCIP_RETCODE scalePenalties (PROBLEM *problem, SET *linkvartoblocks, SET *blocktolinkvars, SCIP_HASHTABLE *htable, SCIP_Real maxpenalty)
 
static SCIP_RETCODE getTimeLeft (SCIP *scip, SCIP_Real *time)
 
static SCIP_DECL_HEURCOPY (heurCopyPADM)
 
static SCIP_DECL_HEURFREE (heurFreePADM)
 
static SCIP_DECL_HEUREXEC (heurExecPADM)
 
SCIP_RETCODE SCIPincludeHeurPADM (SCIP *scip)
 

Macro Definition Documentation

◆ HEUR_NAME

#define HEUR_NAME   "padm"

Definition at line 84 of file heur_padm.c.

◆ HEUR_DESC

#define HEUR_DESC   "penalty alternating direction method primal heuristic"

Definition at line 85 of file heur_padm.c.

◆ HEUR_DISPCHAR

#define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_LNS

Definition at line 86 of file heur_padm.c.

◆ HEUR_PRIORITY

#define HEUR_PRIORITY   70000

Definition at line 87 of file heur_padm.c.

◆ HEUR_FREQ

#define HEUR_FREQ   0

Definition at line 88 of file heur_padm.c.

◆ HEUR_FREQOFS

#define HEUR_FREQOFS   0

Definition at line 89 of file heur_padm.c.

◆ HEUR_MAXDEPTH

#define HEUR_MAXDEPTH   -1

Definition at line 90 of file heur_padm.c.

◆ HEUR_TIMING

Definition at line 91 of file heur_padm.c.

◆ HEUR_USESSUBSCIP

#define HEUR_USESSUBSCIP   TRUE

does the heuristic use a secondary SCIP instance?

Definition at line 92 of file heur_padm.c.

◆ COUPLINGSIZE

#define COUPLINGSIZE   3

Definition at line 94 of file heur_padm.c.

◆ DEFAULT_MINNODES

#define DEFAULT_MINNODES   50LL

Definition at line 95 of file heur_padm.c.

◆ DEFAULT_MAXNODES

#define DEFAULT_MAXNODES   5000LL

Definition at line 96 of file heur_padm.c.

◆ DEFAULT_NODEFAC

#define DEFAULT_NODEFAC   0.8

Definition at line 97 of file heur_padm.c.

◆ DEFAULT_ADMIT

#define DEFAULT_ADMIT   4

Definition at line 98 of file heur_padm.c.

◆ DEFAULT_PENALTYIT

#define DEFAULT_PENALTYIT   100

Definition at line 99 of file heur_padm.c.

◆ DEFAULT_GAP

#define DEFAULT_GAP   2.0

Definition at line 100 of file heur_padm.c.

Typedef Documentation

◆ PROBLEM

typedef struct Problem PROBLEM

data related to one problem (see below)

Definition at line 107 of file heur_padm.c.

◆ BLOCK

typedef struct Block BLOCK

data related to one block

◆ SET

typedef struct set SET

set data structure

◆ BLOCKINFO

typedef struct blockinfo BLOCKINFO

data of one linking variable related to one block

Function Documentation

◆ SCIP_DECL_HASHKEYEQ()

static SCIP_DECL_HASHKEYEQ ( indexesEqual  )
static

returns TRUE iff both keys are equal

Definition at line 157 of file heur_padm.c.

References blockinfo::block, FALSE, blockinfo::linkvaridx, blockinfo::otherblock, and TRUE.

◆ SCIP_DECL_HASHKEYVAL()

static SCIP_DECL_HASHKEYVAL ( indexesHashval  )
static

returns the hash value of the key

Definition at line 174 of file heur_padm.c.

References blockinfo::block, blockinfo::linkvaridx, blockinfo::otherblock, SCIPhashFour, and SCIPrealHashCode().

◆ initBlock()

static SCIP_RETCODE initBlock ( PROBLEM problem)
static

initializes one block

Parameters
problemproblem structure

Definition at line 206 of file heur_padm.c.

References Block::couplingcons, Block::ncoupling, Block::nsubvars, NULL, Block::number, Block::problem, SCIP_OKAY, Block::size, Block::slacksneg, Block::slackspos, Block::subscip, and Block::subvars.

Referenced by createAndSplitProblem().

◆ freeBlock()

static SCIP_RETCODE freeBlock ( BLOCK block)
static

frees component structure

Parameters
blockblock structure

Definition at line 235 of file heur_padm.c.

References Block::ncoupling, NULL, Block::problem, SCIP_CALL, SCIP_OKAY, SCIPfree(), SCIPfreeBufferArray, Block::subscip, and Block::subvars.

Referenced by freeProblem().

◆ initProblem()

static SCIP_RETCODE initProblem ( SCIP scip,
PROBLEM **  problem,
int  nblocks 
)
static

initializes subproblem structure

Parameters
scipSCIP data structure
problempointer to problem structure
nblocksnumber of blocks

Definition at line 258 of file heur_padm.c.

References NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPdebugMessage, SCIPduplicateMemoryArray, SCIPgetProbName(), and SCIPsnprintf().

Referenced by createAndSplitProblem().

◆ freeProblem()

static SCIP_RETCODE freeProblem ( PROBLEM **  problem,
int  nblocks 
)
static

frees subproblem structure

Parameters
problempointer to problem to free
nblocksnumber of blocks in decomposition

Definition at line 288 of file heur_padm.c.

References freeBlock(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, and SCIPfreeMemoryArray.

Referenced by createAndSplitProblem(), and SCIP_DECL_HEUREXEC().

◆ createSubscip()

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

creates a sub-SCIP for the given variables and constraints

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

Definition at line 324 of file heur_padm.c.

References FALSE, 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 blockCreateSubscip().

◆ copyToSubscip()

static SCIP_RETCODE copyToSubscip ( SCIP scip,
SCIP subscip,
const char *  name,
SCIP_CONS **  conss,
SCIP_HASHMAP varmap,
SCIP_HASHMAP consmap,
int  nconss,
SCIP_Bool  useorigprob,
SCIP_Bool success 
)
static

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

Parameters
scipsource SCIP
subsciptarget SCIP
namename for copied problem
conssconstraints to copy
varmaphashmap used for the copy process of variables
consmaphashmap used for the copy process of constraints
nconssnumber of constraints to copy
useorigprobdo we use the original problem?
successpointer to store whether copying was successful

Definition at line 372 of file heur_padm.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddCons(), SCIPconsGetHdlr(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPcopyProb(), SCIPgetConsCopy(), SCIPreleaseCons(), and TRUE.

Referenced by blockCreateSubscip().

◆ blockCreateSubscip()

static SCIP_RETCODE blockCreateSubscip ( BLOCK block,
SCIP_HASHMAP varmap,
SCIP_HASHMAP consmap,
SCIP_CONS **  conss,
int  nconss,
SCIP_Bool  useorigprob,
SCIP_Bool success 
)
static

creates the subscip for a given block

Parameters
blockblock structure
varmapvariable hashmap used to improve performance
consmapconstraint hashmap used to improve performance
conssconstraints contained in this block
nconssnumber of constraints contained in this block
useorigprobdo we use the original problem?
successpointer to store whether the copying process was successful

Definition at line 433 of file heur_padm.c.

References copyToSubscip(), createSubscip(), FALSE, Block::nsubvars, NULL, Block::number, Block::problem, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMsg, SCIPfree(), SCIPgetNBinVars(), SCIPgetNIntVars(), SCIPgetNOrigBinVars(), SCIPgetNOrigIntVars(), SCIPgetNOrigVars(), SCIPgetNVars(), SCIPgetOrigVars(), SCIPsnprintf(), Block::size, Block::subscip, Block::subvars, and TRUE.

Referenced by createAndSplitProblem().

◆ createAndSplitProblem()

static SCIP_RETCODE createAndSplitProblem ( SCIP scip,
SCIP_CONS **  sortedconss,
int  nconss,
int *  consssize,
int  nblocks,
PROBLEM **  problem,
SCIP_Bool  useorigprob,
SCIP_Bool success 
)
static

creates problem structure and split it into blocks

Parameters
scipSCIP data structure
sortedconssarray of (checked) constraints sorted by blocks
nconssnumber of constraints
consssizenumber of constraints per block (and border at index 0)
nblocksnumber of blocks
problempointer to store problem structure
useorigprobdo we use the original problem?
successpointer to store whether the process was successful

Definition at line 505 of file heur_padm.c.

References b, blockCreateSubscip(), freeProblem(), initBlock(), initProblem(), NULL, SCIP_CALL, SCIP_OKAY, SCIPblkmem(), SCIPgetNVars(), SCIPhashmapCreate(), SCIPhashmapFree(), and TRUE.

Referenced by SCIP_DECL_HEUREXEC().

◆ assignLinking()

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

copies labels to newdecomp and assigns linking constraints if possible

Parameters
scipSCIP data structure
newdecompdecomposition with (partially) assigned linking constraints
varsarray of variables
sortedconsssorted array of constraints
varlabelsarray of variable labels
conslabelssorted array of constraint labels
nvarsnumber of variables
nconssnumber of constraints
nlinkconssnumber of linking constraints

Definition at line 573 of file heur_padm.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPassignDecompLinkConss(), SCIPcomputeDecompStats(), SCIPcomputeDecompVarsLabels(), SCIPdebugMsg, SCIPdecompGetConsLabels(), SCIPdecompGetVarsLabels(), SCIPdecompSetConsLabels(), SCIPdecompSetVarsLabels(), SCIPsortIntPtr(), and TRUE.

Referenced by SCIP_DECL_HEUREXEC().

◆ reuseSolution()

◆ reoptimize()

static SCIP_RETCODE reoptimize ( SCIP scip,
SCIP_HEUR heur,
SCIP_SOL sol,
SCIP_VAR **  vars,
int  nvars,
SCIP_VAR **  linkvars,
int  nlinkvars,
SCIP_SOL **  newsol,
SCIP_Bool success 
)
static

reoptimizes the heuristic solution with original objective function

Since the main algorithm of padm ignores the objective function, this method can be called to obtain better solutions. It copies the main scip, fixes the linking variables at the values of the already found solution and solves the new problem with small limits.

Parameters
scipSCIP data structure
heurpointer to heuristic
solheuristic solution
varspointer to variables
nvarsnumber of variables
linkvarspointer to linking variables
nlinkvarsnumber of linking variables
newsolpointer to store improved solution
successpointer to store whether reoptimization was successful

Definition at line 712 of file heur_padm.c.

References FALSE, NULL, SCIP_CALL, SCIP_CALL_ABORT, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_Real, SCIP_STATUS_BESTSOLLIMIT, SCIP_STATUS_OPTIMAL, SCIPallocBufferArray, SCIPblkmem(), SCIPcopyConsCompression(), SCIPcopyLimits(), SCIPcopyOrigConsCompression(), SCIPcreate(), SCIPcreateSol(), SCIPdebugMsg, SCIPfree(), SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetNOrigVars(), SCIPgetNVars(), SCIPgetRealParam(), SCIPgetSolOrigObj(), SCIPgetSolVal(), SCIPgetSolVals(), SCIPgetStatus(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPheurGetData(), SCIPheurGetTime(), SCIPinfinity(), SCIPisLT(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetPresolving(), SCIPsetRealParam(), SCIPsetSeparating(), SCIPsetSolVal(), SCIPsetSubscipsOff(), SCIPsolve(), SCIPtransformProb(), SCIPtranslateSubSol(), SCIPtrySolFree(), and TRUE.

Referenced by SCIP_DECL_HEUREXEC().

◆ scalePenalties()

static SCIP_RETCODE scalePenalties ( PROBLEM problem,
SET linkvartoblocks,
SET blocktolinkvars,
SCIP_HASHTABLE htable,
SCIP_Real  maxpenalty 
)
static

rescales the penalty parameters

A sigmoid function is a function with an "S"-shaped graph, e.g. S(x) = x/(1+|x|). In order to avoid numerical instabilities due to large penalty parameters we rescale them using the sigmoid function S(x) = (x - shift)/(flatness + |x - shift|) * (range/2) + offset. The parameters are mapped into the more controllable interval [lowestslack, range + lowestslack].

Parameters
problemblock structure
linkvartoblockslinking variable to blocks set
blocktolinkvarsblock to linking variable set
htablehashtable containing blockinfo
maxpenaltymaximum penalty parameter

Definition at line 875 of file heur_padm.c.

References b, blockinfo::block, set::indexes, blockinfo::linkvaridx, NULL, blockinfo::otherblock, REALABS, SCIP_OKAY, SCIP_Real, SCIPhashtableRetrieve(), set::size, blockinfo::slacknegobjcoeff, and blockinfo::slackposobjcoeff.

Referenced by SCIP_DECL_HEUREXEC().

◆ getTimeLeft()

static SCIP_RETCODE getTimeLeft ( SCIP scip,
SCIP_Real time 
)
static

returns the available time limit that is left

Parameters
scipSCIP data structure
timepointer to store remaining time

Definition at line 938 of file heur_padm.c.

References MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPgetRealParam(), SCIPgetSolvingTime(), SCIPinfinity(), and SCIPisInfinity().

Referenced by SCIP_DECL_HEUREXEC().

◆ SCIP_DECL_HEURCOPY()

static SCIP_DECL_HEURCOPY ( heurCopyPADM  )
static

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

Definition at line 965 of file heur_padm.c.

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

◆ SCIP_DECL_HEURFREE()

static SCIP_DECL_HEURFREE ( heurFreePADM  )
static

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

Definition at line 980 of file heur_padm.c.

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

◆ SCIP_DECL_HEUREXEC()

static SCIP_DECL_HEUREXEC ( heurExecPADM  )
static

execution method of primal heuristic

Definition at line 996 of file heur_padm.c.

References assignLinking(), b, blockinfo::block, Block::couplingcons, blockinfo::couplingCons, COUPLINGSIZE, createAndSplitProblem(), EPSEQ, FALSE, freeProblem(), getTimeLeft(), HEUR_NAME, set::indexes, blockinfo::linkvar, blockinfo::linkvaridx, blockinfo::linkvarval, MAX, nnodes, NULL, SCIP_Cons::original, SCIP_Decomp::original, blockinfo::otherblock, REALABS, reoptimize(), reuseSolution(), scalePenalties(), SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_DECOMP_LINKCONS, SCIP_DECOMP_LINKVAR, SCIP_DEFAULT_EPSILON, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_FOUNDSOL, SCIP_HEURTIMING_AFTERNODE, SCIP_HEURTIMING_BEFORENODE, SCIP_Longint, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_REAL_MIN, SCIP_STATUS_GAPLIMIT, SCIP_STATUS_NODELIMIT, SCIP_STATUS_OPTIMAL, SCIP_STATUS_TIMELIMIT, SCIP_STATUS_UNBOUNDED, SCIP_VARTYPE_CONTINUOUS, SCIPaddCons(), SCIPaddVar(), SCIPallocBufferArray, SCIPblkmem(), SCIPceil(), SCIPchgLhsLinear(), SCIPchgRhsLinear(), SCIPchgVarObj(), SCIPcomputeDecompStats(), SCIPcopyLimits(), SCIPcreateConsBasicLinear(), SCIPcreateDecomp(), SCIPcreateSol(), SCIPcreateVarBasic(), SCIPdebugMsg, SCIPdecompGetConsLabels(), SCIPdecompGetConssSize(), SCIPdecompGetNBlocks(), SCIPdecompGetNBorderConss(), SCIPdecompGetNBorderVars(), SCIPdecompGetVarsLabels(), SCIPdecompUseBendersLabels(), SCIPdoNotMultaggr(), SCIPduplicateBufferArray, SCIPfindVar(), SCIPfreeBufferArray, SCIPfreeDecomp(), SCIPfreeSol(), SCIPfreeTransform(), SCIPgetBestSol(), SCIPgetBoolParam(), SCIPgetConss(), SCIPgetDecomps(), SCIPgetIntParam(), SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetNConss(), SCIPgetNNodes(), SCIPgetNOrigConss(), SCIPgetNOrigVars(), SCIPgetNSols(), SCIPgetNVars(), SCIPgetOrigConss(), SCIPgetOrigVars(), SCIPgetRealParam(), SCIPgetSolOrigObj(), SCIPgetSolVal(), SCIPgetSolVals(), SCIPgetStatus(), SCIPgetVars(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPhashtableGetNElements(), SCIPhashtableRetrieve(), SCIPhashtableSafeInsert(), SCIPheurGetData(), SCIPinfinity(), SCIPisEQ(), SCIPisGT(), SCIPisInfinity(), SCIPisParamFixed(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPround(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetRealParam(), SCIPsetSolVal(), SCIPsnprintf(), SCIPsolve(), SCIPsortIntPtr(), SCIPtrySolFree(), SCIPvarGetLbLocal(), SCIPvarGetLbOriginal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPwarningMessage(), SCIPwriteOrigProblem(), SCIPwriteTransProblem(), set::size, blockinfo::slacknegobjcoeff, blockinfo::slacknegvar, blockinfo::slackposobjcoeff, blockinfo::slackposvar, Block::slacksneg, Block::slackspos, Block::subscip, and TRUE.