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_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 95 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 116 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_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 eventqueue event queue tree branch and bound tree lp current LP data
Definition at line 130 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_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 eventqueue event queue tree branch and bound tree lp current LP data
Definition at line 153 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 193 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 203 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 251 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 267 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 511 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 532 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 548 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 558 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 569 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 592 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 616 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_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 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 626 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 735 of file nodesel.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPnodeselGetName(), and SCIPsetDebugMsg.
◆ 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 821 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 855 of file nodesel.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
Referenced by SCIPnodeselCreate(), and SCIPsetFree().
◆ SCIPnodeselInit()
SCIP_RETCODE SCIPnodeselInit | ( | SCIP_NODESEL * | nodesel, |
SCIP_SET * | set | ||
) |
initializes node selector
- Parameters
-
nodesel node selector set global SCIP settings
Definition at line 884 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 920 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 950 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 974 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 998 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 1021 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 1068 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 1092 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 1129 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 1140 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 1151 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 1162 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 1173 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 1184 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 1205 of file nodesel.c.
References SCIP_Nodesel::nodeseltime, NULL, SCIPclockEnableOrDisable(), and SCIP_Nodesel::setuptime.