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.

    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_exact.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"
     

    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, 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)
     

    Macro Definition Documentation

    ◆ HEUR_NAME

    #define HEUR_NAME   "dps"

    Definition at line 63 of file heur_dps.c.

    ◆ HEUR_DESC

    #define HEUR_DESC   "primal heuristic for decomposable MIPs"

    Definition at line 64 of file heur_dps.c.

    ◆ HEUR_DISPCHAR

    #define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_LNS

    Definition at line 65 of file heur_dps.c.

    ◆ HEUR_PRIORITY

    #define HEUR_PRIORITY   75000

    Definition at line 66 of file heur_dps.c.

    ◆ HEUR_FREQ

    #define HEUR_FREQ   -1

    Definition at line 67 of file heur_dps.c.

    ◆ HEUR_FREQOFS

    #define HEUR_FREQOFS   0

    Definition at line 68 of file heur_dps.c.

    ◆ HEUR_MAXDEPTH

    #define HEUR_MAXDEPTH   -1

    Definition at line 69 of file heur_dps.c.

    ◆ HEUR_TIMING

    Definition at line 70 of file heur_dps.c.

    ◆ HEUR_USESSUBSCIP

    #define HEUR_USESSUBSCIP   TRUE

    does the heuristic use a secondary SCIP instance?

    Definition at line 71 of file heur_dps.c.

    ◆ DEFAULT_MAXIT

    #define DEFAULT_MAXIT   50

    maximum number of iterations

    Definition at line 73 of file heur_dps.c.

    ◆ DEFAULT_PENALTY

    #define DEFAULT_PENALTY   100.0

    multiplier for absolute increase of penalty parameters

    Definition at line 74 of file heur_dps.c.

    ◆ EVENTHDLR_NAME

    #define EVENTHDLR_NAME   "Dps"

    Definition at line 77 of file heur_dps.c.

    ◆ EVENTHDLR_DESC

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

    Definition at line 78 of file heur_dps.c.

    Typedef Documentation

    ◆ BLOCKPROBLEM

    typedef struct Blockproblem BLOCKPROBLEM

    Definition at line 112 of file heur_dps.c.

    ◆ LINKING

    typedef struct Linking LINKING

    Definition at line 132 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 144 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 218 of file heur_dps.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_Real, SCIPcopyLimits(), SCIPcreate(), SCIPenableExactSolving(), SCIPgetRealParam(), SCIPincludeDefaultPlugins(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetPresolving(), SCIPsetRealParam(), 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 276 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 355 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 666 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 719 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, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetConsNVars(), SCIPgetConsVals(), SCIPgetConsVars(), SCIPisGE(), SCIPisGT(), SCIPisIntegral(), SCIPsortIntIntReal(), SCIPsortIntReal(), SCIPsortRealInt(), and SCIPvarIsIntegral().

    Referenced by initCurrent(), and updatePartition().

    ◆ initCurrent()

    static SCIP_RETCODE initCurrent ( SCIP scip,
    LINKING **  linkings,
    BLOCKPROBLEM **  blockproblem,
    SCIP_HEURTIMING  heurtiming,
    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
    heurtimingcurrent point in the node solving process
    nlinkingnumber of linking constraints
    successpointer to store whether initialization was successful

    Definition at line 880 of file heur_dps.c.

    References b, Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, Linking::currentlhs, Linking::currentrhs, FALSE, Linking::haslhs, Linking::hasrhs, Linking::linkingcons, MAX, Linking::maxactivity, MIN, Linking::minactivity, Linking::nblocks, Linking::nslacksperblock, NULL, roundPartition(), 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().

    ◆ calculateShift()

    static SCIP_RETCODE calculateShift ( SCIP scip,
    BLOCKPROBLEM **  blockproblem,
    LINKING linking,
    SCIP_Real **  shift,
    int *  nviolatedblocksrhs,
    int *  nviolatedblockslhs,
    SCIP_Bool update 
    )
    static

    calculates shift

    Parameters
    scipSCIP data structure of main scip
    blockproblemarray of blockproblem data structures
    linkingone linking data structure
    shiftpointer to store direction vector
    nviolatedblocksrhspointer to store number of blocks which violate rhs
    nviolatedblockslhspointer to store number of blocks which violate lhs
    updateshould we update the partition?

    Definition at line 1074 of file heur_dps.c.

    References Linking::blocknumbers, Blockproblem::blockscip, Linking::currentlhs, Linking::currentrhs, FALSE, Linking::haslhs, Linking::hasrhs, MAX, Linking::maxactivity, MIN, Linking::minactivity, Linking::nblocks, Linking::nslacksperblock, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetSolVal(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), Linking::slacks, and TRUE.

    Referenced by updatePartition().

    ◆ updatePartition()

    static SCIP_RETCODE updatePartition ( SCIP scip,
    LINKING **  linkings,
    BLOCKPROBLEM **  blockproblem,
    int **  nviolatedblocksrhs,
    int **  nviolatedblockslhs,
    int  nlinking,
    int  nblocks,
    int  iteration,
    SCIP_Bool oneupdate 
    )
    static

    update partition

    Parameters
    scipSCIP data structure of main scip
    linkingslinking 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
    nlinkingnumber of linking constraints
    nblocksnumber of blocks
    iterationnumber of iteration
    oneupdateis at least partition of one constraint updated?

    Definition at line 1237 of file heur_dps.c.

    References Linking::blockconss, Linking::blocknumbers, Blockproblem::blockscip, BMSclearMemoryArray, 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().

    ◆ 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 1328 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 1394 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_Bool  limits,
    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
    limitsshould strict limits be set?
    newsolpointer to store improved solution
    successpointer to store whether reoptimization was successful

    Definition at line 1514 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_BRANCHEXECLP(), and 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 1724 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 1738 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

    Definition at line 1757 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_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(), and updatePartition().