Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

LP diving heuristic that fixes variables with integral LP value.

Author
Tobias Achterberg

Definition in file heur_intdiving.c.

#include "blockmemshell/memory.h"
#include "scip/heur_intdiving.h"
#include "scip/pub_heur.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.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_probing.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   "intdiving"
 
#define HEUR_DESC   "LP diving heuristic that fixes binary variables with large LP value to one"
 
#define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_DIVING
 
#define HEUR_PRIORITY   -1003500
 
#define HEUR_FREQ   -1
 
#define HEUR_FREQOFS   9
 
#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_MAXDIVEUBQUOT   0.8
 
#define DEFAULT_MAXDIVEAVGQUOT   0.0
 
#define DEFAULT_MAXDIVEUBQUOTNOSOL   0.1
 
#define DEFAULT_MAXDIVEAVGQUOTNOSOL   0.0
 
#define DEFAULT_BACKTRACK   TRUE
 
#define MINLPITER   10000
 

Functions

static SCIP_DECL_HEURCOPY (heurCopyIntdiving)
 
static SCIP_DECL_HEURFREE (heurFreeIntdiving)
 
static SCIP_DECL_HEURINIT (heurInitIntdiving)
 
static SCIP_DECL_HEUREXIT (heurExitIntdiving)
 
static SCIP_DECL_HEUREXEC (heurExecIntdiving)
 
SCIP_RETCODE SCIPincludeHeurIntdiving (SCIP *scip)
 

Macro Definition Documentation

◆ HEUR_NAME

#define HEUR_NAME   "intdiving"

Definition at line 55 of file heur_intdiving.c.

◆ HEUR_DESC

#define HEUR_DESC   "LP diving heuristic that fixes binary variables with large LP value to one"

Definition at line 56 of file heur_intdiving.c.

◆ HEUR_DISPCHAR

#define HEUR_DISPCHAR   SCIP_HEURDISPCHAR_DIVING

Definition at line 57 of file heur_intdiving.c.

◆ HEUR_PRIORITY

#define HEUR_PRIORITY   -1003500

Definition at line 58 of file heur_intdiving.c.

◆ HEUR_FREQ

#define HEUR_FREQ   -1

Definition at line 59 of file heur_intdiving.c.

◆ HEUR_FREQOFS

#define HEUR_FREQOFS   9

Definition at line 60 of file heur_intdiving.c.

◆ HEUR_MAXDEPTH

#define HEUR_MAXDEPTH   -1

Definition at line 61 of file heur_intdiving.c.

◆ HEUR_TIMING

#define HEUR_TIMING   SCIP_HEURTIMING_AFTERLPPLUNGE

Definition at line 62 of file heur_intdiving.c.

◆ HEUR_USESSUBSCIP

#define HEUR_USESSUBSCIP   FALSE

does the heuristic use a secondary SCIP instance?

Definition at line 63 of file heur_intdiving.c.

◆ DEFAULT_MINRELDEPTH

#define DEFAULT_MINRELDEPTH   0.0

minimal relative depth to start diving

Definition at line 70 of file heur_intdiving.c.

◆ DEFAULT_MAXRELDEPTH

#define DEFAULT_MAXRELDEPTH   1.0

maximal relative depth to start diving

Definition at line 71 of file heur_intdiving.c.

◆ DEFAULT_MAXLPITERQUOT

#define DEFAULT_MAXLPITERQUOT   0.05

maximal fraction of diving LP iterations compared to node LP iterations

Definition at line 72 of file heur_intdiving.c.

◆ DEFAULT_MAXLPITEROFS

#define DEFAULT_MAXLPITEROFS   1000

additional number of allowed LP iterations

Definition at line 73 of file heur_intdiving.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 75 of file heur_intdiving.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 77 of file heur_intdiving.c.

◆ DEFAULT_MAXDIVEUBQUOTNOSOL

#define DEFAULT_MAXDIVEUBQUOTNOSOL   0.1

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

Definition at line 78 of file heur_intdiving.c.

◆ DEFAULT_MAXDIVEAVGQUOTNOSOL

#define DEFAULT_MAXDIVEAVGQUOTNOSOL   0.0

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

Definition at line 79 of file heur_intdiving.c.

◆ DEFAULT_BACKTRACK

#define DEFAULT_BACKTRACK   TRUE

use one level of backtracking if infeasibility is encountered?

Definition at line 80 of file heur_intdiving.c.

◆ MINLPITER

#define MINLPITER   10000

minimal number of LP iterations allowed in each LP solving call

Definition at line 82 of file heur_intdiving.c.

Function Documentation

◆ SCIP_DECL_HEURCOPY()

static SCIP_DECL_HEURCOPY ( heurCopyIntdiving  )
static

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

Definition at line 116 of file heur_intdiving.c.

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

◆ SCIP_DECL_HEURFREE()

static SCIP_DECL_HEURFREE ( heurFreeIntdiving  )
static

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

Definition at line 130 of file heur_intdiving.c.

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

◆ SCIP_DECL_HEURINIT()

static SCIP_DECL_HEURINIT ( heurInitIntdiving  )
static

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

Definition at line 150 of file heur_intdiving.c.

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

◆ SCIP_DECL_HEUREXIT()

static SCIP_DECL_HEUREXIT ( heurExitIntdiving  )
static

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

Definition at line 174 of file heur_intdiving.c.

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

◆ SCIP_DECL_HEUREXEC()

static SCIP_DECL_HEUREXEC ( heurExecIntdiving  )
static

execution method of primal heuristic

Definition at line 194 of file heur_intdiving.c.

References FALSE, HEUR_NAME, MAX, MIN, MINLPITER, NULL, SCIP_Bool, SCIP_CALL, SCIP_DELAYED, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_FOUNDSOL, SCIP_INVALID, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPallocBufferArray, SCIPbacktrackProbing(), SCIPceil(), SCIPcolGetNNonz(), SCIPdebugMsg, SCIPduplicateBufferArray, SCIPenableVarHistory(), SCIPendProbing(), SCIPfixVarProbing(), SCIPfloor(), SCIPfrac(), SCIPfreeBufferArray, SCIPgetAvgLowerbound(), SCIPgetCutoffbound(), SCIPgetDepth(), SCIPgetDualbound(), SCIPgetLastDivenode(), SCIPgetLowerbound(), SCIPgetLPObjval(), SCIPgetLPSolstat(), SCIPgetMaxDepth(), SCIPgetNBinVars(), SCIPgetNIntVars(), SCIPgetNLPIterations(), SCIPgetNNodeLPIterations(), SCIPgetNNodes(), SCIPgetNPseudoBranchCands(), SCIPgetNSolsFound(), SCIPgetProbingDepth(), SCIPgetPseudoBranchCands(), SCIPgetSolOrigObj(), SCIPgetVarAvgInferenceScore(), SCIPhasCurrentNodeLP(), SCIPheurGetData(), SCIPheurGetName(), SCIPheurGetNBestSolsFound(), SCIPheurGetNCalls(), SCIPinfinity(), SCIPisEQ(), SCIPisFeasFracIntegral(), SCIPisFeasGT(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPisGE(), SCIPisGT(), SCIPisLE(), SCIPisLPSolBasic(), SCIPisLT(), SCIPisObjIntegral(), SCIPisStopped(), SCIPisZero(), SCIPlinkLPSol(), SCIPnewProbingNode(), SCIPpropagateProbing(), SCIPretransformObj(), SCIProundSol(), SCIPsolveProbingLP(), SCIPstartProbing(), SCIPtrySol(), SCIPvarGetCol(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetNCliques(), SCIPvarGetNImpls(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), SCIPvarIsIntegral(), SCIPwarningMessage(), and TRUE.