Detailed Description
internal methods for node selectors and node priority queues
Definition in file nodesel.h.
#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_event.h"
#include "scip/type_retcode.h"
#include "scip/type_set.h"
#include "scip/type_stat.h"
#include "scip/type_lp.h"
#include "scip/type_tree.h"
#include "scip/type_reopt.h"
#include "scip/pub_nodesel.h"
Go to the source code of this file.
Function Documentation
◆ SCIPnodepqCreate()
SCIP_RETCODE SCIPnodepqCreate | ( | SCIP_NODEPQ ** | nodepq, |
SCIP_SET * | set, | ||
SCIP_NODESEL * | nodesel | ||
) |
creates node priority queue
- Parameters
-
nodepq pointer to a node priority queue set global SCIP settings nodesel node selector to use for sorting the nodes in the queue
Definition at line 96 of file nodesel.c.
References BMSallocMemory, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPnodepqSetNodesel(), and SCIPtreeCreate().
◆ SCIPnodepqDestroy()
void SCIPnodepqDestroy | ( | SCIP_NODEPQ ** | nodepq | ) |
frees node priority queue, but not the data nodes themselves
- Parameters
-
nodepq pointer to a node priority queue
Definition at line 118 of file nodesel.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, and NULL.
Referenced by SCIPnodepqFree(), and SCIPnodepqSetNodesel().
◆ SCIPnodepqFree()
SCIP_RETCODE SCIPnodepqFree | ( | SCIP_NODEPQ ** | nodepq, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_TREE * | tree, | ||
SCIP_LP * | lp | ||
) |
frees node priority queue and all nodes in the queue
- Parameters
-
nodepq pointer to a node priority queue blkmem block memory buffers set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue tree branch and bound tree lp current LP data
Definition at line 132 of file nodesel.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPnodepqClear(), and SCIPnodepqDestroy().
Referenced by SCIPtreeFree().
◆ SCIPnodepqClear()
SCIP_RETCODE SCIPnodepqClear | ( | SCIP_NODEPQ * | nodepq, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_TREE * | tree, | ||
SCIP_LP * | lp | ||
) |
deletes all nodes in the node priority queue
- Parameters
-
nodepq node priority queue blkmem block memory buffers set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue tree branch and bound tree lp current LP data
Definition at line 156 of file nodesel.c.
References SCIP_NodePQ::len, SCIP_NodePQ::lowerboundsum, NULL, SCIP_CALL, SCIP_NODETYPE_LEAF, SCIP_OKAY, SCIPnodeFree(), SCIPnodeGetType(), SCIPsortDownPtr(), and SCIP_NodePQ::slots.
Referenced by SCIPnodepqFree(), and SCIPtreeClear().
◆ SCIPnodepqGetNodesel()
SCIP_NODESEL* SCIPnodepqGetNodesel | ( | SCIP_NODEPQ * | nodepq | ) |
returns the node selector associated with the given node priority queue
- Parameters
-
nodepq node priority queue
Definition at line 197 of file nodesel.c.
References SCIP_NodePQ::nodesel, and NULL.
Referenced by SCIPtreeGetBestChild(), SCIPtreeGetBestNode(), SCIPtreeGetBestSibling(), SCIPtreeGetNodesel(), and SCIPtreeSetNodesel().
◆ SCIPnodepqSetNodesel()
SCIP_RETCODE SCIPnodepqSetNodesel | ( | SCIP_NODEPQ ** | nodepq, |
SCIP_SET * | set, | ||
SCIP_NODESEL * | nodesel | ||
) |
sets the node selector used for sorting the nodes in the queue, and resorts the queue if necessary
- Parameters
-
nodepq pointer to a node priority queue set global SCIP settings nodesel node selector to use for sorting the nodes in the queue
Definition at line 207 of file nodesel.c.
References SCIP_NodePQ::len, nodepqResize(), NULL, SCIP_CALL, SCIP_OKAY, SCIPnodepqCreate(), SCIPnodepqDestroy(), SCIPnodepqInsert(), and SCIP_NodePQ::slots.
Referenced by SCIPtreeSetNodesel().
◆ SCIPnodepqCompare()
int SCIPnodepqCompare | ( | SCIP_NODEPQ * | nodepq, |
SCIP_SET * | set, | ||
SCIP_NODE * | node1, | ||
SCIP_NODE * | node2 | ||
) |
compares two nodes; returns -1/0/+1 if node1 better/equal/worse than node2
- Parameters
-
nodepq node priority queue set global SCIP settings node1 first node to compare node2 second node to compare
Definition at line 255 of file nodesel.c.
References SCIP_NodePQ::nodesel, NULL, and SCIPnodeselCompare().
Referenced by SCIPnodeFocus().
◆ SCIPnodepqInsert()
SCIP_RETCODE SCIPnodepqInsert | ( | SCIP_NODEPQ * | nodepq, |
SCIP_SET * | set, | ||
SCIP_NODE * | node | ||
) |
inserts node into node priority queue
- Parameters
-
nodepq node priority queue set global SCIP settings node node to be inserted
Definition at line 271 of file nodesel.c.
References SCIP_NodePQ::bfsposs, SCIP_NodePQ::bfsqueue, SCIP_NodePQ::len, SCIP_NodePQ::lowerboundsum, nodepqResize(), SCIP_NodePQ::nodesel, NULL, PQ_PARENT, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPnodeGetLowerbound(), SCIPsetDebugMsg, and SCIP_NodePQ::slots.
Referenced by nodeToLeaf(), and SCIPnodepqSetNodesel().
◆ SCIPnodepqRemove()
SCIP_RETCODE SCIPnodepqRemove | ( | SCIP_NODEPQ * | nodepq, |
SCIP_SET * | set, | ||
SCIP_NODE * | node | ||
) |
removes node from the node priority queue
- Parameters
-
nodepq node priority queue set global SCIP settings node node to remove
Definition at line 515 of file nodesel.c.
References nodepqDelPos(), nodepqFindNode(), SCIP_INVALIDDATA, SCIP_OKAY, and SCIPerrorMessage.
Referenced by SCIPnodeFocus().
◆ SCIPnodepqFirst()
SCIP_NODE* SCIPnodepqFirst | ( | const SCIP_NODEPQ * | nodepq | ) |
returns the best node of the queue without removing it
- Parameters
-
nodepq node priority queue
Definition at line 536 of file nodesel.c.
References SCIP_NodePQ::len, NULL, and SCIP_NodePQ::slots.
Referenced by SCIPtreeGetBestLeaf().
◆ SCIPnodepqNodes()
SCIP_NODE** SCIPnodepqNodes | ( | const SCIP_NODEPQ * | nodepq | ) |
returns the nodes array of the queue
- Parameters
-
nodepq node priority queue
Definition at line 552 of file nodesel.c.
References NULL, and SCIP_NodePQ::slots.
Referenced by SCIPgetLeaves(), and SCIPgetOpenNodesData().
◆ SCIPnodepqLen()
int SCIPnodepqLen | ( | const SCIP_NODEPQ * | nodepq | ) |
returns the number of nodes stored in the node priority queue
- Parameters
-
nodepq node priority queue
Definition at line 562 of file nodesel.c.
References SCIP_NodePQ::len, and NULL.
Referenced by SCIPgetLeaves(), SCIPgetNLeaves(), SCIPgetOpenNodesData(), and SCIPtreeGetNLeaves().
◆ SCIPnodepqGetLowerbound()
SCIP_Real SCIPnodepqGetLowerbound | ( | SCIP_NODEPQ * | nodepq, |
SCIP_SET * | set | ||
) |
gets the minimal lower bound of all nodes in the queue
- Parameters
-
nodepq node priority queue set global SCIP settings
Definition at line 573 of file nodesel.c.
References SCIP_NodePQ::bfsqueue, SCIP_NodePQ::len, SCIP_NodePQ::nodesel, NULL, SCIPnodeGetLowerbound(), SCIPsetInfinity(), and SCIP_NodePQ::slots.
Referenced by SCIPtreeGetLowerbound().
◆ SCIPnodepqGetLowerboundNode()
SCIP_NODE* SCIPnodepqGetLowerboundNode | ( | SCIP_NODEPQ * | nodepq, |
SCIP_SET * | set | ||
) |
gets the node with minimal lower bound of all nodes in the queue
- Parameters
-
nodepq node priority queue set global SCIP settings
Definition at line 596 of file nodesel.c.
References SCIP_NodePQ::bfsqueue, SCIP_NodePQ::len, SCIP_NodePQ::nodesel, NULL, and SCIP_NodePQ::slots.
Referenced by SCIPtreeGetLowerboundNode().
◆ SCIPnodepqGetLowerboundSum()
SCIP_Real SCIPnodepqGetLowerboundSum | ( | SCIP_NODEPQ * | nodepq | ) |
gets the sum of lower bounds of all nodes in the queue
- Parameters
-
nodepq node priority queue
Definition at line 620 of file nodesel.c.
References SCIP_NodePQ::lowerboundsum, and NULL.
Referenced by SCIPtreeGetAvgLowerbound().
◆ SCIPnodepqBound()
SCIP_RETCODE SCIPnodepqBound | ( | SCIP_NODEPQ * | nodepq, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_Real | cutoffbound | ||
) |
free all nodes from the queue that are cut off by the given upper bound
- Parameters
-
nodepq node priority queue blkmem block memory buffer set global SCIP settings stat dynamic problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue tree branch and bound tree reopt reoptimization data structure lp current LP data cutoffbound cutoff bound: all nodes with lowerbound >= cutoffbound are cut off
Definition at line 630 of file nodesel.c.
References FALSE, SCIP_NodePQ::len, nodepqDelPos(), NULL, PQ_LEFTCHILD, PQ_RIGHTCHILD, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_NODETYPE_LEAF, SCIP_OKAY, SCIPlpGetSolstat(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetLowerbound(), SCIPnodeGetType(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPsetIsLT(), SCIPtreeGetEffectiveRootDepth(), SCIPtreeGetFocusNode(), SCIPvisualCutoffNode(), SCIP_NodePQ::slots, and SCIP_Stat::visual.
Referenced by SCIPtreeCutoff().
◆ SCIPnodeselCopyInclude()
SCIP_RETCODE SCIPnodeselCopyInclude | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set | ||
) |
copies the given node selector to a new scip
- Parameters
-
nodesel node selector set SCIP_SET of SCIP to copy to
Definition at line 740 of file nodesel.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPnodeselGetName(), and SCIPsetDebugMsg.
Referenced by SCIPsetCopyPlugins().
◆ SCIPnodeselCreate()
SCIP_RETCODE SCIPnodeselCreate | ( | SCIP_NODESEL ** | nodesel, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
BMS_BLKMEM * | blkmem, | ||
const char * | name, | ||
const char * | desc, | ||
int | stdpriority, | ||
int | memsavepriority, | ||
SCIP_DECL_NODESELCOPY((*nodeselcopy)) | , | ||
SCIP_DECL_NODESELFREE((*nodeselfree)) | , | ||
SCIP_DECL_NODESELINIT((*nodeselinit)) | , | ||
SCIP_DECL_NODESELEXIT((*nodeselexit)) | , | ||
SCIP_DECL_NODESELINITSOL((*nodeselinitsol)) | , | ||
SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)) | , | ||
SCIP_DECL_NODESELSELECT((*nodeselselect)) | , | ||
SCIP_DECL_NODESELCOMP((*nodeselcomp)) | , | ||
SCIP_NODESELDATA * | nodeseldata | ||
) |
creates a node selector
- Parameters
-
nodesel pointer to store node selector set global SCIP settings messagehdlr message handler blkmem block memory for parameter settings name name of node selector desc description of node selector stdpriority priority of the node selector in standard mode memsavepriority priority of the node selector in memory saving mode nodeseldata node selector data
Definition at line 826 of file nodesel.c.
References doNodeselCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPnodeselFree().
Referenced by SCIPincludeNodesel(), and SCIPincludeNodeselBasic().
◆ SCIPnodeselFree()
SCIP_RETCODE SCIPnodeselFree | ( | SCIP_NODESEL ** | nodesel, |
SCIP_SET * | set | ||
) |
frees memory of node selector
- Parameters
-
nodesel pointer to node selector data structure set global SCIP settings
Definition at line 860 of file nodesel.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
Referenced by SCIPnodeselCreate().
◆ SCIPnodeselInit()
SCIP_RETCODE SCIPnodeselInit | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set | ||
) |
initializes node selector
- Parameters
-
nodesel node selector set global SCIP settings
Definition at line 889 of file nodesel.c.
References SCIP_Nodesel::initialized, SCIP_Nodesel::name, SCIP_Nodesel::nodeseltime, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIP_Nodesel::setuptime, and TRUE.
Referenced by SCIPsetInitPlugins().
◆ SCIPnodeselExit()
SCIP_RETCODE SCIPnodeselExit | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set | ||
) |
deinitializes node selector
- Parameters
-
nodesel node selector set global SCIP settings
Definition at line 925 of file nodesel.c.
References FALSE, SCIP_Nodesel::initialized, SCIP_Nodesel::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Nodesel::setuptime.
Referenced by SCIPsetExitPlugins().
◆ SCIPnodeselInitsol()
SCIP_RETCODE SCIPnodeselInitsol | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set | ||
) |
informs node selector that the branch and bound process is being started
- Parameters
-
nodesel node selector set global SCIP settings
Definition at line 955 of file nodesel.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Nodesel::setuptime.
Referenced by SCIPsetInitsolPlugins().
◆ SCIPnodeselExitsol()
SCIP_RETCODE SCIPnodeselExitsol | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set | ||
) |
informs node selector that the branch and bound process data is being freed
- Parameters
-
nodesel node selector set global SCIP settings
Definition at line 979 of file nodesel.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Nodesel::setuptime.
Referenced by SCIPsetInitsolPlugins().
◆ SCIPnodeselSelect()
SCIP_RETCODE SCIPnodeselSelect | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set, | ||
SCIP_NODE ** | selnode | ||
) |
select next node to be processed
- Parameters
-
nodesel node selector set global SCIP settings selnode pointer to store node to be processed next
Definition at line 1003 of file nodesel.c.
References SCIP_Nodesel::nodeseltime, NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), and SCIPclockStop().
Referenced by SCIPsolveCIP().
◆ SCIPnodeselCompare()
int SCIPnodeselCompare | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set, | ||
SCIP_NODE * | node1, | ||
SCIP_NODE * | node2 | ||
) |
compares two nodes; returns -1/0/+1 if node1 better/equal/worse than node2
- Parameters
-
nodesel node selector set global SCIP settings node1 first node to compare node2 second node to compare
Definition at line 1026 of file nodesel.c.
References NULL.
Referenced by SCIPnodepqCompare(), SCIPtreeGetBestChild(), SCIPtreeGetBestNode(), and SCIPtreeGetBestSibling().
◆ SCIPnodeselSetStdPriority()
void SCIPnodeselSetStdPriority | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set, | ||
int | priority | ||
) |
sets priority of node selector in standard mode
gets priority of node selector in standard mode
- Parameters
-
nodesel node selector set global SCIP settings priority new priority of the node selector
Definition at line 1073 of file nodesel.c.
References NULL, and SCIP_Nodesel::stdpriority.
Referenced by SCIPsetNodeselStdPriority().
◆ SCIPnodeselSetMemsavePriority()
void SCIPnodeselSetMemsavePriority | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set, | ||
int | priority | ||
) |
sets priority of node selector in memory saving mode
- Parameters
-
nodesel node selector set global SCIP settings priority new priority of the node selector
Definition at line 1097 of file nodesel.c.
References SCIP_Nodesel::memsavepriority, and NULL.
Referenced by SCIPsetNodeselMemsavePriority().
◆ SCIPnodeselSetCopy()
void SCIPnodeselSetCopy | ( | SCIP_NODESEL * | nodesel, |
SCIP_DECL_NODESELCOPY((*nodeselcopy)) | |||
) |
sets copy method of node selector
- Parameters
-
nodesel node selector
Definition at line 1134 of file nodesel.c.
References NULL.
Referenced by SCIPsetNodeselCopy().
◆ SCIPnodeselSetFree()
void SCIPnodeselSetFree | ( | SCIP_NODESEL * | nodesel, |
SCIP_DECL_NODESELFREE((*nodeselfree)) | |||
) |
sets destructor method of node selector
- Parameters
-
nodesel node selector
Definition at line 1145 of file nodesel.c.
References NULL.
Referenced by SCIPsetNodeselFree().
◆ SCIPnodeselSetInit()
void SCIPnodeselSetInit | ( | SCIP_NODESEL * | nodesel, |
SCIP_DECL_NODESELINIT((*nodeselinit)) | |||
) |
sets initialization method of node selector
- Parameters
-
nodesel node selector
Definition at line 1156 of file nodesel.c.
References NULL.
Referenced by SCIPsetNodeselInit().
◆ SCIPnodeselSetExit()
void SCIPnodeselSetExit | ( | SCIP_NODESEL * | nodesel, |
SCIP_DECL_NODESELEXIT((*nodeselexit)) | |||
) |
sets deinitialization method of node selector
- Parameters
-
nodesel node selector
Definition at line 1167 of file nodesel.c.
References NULL.
Referenced by SCIPsetNodeselExit().
◆ SCIPnodeselSetInitsol()
void SCIPnodeselSetInitsol | ( | SCIP_NODESEL * | nodesel, |
SCIP_DECL_NODESELINITSOL((*nodeselinitsol)) | |||
) |
sets solving process initialization method of node selector
- Parameters
-
nodesel node selector
Definition at line 1178 of file nodesel.c.
References NULL.
Referenced by SCIPsetNodeselInitsol().
◆ SCIPnodeselSetExitsol()
void SCIPnodeselSetExitsol | ( | SCIP_NODESEL * | nodesel, |
SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)) | |||
) |
sets solving process deinitialization method of node selector
- Parameters
-
nodesel node selector
Definition at line 1189 of file nodesel.c.
References NULL.
Referenced by SCIPsetNodeselExitsol().
◆ SCIPnodeselEnableOrDisableClocks()
void SCIPnodeselEnableOrDisableClocks | ( | SCIP_NODESEL * | nodesel, |
SCIP_Bool | enable | ||
) |
enables or disables all clocks of nodesel
, depending on the value of the flag
- Parameters
-
nodesel the node selector for which all clocks should be enabled or disabled enable should the clocks of the node selector be enabled?
Definition at line 1210 of file nodesel.c.
References SCIP_Nodesel::nodeseltime, NULL, SCIPclockEnableOrDisable(), and SCIP_Nodesel::setuptime.