internal methods for primal heuristics
Definition in file heur.h.
#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_retcode.h"
#include "scip/type_result.h"
#include "scip/type_set.h"
#include "scip/type_primal.h"
#include "scip/type_heur.h"
#include "scip/pub_heur.h"
#include "scip/stat.h"
Go to the source code of this file.
SCIP_RETCODE SCIPdivesetCreate | ( | SCIP_DIVESET ** | divesetptr, |
SCIP_HEUR * | heur, | ||
const char * | name, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_Real | minreldepth, | ||
SCIP_Real | maxreldepth, | ||
SCIP_Real | maxlpiterquot, | ||
SCIP_Real | maxdiveubquot, | ||
SCIP_Real | maxdiveavgquot, | ||
SCIP_Real | maxdiveubquotnosol, | ||
SCIP_Real | maxdiveavgquotnosol, | ||
SCIP_Real | lpresolvedomchgquot, | ||
int | lpsolvefreq, | ||
int | maxlpiterofs, | ||
unsigned int | initialseed, | ||
SCIP_Bool | backtrack, | ||
SCIP_Bool | onlylpbranchcands, | ||
SCIP_Bool | ispublic, | ||
SCIP_DIVETYPE | divetypemask, | ||
SCIP_DECL_DIVESETGETSCORE((*divesetgetscore)) | ) |
create a set of diving heuristic settings
divesetptr | pointer to the freshly created diveset |
heur | the heuristic to which this dive setting belongs |
name | name for the diveset, or NULL if the name of the heuristic should be used |
set | global SCIP settings |
messagehdlr | message handler |
blkmem | block memory for parameter settings |
minreldepth | minimal relative depth to start diving |
maxreldepth | maximal relative depth to start diving |
maxlpiterquot | maximal fraction of diving LP iterations compared to node LP iterations |
maxdiveubquot | maximal quotient (curlowerbound - lowerbound)/(cutoffbound - lowerbound) where diving is performed (0.0: no limit) |
maxdiveavgquot | maximal quotient (curlowerbound - lowerbound)/(avglowerbound - lowerbound) where diving is performed (0.0: no limit) |
maxdiveubquotnosol | maximal UBQUOT when no solution was found yet (0.0: no limit) |
maxdiveavgquotnosol | maximal AVGQUOT when no solution was found yet (0.0: no limit) |
lpresolvedomchgquot | percentage of immediate domain changes during probing to trigger LP resolve |
lpsolvefreq | LP solve frequency for (0: only if enough domain reductions are found by propagation) |
maxlpiterofs | additional number of allowed LP iterations |
initialseed | initial seed for random number generation |
backtrack | use one level of backtracking if infeasibility is encountered? |
onlylpbranchcands | should only LP branching candidates be considered instead of the slower but more general constraint handler diving variable selection? |
ispublic | is this dive set publicly available (ie., can be used by other primal heuristics?) |
divetypemask | bit mask that represents the supported dive types by this dive set |
Definition at line 266 of file heur.c.
References assert(), BMSallocBlockMemory, BMSduplicateMemoryArray, c, diveset, FALSE, heurAddDiveset(), NULL, paramname, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIPdivesetReset(), SCIPheurGetName(), SCIPrandomCreate(), SCIPsetAddBoolParam(), SCIPsetAddIntParam(), SCIPsetAddRealParam(), SCIPsnprintf(), and TRUE.
Referenced by SCIPcreateDiveset().
SCIP_RETCODE SCIPdivesetReset | ( | SCIP_DIVESET * | diveset, |
SCIP_SET * | set ) |
resets diving settings counters
diveset | diveset to be reset |
set | global SCIP settings |
Definition at line 130 of file heur.c.
References assert(), diveset, NULL, resetDivesetStats(), SCIP_OKAY, SCIPrandomSetSeed(), and SCIPsetInitializeRandomSeed().
Referenced by SCIPdivesetCreate(), and SCIPheurInit().
void SCIPdivesetUpdateStats | ( | SCIP_DIVESET * | diveset, |
SCIP_STAT * | stat, | ||
int | depth, | ||
int | nprobingnodes, | ||
int | nbacktracks, | ||
SCIP_Longint | nsolsfound, | ||
SCIP_Longint | nbestsolsfound, | ||
SCIP_Longint | nconflictsfound, | ||
SCIP_Bool | leavesol, | ||
SCIP_DIVECONTEXT | divecontext ) |
update diveset statistics and global diveset statistics
diveset | diveset to be reset |
stat | global SCIP statistics |
depth | the depth reached this time |
nprobingnodes | the number of probing nodes explored this time |
nbacktracks | the number of backtracks during probing this time |
nsolsfound | number of new solutions found this time |
nbestsolsfound | number of new best solutions found this time |
nconflictsfound | number of new conflicts found this time |
leavesol | has the diving heuristic reached a feasible leaf |
divecontext | context for diving statistics |
Definition at line 203 of file heur.c.
References assert(), c, depth, diveset, divesetGetStats(), SCIP_Stat::ndivesetcalls, nsolsfound, NULL, SCIP_Bool, SCIP_DIVECONTEXT_ADAPTIVE, SCIP_DIVECONTEXT_SCHEDULER, SCIP_DIVECONTEXT_SINGLE, SCIP_DIVECONTEXT_TOTAL, SCIP_Longint, SCIP_Stat::totaldivesetdepth, and updateDivesetstats().
Referenced by SCIPupdateDivesetStats().
SCIP_RETCODE SCIPdivesetGetScore | ( | SCIP_DIVESET * | diveset, |
SCIP_SET * | set, | ||
SCIP_DIVETYPE | divetype, | ||
SCIP_VAR * | divecand, | ||
SCIP_Real | divecandsol, | ||
SCIP_Real | divecandfrac, | ||
SCIP_Real * | candscore, | ||
SCIP_Bool * | roundup ) |
get the candidate score and preferred rounding direction for a candidate variable
diveset | general diving settings |
set | SCIP settings |
divetype | the type of diving that should be applied |
divecand | the candidate for which the branching direction is requested |
divecandsol | LP solution value of the candidate |
divecandfrac | fractionality of the candidate |
candscore | pointer to store the candidate score |
roundup | pointer to store whether preferred direction for diving is upwards |
Definition at line 834 of file heur.c.
References assert(), diveset, NULL, roundup, SCIP_Bool, SCIP_CALL, SCIP_OKAY, and SCIP_Real.
Referenced by SCIPgetDivesetScore().
SCIP_RETCODE SCIPdivesetIsAvailable | ( | SCIP_DIVESET * | diveset, |
SCIP_SET * | set, | ||
SCIP_Bool * | available ) |
check specific preconditions for diving, e.g., if an incumbent solution is available
diveset | diving heuristic settings |
set | SCIP settings |
available | pointer to store if the diving can run at the current solving stage |
Definition at line 858 of file heur.c.
References assert(), diveset, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, and TRUE.
Referenced by SCIPisDivesetAvailable().
void SCIPdivesetUpdateLPStats | ( | SCIP_DIVESET * | diveset, |
SCIP_STAT * | stat, | ||
SCIP_Longint | niterstoadd, | ||
SCIP_DIVECONTEXT | divecontext ) |
update diveset LP statistics, should be called after every LP solved by this diving heuristic
diveset | diving settings |
stat | global SCIP statistics |
niterstoadd | additional number of LP iterations to be added |
divecontext | context for diving statistics |
Definition at line 787 of file heur.c.
References assert(), diveset, divesetGetStats(), SCIP_Stat::ndivesetlpiterations, SCIP_Stat::ndivesetlps, NULL, SCIP_DIVECONTEXT_ADAPTIVE, SCIP_DIVECONTEXT_SCHEDULER, SCIP_DIVECONTEXT_SINGLE, SCIP_DIVECONTEXT_TOTAL, SCIP_Longint, and updateDivesetstatsLP().
Referenced by SCIPupdateDivesetLPStats().
SCIP_RETCODE SCIPheurCopyInclude | ( | SCIP_HEUR * | heur, |
SCIP_SET * | set ) |
copies the given primal heuristic to a new scip
Definition at line 882 of file heur.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPheurGetName(), and SCIPsetDebugMsg.
Referenced by SCIPsetCopyPlugins().
SCIP_RETCODE SCIPheurCreate | ( | SCIP_HEUR ** | heur, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
BMS_BLKMEM * | blkmem, | ||
const char * | name, | ||
const char * | desc, | ||
char | dispchar, | ||
int | priority, | ||
int | freq, | ||
int | freqofs, | ||
int | maxdepth, | ||
SCIP_HEURTIMING | timingmask, | ||
SCIP_Bool | usessubscip, | ||
SCIP_DECL_HEURCOPY((*heurcopy)) | , | ||
SCIP_DECL_HEURFREE((*heurfree)) | , | ||
SCIP_DECL_HEURINIT((*heurinit)) | , | ||
SCIP_DECL_HEUREXIT((*heurexit)) | , | ||
SCIP_DECL_HEURINITSOL((*heurinitsol)) | , | ||
SCIP_DECL_HEUREXITSOL((*heurexitsol)) | , | ||
SCIP_DECL_HEUREXEC((*heurexec)) | , | ||
SCIP_HEURDATA * | heurdata ) |
creates a primal heuristic
heur | pointer to primal heuristic data structure |
set | global SCIP settings |
messagehdlr | message handler |
blkmem | block memory for parameter settings |
name | name of primal heuristic |
desc | description of primal heuristic |
dispchar | display character of primal heuristic |
priority | priority of the primal heuristic |
freq | frequency for calling primal heuristic |
freqofs | frequency offset for calling primal heuristic |
maxdepth | maximal depth level to call heuristic at (-1: no limit) |
timingmask | positions in the node solving loop where heuristic should be executed |
usessubscip | does the heuristic use a secondary SCIP instance? |
heurdata | primal heuristic data |
Definition at line 989 of file heur.c.
References assert(), doHeurCreate(), heurdata, maxdepth, NULL, SCIP_Bool, SCIP_CALL_FINALLY, SCIP_DECL_HEURCOPY, SCIP_DECL_HEUREXEC, SCIP_DECL_HEUREXIT, SCIP_DECL_HEUREXITSOL, SCIP_DECL_HEURFREE, SCIP_DECL_HEURINIT, SCIP_DECL_HEURINITSOL, SCIP_OKAY, and SCIPheurFree().
Referenced by SCIPincludeHeur(), and SCIPincludeHeurBasic().
SCIP_RETCODE SCIPheurFree | ( | SCIP_HEUR ** | heur, |
SCIP_SET * | set, | ||
BMS_BLKMEM * | blkmem ) |
calls destructor and frees memory of primal heuristic
heur | pointer to primal heuristic data structure |
set | global SCIP settings |
blkmem | block memory |
Definition at line 1028 of file heur.c.
References assert(), BMSfreeMemory, BMSfreeMemoryArrayNull, divesetFree(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
Referenced by SCIPheurCreate().
SCIP_RETCODE SCIPheurInit | ( | SCIP_HEUR * | heur, |
SCIP_SET * | set ) |
initializes primal heuristic
heur | primal heuristic |
set | global SCIP settings |
Definition at line 1064 of file heur.c.
References assert(), SCIP_Heur::delaypos, SCIP_Heur::divesets, FALSE, SCIP_Heur::heurclock, SCIP_Heur::initialized, SCIP_Heur::name, SCIP_Heur::nbestsolsfound, SCIP_Heur::ncalls, SCIP_Heur::ndivesets, SCIP_Heur::nsolsfound, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPdivesetReset(), SCIPerrorMessage, SCIP_Heur::setuptime, and TRUE.
SCIP_RETCODE SCIPheurExit | ( | SCIP_HEUR * | heur, |
SCIP_SET * | set ) |
calls exit method of primal heuristic
heur | primal heuristic |
set | global SCIP settings |
Definition at line 1117 of file heur.c.
References assert(), FALSE, SCIP_Heur::initialized, SCIP_Heur::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Heur::setuptime.
SCIP_RETCODE SCIPheurInitsol | ( | SCIP_HEUR * | heur, |
SCIP_SET * | set ) |
informs primal heuristic that the branch and bound process is being started
heur | primal heuristic |
set | global SCIP settings |
Definition at line 1147 of file heur.c.
References assert(), SCIP_Heur::delaypos, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Heur::setuptime.
SCIP_RETCODE SCIPheurExitsol | ( | SCIP_HEUR * | heur, |
SCIP_SET * | set ) |
informs primal heuristic that the branch and bound process data is being freed
heur | primal heuristic |
set | global SCIP settings |
Definition at line 1177 of file heur.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Heur::setuptime.
SCIP_Bool SCIPheurShouldBeExecuted | ( | SCIP_HEUR * | heur, |
int | depth, | ||
int | lpstateforkdepth, | ||
SCIP_HEURTIMING | heurtiming, | ||
SCIP_Bool * | delayed ) |
should the heuristic be executed at the given depth, frequency, timing, ...
heur | primal heuristic |
depth | depth of current node |
lpstateforkdepth | depth of the last node with solved LP |
heurtiming | current point in the node solving process |
delayed | pointer to store whether the heuristic should be delayed |
Definition at line 1201 of file heur.c.
References SCIP_Heur::delaypos, depth, FALSE, SCIP_Heur::freq, SCIP_Heur::freqofs, SCIP_Heur::maxdepth, SCIP_Bool, SCIP_HEURTIMING_AFTERLPNODE, SCIP_HEURTIMING_AFTERLPPLUNGE, SCIP_HEURTIMING_AFTERPSEUDONODE, SCIP_HEURTIMING_AFTERPSEUDOPLUNGE, SCIP_HEURTIMING_BEFOREPRESOL, SCIP_HEURTIMING_DURINGPRESOLLOOP, SCIP_Heur::timingmask, and TRUE.
Referenced by SCIPheurExec(), and SCIPprimalHeuristics().
SCIP_RETCODE SCIPheurExec | ( | SCIP_HEUR * | heur, |
SCIP_SET * | set, | ||
SCIP_PRIMAL * | primal, | ||
int | depth, | ||
int | lpstateforkdepth, | ||
SCIP_HEURTIMING | heurtiming, | ||
SCIP_Bool | nodeinfeasible, | ||
int * | ndelayedheurs, | ||
SCIP_RESULT * | result ) |
calls execution method of primal heuristic
heur | primal heuristic |
set | global SCIP settings |
primal | primal data |
depth | depth of current node |
lpstateforkdepth | depth of the last node with solved LP |
heurtiming | current point in the node solving process |
nodeinfeasible | was the current node already detected to be infeasible? |
ndelayedheurs | pointer to count the number of delayed heuristics |
result | pointer to store the result of the callback method |
Definition at line 1263 of file heur.c.
References assert(), SCIP_Heur::delaypos, depth, FALSE, SCIP_Heur::freq, SCIP_Heur::freqofs, SCIP_Heur::heurclock, SCIP_Heur::maxdepth, SCIP_Heur::name, SCIP_Heur::nbestsolsfound, SCIP_Primal::nbestsolsfound, SCIP_Heur::ncalls, SCIP_Heur::nsolsfound, SCIP_Primal::nsolsfound, NULL, result, SCIP_Bool, SCIP_CALL, SCIP_DELAYED, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_FOUNDSOL, SCIP_HEURTIMING_BEFOREPRESOL, SCIP_HEURTIMING_DURINGPRESOLLOOP, SCIP_INVALIDRESULT, SCIP_Longint, SCIP_OKAY, SCIP_UNBOUNDED, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPheurShouldBeExecuted(), and SCIPsetDebugMsg.
Referenced by SCIPprimalHeuristics().
sets priority of primal heuristic
heur | primal heuristic |
set | global SCIP settings |
priority | new priority of the primal heuristic |
Definition at line 1524 of file heur.c.
References assert(), FALSE, NULL, and SCIP_Heur::priority.
Referenced by SCIPsetHeurPriority().
void SCIPheurSetCopy | ( | SCIP_HEUR * | heur | ) |
sets copy callback of primal heuristic
heur | primal heuristic copy callback of primal heuristic or NULL if you don't want to copy your plugin into sub-SCIPs |
Definition at line 1387 of file heur.c.
References assert(), NULL, and SCIP_DECL_HEURCOPY.
Referenced by SCIPsetHeurCopy().
void SCIPheurSetFree | ( | SCIP_HEUR * | heur | ) |
sets destructor callback of primal heuristic
heur | primal heuristic destructor of primal heuristic |
Definition at line 1398 of file heur.c.
References assert(), NULL, and SCIP_DECL_HEURFREE.
Referenced by SCIPsetHeurFree().
void SCIPheurSetInit | ( | SCIP_HEUR * | heur | ) |
sets initialization callback of primal heuristic
heur | primal heuristic initialize primal heuristic |
Definition at line 1409 of file heur.c.
References assert(), NULL, and SCIP_DECL_HEURINIT.
Referenced by SCIPsetHeurInit().
void SCIPheurSetExit | ( | SCIP_HEUR * | heur | ) |
sets deinitialization callback of primal heuristic
heur | primal heuristic deinitialize primal heuristic |
Definition at line 1420 of file heur.c.
References assert(), NULL, and SCIP_DECL_HEUREXIT.
Referenced by SCIPsetHeurExit().
void SCIPheurSetInitsol | ( | SCIP_HEUR * | heur | ) |
sets solving process initialization callback of primal heuristic
heur | primal heuristic solving process initialization callback of primal heuristic |
Definition at line 1431 of file heur.c.
References assert(), NULL, and SCIP_DECL_HEURINITSOL.
Referenced by SCIPsetHeurInitsol().
void SCIPheurSetExitsol | ( | SCIP_HEUR * | heur | ) |
sets solving process deinitialization callback of primal heuristic
heur | primal heuristic solving process deinitialization callback of primal heuristic |
Definition at line 1442 of file heur.c.
References assert(), NULL, and SCIP_DECL_HEUREXITSOL.
Referenced by SCIPsetHeurExitsol().
enables or disables all clocks of heur
, depending on the value of the flag
heur | the heuristic for which all clocks should be enabled or disabled |
enable | should the clocks of the heuristic be enabled? |
Definition at line 1619 of file heur.c.
References assert(), SCIP_Heur::heurclock, NULL, SCIP_Bool, SCIPclockEnableOrDisable(), and SCIP_Heur::setuptime.