Detailed Description
heuristic that tries to solve the problem without objective. In Gurobi, this heuristic is known as "Hail Mary"
Definition in file heur_zeroobj.c.
#include "blockmemshell/memory.h"
#include "scip/cons_linear.h"
#include "scip/heur_zeroobj.h"
#include "scip/pub_event.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_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_event.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_nodesel.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_sol.h"
#include "scip/scip_solve.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 "zeroobj" |
#define | HEUR_DESC "heuristic trying to solve the problem without objective" |
#define | HEUR_DISPCHAR SCIP_HEURDISPCHAR_LNS |
#define | HEUR_PRIORITY 100 |
#define | HEUR_FREQ -1 |
#define | HEUR_FREQOFS 0 |
#define | HEUR_MAXDEPTH 0 |
#define | HEUR_TIMING SCIP_HEURTIMING_BEFORENODE | SCIP_HEURTIMING_BEFOREPRESOL |
#define | HEUR_USESSUBSCIP TRUE |
#define | EVENTHDLR_NAME "Zeroobj" |
#define | EVENTHDLR_DESC "LP event handler for " HEUR_NAME " heuristic" |
#define | DEFAULT_MAXNODES 1000LL /* maximum number of nodes to regard in the subproblem */ |
#define | DEFAULT_MINIMPROVE 0.01 /* factor by which zeroobj should at least improve the incumbent */ |
#define | DEFAULT_MINNODES 100LL /* minimum number of nodes to regard in the subproblem */ |
#define | DEFAULT_MAXLPITERS 5000LL /* maximum number of LP iterations to be performed in the subproblem */ |
#define | DEFAULT_NODESOFS 100LL /* number of nodes added to the contingent of the total nodes */ |
#define | DEFAULT_NODESQUOT 0.1 /* subproblem nodes in relation to nodes of the original problem */ |
#define | DEFAULT_ADDALLSOLS FALSE /* should all subproblem solutions be added to the original SCIP? */ |
#define | DEFAULT_ONLYWITHOUTSOL TRUE |
#define | DEFAULT_USEUCT FALSE /* should uct node selection be used at the beginning of the search? */ |
Functions | |
static | SCIP_DECL_EVENTEXEC (eventExecZeroobj) |
static | SCIP_DECL_HEURCOPY (heurCopyZeroobj) |
static | SCIP_DECL_HEURFREE (heurFreeZeroobj) |
static | SCIP_DECL_HEURINIT (heurInitZeroobj) |
static | SCIP_DECL_HEUREXEC (heurExecZeroobj) |
static SCIP_RETCODE | setupAndSolveSubscip (SCIP *scip, SCIP *subscip, SCIP_HEUR *heur, SCIP_RESULT *result, SCIP_Real minimprove, SCIP_Longint nnodes) |
SCIP_RETCODE | SCIPapplyZeroobj (SCIP *scip, SCIP_HEUR *heur, SCIP_RESULT *result, SCIP_Real minimprove, SCIP_Longint nnodes) |
SCIP_RETCODE | SCIPincludeHeurZeroobj (SCIP *scip) |
Macro Definition Documentation
◆ HEUR_NAME
#define HEUR_NAME "zeroobj" |
Definition at line 52 of file heur_zeroobj.c.
Referenced by SCIP_DECL_HEURCOPY(), SCIPincludeHeurZeroobj(), and setupAndSolveSubscip().
◆ HEUR_DESC
#define HEUR_DESC "heuristic trying to solve the problem without objective" |
Definition at line 53 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ HEUR_DISPCHAR
#define HEUR_DISPCHAR SCIP_HEURDISPCHAR_LNS |
Definition at line 54 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ HEUR_PRIORITY
#define HEUR_PRIORITY 100 |
Definition at line 55 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ HEUR_FREQ
#define HEUR_FREQ -1 |
Definition at line 56 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ HEUR_FREQOFS
#define HEUR_FREQOFS 0 |
Definition at line 57 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ HEUR_MAXDEPTH
#define HEUR_MAXDEPTH 0 |
Definition at line 58 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ HEUR_TIMING
#define HEUR_TIMING SCIP_HEURTIMING_BEFORENODE | SCIP_HEURTIMING_BEFOREPRESOL |
Definition at line 59 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ HEUR_USESSUBSCIP
#define HEUR_USESSUBSCIP TRUE |
does the heuristic use a secondary SCIP instance?
Definition at line 60 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ EVENTHDLR_NAME
#define EVENTHDLR_NAME "Zeroobj" |
Definition at line 63 of file heur_zeroobj.c.
Referenced by SCIP_DECL_EVENTEXEC(), and setupAndSolveSubscip().
◆ EVENTHDLR_DESC
#define EVENTHDLR_DESC "LP event handler for " HEUR_NAME " heuristic" |
Definition at line 64 of file heur_zeroobj.c.
Referenced by setupAndSolveSubscip().
◆ DEFAULT_MAXNODES
#define DEFAULT_MAXNODES 1000LL /* maximum number of nodes to regard in the subproblem */ |
Definition at line 67 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ DEFAULT_MINIMPROVE
#define DEFAULT_MINIMPROVE 0.01 /* factor by which zeroobj should at least improve the incumbent */ |
Definition at line 68 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ DEFAULT_MINNODES
#define DEFAULT_MINNODES 100LL /* minimum number of nodes to regard in the subproblem */ |
Definition at line 69 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ DEFAULT_MAXLPITERS
#define DEFAULT_MAXLPITERS 5000LL /* maximum number of LP iterations to be performed in the subproblem */ |
Definition at line 70 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ DEFAULT_NODESOFS
#define DEFAULT_NODESOFS 100LL /* number of nodes added to the contingent of the total nodes */ |
Definition at line 71 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ DEFAULT_NODESQUOT
#define DEFAULT_NODESQUOT 0.1 /* subproblem nodes in relation to nodes of the original problem */ |
Definition at line 72 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ DEFAULT_ADDALLSOLS
#define DEFAULT_ADDALLSOLS FALSE /* should all subproblem solutions be added to the original SCIP? */ |
Definition at line 73 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ DEFAULT_ONLYWITHOUTSOL
#define DEFAULT_ONLYWITHOUTSOL TRUE |
should heuristic only be executed if no primal solution was found, yet?
Definition at line 74 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
◆ DEFAULT_USEUCT
#define DEFAULT_USEUCT FALSE /* should uct node selection be used at the beginning of the search? */ |
Definition at line 75 of file heur_zeroobj.c.
Referenced by SCIPincludeHeurZeroobj().
Function Documentation
◆ SCIP_DECL_EVENTEXEC()
|
static |
Definition at line 108 of file heur_zeroobj.c.
References EVENTHDLR_NAME, NULL, SCIP_CALL, SCIP_EVENTTYPE_NODESOLVED, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_OKAY, SCIPeventGetType(), SCIPeventhdlrGetName(), SCIPgetLPSolstat(), SCIPgetNLPIterations(), and SCIPinterruptSolve().
◆ SCIP_DECL_HEURCOPY()
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 133 of file heur_zeroobj.c.
References HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurZeroobj().
◆ SCIP_DECL_HEURFREE()
|
static |
destructor of primal heuristic to free user data (called when SCIP is exiting)
Definition at line 147 of file heur_zeroobj.c.
References NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPheurGetData(), and SCIPheurSetData().
◆ SCIP_DECL_HEURINIT()
|
static |
initialization method of primal heuristic (called after problem was transformed)
Definition at line 168 of file heur_zeroobj.c.
References NULL, SCIP_OKAY, and SCIPheurGetData().
◆ SCIP_DECL_HEUREXEC()
|
static |
execution method of primal heuristic
Definition at line 188 of file heur_zeroobj.c.
References nnodes, NULL, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIPapplyZeroobj(), SCIPdebugMsg, SCIPgetNNodes(), SCIPgetNObjVars(), SCIPheurGetData(), SCIPheurGetNBestSolsFound(), SCIPheurGetNCalls(), and SCIPisStopped().
◆ setupAndSolveSubscip()
|
static |
setup and solve subscip
- Parameters
-
scip SCIP data structure subscip SCIP data structure heur heuristic data structure result result data structure minimprove factor by which zeroobj should at least improve the incumbent nnodes node limit for the subproblem
Definition at line 237 of file heur_zeroobj.c.
References EVENTHDLR_DESC, EVENTHDLR_NAME, FALSE, HEUR_NAME, MAX, NULL, SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_EVENTTYPE_NODESOLVED, SCIP_FOUNDSOL, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIPaddCoefLinear(), SCIPaddCons(), SCIPallocBufferArray, SCIPblkmem(), SCIPcatchEvent(), SCIPchgVarLbGlobal(), SCIPchgVarObj(), SCIPchgVarUbGlobal(), SCIPcopy(), SCIPcopyLimits(), SCIPcreateConsLinear(), SCIPdebugMsg, SCIPdropEvent(), SCIPerrorMessage, SCIPfeastol(), SCIPfindBranchrule(), SCIPfindNodesel(), SCIPfreeBufferArray, SCIPgetLowerbound(), SCIPgetNObjVars(), SCIPgetNSols(), SCIPgetSols(), SCIPgetUpperbound(), SCIPgetVarsData(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPheurGetData(), SCIPincludeEventhdlrBasic(), SCIPinfinity(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisParamFixed(), SCIPprintStatistics(), SCIPreleaseCons(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetPresolving(), SCIPsetSeparating(), SCIPsetSubscipsOff(), SCIPsolve(), SCIPsumepsilon(), SCIPtransformProb(), SCIPtranslateSubSol(), SCIPtrySolFree(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by SCIPapplyZeroobj().