45#define NODESEL_NAME "restartdfs"
46#define NODESEL_DESC "depth first search with periodical selection of the best node"
47#define NODESEL_STDPRIORITY 10000
48#define NODESEL_MEMSAVEPRIORITY 50000
55#define SELECTBESTFREQ 100
56#define COUNTONLYLEAVES TRUE
60struct SCIP_NodeselData
62 SCIP_Longint lastrestart;
63 SCIP_Longint nprocessedleaves;
65 SCIP_Bool countonlyleaves;
117 nodeseldata->lastrestart = 0;
118 nodeseldata->nprocessedleaves = 0;
143 nodeseldata->nprocessedleaves++;
150 if( (nodeseldata->countonlyleaves && nodeseldata->nprocessedleaves >= nodeseldata->selectbestfreq)
151 || (!nodeseldata->countonlyleaves &&
nnodes - nodeseldata->lastrestart >= nodeseldata->selectbestfreq ) )
153 nodeseldata->lastrestart =
nnodes;
154 nodeseldata->nprocessedleaves = 0;
191 nodeseldata->lastrestart = 0;
192 nodeseldata->nprocessedleaves = 0;
208 "nodeselection/restartdfs/selectbestfreq",
209 "frequency for selecting the best node instead of the deepest one",
214 "nodeselection/restartdfs/countonlyleaves",
215 "count only leaf nodes (otherwise all nodes)?",
SCIP_RETCODE SCIPincludeNodeselRestartdfs(SCIP *scip)
SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
SCIP_RETCODE SCIPincludeNodeselBasic(SCIP *scip, SCIP_NODESEL **nodesel, const char *name, const char *desc, int stdpriority, int memsavepriority, SCIP_DECL_NODESELSELECT((*nodeselselect)), SCIP_DECL_NODESELCOMP((*nodeselcomp)), SCIP_NODESELDATA *nodeseldata)
void SCIPnodeselSetData(SCIP_NODESEL *nodesel, SCIP_NODESELDATA *nodeseldata)
SCIP_RETCODE SCIPsetNodeselFree(SCIP *scip, SCIP_NODESEL *nodesel,)
SCIP_RETCODE SCIPsetNodeselInitsol(SCIP *scip, SCIP_NODESEL *nodesel,)
SCIP_NODESELDATA * SCIPnodeselGetData(SCIP_NODESEL *nodesel)
SCIP_RETCODE SCIPsetNodeselCopy(SCIP *scip, SCIP_NODESEL *nodesel,)
const char * SCIPnodeselGetName(SCIP_NODESEL *nodesel)
SCIP_Longint SCIPgetNNodes(SCIP *scip)
SCIP_NODE * SCIPgetPrioSibling(SCIP *scip)
SCIP_NODE * SCIPgetBestboundNode(SCIP *scip)
SCIP_NODE * SCIPgetPrioChild(SCIP *scip)
SCIP_NODE * SCIPgetBestLeaf(SCIP *scip)
assert(minobj< SCIPgetCutoffbound(scip))
#define NODESEL_MEMSAVEPRIORITY
#define NODESEL_STDPRIORITY
node selector for depth first search with periodical selection of the best node
public methods for message output
public methods for node selectors
public methods for branch and bound tree
public methods for memory management
public methods for node selector plugins
public methods for SCIP parameter handling
public methods for querying solving statistics
public methods for the branch-and-bound tree
#define SCIP_DECL_NODESELCOMP(x)
#define SCIP_DECL_NODESELINITSOL(x)
#define SCIP_DECL_NODESELCOPY(x)
#define SCIP_DECL_NODESELSELECT(x)
#define SCIP_DECL_NODESELFREE(x)
struct SCIP_NodeselData SCIP_NODESELDATA
enum SCIP_Retcode SCIP_RETCODE