Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    LP diving heuristic that changes variable's objective value instead of bounds, using pseudo cost values as guide.

    Author
    Tobias Achterberg

    Definition in file heur_objpscostdiving.c.

    #include "blockmemshell/memory.h"
    #include "scip/heur_objpscostdiving.h"
    #include "scip/pub_heur.h"
    #include "scip/pub_message.h"
    #include "scip/pub_misc.h"
    #include "scip/pub_var.h"
    #include "scip/scip_branch.h"
    #include "scip/scip_exact.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_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_solvingstats.h"
    #include "scip/scip_tree.h"
    #include "scip/scip_var.h"
    #include <string.h>

    Go to the source code of this file.

    Macros

    #define HEUR_NAME   "objpscostdiving"
     
    #define HEUR_DESC   "LP diving heuristic that changes variable's objective values instead of bounds, using pseudo costs as guide"
     
    #define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_OBJDIVING
     
    #define HEUR_PRIORITY   -1004000
     
    #define HEUR_FREQ   20
     
    #define HEUR_FREQOFS   4
     
    #define HEUR_MAXDEPTH   -1
     
    #define HEUR_TIMING   SCIP_HEURTIMING_AFTERLPPLUNGE
     
    #define HEUR_USESSUBSCIP   FALSE
     
    #define DEFAULT_MINRELDEPTH   0.0
     
    #define DEFAULT_MAXRELDEPTH   1.0
     
    #define DEFAULT_MAXLPITERQUOT   0.05
     
    #define DEFAULT_MAXLPITEROFS   1000
     
    #define DEFAULT_MAXSOLS   -1
     
    #define DEFAULT_DEPTHFAC   0.5
     
    #define DEFAULT_DEPTHFACNOSOL   2.0
     
    #define DEFAULT_RANDSEED   139
     
    #define MINLPITER   10000
     

    Functions

    static void calcPscostQuot (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_VAR *var, SCIP_Real primsol, SCIP_Real frac, int rounddir, SCIP_Real *pscostquot, SCIP_Bool *roundup)
     
    static SCIP_DECL_HEURCOPY (heurCopyObjpscostdiving)
     
    static SCIP_DECL_HEURFREE (heurFreeObjpscostdiving)
     
    static SCIP_DECL_HEURINIT (heurInitObjpscostdiving)
     
    static SCIP_DECL_HEUREXIT (heurExitObjpscostdiving)
     
    static SCIP_DECL_HEUREXEC (heurExecObjpscostdiving)
     
    SCIP_RETCODE SCIPincludeHeurObjpscostdiving (SCIP *scip)
     

    Macro Definition Documentation

    ◆ HEUR_NAME

    #define HEUR_NAME   "objpscostdiving"

    Definition at line 56 of file heur_objpscostdiving.c.

    ◆ HEUR_DESC

    #define HEUR_DESC   "LP diving heuristic that changes variable's objective values instead of bounds, using pseudo costs as guide"

    Definition at line 57 of file heur_objpscostdiving.c.

    ◆ HEUR_DISPCHAR

    #define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_OBJDIVING

    Definition at line 58 of file heur_objpscostdiving.c.

    ◆ HEUR_PRIORITY

    #define HEUR_PRIORITY   -1004000

    Definition at line 59 of file heur_objpscostdiving.c.

    ◆ HEUR_FREQ

    #define HEUR_FREQ   20

    Definition at line 60 of file heur_objpscostdiving.c.

    ◆ HEUR_FREQOFS

    #define HEUR_FREQOFS   4

    Definition at line 61 of file heur_objpscostdiving.c.

    ◆ HEUR_MAXDEPTH

    #define HEUR_MAXDEPTH   -1

    Definition at line 62 of file heur_objpscostdiving.c.

    ◆ HEUR_TIMING

    #define HEUR_TIMING   SCIP_HEURTIMING_AFTERLPPLUNGE

    Definition at line 63 of file heur_objpscostdiving.c.

    ◆ HEUR_USESSUBSCIP

    #define HEUR_USESSUBSCIP   FALSE

    does the heuristic use a secondary SCIP instance?

    Definition at line 64 of file heur_objpscostdiving.c.

    ◆ DEFAULT_MINRELDEPTH

    #define DEFAULT_MINRELDEPTH   0.0

    minimal relative depth to start diving

    Definition at line 71 of file heur_objpscostdiving.c.

    ◆ DEFAULT_MAXRELDEPTH

    #define DEFAULT_MAXRELDEPTH   1.0

    maximal relative depth to start diving

    Definition at line 72 of file heur_objpscostdiving.c.

    ◆ DEFAULT_MAXLPITERQUOT

    #define DEFAULT_MAXLPITERQUOT   0.05

    maximal fraction of diving LP iterations compared to total iteration number

    Definition at line 73 of file heur_objpscostdiving.c.

    ◆ DEFAULT_MAXLPITEROFS

    #define DEFAULT_MAXLPITEROFS   1000

    additional number of allowed LP iterations

    Definition at line 74 of file heur_objpscostdiving.c.

    ◆ DEFAULT_MAXSOLS

    #define DEFAULT_MAXSOLS   -1

    total number of feasible solutions found up to which heuristic is called (-1: no limit)

    Definition at line 76 of file heur_objpscostdiving.c.

    ◆ DEFAULT_DEPTHFAC

    #define DEFAULT_DEPTHFAC   0.5

    maximal diving depth: number of binary/integer variables times depthfac

    Definition at line 77 of file heur_objpscostdiving.c.

    ◆ DEFAULT_DEPTHFACNOSOL

    #define DEFAULT_DEPTHFACNOSOL   2.0

    maximal diving depth factor if no feasible solution was found yet

    Definition at line 78 of file heur_objpscostdiving.c.

    ◆ DEFAULT_RANDSEED

    #define DEFAULT_RANDSEED   139

    initial random seed

    Definition at line 79 of file heur_objpscostdiving.c.

    ◆ MINLPITER

    #define MINLPITER   10000

    minimal number of LP iterations allowed in each LP solving call

    Definition at line 81 of file heur_objpscostdiving.c.

    Function Documentation

    ◆ calcPscostQuot()

    static void calcPscostQuot ( SCIP scip,
    SCIP_HEURDATA heurdata,
    SCIP_VAR var,
    SCIP_Real  primsol,
    SCIP_Real  frac,
    int  rounddir,
    SCIP_Real pscostquot,
    SCIP_Bool roundup 
    )
    static
    Parameters
    scipSCIP data structure
    heurdataheuristic data structure
    varproblem variable
    primsolprimal solution of variable
    fracfractionality of variable
    rounddir-1: round down, +1: round up, 0: select due to pseudo cost values
    pscostquotpointer to store pseudo cost quotient
    rounduppointer to store whether the variable should be rounded up

    Definition at line 107 of file heur_objpscostdiving.c.

    References FALSE, MAX, MIN, NULL, SCIP_Real, SCIPgetVarPseudocostVal(), SCIPisEQ(), SCIPisGT(), SCIPisLT(), SCIPrandomGetInt(), SCIPvarGetRootSol(), SCIPvarIsBinary(), and TRUE.

    Referenced by SCIP_DECL_HEUREXEC().

    ◆ SCIP_DECL_HEURCOPY()

    static SCIP_DECL_HEURCOPY ( heurCopyObjpscostdiving  )
    static

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

    Definition at line 177 of file heur_objpscostdiving.c.

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

    ◆ SCIP_DECL_HEURFREE()

    static SCIP_DECL_HEURFREE ( heurFreeObjpscostdiving  )
    static

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

    Definition at line 191 of file heur_objpscostdiving.c.

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

    ◆ SCIP_DECL_HEURINIT()

    static SCIP_DECL_HEURINIT ( heurInitObjpscostdiving  )
    static

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

    Definition at line 211 of file heur_objpscostdiving.c.

    References DEFAULT_RANDSEED, HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateRandom(), SCIPcreateSol(), SCIPheurGetData(), SCIPheurGetName(), and TRUE.

    ◆ SCIP_DECL_HEUREXIT()

    static SCIP_DECL_HEUREXIT ( heurExitObjpscostdiving  )
    static

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

    Definition at line 238 of file heur_objpscostdiving.c.

    References HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeRandom(), SCIPfreeSol(), SCIPheurGetData(), and SCIPheurGetName().

    ◆ SCIP_DECL_HEUREXEC()