Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    LP diving heuristic that fixes variables with a large difference to their root solution.

    Author
    Tobias Achterberg

    Definition in file heur_linesearchdiving.c.

    #include "scip/heuristics.h"
    #include "scip/heur_linesearchdiving.h"
    #include "scip/pub_heur.h"
    #include "scip/pub_message.h"
    #include "scip/pub_var.h"
    #include "scip/scip_heur.h"
    #include "scip/scip_mem.h"
    #include "scip/scip_numerics.h"
    #include "scip/scip_sol.h"
    #include <string.h>

    Go to the source code of this file.

    Macros

    #define HEUR_NAME   "linesearchdiving"
     
    #define HEUR_DESC   "LP diving heuristic that chooses fixings following the line from root solution to current solution"
     
    #define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_DIVING
     
    #define HEUR_PRIORITY   -1006000
     
    #define HEUR_FREQ   10
     
    #define HEUR_FREQOFS   6
     
    #define HEUR_MAXDEPTH   -1
     
    #define HEUR_TIMING   SCIP_HEURTIMING_AFTERLPPLUNGE
     
    #define HEUR_USESSUBSCIP   FALSE
     
    #define DIVESET_DIVETYPES   SCIP_DIVETYPE_INTEGRALITY | SCIP_DIVETYPE_SOS1VARIABLE
     
    #define DIVESET_ISPUBLIC   TRUE
     
    #define DEFAULT_MINRELDEPTH   0.0
     
    #define DEFAULT_MAXRELDEPTH   1.0
     
    #define DEFAULT_MAXLPITERQUOT   0.05
     
    #define DEFAULT_MAXLPITEROFS   1000
     
    #define DEFAULT_MAXDIVEUBQUOT   0.8
     
    #define DEFAULT_MAXDIVEAVGQUOT   0.0
     
    #define DEFAULT_MAXDIVEUBQUOTNOSOL   0.1
     
    #define DEFAULT_MAXDIVEAVGQUOTNOSOL   0.0
     
    #define DEFAULT_BACKTRACK   TRUE
     
    #define DEFAULT_LPRESOLVEDOMCHGQUOT   0.15
     
    #define DEFAULT_LPSOLVEFREQ   0
     
    #define DEFAULT_ONLYLPBRANCHCANDS   FALSE
     
    #define DEFAULT_RANDSEED   137
     
    #define divesetAvailableLinesearchdiving   NULL
     

    Functions

    static SCIP_DECL_HEURCOPY (heurCopyLinesearchdiving)
     
    static SCIP_DECL_HEURFREE (heurFreeLinesearchdiving)
     
    static SCIP_DECL_HEURINIT (heurInitLinesearchdiving)
     
    static SCIP_DECL_HEUREXIT (heurExitLinesearchdiving)
     
    static SCIP_DECL_HEUREXEC (heurExecLinesearchdiving)
     
    static SCIP_DECL_DIVESETGETSCORE (divesetGetScoreLinesearchdiving)
     
    SCIP_RETCODE SCIPincludeHeurLinesearchdiving (SCIP *scip)
     

    Macro Definition Documentation

    ◆ HEUR_NAME

    #define HEUR_NAME   "linesearchdiving"

    Definition at line 44 of file heur_linesearchdiving.c.

    ◆ HEUR_DESC

    #define HEUR_DESC   "LP diving heuristic that chooses fixings following the line from root solution to current solution"

    Definition at line 45 of file heur_linesearchdiving.c.

    ◆ HEUR_DISPCHAR

    #define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_DIVING

    Definition at line 46 of file heur_linesearchdiving.c.

    ◆ HEUR_PRIORITY

    #define HEUR_PRIORITY   -1006000

    Definition at line 47 of file heur_linesearchdiving.c.

    ◆ HEUR_FREQ

    #define HEUR_FREQ   10

    Definition at line 48 of file heur_linesearchdiving.c.

    ◆ HEUR_FREQOFS

    #define HEUR_FREQOFS   6

    Definition at line 49 of file heur_linesearchdiving.c.

    ◆ HEUR_MAXDEPTH

    #define HEUR_MAXDEPTH   -1

    Definition at line 50 of file heur_linesearchdiving.c.

    ◆ HEUR_TIMING

    #define HEUR_TIMING   SCIP_HEURTIMING_AFTERLPPLUNGE

    Definition at line 51 of file heur_linesearchdiving.c.

    ◆ HEUR_USESSUBSCIP

    #define HEUR_USESSUBSCIP   FALSE

    does the heuristic use a secondary SCIP instance?

    Definition at line 52 of file heur_linesearchdiving.c.

    ◆ DIVESET_DIVETYPES

    #define DIVESET_DIVETYPES   SCIP_DIVETYPE_INTEGRALITY | SCIP_DIVETYPE_SOS1VARIABLE

    bit mask that represents all supported dive types

    Definition at line 53 of file heur_linesearchdiving.c.

    ◆ DIVESET_ISPUBLIC

    #define DIVESET_ISPUBLIC   TRUE

    is this dive set publicly available (ie., can be used by other primal heuristics?)

    Definition at line 54 of file heur_linesearchdiving.c.

    ◆ DEFAULT_MINRELDEPTH

    #define DEFAULT_MINRELDEPTH   0.0

    minimal relative depth to start diving

    Definition at line 61 of file heur_linesearchdiving.c.

    ◆ DEFAULT_MAXRELDEPTH

    #define DEFAULT_MAXRELDEPTH   1.0

    maximal relative depth to start diving

    Definition at line 62 of file heur_linesearchdiving.c.

    ◆ DEFAULT_MAXLPITERQUOT

    #define DEFAULT_MAXLPITERQUOT   0.05

    maximal fraction of diving LP iterations compared to node LP iterations

    Definition at line 63 of file heur_linesearchdiving.c.

    ◆ DEFAULT_MAXLPITEROFS

    #define DEFAULT_MAXLPITEROFS   1000

    additional number of allowed LP iterations

    Definition at line 64 of file heur_linesearchdiving.c.

    ◆ DEFAULT_MAXDIVEUBQUOT

    #define DEFAULT_MAXDIVEUBQUOT   0.8

    maximal quotient (curlowerbound - lowerbound)/(cutoffbound - lowerbound) where diving is performed (0.0: no limit)

    Definition at line 66 of file heur_linesearchdiving.c.

    ◆ DEFAULT_MAXDIVEAVGQUOT

    #define DEFAULT_MAXDIVEAVGQUOT   0.0

    maximal quotient (curlowerbound - lowerbound)/(avglowerbound - lowerbound) where diving is performed (0.0: no limit)

    Definition at line 68 of file heur_linesearchdiving.c.

    ◆ DEFAULT_MAXDIVEUBQUOTNOSOL

    #define DEFAULT_MAXDIVEUBQUOTNOSOL   0.1

    maximal UBQUOT when no solution was found yet (0.0: no limit)

    Definition at line 69 of file heur_linesearchdiving.c.

    ◆ DEFAULT_MAXDIVEAVGQUOTNOSOL

    #define DEFAULT_MAXDIVEAVGQUOTNOSOL   0.0

    maximal AVGQUOT when no solution was found yet (0.0: no limit)

    Definition at line 70 of file heur_linesearchdiving.c.

    ◆ DEFAULT_BACKTRACK

    #define DEFAULT_BACKTRACK   TRUE

    use one level of backtracking if infeasibility is encountered?

    Definition at line 71 of file heur_linesearchdiving.c.

    ◆ DEFAULT_LPRESOLVEDOMCHGQUOT

    #define DEFAULT_LPRESOLVEDOMCHGQUOT   0.15

    percentage of immediate domain changes during probing to trigger LP resolve

    Definition at line 72 of file heur_linesearchdiving.c.

    ◆ DEFAULT_LPSOLVEFREQ

    #define DEFAULT_LPSOLVEFREQ   0

    LP solve frequency for diving heuristics

    Definition at line 73 of file heur_linesearchdiving.c.

    ◆ DEFAULT_ONLYLPBRANCHCANDS

    #define DEFAULT_ONLYLPBRANCHCANDS   FALSE

    should only LP branching candidates be considered instead of the slower but more general constraint handler diving variable selection?

    Definition at line 75 of file heur_linesearchdiving.c.

    ◆ DEFAULT_RANDSEED

    #define DEFAULT_RANDSEED   137

    default initialization for random seed number generation

    Definition at line 76 of file heur_linesearchdiving.c.

    ◆ divesetAvailableLinesearchdiving

    #define divesetAvailableLinesearchdiving   NULL

    Definition at line 265 of file heur_linesearchdiving.c.

    Function Documentation

    ◆ SCIP_DECL_HEURCOPY()

    static SCIP_DECL_HEURCOPY ( heurCopyLinesearchdiving  )
    static

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

    Definition at line 99 of file heur_linesearchdiving.c.

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

    ◆ SCIP_DECL_HEURFREE()

    static SCIP_DECL_HEURFREE ( heurFreeLinesearchdiving  )
    static

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

    Definition at line 113 of file heur_linesearchdiving.c.

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

    ◆ SCIP_DECL_HEURINIT()

    static SCIP_DECL_HEURINIT ( heurInitLinesearchdiving  )
    static

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

    Definition at line 132 of file heur_linesearchdiving.c.

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

    ◆ SCIP_DECL_HEUREXIT()

    static SCIP_DECL_HEUREXIT ( heurExitLinesearchdiving  )
    static

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

    Definition at line 151 of file heur_linesearchdiving.c.

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

    ◆ SCIP_DECL_HEUREXEC()

    static SCIP_DECL_HEUREXEC ( heurExecLinesearchdiving  )
    static

    ◆ SCIP_DECL_DIVESETGETSCORE()

    static SCIP_DECL_DIVESETGETSCORE ( divesetGetScoreLinesearchdiving  )
    static