Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    Adaptive large neighborhood search heuristic that orchestrates popular LNS heuristics.

    Author
    Gregor Hendel

    Definition in file heur_alns.c.

    #include "blockmemshell/memory.h"
    #include "scip/cons_linear.h"
    #include "scip/heur_alns.h"
    #include "scip/heuristics.h"
    #include "scip/pub_bandit_epsgreedy.h"
    #include "scip/pub_bandit_exp3.h"
    #include "scip/pub_bandit_exp3ix.h"
    #include "scip/pub_bandit.h"
    #include "scip/pub_bandit_ucb.h"
    #include "scip/pub_event.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/scip_bandit.h"
    #include "scip/scip_branch.h"
    #include "scip/scip_cons.h"
    #include "scip/scip_copy.h"
    #include "scip/scip_event.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"
    #include <string.h>

    Go to the source code of this file.

    Data Structures

    struct  NH_Stats
     
    struct  NH_FixingRate
     
    struct  Nh
     
    struct  data_mutation
     
    struct  data_crossover
     
    struct  data_dins
     
    struct  data_trustregion
     
    struct  SolveLimits
     
    struct  VarPrio
     

    Macros

    #define HEUR_NAME   "alns"
     
    #define HEUR_DESC   "Large neighborhood search heuristic that orchestrates the popular neighborhoods Local Branching, RINS, RENS, DINS etc."
     
    #define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_LNS
     
    #define HEUR_PRIORITY   -1100500
     
    #define HEUR_FREQ   20
     
    #define HEUR_FREQOFS   0
     
    #define HEUR_MAXDEPTH   -1
     
    #define HEUR_TIMING   SCIP_HEURTIMING_AFTERNODE | SCIP_HEURTIMING_DURINGLPLOOP
     
    #define HEUR_USESSUBSCIP   TRUE
     
    #define NNEIGHBORHOODS   9
     
    #define DEFAULT_SHOWNBSTATS   FALSE
     
    #define DEFAULT_NODESQUOT   0.1
     
    #define DEFAULT_NODESQUOTMIN   0.0
     
    #define DEFAULT_NODESOFFSET   500LL
     
    #define DEFAULT_NSOLSLIM   3
     
    #define DEFAULT_MINNODES   50LL
     
    #define DEFAULT_MAXNODES   5000LL
     
    #define DEFAULT_WAITINGNODES   25LL
     
    #define DEFAULT_TARGETNODEFACTOR   1.05
     
    #define LRATEMIN   0.01
     
    #define LPLIMFAC   4.0
     
    #define DEFAULT_INITDURINGROOT   FALSE
     
    #define DEFAULT_MAXCALLSSAMESOL   -1
     
    #define DEFAULT_MINIMPROVELOW   0.01
     
    #define DEFAULT_MINIMPROVEHIGH   0.01
     
    #define MINIMPROVEFAC   1.5
     
    #define DEFAULT_STARTMINIMPROVE   0.01
     
    #define DEFAULT_ADJUSTMINIMPROVE   FALSE
     
    #define DEFAULT_ADJUSTTARGETNODES   TRUE
     
    #define DEFAULT_BESTSOLWEIGHT   1
     
    #define DEFAULT_BANDITALGO   'i'
     
    #define DEFAULT_REWARDCONTROL   0.8
     
    #define DEFAULT_SCALEBYEFFORT   TRUE
     
    #define DEFAULT_RESETWEIGHTS   TRUE
     
    #define DEFAULT_SUBSCIPRANDSEEDS   FALSE
     
    #define DEFAULT_REWARDBASELINE   0.5
     
    #define DEFAULT_FIXTOL   0.1
     
    #define DEFAULT_UNFIXTOL   0.1
     
    #define DEFAULT_USELOCALREDCOST   FALSE
     
    #define DEFAULT_BETA   0.0
     
    #define DEFAULT_EPS   0.4685844
     
    #define DEFAULT_ALPHA   0.0016
     
    #define DEFAULT_GAMMA   0.07041455
     
    #define DEFAULT_USEREDCOST   TRUE
     
    #define DEFAULT_USEPSCOST   TRUE
     
    #define DEFAULT_USEDISTANCES   TRUE
     
    #define DEFAULT_DOMOREFIXINGS   TRUE
     
    #define DEFAULT_ADJUSTFIXINGRATE   TRUE
     
    #define FIXINGRATE_DECAY   0.75
     
    #define FIXINGRATE_STARTINC   0.2
     
    #define DEFAULT_USESUBSCIPHEURS   FALSE
     
    #define DEFAULT_COPYCUTS   FALSE
     
    #define DEFAULT_REWARDFILENAME   "-"
     
    #define DEFAULT_SEED   113
     
    #define MUTATIONSEED   121
     
    #define CROSSOVERSEED   321
     
    #define DEFAULT_MINFIXINGRATE_RENS   0.3
     
    #define DEFAULT_MAXFIXINGRATE_RENS   0.9
     
    #define DEFAULT_ACTIVE_RENS   TRUE
     
    #define DEFAULT_PRIORITY_RENS   1.0
     
    #define DEFAULT_MINFIXINGRATE_RINS   0.3
     
    #define DEFAULT_MAXFIXINGRATE_RINS   0.9
     
    #define DEFAULT_ACTIVE_RINS   TRUE
     
    #define DEFAULT_PRIORITY_RINS   1.0
     
    #define DEFAULT_MINFIXINGRATE_MUTATION   0.3
     
    #define DEFAULT_MAXFIXINGRATE_MUTATION   0.9
     
    #define DEFAULT_ACTIVE_MUTATION   TRUE
     
    #define DEFAULT_PRIORITY_MUTATION   1.0
     
    #define DEFAULT_MINFIXINGRATE_LOCALBRANCHING   0.3
     
    #define DEFAULT_MAXFIXINGRATE_LOCALBRANCHING   0.9
     
    #define DEFAULT_ACTIVE_LOCALBRANCHING   TRUE
     
    #define DEFAULT_PRIORITY_LOCALBRANCHING   1.0
     
    #define DEFAULT_MINFIXINGRATE_PROXIMITY   0.3
     
    #define DEFAULT_MAXFIXINGRATE_PROXIMITY   0.9
     
    #define DEFAULT_ACTIVE_PROXIMITY   TRUE
     
    #define DEFAULT_PRIORITY_PROXIMITY   1.0
     
    #define DEFAULT_MINFIXINGRATE_CROSSOVER   0.3
     
    #define DEFAULT_MAXFIXINGRATE_CROSSOVER   0.9
     
    #define DEFAULT_ACTIVE_CROSSOVER   TRUE
     
    #define DEFAULT_PRIORITY_CROSSOVER   1.0
     
    #define DEFAULT_MINFIXINGRATE_ZEROOBJECTIVE   0.3
     
    #define DEFAULT_MAXFIXINGRATE_ZEROOBJECTIVE   0.9
     
    #define DEFAULT_ACTIVE_ZEROOBJECTIVE   TRUE
     
    #define DEFAULT_PRIORITY_ZEROOBJECTIVE   1.0
     
    #define DEFAULT_MINFIXINGRATE_DINS   0.3
     
    #define DEFAULT_MAXFIXINGRATE_DINS   0.9
     
    #define DEFAULT_ACTIVE_DINS   TRUE
     
    #define DEFAULT_PRIORITY_DINS   1.0
     
    #define DEFAULT_MINFIXINGRATE_TRUSTREGION   0.3
     
    #define DEFAULT_MAXFIXINGRATE_TRUSTREGION   0.9
     
    #define DEFAULT_ACTIVE_TRUSTREGION   FALSE
     
    #define DEFAULT_PRIORITY_TRUSTREGION   1.0
     
    #define DEFAULT_NSOLS_CROSSOVER   2
     
    #define DEFAULT_NPOOLSOLS_DINS   5
     
    #define DEFAULT_VIOLPENALTY_TRUSTREGION   100.0
     
    #define EVENTHDLR_NAME   "Alns"
     
    #define EVENTHDLR_DESC   "LP event handler for " HEUR_NAME " heuristic"
     
    #define SCIP_EVENTTYPE_ALNS   (SCIP_EVENTTYPE_LPSOLVED | SCIP_EVENTTYPE_SOLFOUND | SCIP_EVENTTYPE_BESTSOLFOUND)
     
    #define TABLE_NAME_NEIGHBORHOOD   "neighborhood"
     
    #define TABLE_DESC_NEIGHBORHOOD   "ALNS neighborhood statistics"
     
    #define TABLE_POSITION_NEIGHBORHOOD   12500
     
    #define TABLE_EARLIEST_STAGE_NEIGHBORHOOD   SCIP_STAGE_TRANSFORMED
     
    #define DECL_VARFIXINGS(x)
     
    #define DECL_CHANGESUBSCIP(x)
     
    #define DECL_NHINIT(x)
     
    #define DECL_NHEXIT(x)
     
    #define DECL_NHFREE(x)
     
    #define DECL_NHREFSOL(x)
     
    #define DECL_NHDEACTIVATE(x)
     
    #define NHISTENTRIES   7
     

    Typedefs

    typedef struct data_crossover DATA_CROSSOVER
     
    typedef struct data_mutation DATA_MUTATION
     
    typedef struct data_dins DATA_DINS
     
    typedef struct data_trustregion DATA_TRUSTREGION
     
    typedef struct NH_FixingRate NH_FIXINGRATE
     
    typedef struct NH_Stats NH_STATS
     
    typedef struct Nh NH
     
    typedef struct VarPrio VARPRIO
     
    typedef enum HistIndex HISTINDEX
     
    typedef struct SolveLimits SOLVELIMITS
     

    Enumerations

    enum  RewardType {
      REWARDTYPE_TOTAL = 0 ,
      REWARDTYPE_BESTSOL = 1 ,
      REWARDTYPE_CLOSEDGAP = 2 ,
      REWARDTYPE_NOSOLPENALTY = 3 ,
      NREWARDTYPES = 4
    }
     
    enum  HistIndex {
      HIDX_OPT = 0 ,
      HIDX_USR = 1 ,
      HIDX_NODELIM = 2 ,
      HIDX_STALLNODE = 3 ,
      HIDX_INFEAS = 4 ,
      HIDX_SOLLIM = 5 ,
      HIDX_OTHER = 6 ,
      HIDX_OPT = 0 ,
      HIDX_USR = 1 ,
      HIDX_NODELIM = 2 ,
      HIDX_STALLNODE = 3 ,
      HIDX_INFEAS = 4 ,
      HIDX_SOLLIM = 5 ,
      HIDX_OTHER = 6
    }
     

    Functions

    static SCIP_RETCODE resetFixingRate (SCIP *scip, NH_FIXINGRATE *fixingrate)
     
    static void resetCurrentNeighborhood (SCIP_HEURDATA *heurdata)
     
    static void updateFixingRateIncrement (NH_FIXINGRATE *fx)
     
    static void increaseFixingRate (NH_FIXINGRATE *fx)
     
    static void decreaseFixingRate (NH_FIXINGRATE *fx)
     
    static void updateFixingRate (NH *neighborhood, SCIP_STATUS subscipstatus, NH_STATS *runstats)
     
    static void increaseTargetNodeLimit (SCIP_HEURDATA *heurdata)
     
    static void resetTargetNodeLimit (SCIP_HEURDATA *heurdata)
     
    static void updateTargetNodeLimit (SCIP_HEURDATA *heurdata, NH_STATS *runstats, SCIP_STATUS subscipstatus)
     
    static void resetMinimumImprovement (SCIP_HEURDATA *heurdata)
     
    static void increaseMinimumImprovement (SCIP_HEURDATA *heurdata)
     
    static void decreaseMinimumImprovement (SCIP_HEURDATA *heurdata)
     
    static void updateMinimumImprovement (SCIP_HEURDATA *heurdata, SCIP_STATUS subscipstatus, NH_STATS *runstats)
     
    static SCIP_RETCODE neighborhoodStatsReset (SCIP *scip, NH_STATS *stats)
     
    static SCIP_RETCODE alnsIncludeNeighborhood (SCIP *scip, SCIP_HEURDATA *heurdata, NH **neighborhood, const char *name, SCIP_Real minfixingrate, SCIP_Real maxfixingrate, SCIP_Bool active, SCIP_Real priority, DECL_VARFIXINGS((*varfixings)), DECL_CHANGESUBSCIP((*changesubscip)), DECL_NHINIT((*nhinit)), DECL_NHEXIT((*nhexit)), DECL_NHFREE((*nhfree)), DECL_NHREFSOL((*nhrefsol)), DECL_NHDEACTIVATE((*nhdeactivate)))
     
    static SCIP_RETCODE alnsFreeNeighborhood (SCIP *scip, NH **neighborhood)
     
    static SCIP_RETCODE neighborhoodInit (SCIP *scip, NH *neighborhood)
     
    static SCIP_RETCODE neighborhoodExit (SCIP *scip, NH *neighborhood)
     
    static SCIP_RETCODE transferSolution (SCIP *subscip, SCIP_EVENTDATA *eventdata)
     
    static SCIP_DECL_EVENTEXEC (eventExecAlns)
     
    static void initRunStats (SCIP *scip, NH_STATS *stats)
     
    static void updateRunStats (NH_STATS *stats, SCIP *subscip)
     
    static int getHistIndex (SCIP_STATUS subscipstatus)
     
    static void printNeighborhoodStatistics (SCIP *scip, SCIP_HEURDATA *heurdata, FILE *file)
     
    static void updateNeighborhoodStats (NH_STATS *runstats, NH *neighborhood, SCIP_STATUS subscipstatus)
     
    static SCIP_DECL_SORTINDCOMP (sortIndCompAlns)
     
    static SCIP_Real getVariableRedcostScore (SCIP *scip, SCIP_VAR *var, SCIP_Real refsolval, SCIP_Bool uselocalredcost)
     
    static SCIP_Real getVariablePscostScore (SCIP *scip, SCIP_VAR *var, SCIP_Real refsolval, SCIP_Bool uselocallpsol)
     
    static void tryAdd2variableBuffer (SCIP *scip, SCIP_VAR *var, SCIP_Real val, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings, SCIP_Bool integer)
     
    static SCIP_RETCODE neighborhoodGetRefsol (SCIP *scip, NH *neighborhood, SCIP_SOL **solptr)
     
    static SCIP_RETCODE alnsFixMoreVariables (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_SOL *refsol, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings, int ntargetfixings, SCIP_Bool *success)
     
    static SCIP_RETCODE createBandit (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_Real *priorities, unsigned int initseed)
     
    static SCIP_DECL_HEURCOPY (heurCopyAlns)
     
    static SCIP_RETCODE alnsUnfixVariables (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings, int ntargetfixings, SCIP_Bool *success)
     
    static SCIP_RETCODE neighborhoodFixVariables (SCIP *scip, SCIP_HEURDATA *heurdata, NH *neighborhood, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings, SCIP_RESULT *result)
     
    static SCIP_RETCODE neighborhoodChangeSubscip (SCIP *sourcescip, SCIP *targetscip, NH *neighborhood, SCIP_VAR **targetvars, int *ndomchgs, int *nchgobjs, int *naddedconss, SCIP_Bool *success)
     
    static SCIP_RETCODE setLimits (SCIP *subscip, SOLVELIMITS *solvelimits)
     
    static SCIP_RETCODE determineLimits (SCIP *scip, SCIP_HEUR *heur, SOLVELIMITS *solvelimits, SCIP_Bool *runagain)
     
    static SCIP_BANDITgetBandit (SCIP_HEURDATA *heurdata)
     
    static SCIP_RETCODE selectNeighborhood (SCIP *scip, SCIP_HEURDATA *heurdata, int *neighborhoodidx)
     
    static SCIP_RETCODE getReward (SCIP *scip, SCIP_HEURDATA *heurdata, NH_STATS *runstats, SCIP_Real *rewardptr)
     
    static SCIP_RETCODE updateBanditAlgorithm (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_Real reward, int neighborhoodidx)
     
    static SCIP_RETCODE setupSubScip (SCIP *scip, SCIP *subscip, SCIP_VAR **subvars, SOLVELIMITS *solvelimits, SCIP_HEUR *heur, SCIP_Bool objchgd)
     
    static SCIP_DECL_HEUREXEC (heurExecAlns)
     
    static DECL_VARFIXINGS (varFixingsRens)
     
    static DECL_CHANGESUBSCIP (changeSubscipRens)
     
    static SCIP_RETCODE fixMatchingSolutionValues (SCIP *scip, SCIP_SOL **sols, int nsols, SCIP_VAR **vars, int nvars, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings)
     
    static DECL_VARFIXINGS (varFixingsRins)
     
    static DECL_NHINIT (nhInitCrossover)
     
    static DECL_NHEXIT (nhExitCrossover)
     
    static DECL_NHFREE (nhFreeCrossover)
     
    static DECL_VARFIXINGS (varFixingsCrossover)
     
    static DECL_NHREFSOL (nhRefsolCrossover)
     
    static DECL_NHINIT (nhInitMutation)
     
    static DECL_NHEXIT (nhExitMutation)
     
    static DECL_VARFIXINGS (varFixingsMutation)
     
    static SCIP_RETCODE addLocalBranchingConstraint (SCIP *sourcescip, SCIP *targetscip, SCIP_VAR **subvars, int distance, SCIP_Bool *success, int *naddedconss)
     
    static DECL_CHANGESUBSCIP (changeSubscipLocalbranching)
     
    static DECL_CHANGESUBSCIP (changeSubscipProximity)
     
    static DECL_CHANGESUBSCIP (changeSubscipZeroobjective)
     
    static void computeIntegerVariableBoundsDins (SCIP *scip, SCIP_VAR *var, SCIP_Real *lbptr, SCIP_Real *ubptr)
     
    static DECL_VARFIXINGS (varFixingsDins)
     
    static DECL_CHANGESUBSCIP (changeSubscipDins)
     
    static DECL_NHFREE (nhFreeDins)
     
    static DECL_NHFREE (nhFreeTrustregion)
     
    static DECL_CHANGESUBSCIP (changeSubscipTrustregion)
     
    static DECL_NHREFSOL (nhRefsolIncumbent)
     
    static DECL_NHDEACTIVATE (nhDeactivateDiscreteVars)
     
    static DECL_NHDEACTIVATE (nhDeactivateBinVars)
     
    static DECL_NHDEACTIVATE (nhDeactivateObjVars)
     
    static SCIP_RETCODE includeNeighborhoods (SCIP *scip, SCIP_HEURDATA *heurdata)
     
    static SCIP_DECL_HEURINIT (heurInitAlns)
     
    static SCIP_DECL_HEURINITSOL (heurInitsolAlns)
     
    static SCIP_DECL_HEUREXIT (heurExitAlns)
     
    static SCIP_DECL_HEURFREE (heurFreeAlns)
     
    static SCIP_DECL_TABLEOUTPUT (tableOutputNeighborhood)
     
    SCIP_RETCODE SCIPincludeHeurAlns (SCIP *scip)
     

    Macro Definition Documentation

    ◆ HEUR_NAME

    #define HEUR_NAME   "alns"

    Definition at line 73 of file heur_alns.c.

    ◆ HEUR_DESC

    #define HEUR_DESC   "Large neighborhood search heuristic that orchestrates the popular neighborhoods Local Branching, RINS, RENS, DINS etc."

    Definition at line 74 of file heur_alns.c.

    ◆ HEUR_DISPCHAR

    #define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_LNS

    Definition at line 75 of file heur_alns.c.

    ◆ HEUR_PRIORITY

    #define HEUR_PRIORITY   -1100500

    Definition at line 76 of file heur_alns.c.

    ◆ HEUR_FREQ

    #define HEUR_FREQ   20

    Definition at line 77 of file heur_alns.c.

    ◆ HEUR_FREQOFS

    #define HEUR_FREQOFS   0

    Definition at line 78 of file heur_alns.c.

    ◆ HEUR_MAXDEPTH

    #define HEUR_MAXDEPTH   -1

    Definition at line 79 of file heur_alns.c.

    ◆ HEUR_TIMING

    Definition at line 80 of file heur_alns.c.

    ◆ HEUR_USESSUBSCIP

    #define HEUR_USESSUBSCIP   TRUE

    does the heuristic use a secondary SCIP instance?

    Definition at line 81 of file heur_alns.c.

    ◆ NNEIGHBORHOODS

    #define NNEIGHBORHOODS   9

    Definition at line 83 of file heur_alns.c.

    ◆ DEFAULT_SHOWNBSTATS

    #define DEFAULT_SHOWNBSTATS   FALSE

    show statistics on neighborhoods?

    Definition at line 85 of file heur_alns.c.

    ◆ DEFAULT_NODESQUOT

    #define DEFAULT_NODESQUOT   0.1

    Definition at line 90 of file heur_alns.c.

    ◆ DEFAULT_NODESQUOTMIN

    #define DEFAULT_NODESQUOTMIN   0.0

    Definition at line 91 of file heur_alns.c.

    ◆ DEFAULT_NODESOFFSET

    #define DEFAULT_NODESOFFSET   500LL

    Definition at line 92 of file heur_alns.c.

    ◆ DEFAULT_NSOLSLIM

    #define DEFAULT_NSOLSLIM   3

    Definition at line 93 of file heur_alns.c.

    ◆ DEFAULT_MINNODES

    #define DEFAULT_MINNODES   50LL

    Definition at line 94 of file heur_alns.c.

    ◆ DEFAULT_MAXNODES

    #define DEFAULT_MAXNODES   5000LL

    Definition at line 95 of file heur_alns.c.

    ◆ DEFAULT_WAITINGNODES

    #define DEFAULT_WAITINGNODES   25LL

    number of nodes since last incumbent solution that the heuristic should wait

    Definition at line 96 of file heur_alns.c.

    ◆ DEFAULT_TARGETNODEFACTOR

    #define DEFAULT_TARGETNODEFACTOR   1.05

    Definition at line 97 of file heur_alns.c.

    ◆ LRATEMIN

    #define LRATEMIN   0.01

    lower bound for learning rate for target nodes and minimum improvement

    Definition at line 98 of file heur_alns.c.

    ◆ LPLIMFAC

    #define LPLIMFAC   4.0

    Definition at line 99 of file heur_alns.c.

    ◆ DEFAULT_INITDURINGROOT

    #define DEFAULT_INITDURINGROOT   FALSE

    Definition at line 100 of file heur_alns.c.

    ◆ DEFAULT_MAXCALLSSAMESOL

    #define DEFAULT_MAXCALLSSAMESOL   -1

    number of allowed executions of the heuristic on the same incumbent solution

    Definition at line 101 of file heur_alns.c.

    ◆ DEFAULT_MINIMPROVELOW

    #define DEFAULT_MINIMPROVELOW   0.01

    Definition at line 106 of file heur_alns.c.

    ◆ DEFAULT_MINIMPROVEHIGH

    #define DEFAULT_MINIMPROVEHIGH   0.01

    Definition at line 107 of file heur_alns.c.

    ◆ MINIMPROVEFAC

    #define MINIMPROVEFAC   1.5

    Definition at line 108 of file heur_alns.c.

    ◆ DEFAULT_STARTMINIMPROVE

    #define DEFAULT_STARTMINIMPROVE   0.01

    Definition at line 109 of file heur_alns.c.

    ◆ DEFAULT_ADJUSTMINIMPROVE

    #define DEFAULT_ADJUSTMINIMPROVE   FALSE

    Definition at line 110 of file heur_alns.c.

    ◆ DEFAULT_ADJUSTTARGETNODES

    #define DEFAULT_ADJUSTTARGETNODES   TRUE

    should the target nodes be dynamically adjusted?

    Definition at line 111 of file heur_alns.c.

    ◆ DEFAULT_BESTSOLWEIGHT

    #define DEFAULT_BESTSOLWEIGHT   1

    Definition at line 116 of file heur_alns.c.

    ◆ DEFAULT_BANDITALGO

    #define DEFAULT_BANDITALGO   'i'

    the default bandit algorithm: (u)pper confidence bounds, (e)xp.3, epsilon (g)reedy, exp.3-(i)x

    Definition at line 117 of file heur_alns.c.

    ◆ DEFAULT_REWARDCONTROL

    #define DEFAULT_REWARDCONTROL   0.8

    reward control to increase the weight of the simple solution indicator and decrease the weight of the closed gap reward

    Definition at line 118 of file heur_alns.c.

    ◆ DEFAULT_SCALEBYEFFORT

    #define DEFAULT_SCALEBYEFFORT   TRUE

    should the reward be scaled by the effort?

    Definition at line 119 of file heur_alns.c.

    ◆ DEFAULT_RESETWEIGHTS

    #define DEFAULT_RESETWEIGHTS   TRUE

    should the bandit algorithms be reset when a new problem is read?

    Definition at line 120 of file heur_alns.c.

    ◆ DEFAULT_SUBSCIPRANDSEEDS

    #define DEFAULT_SUBSCIPRANDSEEDS   FALSE

    should random seeds of sub-SCIPs be altered to increase diversification?

    Definition at line 121 of file heur_alns.c.

    ◆ DEFAULT_REWARDBASELINE

    #define DEFAULT_REWARDBASELINE   0.5

    the reward baseline to separate successful and failed calls

    Definition at line 122 of file heur_alns.c.

    ◆ DEFAULT_FIXTOL

    #define DEFAULT_FIXTOL   0.1

    tolerance by which the fixing rate may be missed without generic fixing

    Definition at line 123 of file heur_alns.c.

    ◆ DEFAULT_UNFIXTOL

    #define DEFAULT_UNFIXTOL   0.1

    tolerance by which the fixing rate may be exceeded without generic unfixing

    Definition at line 124 of file heur_alns.c.

    ◆ DEFAULT_USELOCALREDCOST

    #define DEFAULT_USELOCALREDCOST   FALSE

    should local reduced costs be used for generic (un)fixing?

    Definition at line 125 of file heur_alns.c.

    ◆ DEFAULT_BETA

    #define DEFAULT_BETA   0.0

    default reward offset between 0 and 1 at every observation for exp3

    Definition at line 126 of file heur_alns.c.

    ◆ DEFAULT_EPS

    #define DEFAULT_EPS   0.4685844

    increase exploration in epsilon-greedy bandit algorithm

    Definition at line 132 of file heur_alns.c.

    ◆ DEFAULT_ALPHA

    #define DEFAULT_ALPHA   0.0016

    parameter to increase the confidence width in UCB

    Definition at line 133 of file heur_alns.c.

    ◆ DEFAULT_GAMMA

    #define DEFAULT_GAMMA   0.07041455

    default weight between uniform (gamma ~ 1) and weight driven (gamma ~ 0) probability distribution for exp3

    Definition at line 134 of file heur_alns.c.

    ◆ DEFAULT_USEREDCOST

    #define DEFAULT_USEREDCOST   TRUE

    should reduced cost scores be used for variable priorization?

    Definition at line 138 of file heur_alns.c.

    ◆ DEFAULT_USEPSCOST

    #define DEFAULT_USEPSCOST   TRUE

    should pseudo cost scores be used for variable priorization?

    Definition at line 139 of file heur_alns.c.

    ◆ DEFAULT_USEDISTANCES

    #define DEFAULT_USEDISTANCES   TRUE

    should distances from fixed variables be used for variable priorization

    Definition at line 140 of file heur_alns.c.

    ◆ DEFAULT_DOMOREFIXINGS

    #define DEFAULT_DOMOREFIXINGS   TRUE

    should the ALNS heuristic do more fixings by itself based on variable prioritization until the target fixing rate is reached?

    Definition at line 142 of file heur_alns.c.

    ◆ DEFAULT_ADJUSTFIXINGRATE

    #define DEFAULT_ADJUSTFIXINGRATE   TRUE

    should the heuristic adjust the target fixing rate based on the success?

    Definition at line 143 of file heur_alns.c.

    ◆ FIXINGRATE_DECAY

    #define FIXINGRATE_DECAY   0.75

    geometric decay for fixing rate adjustments

    Definition at line 144 of file heur_alns.c.

    ◆ FIXINGRATE_STARTINC

    #define FIXINGRATE_STARTINC   0.2

    initial increment value for fixing rate

    Definition at line 145 of file heur_alns.c.

    ◆ DEFAULT_USESUBSCIPHEURS

    #define DEFAULT_USESUBSCIPHEURS   FALSE

    should the heuristic activate other sub-SCIP heuristics during its search?

    Definition at line 146 of file heur_alns.c.

    ◆ DEFAULT_COPYCUTS

    #define DEFAULT_COPYCUTS   FALSE

    should cutting planes be copied to the sub-SCIP?

    Definition at line 147 of file heur_alns.c.

    ◆ DEFAULT_REWARDFILENAME

    #define DEFAULT_REWARDFILENAME   "-"

    file name to store all rewards and the selection of the bandit

    Definition at line 148 of file heur_alns.c.

    ◆ DEFAULT_SEED

    #define DEFAULT_SEED   113

    Definition at line 151 of file heur_alns.c.

    ◆ MUTATIONSEED

    #define MUTATIONSEED   121

    Definition at line 152 of file heur_alns.c.

    ◆ CROSSOVERSEED

    #define CROSSOVERSEED   321

    Definition at line 153 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_RENS

    #define DEFAULT_MINFIXINGRATE_RENS   0.3

    Definition at line 156 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_RENS

    #define DEFAULT_MAXFIXINGRATE_RENS   0.9

    Definition at line 157 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_RENS

    #define DEFAULT_ACTIVE_RENS   TRUE

    Definition at line 158 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_RENS

    #define DEFAULT_PRIORITY_RENS   1.0

    Definition at line 159 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_RINS

    #define DEFAULT_MINFIXINGRATE_RINS   0.3

    Definition at line 161 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_RINS

    #define DEFAULT_MAXFIXINGRATE_RINS   0.9

    Definition at line 162 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_RINS

    #define DEFAULT_ACTIVE_RINS   TRUE

    Definition at line 163 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_RINS

    #define DEFAULT_PRIORITY_RINS   1.0

    Definition at line 164 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_MUTATION

    #define DEFAULT_MINFIXINGRATE_MUTATION   0.3

    Definition at line 166 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_MUTATION

    #define DEFAULT_MAXFIXINGRATE_MUTATION   0.9

    Definition at line 167 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_MUTATION

    #define DEFAULT_ACTIVE_MUTATION   TRUE

    Definition at line 168 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_MUTATION

    #define DEFAULT_PRIORITY_MUTATION   1.0

    Definition at line 169 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_LOCALBRANCHING

    #define DEFAULT_MINFIXINGRATE_LOCALBRANCHING   0.3

    Definition at line 171 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_LOCALBRANCHING

    #define DEFAULT_MAXFIXINGRATE_LOCALBRANCHING   0.9

    Definition at line 172 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_LOCALBRANCHING

    #define DEFAULT_ACTIVE_LOCALBRANCHING   TRUE

    Definition at line 173 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_LOCALBRANCHING

    #define DEFAULT_PRIORITY_LOCALBRANCHING   1.0

    Definition at line 174 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_PROXIMITY

    #define DEFAULT_MINFIXINGRATE_PROXIMITY   0.3

    Definition at line 176 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_PROXIMITY

    #define DEFAULT_MAXFIXINGRATE_PROXIMITY   0.9

    Definition at line 177 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_PROXIMITY

    #define DEFAULT_ACTIVE_PROXIMITY   TRUE

    Definition at line 178 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_PROXIMITY

    #define DEFAULT_PRIORITY_PROXIMITY   1.0

    Definition at line 179 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_CROSSOVER

    #define DEFAULT_MINFIXINGRATE_CROSSOVER   0.3

    Definition at line 181 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_CROSSOVER

    #define DEFAULT_MAXFIXINGRATE_CROSSOVER   0.9

    Definition at line 182 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_CROSSOVER

    #define DEFAULT_ACTIVE_CROSSOVER   TRUE

    Definition at line 183 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_CROSSOVER

    #define DEFAULT_PRIORITY_CROSSOVER   1.0

    Definition at line 184 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_ZEROOBJECTIVE

    #define DEFAULT_MINFIXINGRATE_ZEROOBJECTIVE   0.3

    Definition at line 186 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_ZEROOBJECTIVE

    #define DEFAULT_MAXFIXINGRATE_ZEROOBJECTIVE   0.9

    Definition at line 187 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_ZEROOBJECTIVE

    #define DEFAULT_ACTIVE_ZEROOBJECTIVE   TRUE

    Definition at line 188 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_ZEROOBJECTIVE

    #define DEFAULT_PRIORITY_ZEROOBJECTIVE   1.0

    Definition at line 189 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_DINS

    #define DEFAULT_MINFIXINGRATE_DINS   0.3

    Definition at line 191 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_DINS

    #define DEFAULT_MAXFIXINGRATE_DINS   0.9

    Definition at line 192 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_DINS

    #define DEFAULT_ACTIVE_DINS   TRUE

    Definition at line 193 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_DINS

    #define DEFAULT_PRIORITY_DINS   1.0

    Definition at line 194 of file heur_alns.c.

    ◆ DEFAULT_MINFIXINGRATE_TRUSTREGION

    #define DEFAULT_MINFIXINGRATE_TRUSTREGION   0.3

    Definition at line 196 of file heur_alns.c.

    ◆ DEFAULT_MAXFIXINGRATE_TRUSTREGION

    #define DEFAULT_MAXFIXINGRATE_TRUSTREGION   0.9

    Definition at line 197 of file heur_alns.c.

    ◆ DEFAULT_ACTIVE_TRUSTREGION

    #define DEFAULT_ACTIVE_TRUSTREGION   FALSE

    Definition at line 198 of file heur_alns.c.

    ◆ DEFAULT_PRIORITY_TRUSTREGION

    #define DEFAULT_PRIORITY_TRUSTREGION   1.0

    Definition at line 199 of file heur_alns.c.

    ◆ DEFAULT_NSOLS_CROSSOVER

    #define DEFAULT_NSOLS_CROSSOVER   2

    parameter for the number of solutions that crossover should combine

    Definition at line 202 of file heur_alns.c.

    ◆ DEFAULT_NPOOLSOLS_DINS

    #define DEFAULT_NPOOLSOLS_DINS   5

    number of pool solutions where binary solution values must agree

    Definition at line 203 of file heur_alns.c.

    ◆ DEFAULT_VIOLPENALTY_TRUSTREGION

    #define DEFAULT_VIOLPENALTY_TRUSTREGION   100.0

    the penalty for violating the trust region

    Definition at line 204 of file heur_alns.c.

    ◆ EVENTHDLR_NAME

    #define EVENTHDLR_NAME   "Alns"

    Definition at line 207 of file heur_alns.c.

    ◆ EVENTHDLR_DESC

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

    Definition at line 208 of file heur_alns.c.

    ◆ SCIP_EVENTTYPE_ALNS

    Definition at line 209 of file heur_alns.c.

    ◆ TABLE_NAME_NEIGHBORHOOD

    #define TABLE_NAME_NEIGHBORHOOD   "neighborhood"

    Definition at line 212 of file heur_alns.c.

    ◆ TABLE_DESC_NEIGHBORHOOD

    #define TABLE_DESC_NEIGHBORHOOD   "ALNS neighborhood statistics"

    Definition at line 213 of file heur_alns.c.

    ◆ TABLE_POSITION_NEIGHBORHOOD

    #define TABLE_POSITION_NEIGHBORHOOD   12500

    the position of the statistics table

    Definition at line 214 of file heur_alns.c.

    ◆ TABLE_EARLIEST_STAGE_NEIGHBORHOOD

    #define TABLE_EARLIEST_STAGE_NEIGHBORHOOD   SCIP_STAGE_TRANSFORMED

    output of the statistics table is only printed from this stage onwards

    Definition at line 215 of file heur_alns.c.

    ◆ DECL_VARFIXINGS

    #define DECL_VARFIXINGS (   x)
    Value:
    SCIP* scip, /**< SCIP data structure */ \
    NH* neighborhood, /**< ALNS neighborhood data structure */ \
    SCIP_VAR** varbuf, /**< buffer array to collect variables to fix */\
    SCIP_Real* valbuf, /**< buffer array to collect fixing values */ \
    int* nfixings, /**< pointer to store the number of fixings */ \
    SCIP_RESULT* result /**< result pointer */ \
    )
    SCIP_VAR ** x
    Definition: circlepacking.c:63
    #define SCIP_Real
    Definition: def.h:156
    Definition: heur_alns.c:367
    enum SCIP_Result SCIP_RESULT
    Definition: type_result.h:61
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63

    callback to collect variable fixings of neighborhood

    Definition at line 257 of file heur_alns.c.

    ◆ DECL_CHANGESUBSCIP

    #define DECL_CHANGESUBSCIP (   x)
    Value:
    SCIP* sourcescip, /**< source SCIP data structure */\
    SCIP* targetscip, /**< target SCIP data structure */\
    NH* neighborhood, /**< ALNS neighborhood data structure */\
    SCIP_VAR** subvars, /**< array of targetscip variables in the same order as the source SCIP variables */\
    int* ndomchgs, /**< pointer to store the number of performed domain changes */\
    int* nchgobjs, /**< pointer to store the number of changed objective coefficients */ \
    int* naddedconss, /**< pointer to store the number of additional constraints */\
    SCIP_Bool* success /**< pointer to store if the sub-MIP was successfully adjusted */\
    )
    #define SCIP_Bool
    Definition: def.h:91

    callback for subproblem changes other than variable fixings

    this callback can be used to further modify the subproblem by changes other than variable fixings. Typical modifications include restrictions of variable domains, the formulation of additional constraints, or changed objective coefficients.

    The callback should set the success pointer to indicate whether it was successful with its modifications or not.

    Definition at line 274 of file heur_alns.c.

    ◆ DECL_NHINIT

    #define DECL_NHINIT (   x)
    Value:
    SCIP* scip, /**< SCIP data structure */ \
    NH* neighborhood /**< neighborhood data structure */ \
    )

    optional initialization callback for neighborhoods when a new problem is read

    Definition at line 286 of file heur_alns.c.

    ◆ DECL_NHEXIT

    #define DECL_NHEXIT (   x)
    Value:
    SCIP* scip, /**< SCIP data structure */ \
    NH* neighborhood /**< neighborhood data structure */ \
    )

    deinitialization callback for neighborhoods when exiting a problem

    Definition at line 292 of file heur_alns.c.

    ◆ DECL_NHFREE

    #define DECL_NHFREE (   x)
    Value:
    SCIP* scip, /**< SCIP data structure */ \
    NH* neighborhood /**< neighborhood data structure */ \
    )

    deinitialization callback for neighborhoods before SCIP is freed

    Definition at line 298 of file heur_alns.c.

    ◆ DECL_NHREFSOL

    #define DECL_NHREFSOL (   x)
    Value:
    SCIP* scip, /**< SCIP data structure */ \
    NH* neighborhood, /**< neighborhood data structure */ \
    SCIP_SOL** solptr, /**< pointer to store the reference solution */ \
    SCIP_RESULT* result /**< pointer to indicate the callback success whether a reference solution is available */ \
    )

    callback function to return a feasible reference solution for further fixings

    The reference solution should be stored in the solptr. The result pointer can be used to indicate either

    • SCIP_SUCCESS or
    • SCIP_DIDNOTFIND

    Definition at line 311 of file heur_alns.c.

    ◆ DECL_NHDEACTIVATE

    #define DECL_NHDEACTIVATE (   x)
    Value:
    SCIP* scip, /**< SCIP data structure */ \
    SCIP_Bool* deactivate /**< pointer to store whether the neighborhood should be deactivated (TRUE) for an instance */ \
    )

    callback function to deactivate neighborhoods on problems where they are irrelevant

    Definition at line 319 of file heur_alns.c.

    ◆ NHISTENTRIES

    #define NHISTENTRIES   7

    Definition at line 336 of file heur_alns.c.

    Typedef Documentation

    ◆ DATA_CROSSOVER

    crossover neighborhood data structure

    Definition at line 236 of file heur_alns.c.

    ◆ DATA_MUTATION

    typedef struct data_mutation DATA_MUTATION

    mutation neighborhood data structure

    Definition at line 238 of file heur_alns.c.

    ◆ DATA_DINS

    typedef struct data_dins DATA_DINS

    dins neighborhood data structure

    Definition at line 240 of file heur_alns.c.

    ◆ DATA_TRUSTREGION

    trustregion neighborhood data structure

    Definition at line 242 of file heur_alns.c.

    ◆ NH_FIXINGRATE

    typedef struct NH_FixingRate NH_FIXINGRATE

    Definition at line 244 of file heur_alns.c.

    ◆ NH_STATS

    typedef struct NH_Stats NH_STATS

    fixing rate data structure neighborhood statistics data structure

    Definition at line 246 of file heur_alns.c.

    ◆ NH

    typedef struct Nh NH

    neighborhood data structure

    Definition at line 248 of file heur_alns.c.

    ◆ VARPRIO

    typedef struct VarPrio VARPRIO

    Definition at line 254 of file heur_alns.c.

    ◆ HISTINDEX

    typedef enum HistIndex HISTINDEX

    Definition at line 335 of file heur_alns.c.

    ◆ SOLVELIMITS

    typedef struct SolveLimits SOLVELIMITS

    Definition at line 495 of file heur_alns.c.

    Enumeration Type Documentation

    ◆ RewardType

    enum RewardType

    reward types of ALNS

    Enumerator
    REWARDTYPE_TOTAL 

    combination of the other rewards

    REWARDTYPE_BESTSOL 

    1, if a new solution was found, 0 otherwise

    REWARDTYPE_CLOSEDGAP 

    0 if no solution was found, closed gap otherwise

    REWARDTYPE_NOSOLPENALTY 

    1 if a solution was found, otherwise between 0 and 1 depending on the effort spent

    NREWARDTYPES 

    Definition at line 218 of file heur_alns.c.

    ◆ HistIndex

    enum HistIndex

    sub-SCIP status code enumerator

    Enumerator
    HIDX_OPT 

    sub-SCIP was solved to optimality

    HIDX_USR 

    sub-SCIP was user interrupted

    HIDX_NODELIM 

    sub-SCIP reached the node limit

    HIDX_STALLNODE 

    sub-SCIP reached the stall node limit

    HIDX_INFEAS 

    sub-SCIP was infeasible

    HIDX_SOLLIM 

    sub-SCIP reached the solution limit

    HIDX_OTHER 

    sub-SCIP reached none of the above codes

    HIDX_OPT 

    sub-SCIP was solved to optimality

    HIDX_USR 

    sub-SCIP was user interrupted

    HIDX_NODELIM 

    sub-SCIP reached the node limit

    HIDX_STALLNODE 

    sub-SCIP reached the stall node limit

    HIDX_INFEAS 

    sub-SCIP was infeasible

    HIDX_SOLLIM 

    sub-SCIP reached the solution limit

    HIDX_OTHER 

    sub-SCIP reached none of the above codes

    Definition at line 325 of file heur_alns.c.

    Function Documentation

    ◆ resetFixingRate()

    static SCIP_RETCODE resetFixingRate ( SCIP scip,
    NH_FIXINGRATE fixingrate 
    )
    static

    Reset target fixing rate

    Parameters
    scipSCIP data structure
    fixingrateheuristic fixing rate

    Definition at line 516 of file heur_alns.c.

    References FIXINGRATE_STARTINC, NH_FixingRate::increment, NH_FixingRate::maxfixingrate, NULL, SCIP_OKAY, and NH_FixingRate::targetfixingrate.

    Referenced by SCIP_DECL_HEURINIT().

    ◆ resetCurrentNeighborhood()

    static void resetCurrentNeighborhood ( SCIP_HEURDATA heurdata)
    static

    reset the currently active neighborhood

    Definition at line 533 of file heur_alns.c.

    References NULL.

    Referenced by SCIP_DECL_HEUREXEC(), and SCIP_DECL_HEURINITSOL().

    ◆ updateFixingRateIncrement()

    static void updateFixingRateIncrement ( NH_FIXINGRATE fx)
    static

    update increment for fixing rate

    Parameters
    fxfixing rate

    Definition at line 544 of file heur_alns.c.

    References FIXINGRATE_DECAY, NH_FixingRate::increment, LRATEMIN, and MAX.

    Referenced by updateFixingRate().

    ◆ increaseFixingRate()

    static void increaseFixingRate ( NH_FIXINGRATE fx)
    static

    increase fixing rate

    decrease also the rate by which the target fixing rate is adjusted

    Parameters
    fxfixing rate

    Definition at line 558 of file heur_alns.c.

    References NH_FixingRate::increment, NH_FixingRate::maxfixingrate, MIN, and NH_FixingRate::targetfixingrate.

    Referenced by updateFixingRate().

    ◆ decreaseFixingRate()

    static void decreaseFixingRate ( NH_FIXINGRATE fx)
    static

    decrease fixing rate

    decrease also the rate by which the target fixing rate is adjusted

    Parameters
    fxfixing rate

    Definition at line 571 of file heur_alns.c.

    References NH_FixingRate::increment, MAX, NH_FixingRate::minfixingrate, and NH_FixingRate::targetfixingrate.

    Referenced by updateFixingRate().

    ◆ updateFixingRate()

    static void updateFixingRate ( NH neighborhood,
    SCIP_STATUS  subscipstatus,
    NH_STATS runstats 
    )
    static

    ◆ increaseTargetNodeLimit()

    static void increaseTargetNodeLimit ( SCIP_HEURDATA heurdata)
    static

    increase target node limit

    Parameters
    heurdataheuristic data

    Definition at line 628 of file heur_alns.c.

    References SCIP_Longint.

    Referenced by updateTargetNodeLimit().

    ◆ resetTargetNodeLimit()

    static void resetTargetNodeLimit ( SCIP_HEURDATA heurdata)
    static

    reset target node limit

    Parameters
    heurdataheuristic data

    Definition at line 641 of file heur_alns.c.

    Referenced by SCIP_DECL_HEURINITSOL().

    ◆ updateTargetNodeLimit()

    static void updateTargetNodeLimit ( SCIP_HEURDATA heurdata,
    NH_STATS runstats,
    SCIP_STATUS  subscipstatus 
    )
    static

    ◆ resetMinimumImprovement()

    static void resetMinimumImprovement ( SCIP_HEURDATA heurdata)
    static

    reset the minimum improvement for the sub-SCIPs

    Parameters
    heurdataheuristic data

    Definition at line 687 of file heur_alns.c.

    References NULL.

    Referenced by SCIP_DECL_HEURINITSOL().

    ◆ increaseMinimumImprovement()

    static void increaseMinimumImprovement ( SCIP_HEURDATA heurdata)
    static

    increase minimum improvement for the sub-SCIPs

    Parameters
    heurdataheuristic data

    Definition at line 697 of file heur_alns.c.

    References MIN, MINIMPROVEFAC, and NULL.

    Referenced by updateMinimumImprovement().

    ◆ decreaseMinimumImprovement()

    static void decreaseMinimumImprovement ( SCIP_HEURDATA heurdata)
    static

    decrease the minimum improvement for the sub-SCIPs

    Parameters
    heurdataheuristic data

    Definition at line 709 of file heur_alns.c.

    References MAX, MINIMPROVEFAC, NULL, and SCIPdebugMessage.

    Referenced by updateMinimumImprovement().

    ◆ updateMinimumImprovement()

    static void updateMinimumImprovement ( SCIP_HEURDATA heurdata,
    SCIP_STATUS  subscipstatus,
    NH_STATS runstats 
    )
    static

    ◆ neighborhoodStatsReset()

    static SCIP_RETCODE neighborhoodStatsReset ( SCIP scip,
    NH_STATS stats 
    )
    static

    ◆ alnsIncludeNeighborhood()

    static SCIP_RETCODE alnsIncludeNeighborhood ( SCIP scip,
    SCIP_HEURDATA heurdata,
    NH **  neighborhood,
    const char *  name,
    SCIP_Real  minfixingrate,
    SCIP_Real  maxfixingrate,
    SCIP_Bool  active,
    SCIP_Real  priority,
    DECL_VARFIXINGS((*varfixings))  ,
    DECL_CHANGESUBSCIP((*changesubscip))  ,
    DECL_NHINIT((*nhinit))  ,
    DECL_NHEXIT((*nhexit))  ,
    DECL_NHFREE((*nhfree))  ,
    DECL_NHREFSOL((*nhrefsol))  ,
    DECL_NHDEACTIVATE((*nhdeactivate))   
    )
    static

    create a neighborhood of the specified name and include it into the ALNS heuristic

    Parameters
    scipSCIP data structure
    heurdataheuristic data of the ALNS heuristic
    neighborhoodpointer to store the neighborhood
    namename for this neighborhood
    minfixingratedefault value for minfixingrate parameter of this neighborhood
    maxfixingratedefault value for maxfixingrate parameter of this neighborhood
    activedefault value for active parameter of this neighborhood
    prioritypositive call priority to initialize bandit algorithms

    Definition at line 798 of file heur_alns.c.

    References active, BMSduplicateMemoryArray, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPaddBoolParam(), SCIPaddRealParam(), SCIPallocBlockMemory, SCIPcreateClock(), SCIPsnprintf(), and TRUE.

    Referenced by includeNeighborhoods().

    ◆ alnsFreeNeighborhood()

    static SCIP_RETCODE alnsFreeNeighborhood ( SCIP scip,
    NH **  neighborhood 
    )
    static

    release all data and free neighborhood

    Parameters
    scipSCIP data structure
    neighborhoodpointer to neighborhood that should be freed

    Definition at line 861 of file heur_alns.c.

    References BMSfreeMemoryArray, Nh::name, NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeClock(), NH_Stats::setupclock, Nh::stats, and NH_Stats::submipclock.

    Referenced by SCIP_DECL_HEURFREE().

    ◆ neighborhoodInit()

    static SCIP_RETCODE neighborhoodInit ( SCIP scip,
    NH neighborhood 
    )
    static

    initialize neighborhood specific data

    Parameters
    scipSCIP data structure
    neighborhoodneighborhood to initialize

    Definition at line 892 of file heur_alns.c.

    References NULL, SCIP_CALL, and SCIP_OKAY.

    Referenced by SCIP_DECL_HEURINIT().

    ◆ neighborhoodExit()

    static SCIP_RETCODE neighborhoodExit ( SCIP scip,
    NH neighborhood 
    )
    static

    deinitialize neighborhood specific data

    Parameters
    scipSCIP data structure
    neighborhoodneighborhood to initialize

    Definition at line 911 of file heur_alns.c.

    References NULL, SCIP_CALL, and SCIP_OKAY.

    Referenced by SCIP_DECL_HEUREXIT().

    ◆ transferSolution()

    static SCIP_RETCODE transferSolution ( SCIP subscip,
    SCIP_EVENTDATA eventdata 
    )
    static

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

    Parameters
    subscipSCIP data structure of the subproblem
    eventdataevent handler data

    Definition at line 929 of file heur_alns.c.

    References FALSE, NH_Stats::nbestsolsfound, NH_Stats::newupperbound, NH_Stats::nsolsfound, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPcheckSol(), SCIPfreeSol(), SCIPgetBestSol(), SCIPgetCutoffbound(), SCIPgetSolTransObj(), SCIPgetUpperbound(), SCIPtranslateSubSol(), SCIPtrySolFree(), and TRUE.

    Referenced by SCIP_DECL_EVENTEXEC().

    ◆ SCIP_DECL_EVENTEXEC()

    static SCIP_DECL_EVENTEXEC ( eventExecAlns  )
    static

    execution callback of the event handler

    transfer new solutions or interrupt the solving process manually

    Definition at line 1005 of file heur_alns.c.

    References EVENTHDLR_NAME, NULL, SCIP_CALL, SCIP_EVENTTYPE_ALNS, SCIP_EVENTTYPE_BESTSOLFOUND, SCIP_EVENTTYPE_LPSOLVED, SCIP_EVENTTYPE_SOLFOUND, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIPdebugMsg, SCIPeventGetType(), SCIPeventhdlrGetName(), SCIPgetNLPs(), SCIPinterruptSolve(), and transferSolution().

    ◆ initRunStats()

    static void initRunStats ( SCIP scip,
    NH_STATS stats 
    )
    static

    initialize neighborhood statistics before the next run

    Parameters
    scipSCIP data structure
    statsrun statistics

    Definition at line 1039 of file heur_alns.c.

    References NH_Stats::nbestsolsfound, NH_Stats::newupperbound, NH_Stats::nfixings, NH_Stats::nsolsfound, NH_Stats::oldupperbound, SCIPgetUpperbound(), and NH_Stats::usednodes.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ updateRunStats()

    static void updateRunStats ( NH_STATS stats,
    SCIP subscip 
    )
    static

    update run stats after the sub SCIP was solved

    Parameters
    statsrun statistics
    subscipsub-SCIP instance, or NULL

    Definition at line 1054 of file heur_alns.c.

    References NULL, SCIPgetNNodes(), SCIPisTransformed(), and NH_Stats::usednodes.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ getHistIndex()

    static int getHistIndex ( SCIP_STATUS  subscipstatus)
    static

    ◆ printNeighborhoodStatistics()

    static void printNeighborhoodStatistics ( SCIP scip,
    SCIP_HEURDATA heurdata,
    FILE *  file 
    )
    static

    ◆ updateNeighborhoodStats()

    static void updateNeighborhoodStats ( NH_STATS runstats,
    NH neighborhood,
    SCIP_STATUS  subscipstatus 
    )
    static

    update the statistics of the neighborhood based on the sub-SCIP run

    Parameters
    runstatsrun statistics
    neighborhoodthe selected neighborhood
    subscipstatusstatus of the sub-SCIP solve

    Definition at line 1172 of file heur_alns.c.

    References DEFAULT_BESTSOLWEIGHT, getHistIndex(), NH_Stats::nbestsolsfound, NH_Stats::nruns, NH_Stats::nrunsbestsol, NH_Stats::nsolsfound, Nh::stats, NH_Stats::statushist, and NH_Stats::usednodes.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ SCIP_DECL_SORTINDCOMP()

    static SCIP_DECL_SORTINDCOMP ( sortIndCompAlns  )
    static

    sort callback for variable pointers using the ALNS variable prioritization

    the variable prioritization works hierarchically as follows. A variable a has the higher priority over b iff

    • variable distances should be used and a has a smaller distance than b
    • variable reduced costs should be used and a has a smaller score than b
    • variable pseudo costs should be used and a has a smaller score than b
    • based on previously assigned random scores
    Note
    : distances are context-based. For fixing more variables, distances are initialized from the already fixed variables. For unfixing variables, distances are initialized starting from the unfixed variables

    Definition at line 1212 of file heur_alns.c.

    References VarPrio::distances, NULL, VarPrio::pscostscores, VarPrio::randscores, VarPrio::redcostscores, VarPrio::usedistances, VarPrio::usepscost, and VarPrio::useredcost.

    ◆ getVariableRedcostScore()

    static SCIP_Real getVariableRedcostScore ( SCIP scip,
    SCIP_VAR var,
    SCIP_Real  refsolval,
    SCIP_Bool  uselocalredcost 
    )
    static

    Compute the reduced cost score for this variable in the reference solution

    Parameters
    scipSCIP data structure
    varthe variable for which the score should be computed
    refsolvalsolution value in reference solution
    uselocalredcostshould local reduced costs be used for generic (un)fixing?

    Definition at line 1281 of file heur_alns.c.

    References MAX, NULL, REALABS, SCIP_LPSOLSTAT_OPTIMAL, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPgetLPSolstat(), SCIPgetVarRedcost(), SCIPhasCurrentNodeLP(), SCIPinfinity(), SCIPisDualfeasNegative(), SCIPisDualfeasPositive(), SCIPisDualfeasZero(), SCIPisFeasIntegral(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisInfinity(), SCIPvarGetBestRootRedcost(), SCIPvarGetBestRootSol(), SCIPvarGetLPSol(), and SCIPvarGetStatus().

    Referenced by alnsFixMoreVariables(), and alnsUnfixVariables().

    ◆ getVariablePscostScore()

    static SCIP_Real getVariablePscostScore ( SCIP scip,
    SCIP_VAR var,
    SCIP_Real  refsolval,
    SCIP_Bool  uselocallpsol 
    )
    static

    get the pseudo cost score of this variable with respect to the reference solution

    Parameters
    scipSCIP data structure
    varthe variable for which the score should be computed
    refsolvalsolution value in reference solution
    uselocallpsolshould local LP solution be used?

    Definition at line 1334 of file heur_alns.c.

    References NULL, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPgetVarPseudocostVal(), SCIPisFeasZero(), SCIPvarGetLPSol(), SCIPvarGetRootSol(), and SCIPvarGetStatus().

    Referenced by alnsFixMoreVariables(), and alnsUnfixVariables().

    ◆ tryAdd2variableBuffer()

    static void tryAdd2variableBuffer ( SCIP scip,
    SCIP_VAR var,
    SCIP_Real  val,
    SCIP_VAR **  varbuf,
    SCIP_Real valbuf,
    int *  nfixings,
    SCIP_Bool  integer 
    )
    static

    add variable and solution value to buffer data structure for variable fixings. The method checks if the value still lies within the variable bounds. The value stays unfixed otherwise.

    Parameters
    scipSCIP data structure
    var(source) SCIP variable that should be added to the buffer
    valfixing value for this variable
    varbufvariable buffer to store variables that should be fixed
    valbufvalue buffer to store fixing values
    nfixingspointer to number of fixed buffer variables, will be increased by 1
    integeris this an integer variable?

    Definition at line 1363 of file heur_alns.c.

    References SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPfloor(), SCIPgetNVars(), SCIPisFeasIntegral(), SCIPvarGetLbGlobal(), SCIPvarGetType(), and SCIPvarGetUbGlobal().

    Referenced by alnsFixMoreVariables(), DECL_VARFIXINGS(), and fixMatchingSolutionValues().

    ◆ neighborhoodGetRefsol()

    static SCIP_RETCODE neighborhoodGetRefsol ( SCIP scip,
    NH neighborhood,
    SCIP_SOL **  solptr 
    )
    static

    query neighborhood for a reference solution for further fixings

    Parameters
    scipSCIP data structure
    neighborhoodALNS neighborhood data structure
    solptrsolution pointer

    Definition at line 1395 of file heur_alns.c.

    References NULL, SCIP_CALL, SCIP_DIDNOTFIND, and SCIP_OKAY.

    Referenced by neighborhoodFixVariables().

    ◆ alnsFixMoreVariables()

    static SCIP_RETCODE alnsFixMoreVariables ( SCIP scip,
    SCIP_HEURDATA heurdata,
    SCIP_SOL refsol,
    SCIP_VAR **  varbuf,
    SCIP_Real valbuf,
    int *  nfixings,
    int  ntargetfixings,
    SCIP_Bool success 
    )
    static

    fix additional variables found in feasible reference solution if the ones that the neighborhood found were not enough

    use not always the best solution for the values, but a reference solution provided by the neighborhood itself

    Note
    it may happen that the target fixing rate is not completely reached. This is the case if intermediate, dual reductions render the solution values of the reference solution infeasible for the current, global variable bounds.
    Parameters
    scipSCIP data structure
    heurdataheuristic data of the ALNS neighborhood
    refsolfeasible reference solution for more variable fixings
    varbufbuffer array to store variables to fix
    valbufbuffer array to store fixing values
    nfixingspointer to store the number of fixings
    ntargetfixingsnumber of required target fixings
    successpointer to store whether the target fixings have been successfully reached

    Definition at line 1429 of file heur_alns.c.

    References b, BMSclearMemoryArray, VarPrio::distances, FALSE, getVariablePscostScore(), getVariableRedcostScore(), NULL, VarPrio::pscostscores, VarPrio::randscores, VarPrio::redcostscores, VarPrio::scip, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPbanditGetRandnumgen(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetSolVals(), SCIPgetVarsData(), SCIPisFeasIntegral(), SCIPrandomGetReal(), SCIPselectInd(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvariablegraphBreadthFirst(), TRUE, tryAdd2variableBuffer(), VarPrio::usedistances, VarPrio::usepscost, and VarPrio::useredcost.

    Referenced by neighborhoodFixVariables().

    ◆ createBandit()

    static SCIP_RETCODE createBandit ( SCIP scip,
    SCIP_HEURDATA heurdata,
    SCIP_Real priorities,
    unsigned int  initseed 
    )
    static

    create the bandit algorithm for the heuristic depending on the user parameter

    Parameters
    scipSCIP data structure
    heurdataheuristic data structure
    prioritiescall priorities for active neighborhoods
    initseedinitial random seed

    Definition at line 1605 of file heur_alns.c.

    References FALSE, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPcreateBanditEpsgreedy(), SCIPcreateBanditExp3(), SCIPcreateBanditExp3IX(), SCIPcreateBanditUcb(), and SCIPerrorMessage.

    Referenced by SCIP_DECL_HEURINITSOL().

    ◆ SCIP_DECL_HEURCOPY()

    static SCIP_DECL_HEURCOPY ( heurCopyAlns  )
    static

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

    Definition at line 1648 of file heur_alns.c.

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

    ◆ alnsUnfixVariables()

    static SCIP_RETCODE alnsUnfixVariables ( SCIP scip,
    SCIP_HEURDATA heurdata,
    SCIP_VAR **  varbuf,
    SCIP_Real valbuf,
    int *  nfixings,
    int  ntargetfixings,
    SCIP_Bool success 
    )
    static

    unfix some of the variables because there are too many fixed

    a variable is ideally unfixed if it is close to other unfixed variables and fixing it has a high reduced cost impact

    Parameters
    scipSCIP data structure
    heurdataheuristic data of the ALNS neighborhood
    varbufbuffer array to store variables to fix
    valbufbuffer array to store fixing values
    nfixingspointer to store the number of fixings
    ntargetfixingsnumber of required target fixings
    successpointer to store whether the target fixings have been successfully reached

    Definition at line 1666 of file heur_alns.c.

    References BMSclearMemoryArray, VarPrio::distances, FALSE, getVariablePscostScore(), getVariableRedcostScore(), NULL, VarPrio::pscostscores, VarPrio::randscores, VarPrio::redcostscores, VarPrio::scip, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPbanditGetRandnumgen(), SCIPdebugMsg, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetNBinVars(), SCIPgetNIntVars(), SCIPgetNVars(), SCIPgetVars(), SCIPrandomGetReal(), SCIPselectDownInd(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvariablegraphBreadthFirst(), TRUE, VarPrio::usedistances, VarPrio::usepscost, and VarPrio::useredcost.

    Referenced by neighborhoodFixVariables().

    ◆ neighborhoodFixVariables()

    static SCIP_RETCODE neighborhoodFixVariables ( SCIP scip,
    SCIP_HEURDATA heurdata,
    NH neighborhood,
    SCIP_VAR **  varbuf,
    SCIP_Real valbuf,
    int *  nfixings,
    SCIP_RESULT result 
    )
    static

    call variable fixing callback for this neighborhood and orchestrate additional variable fixings, if necessary

    Parameters
    scipSCIP data structure
    heurdataheuristic data of the ALNS neighborhood
    neighborhoodneighborhood data structure
    varbufbuffer array to keep variables that should be fixed
    valbufbuffer array to keep fixing values
    nfixingspointer to store the number of variable fixings
    resultpointer to store the result of the fixing operation

    Definition at line 1813 of file heur_alns.c.

    References alnsFixMoreVariables(), alnsUnfixVariables(), FALSE, Nh::fixingrate, MAX, MIN, neighborhoodGetRefsol(), NULL, SCIP_Bool, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPdebugMsg, SCIPgetNBinVars(), SCIPgetNIntVars(), and NH_FixingRate::targetfixingrate.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ neighborhoodChangeSubscip()

    static SCIP_RETCODE neighborhoodChangeSubscip ( SCIP sourcescip,
    SCIP targetscip,
    NH neighborhood,
    SCIP_VAR **  targetvars,
    int *  ndomchgs,
    int *  nchgobjs,
    int *  naddedconss,
    SCIP_Bool success 
    )
    static

    change the sub-SCIP by restricting variable domains, changing objective coefficients, or adding constraints

    Parameters
    sourcescipsource SCIP data structure
    targetsciptarget SCIP data structure
    neighborhoodneighborhood
    targetvarsarray of target SCIP variables aligned with source SCIP variables
    ndomchgspointer to store the number of variable domain changes
    nchgobjspointer to store the number of changed objective coefficients
    naddedconsspointer to store the number of added constraints
    successpointer to store whether the sub-SCIP has been successfully modified

    Definition at line 1911 of file heur_alns.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, and TRUE.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ 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 1951 of file heur_alns.c.

    References SolveLimits::memorylimit, SolveLimits::nodelimit, NULL, SCIP_CALL, SCIP_OKAY, SCIPsetLongintParam(), SCIPsetRealParam(), SolveLimits::stallnodes, and SolveLimits::timelimit.

    Referenced by setupSubScip().

    ◆ 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 1971 of file heur_alns.c.

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

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ getBandit()

    static SCIP_BANDIT * getBandit ( SCIP_HEURDATA heurdata)
    static

    return the bandit algorithm that should be used

    Parameters
    heurdataheuristic data of the ALNS neighborhood

    Definition at line 2039 of file heur_alns.c.

    References NULL.

    Referenced by selectNeighborhood(), and updateBanditAlgorithm().

    ◆ selectNeighborhood()

    static SCIP_RETCODE selectNeighborhood ( SCIP scip,
    SCIP_HEURDATA heurdata,
    int *  neighborhoodidx 
    )
    static

    select a neighborhood depending on the selected bandit algorithm

    Parameters
    scipSCIP data structure
    heurdataheuristic data of the ALNS neighborhood
    neighborhoodidxpointer to store the selected neighborhood index

    Definition at line 2049 of file heur_alns.c.

    References getBandit(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPbanditSelect().

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ getReward()

    static SCIP_RETCODE getReward ( SCIP scip,
    SCIP_HEURDATA heurdata,
    NH_STATS runstats,
    SCIP_Real rewardptr 
    )
    static

    Calculate reward based on the selected reward measure

    Parameters
    scipSCIP data structure
    heurdataheuristic data of the ALNS neighborhood
    runstatsrun statistics
    rewardptrarray to store the computed rewards, total and individual

    Definition at line 2072 of file heur_alns.c.

    References MAX, NH_Stats::nbestsolsfound, NH_Stats::newupperbound, NH_Stats::nfixings, NREWARDTYPES, NULL, NH_Stats::oldupperbound, REWARDTYPE_BESTSOL, REWARDTYPE_CLOSEDGAP, REWARDTYPE_NOSOLPENALTY, REWARDTYPE_TOTAL, SCIP_OKAY, SCIP_Real, SCIPgetLowerbound(), SCIPgetNBinVars(), SCIPgetNIntVars(), SCIPisEQ(), SCIPisInfinity(), and NH_Stats::usednodes.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ updateBanditAlgorithm()

    static SCIP_RETCODE updateBanditAlgorithm ( SCIP scip,
    SCIP_HEURDATA heurdata,
    SCIP_Real  reward,
    int  neighborhoodidx 
    )
    static

    update internal bandit algorithm statistics for future draws

    Parameters
    scipSCIP data structure
    heurdataheuristic data of the ALNS neighborhood
    rewardmeasured reward
    neighborhoodidxthe neighborhood that was chosen

    Definition at line 2153 of file heur_alns.c.

    References getBandit(), NULL, SCIP_CALL, SCIP_OKAY, SCIPbanditUpdate(), and SCIPdebugMsg.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ setupSubScip()

    static SCIP_RETCODE setupSubScip ( SCIP scip,
    SCIP subscip,
    SCIP_VAR **  subvars,
    SOLVELIMITS solvelimits,
    SCIP_HEUR heur,
    SCIP_Bool  objchgd 
    )
    static

    set up the sub-SCIP parameters, objective cutoff, and solution limits

    Parameters
    scipSCIP data structure
    subscipsub-SCIP data structure
    subvarsarray of sub-SCIP variables in the order of the main SCIP
    solvelimitspointer to solving limits data structure
    heurthis heuristic
    objchgddid the objective change between the source and the target SCIP?

    Definition at line 2176 of file heur_alns.c.

    References FALSE, MIN, SolveLimits::nodelimit, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_Real, SCIP_REAL_FORMAT, SCIPaddCoefLinear(), SCIPaddCons(), SCIPcreateConsLinear(), SCIPdebugMsg, SCIPfindBranchrule(), SCIPfindNodesel(), SCIPfloor(), SCIPgetLowerbound(), SCIPgetNVars(), SCIPgetUpperbound(), SCIPgetVars(), SCIPheurGetData(), SCIPheurGetNCalls(), SCIPinfinity(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisObjIntegral(), SCIPisParamFixed(), SCIPreleaseCons(), SCIPretransformObj(), SCIPsetBoolParam(), SCIPsetCharParam(), SCIPsetIntParam(), SCIPsetObjlimit(), SCIPsetPresolving(), SCIPsetSeparating(), SCIPsetSubscipsOff(), SCIPsumepsilon(), SCIPvarGetObj(), setLimits(), SolveLimits::stallnodes, SolveLimits::timelimit, and TRUE.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ SCIP_DECL_HEUREXEC()

    static SCIP_DECL_HEUREXEC ( heurExecAlns  )
    static

    execution method of primal heuristic

    Definition at line 2327 of file heur_alns.c.

    References determineLimits(), EVENTHDLR_DESC, EVENTHDLR_NAME, FALSE, Nh::fixingrate, getReward(), initRunStats(), MAX, Nh::name, neighborhoodChangeSubscip(), neighborhoodFixVariables(), NH_Stats::nfixings, NNEIGHBORHOODS, SolveLimits::nodelimit, NREWARDTYPES, NH_Stats::nruns, NULL, resetCurrentNeighborhood(), REWARDTYPE_TOTAL, SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_DELAYED, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_EVENTTYPE_ALNS, SCIP_HEURTIMING_DURINGLPLOOP, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_STATUS_UNKNOWN, SCIP_SUCCESS, SCIPABORT, SCIPallocBufferArray, SCIPblkmem(), SCIPcatchEvent(), SCIPcopyLargeNeighborhoodSearch(), SCIPcreate(), SCIPdebugMsg, SCIPfree(), SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetDepth(), SCIPgetLPSolstat(), SCIPgetNNodes(), SCIPgetNOrigVars(), SCIPgetNSols(), SCIPgetNVars(), SCIPgetStatus(), SCIPgetVarsData(), SCIPhasCurrentNodeLP(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPheurGetData(), SCIPheurGetFreq(), SCIPheurGetNCalls(), SCIPincludeEventhdlrBasic(), SCIPisStopped(), SCIPpresolve(), SCIPprintStatistics(), SCIPsnprintf(), SCIPsolGetNodenum(), SCIPsolve(), SCIPstartClock(), SCIPstopClock(), SCIPtransformProb(), SCIPwarningMessage(), selectNeighborhood(), NH_Stats::setupclock, setupSubScip(), Nh::stats, NH_Stats::submipclock, NH_FixingRate::targetfixingrate, TRUE, updateBanditAlgorithm(), updateFixingRate(), updateMinimumImprovement(), updateNeighborhoodStats(), updateRunStats(), updateTargetNodeLimit(), and NH_Stats::usednodes.

    ◆ DECL_VARFIXINGS() [1/5]

    ◆ DECL_CHANGESUBSCIP() [1/6]

    static DECL_CHANGESUBSCIP ( changeSubscipRens  )
    static

    ◆ fixMatchingSolutionValues()

    static SCIP_RETCODE fixMatchingSolutionValues ( SCIP scip,
    SCIP_SOL **  sols,
    int  nsols,
    SCIP_VAR **  vars,
    int  nvars,
    SCIP_VAR **  varbuf,
    SCIP_Real valbuf,
    int *  nfixings 
    )
    static

    collect fixings by matching solution values in a collection of solutions for all binary and integer variables, or for a custom set of variables

    Parameters
    scipSCIP data structure
    solsarray of 2 or more solutions. It is okay for the array to contain one element equal to NULL to represent the current LP solution
    nsolsnumber of solutions in the array
    varsvariable array for which solution values must agree
    nvarsnumber of variables, or -1 for all binary and integer variables
    varbufbuffer storage for variable fixings
    valbufbuffer storage for fixing values
    nfixingspointer to store the number of fixings

    Definition at line 2868 of file heur_alns.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPgetNBinVars(), SCIPgetSolVal(), SCIPgetVarsData(), SCIPisFeasZero(), SCIPvarGetType(), TRUE, and tryAdd2variableBuffer().

    Referenced by DECL_VARFIXINGS().

    ◆ DECL_VARFIXINGS() [2/5]

    static DECL_VARFIXINGS ( varFixingsRins  )
    static

    ◆ DECL_NHINIT() [1/2]

    static DECL_NHINIT ( nhInitCrossover  )
    static

    initialization callback for crossover when a new problem is read

    Definition at line 2983 of file heur_alns.c.

    References Nh::crossover, CROSSOVERSEED, Nh::data, NULL, data_crossover::rng, SCIP_CALL, SCIP_OKAY, SCIPcreateRandom(), SCIPfreeRandom(), SCIPgetNVars(), data_crossover::selsol, and TRUE.

    ◆ DECL_NHEXIT() [1/2]

    static DECL_NHEXIT ( nhExitCrossover  )
    static

    deinitialization callback for crossover when exiting a problem

    Definition at line 3002 of file heur_alns.c.

    References Nh::crossover, Nh::data, NULL, data_crossover::rng, SCIP_OKAY, and SCIPfreeRandom().

    ◆ DECL_NHFREE() [1/3]

    static DECL_NHFREE ( nhFreeCrossover  )
    static

    deinitialization callback for crossover before SCIP is freed

    Definition at line 3017 of file heur_alns.c.

    References Nh::crossover, Nh::data, NULL, SCIP_OKAY, and SCIPfreeBlockMemory.

    ◆ DECL_VARFIXINGS() [3/5]

    ◆ DECL_NHREFSOL() [1/2]

    static DECL_NHREFSOL ( nhRefsolCrossover  )
    static

    callback for crossover reference solution

    Definition at line 3108 of file heur_alns.c.

    References Nh::crossover, Nh::data, NULL, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, and data_crossover::selsol.

    ◆ DECL_NHINIT() [2/2]

    static DECL_NHINIT ( nhInitMutation  )
    static

    initialization callback for mutation when a new problem is read

    Definition at line 3129 of file heur_alns.c.

    References Nh::data, Nh::mutation, MUTATIONSEED, NULL, data_mutation::rng, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPcreateRandom(), SCIPgetNVars(), and TRUE.

    ◆ DECL_NHEXIT() [2/2]

    static DECL_NHEXIT ( nhExitMutation  )
    static

    deinitialization callback for mutation when exiting a problem

    Definition at line 3147 of file heur_alns.c.

    References Nh::data, Nh::mutation, NULL, data_mutation::rng, SCIP_OKAY, SCIPfreeBlockMemory, and SCIPfreeRandom().

    ◆ DECL_VARFIXINGS() [4/5]

    ◆ addLocalBranchingConstraint()

    static SCIP_RETCODE addLocalBranchingConstraint ( SCIP sourcescip,
    SCIP targetscip,
    SCIP_VAR **  subvars,
    int  distance,
    SCIP_Bool success,
    int *  naddedconss 
    )
    static

    add local branching constraint

    Parameters
    sourcescipsource SCIP data structure
    targetsciptarget SCIP data structure
    subvarsarray of sub SCIP variables in same order as source SCIP variables
    distanceright hand side of the local branching constraint
    successpointer to store of a local branching constraint has been successfully added
    naddedconsspointer to increase the number of added constraints

    Definition at line 3242 of file heur_alns.c.

    References FALSE, MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPcreateConsBasicLinear(), SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetNBinVars(), SCIPgetSolVal(), SCIPgetVars(), SCIPinfinity(), SCIPisEQ(), SCIPreleaseCons(), and TRUE.

    Referenced by DECL_CHANGESUBSCIP().

    ◆ DECL_CHANGESUBSCIP() [2/6]

    static DECL_CHANGESUBSCIP ( changeSubscipLocalbranching  )
    static

    callback for local branching subproblem changes

    Definition at line 3308 of file heur_alns.c.

    References addLocalBranchingConstraint(), SCIP_CALL, SCIP_OKAY, and SCIPgetNBinVars().

    ◆ DECL_CHANGESUBSCIP() [3/6]

    static DECL_CHANGESUBSCIP ( changeSubscipProximity  )
    static

    callback for proximity subproblem changes

    Definition at line 3318 of file heur_alns.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPchgVarObj(), SCIPgetBestSol(), SCIPgetSolVal(), SCIPgetVarsData(), and TRUE.

    ◆ DECL_CHANGESUBSCIP() [4/6]

    static DECL_CHANGESUBSCIP ( changeSubscipZeroobjective  )
    static

    callback for zeroobjective subproblem changes

    Definition at line 3370 of file heur_alns.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPchgVarObj(), SCIPgetNObjVars(), SCIPgetVarsData(), and TRUE.

    ◆ computeIntegerVariableBoundsDins()

    static void computeIntegerVariableBoundsDins ( SCIP scip,
    SCIP_VAR var,
    SCIP_Real lbptr,
    SCIP_Real ubptr 
    )
    static

    compute tightened bounds for integer variables depending on how much the LP and the incumbent solution values differ

    Parameters
    scipSCIP data structure of the original problem
    varthe variable for which bounds should be computed
    lbptrpointer to store the lower bound in the DINS sub-SCIP
    ubptrpointer to store the upper bound in the DINS sub-SCIP

    Definition at line 3402 of file heur_alns.c.

    References MAX, MIN, REALABS, SCIP_Real, SCIP_VARTYPE_INTEGER, SCIPfeasCeil(), SCIPfeasFloor(), SCIPgetBestSol(), SCIPgetSolVal(), SCIPisFeasEQ(), SCIPvarGetLbGlobal(), SCIPvarGetLPSol(), SCIPvarGetType(), SCIPvarGetUbGlobal(), and SCIPvarIsImpliedIntegral().

    Referenced by DECL_CHANGESUBSCIP(), and DECL_VARFIXINGS().

    ◆ DECL_VARFIXINGS() [5/5]

    ◆ DECL_CHANGESUBSCIP() [5/6]

    static DECL_CHANGESUBSCIP ( changeSubscipDins  )
    static

    ◆ DECL_NHFREE() [2/3]

    static DECL_NHFREE ( nhFreeDins  )
    static

    deinitialization callback for DINS before SCIP is freed

    Definition at line 3593 of file heur_alns.c.

    References Nh::data, Nh::dins, NULL, SCIP_OKAY, and SCIPfreeBlockMemory.

    ◆ DECL_NHFREE() [3/3]

    static DECL_NHFREE ( nhFreeTrustregion  )
    static

    deinitialization callback for trustregion before SCIP is freed

    Definition at line 3604 of file heur_alns.c.

    References Nh::data, NULL, SCIP_OKAY, SCIPfreeBlockMemory, and Nh::trustregion.

    ◆ DECL_CHANGESUBSCIP() [6/6]

    static DECL_CHANGESUBSCIP ( changeSubscipTrustregion  )
    static

    add trust region neighborhood constraint and auxiliary objective variable

    Definition at line 3615 of file heur_alns.c.

    References Nh::data, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddTrustregionNeighborhoodConstraint(), SCIPdebugMsg, SCIPgetBestSol(), Nh::trustregion, and data_trustregion::violpenalty.

    ◆ DECL_NHREFSOL() [2/2]

    static DECL_NHREFSOL ( nhRefsolIncumbent  )
    static

    callback that returns the incumbent solution as a reference point

    Definition at line 3644 of file heur_alns.c.

    References NULL, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, and SCIPgetBestSol().

    ◆ DECL_NHDEACTIVATE() [1/3]

    static DECL_NHDEACTIVATE ( nhDeactivateDiscreteVars  )
    static

    callback function that deactivates a neighborhood on problems with no discrete variables

    Definition at line 3664 of file heur_alns.c.

    References NULL, SCIP_OKAY, SCIPgetNBinVars(), and SCIPgetNIntVars().

    ◆ DECL_NHDEACTIVATE() [2/3]

    static DECL_NHDEACTIVATE ( nhDeactivateBinVars  )
    static

    callback function that deactivates a neighborhood on problems with no binary variables

    Definition at line 3677 of file heur_alns.c.

    References NULL, SCIP_OKAY, and SCIPgetNBinVars().

    ◆ DECL_NHDEACTIVATE() [3/3]

    static DECL_NHDEACTIVATE ( nhDeactivateObjVars  )
    static

    callback function that deactivates a neighborhood on problems with no objective variables

    Definition at line 3690 of file heur_alns.c.

    References NULL, SCIP_OKAY, and SCIPgetNObjVars().

    ◆ includeNeighborhoods()

    static SCIP_RETCODE includeNeighborhoods ( SCIP scip,
    SCIP_HEURDATA heurdata 
    )
    static

    include all neighborhoods

    Parameters
    scipSCIP data structure
    heurdataheuristic data of the ALNS heuristic

    Definition at line 3704 of file heur_alns.c.

    References alnsIncludeNeighborhood(), Nh::crossover, Nh::data, DEFAULT_ACTIVE_CROSSOVER, DEFAULT_ACTIVE_DINS, DEFAULT_ACTIVE_LOCALBRANCHING, DEFAULT_ACTIVE_MUTATION, DEFAULT_ACTIVE_PROXIMITY, DEFAULT_ACTIVE_RENS, DEFAULT_ACTIVE_RINS, DEFAULT_ACTIVE_TRUSTREGION, DEFAULT_ACTIVE_ZEROOBJECTIVE, DEFAULT_MAXFIXINGRATE_CROSSOVER, DEFAULT_MAXFIXINGRATE_DINS, DEFAULT_MAXFIXINGRATE_LOCALBRANCHING, DEFAULT_MAXFIXINGRATE_MUTATION, DEFAULT_MAXFIXINGRATE_PROXIMITY, DEFAULT_MAXFIXINGRATE_RENS, DEFAULT_MAXFIXINGRATE_RINS, DEFAULT_MAXFIXINGRATE_TRUSTREGION, DEFAULT_MAXFIXINGRATE_ZEROOBJECTIVE, DEFAULT_MINFIXINGRATE_CROSSOVER, DEFAULT_MINFIXINGRATE_DINS, DEFAULT_MINFIXINGRATE_LOCALBRANCHING, DEFAULT_MINFIXINGRATE_MUTATION, DEFAULT_MINFIXINGRATE_PROXIMITY, DEFAULT_MINFIXINGRATE_RENS, DEFAULT_MINFIXINGRATE_RINS, DEFAULT_MINFIXINGRATE_TRUSTREGION, DEFAULT_MINFIXINGRATE_ZEROOBJECTIVE, DEFAULT_NPOOLSOLS_DINS, DEFAULT_NSOLS_CROSSOVER, DEFAULT_PRIORITY_CROSSOVER, DEFAULT_PRIORITY_DINS, DEFAULT_PRIORITY_LOCALBRANCHING, DEFAULT_PRIORITY_MUTATION, DEFAULT_PRIORITY_PROXIMITY, DEFAULT_PRIORITY_RENS, DEFAULT_PRIORITY_RINS, DEFAULT_PRIORITY_TRUSTREGION, DEFAULT_PRIORITY_ZEROOBJECTIVE, DEFAULT_VIOLPENALTY_TRUSTREGION, Nh::dins, FALSE, HEUR_NAME, data_dins::npoolsols, data_crossover::nsols, NULL, data_crossover::rng, SCIP_CALL, SCIP_OKAY, SCIP_REAL_MAX, SCIPaddIntParam(), SCIPaddRealParam(), SCIPallocBlockMemory, TRUE, Nh::trustregion, and data_trustregion::violpenalty.

    Referenced by SCIPincludeHeurAlns().

    ◆ SCIP_DECL_HEURINIT()

    static SCIP_DECL_HEURINIT ( heurInitAlns  )
    static

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

    Definition at line 3795 of file heur_alns.c.

    References DEFAULT_REWARDFILENAME, Nh::fixingrate, neighborhoodInit(), neighborhoodStatsReset(), NULL, resetFixingRate(), SCIP_CALL, SCIP_FILECREATEERROR, SCIP_OKAY, SCIPdebugMsg, SCIPerrorMessage, SCIPheurGetData(), and Nh::stats.

    ◆ SCIP_DECL_HEURINITSOL()

    static SCIP_DECL_HEURINITSOL ( heurInitsolAlns  )
    static

    ◆ SCIP_DECL_HEUREXIT()

    static SCIP_DECL_HEUREXIT ( heurExitAlns  )
    static

    deinitialization method of primal heuristic (called before transformed problem is freed)

    Definition at line 3927 of file heur_alns.c.

    References neighborhoodExit(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPheurGetData().

    ◆ SCIP_DECL_HEURFREE()

    static SCIP_DECL_HEURFREE ( heurFreeAlns  )
    static

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

    Definition at line 3957 of file heur_alns.c.

    References alnsFreeNeighborhood(), NNEIGHBORHOODS, NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBandit(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, and SCIPheurGetData().

    ◆ SCIP_DECL_TABLEOUTPUT()

    static SCIP_DECL_TABLEOUTPUT ( tableOutputNeighborhood  )
    static

    output method of statistics table to output file stream 'file'

    Definition at line 3989 of file heur_alns.c.

    References HEUR_NAME, NULL, printNeighborhoodStatistics(), SCIP_OKAY, SCIPfindHeur(), and SCIPheurGetData().