LP diving heuristic that chooses fixings w.r.t. conflict locks.
Definition in file heur_conflictdiving.c.
#include "scip/heur_conflictdiving.h"
#include "scip/heuristics.h"
#include "scip/pub_heur.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_var.h"
#include "scip/scip_heur.h"
#include "scip/scip_mem.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_sol.h"
#include "scip/scip_solvingstats.h"
#include <string.h>
Go to the source code of this file.
Functions | |
static | SCIP_DECL_HEURCOPY (heurCopyConflictdiving) |
static | assert (heur !=NULL) |
assert (strcmp(SCIPheurGetName(heur), HEUR_NAME)==0) | |
assert (scip !=NULL) | |
assert (heurdata !=NULL) | |
SCIPfreeBlockMemory (scip, &heurdata) | |
SCIPheurSetData (heur, NULL) | |
SCIPcreateSol (scip, &heurdata->sol, heur)) | |
SCIPfreeSol (scip, &heurdata->sol)) | |
assert (SCIPheurGetNDivesets(heur) > 0) | |
assert (SCIPheurGetDivesets(heur) !=NULL) | |
assert (diveset !=NULL) | |
if (SCIPgetNConflictConssFound(scip)==0) | |
static SCIP_RETCODE | getScore (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_RANDNUMGEN *rng, SCIP_DIVETYPE divetype, SCIP_VAR *cand, SCIP_Real candsol, SCIP_Real candsfrac, SCIP_Real *score, SCIP_Bool *roundup) |
static | SCIP_DECL_DIVESETGETSCORE (divesetGetScoreConflictdiving) |
SCIP_RETCODE | SCIPincludeHeurConflictdiving (SCIP *scip) |
Variables | |
heurdata = SCIPheurGetData(heur) | |
return | SCIP_OKAY |
static SCIP_DIVESET * | diveset |
* | result = SCIP_DELAYED |
#define HEUR_NAME "conflictdiving" |
Definition at line 47 of file heur_conflictdiving.c.
#define HEUR_DESC "LP diving heuristic that chooses fixings w.r.t. conflict locks" |
Definition at line 48 of file heur_conflictdiving.c.
#define HEUR_DISPCHAR SCIP_HEURDISPCHAR_DIVING |
Definition at line 49 of file heur_conflictdiving.c.
#define HEUR_PRIORITY -1000100 |
Definition at line 50 of file heur_conflictdiving.c.
#define HEUR_FREQ 10 |
Definition at line 51 of file heur_conflictdiving.c.
#define HEUR_FREQOFS 0 |
Definition at line 52 of file heur_conflictdiving.c.
#define HEUR_MAXDEPTH -1 |
Definition at line 53 of file heur_conflictdiving.c.
#define HEUR_TIMING SCIP_HEURTIMING_AFTERLPPLUNGE |
Definition at line 54 of file heur_conflictdiving.c.
#define HEUR_USESSUBSCIP FALSE |
does the heuristic use a secondary SCIP instance?
Definition at line 55 of file heur_conflictdiving.c.
#define DIVESET_DIVETYPES SCIP_DIVETYPE_INTEGRALITY | SCIP_DIVETYPE_SOS1VARIABLE |
bit mask that represents all supported dive types
Definition at line 56 of file heur_conflictdiving.c.
#define DIVESET_ISPUBLIC FALSE |
is this dive set publicly available (ie., can be used by other primal heuristics?)
Definition at line 57 of file heur_conflictdiving.c.
#define DEFAULT_RANDSEED 151 |
default random seed
Definition at line 58 of file heur_conflictdiving.c.
#define DEFAULT_MINRELDEPTH 0.0 |
minimal relative depth to start diving
Definition at line 64 of file heur_conflictdiving.c.
#define DEFAULT_MAXRELDEPTH 1.0 |
maximal relative depth to start diving
Definition at line 65 of file heur_conflictdiving.c.
#define DEFAULT_MAXLPITERQUOT 0.15 |
maximal fraction of diving LP iterations compared to node LP iterations
Definition at line 66 of file heur_conflictdiving.c.
#define DEFAULT_MAXLPITEROFS 1000 |
additional number of allowed LP iterations
Definition at line 67 of file heur_conflictdiving.c.
#define DEFAULT_MAXDIVEUBQUOT 0.8 |
maximal quotient (curlowerbound - lowerbound)/(cutoffbound - lowerbound) where diving is performed (0.0: no limit)
Definition at line 68 of file heur_conflictdiving.c.
#define DEFAULT_MAXDIVEAVGQUOT 0.0 |
maximal quotient (curlowerbound - lowerbound)/(avglowerbound - lowerbound) where diving is performed (0.0: no limit)
Definition at line 70 of file heur_conflictdiving.c.
#define DEFAULT_MAXDIVEUBQUOTNOSOL 0.1 |
maximal UBQUOT when no solution was found yet (0.0: no limit)
Definition at line 72 of file heur_conflictdiving.c.
#define DEFAULT_MAXDIVEAVGQUOTNOSOL 0.0 |
maximal AVGQUOT when no solution was found yet (0.0: no limit)
Definition at line 73 of file heur_conflictdiving.c.
#define DEFAULT_BACKTRACK TRUE |
use one level of backtracking if infeasibility is encountered?
Definition at line 74 of file heur_conflictdiving.c.
#define DEFAULT_LPRESOLVEDOMCHGQUOT 0.1 |
percentage of immediate domain changes during probing to trigger LP resolve
Definition at line 75 of file heur_conflictdiving.c.
#define DEFAULT_LPSOLVEFREQ 0 |
LP solve frequency for diving heuristics
Definition at line 76 of file heur_conflictdiving.c.
#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 77 of file heur_conflictdiving.c.
#define DEFAULT_LOCKWEIGHT 0.75 |
weight used in a convex combination of conflict and variable locks
Definition at line 79 of file heur_conflictdiving.c.
Referenced by SCIPincludeHeurConflictdiving().
#define DEFAULT_LIKECOEF FALSE |
perform rounding like coefficient diving
Definition at line 80 of file heur_conflictdiving.c.
Referenced by SCIPincludeHeurConflictdiving().
#define DEFAULT_MAXVIOL TRUE |
prefer rounding direction with most violation
Definition at line 81 of file heur_conflictdiving.c.
Referenced by SCIPincludeHeurConflictdiving().
#define DEFAULT_MINCONFLICTLOCKS 5 |
threshold for penalizing the score
Definition at line 82 of file heur_conflictdiving.c.
Referenced by SCIPincludeHeurConflictdiving().
#define MIN_RAND 1e-06 |
Referenced by getScore(), getScoreOfFarkasDiving(), and SCIP_DECL_DIVESETGETSCORE().
#define MAX_RAND 1e-05 |
Referenced by getScore(), getScoreOfFarkasDiving(), and SCIP_DECL_DIVESETGETSCORE().
#define divesetAvailableConflictdiving NULL |
Definition at line 492 of file heur_conflictdiving.c.
Referenced by SCIPincludeHeurConflictdiving().
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 100 of file heur_conflictdiving.c.
References assert(), HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurConflictdiving().
assert | ( | heur ! | = NULL | ) |
assert | ( | strcmp(SCIPheurGetName(heur), HEUR_NAME) | = =0 | ) |
References HEUR_NAME.
SCIPfreeBlockMemory | ( | scip | , |
& | heurdata ) |
References heurdata.
assert | ( | SCIPheurGetNDivesets(heur) | , |
0 | ) |
assert | ( | SCIPheurGetDivesets(heur) ! | = NULL | ) |
if | ( | SCIPgetNConflictConssFound(scip) | = = 0 | ) |
pointer to store whether the candidate should be rounded upwards
Definition at line 190 of file heur_conflictdiving.c.
References diveset, heurdata, result, SCIP_DIVECONTEXT_SINGLE, and SCIP_OKAY.
|
static |
calculate score variant 2: use a rounding strategy that tends towards infeasibility
scip | SCIP data structure |
heurdata | heuristic data |
rng | random number generator of the diveset |
divetype | divetype of the heuristic |
cand | diving candidate |
candsol | diving candidate solution |
candsfrac | fractionality of the candidate solution |
score | pointer to store the score |
roundup | pointer to store whether the candidate should be rounded upwards |
Definition at line 315 of file heur_conflictdiving.c.
References assert(), heurdata, MAX_RAND, mayrounddown, mayroundup, MIN_RAND, NULL, roundup, SCIP_Bool, SCIP_DIVETYPE_INTEGRALITY, SCIP_DIVETYPE_SOS1VARIABLE, SCIP_INVALIDDATA, SCIP_LOCKTYPE_CONFLICT, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIP_PROBINGSCORE_PENALTYRATIO, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIPisEQ(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisGT(), SCIPisLT(), SCIPisZero(), SCIPrandomGetInt(), SCIPrandomGetReal(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), and SCIPvarIsBinary().
Referenced by SCIP_DECL_DIVESETGETSCORE().
|
static |
returns a score for the given candidate – the best candidate maximizes the diving score
Definition at line 458 of file heur_conflictdiving.c.
References assert(), diveset, getScore(), heurdata, NULL, roundup, SCIP_CALL, SCIP_DIVETYPE_SOS1VARIABLE, SCIP_OKAY, SCIPdivesetGetHeur(), SCIPdivesetGetRandnumgen(), SCIPheurGetData(), and SCIPvarIsBinary().
SCIP_RETCODE SCIPincludeHeurConflictdiving | ( | SCIP * | scip | ) |
creates the conflictdiving heuristic and includes it in SCIP
scip | SCIP data structure |
Definition at line 495 of file heur_conflictdiving.c.
References assert(), DEFAULT_BACKTRACK, DEFAULT_LIKECOEF, DEFAULT_LOCKWEIGHT, DEFAULT_LPRESOLVEDOMCHGQUOT, DEFAULT_LPSOLVEFREQ, DEFAULT_MAXDIVEAVGQUOT, DEFAULT_MAXDIVEAVGQUOTNOSOL, DEFAULT_MAXDIVEUBQUOT, DEFAULT_MAXDIVEUBQUOTNOSOL, DEFAULT_MAXLPITEROFS, DEFAULT_MAXLPITERQUOT, DEFAULT_MAXRELDEPTH, DEFAULT_MAXVIOL, DEFAULT_MINCONFLICTLOCKS, DEFAULT_MINRELDEPTH, DEFAULT_ONLYLPBRANCHCANDS, DEFAULT_RANDSEED, DIVESET_DIVETYPES, DIVESET_ISPUBLIC, divesetAvailableConflictdiving, HEUR_DESC, HEUR_DISPCHAR, HEUR_FREQ, HEUR_FREQOFS, HEUR_MAXDEPTH, HEUR_NAME, HEUR_PRIORITY, HEUR_TIMING, HEUR_USESSUBSCIP, heurdata, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddBoolParam(), SCIPaddIntParam(), SCIPaddRealParam(), SCIPallocBlockMemory, SCIPcreateDiveset(), SCIPincludeHeurBasic(), SCIPsetHeurCopy(), SCIPsetHeurExit(), SCIPsetHeurFree(), SCIPsetHeurInit(), and TRUE.
Referenced by SCIP_DECL_HEURCOPY(), and SCIPincludeDefaultPlugins().
heurdata = SCIPheurGetData(heur) |
Definition at line 123 of file heur_conflictdiving.c.
return SCIP_OKAY |
Definition at line 129 of file heur_conflictdiving.c.
diveset |
execution method of primal heuristic
Definition at line 177 of file heur_conflictdiving.c.
* result = SCIP_DELAYED |
Definition at line 187 of file heur_conflictdiving.c.