Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods for node selectors

Author
Tobias Achterberg
Timo Berthold

Definition in file nodesel.c.

#include <assert.h>
#include <string.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/clock.h"
#include "scip/stat.h"
#include "scip/visual.h"
#include "scip/paramset.h"
#include "scip/tree.h"
#include "scip/reopt.h"
#include "scip/lp.h"
#include "scip/scip.h"
#include "scip/nodesel.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/struct_nodesel.h"
#include "scip/struct_scip.h"

Go to the source code of this file.

Macros

#define PQ_PARENT(q)   (((q)+1)/2-1)
 
#define PQ_LEFTCHILD(p)   (2*(p)+1)
 
#define PQ_RIGHTCHILD(p)   (2*(p)+2)
 

Functions

static SCIP_DECL_SORTPTRCOMP (nodeCompNumber)
 
static SCIP_RETCODE nodepqResize (SCIP_NODEPQ *nodepq, SCIP_SET *set, int minsize)
 
SCIP_RETCODE SCIPnodepqCreate (SCIP_NODEPQ **nodepq, SCIP_SET *set, SCIP_NODESEL *nodesel)
 
void SCIPnodepqDestroy (SCIP_NODEPQ **nodepq)
 
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)
 
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)
 
SCIP_NODESELSCIPnodepqGetNodesel (SCIP_NODEPQ *nodepq)
 
SCIP_RETCODE SCIPnodepqSetNodesel (SCIP_NODEPQ **nodepq, SCIP_SET *set, SCIP_NODESEL *nodesel)
 
int SCIPnodepqCompare (SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node1, SCIP_NODE *node2)
 
SCIP_RETCODE SCIPnodepqInsert (SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node)
 
static SCIP_Bool nodepqDelPos (SCIP_NODEPQ *nodepq, SCIP_SET *set, int rempos)
 
static int nodepqFindNode (SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node)
 
SCIP_RETCODE SCIPnodepqRemove (SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node)
 
SCIP_NODESCIPnodepqFirst (const SCIP_NODEPQ *nodepq)
 
SCIP_NODE ** SCIPnodepqNodes (const SCIP_NODEPQ *nodepq)
 
int SCIPnodepqLen (const SCIP_NODEPQ *nodepq)
 
SCIP_Real SCIPnodepqGetLowerbound (SCIP_NODEPQ *nodepq, SCIP_SET *set)
 
SCIP_NODESCIPnodepqGetLowerboundNode (SCIP_NODEPQ *nodepq, SCIP_SET *set)
 
SCIP_Real SCIPnodepqGetLowerboundSum (SCIP_NODEPQ *nodepq)
 
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)
 
static SCIP_DECL_PARAMCHGD (paramChgdNodeselStdPriority)
 
static SCIP_DECL_PARAMCHGD (paramChgdNodeselMemsavePriority)
 
SCIP_RETCODE SCIPnodeselCopyInclude (SCIP_NODESEL *nodesel, SCIP_SET *set)
 
static SCIP_RETCODE doNodeselCreate (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)
 
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)
 
SCIP_RETCODE SCIPnodeselFree (SCIP_NODESEL **nodesel, SCIP_SET *set)
 
SCIP_RETCODE SCIPnodeselInit (SCIP_NODESEL *nodesel, SCIP_SET *set)
 
SCIP_RETCODE SCIPnodeselExit (SCIP_NODESEL *nodesel, SCIP_SET *set)
 
SCIP_RETCODE SCIPnodeselInitsol (SCIP_NODESEL *nodesel, SCIP_SET *set)
 
SCIP_RETCODE SCIPnodeselExitsol (SCIP_NODESEL *nodesel, SCIP_SET *set)
 
SCIP_RETCODE SCIPnodeselSelect (SCIP_NODESEL *nodesel, SCIP_SET *set, SCIP_NODE **selnode)
 
int SCIPnodeselCompare (SCIP_NODESEL *nodesel, SCIP_SET *set, SCIP_NODE *node1, SCIP_NODE *node2)
 
const char * SCIPnodeselGetName (SCIP_NODESEL *nodesel)
 
const char * SCIPnodeselGetDesc (SCIP_NODESEL *nodesel)
 
int SCIPnodeselGetStdPriority (SCIP_NODESEL *nodesel)
 
void SCIPnodeselSetStdPriority (SCIP_NODESEL *nodesel, SCIP_SET *set, int priority)
 
int SCIPnodeselGetMemsavePriority (SCIP_NODESEL *nodesel)
 
void SCIPnodeselSetMemsavePriority (SCIP_NODESEL *nodesel, SCIP_SET *set, int priority)
 
SCIP_NODESELDATASCIPnodeselGetData (SCIP_NODESEL *nodesel)
 
void SCIPnodeselSetData (SCIP_NODESEL *nodesel, SCIP_NODESELDATA *nodeseldata)
 
void SCIPnodeselSetCopy (SCIP_NODESEL *nodesel, SCIP_DECL_NODESELCOPY((*nodeselcopy)))
 
void SCIPnodeselSetFree (SCIP_NODESEL *nodesel, SCIP_DECL_NODESELFREE((*nodeselfree)))
 
void SCIPnodeselSetInit (SCIP_NODESEL *nodesel, SCIP_DECL_NODESELINIT((*nodeselinit)))
 
void SCIPnodeselSetExit (SCIP_NODESEL *nodesel, SCIP_DECL_NODESELEXIT((*nodeselexit)))
 
void SCIPnodeselSetInitsol (SCIP_NODESEL *nodesel, SCIP_DECL_NODESELINITSOL((*nodeselinitsol)))
 
void SCIPnodeselSetExitsol (SCIP_NODESEL *nodesel, SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)))
 
SCIP_Bool SCIPnodeselIsInitialized (SCIP_NODESEL *nodesel)
 
void SCIPnodeselEnableOrDisableClocks (SCIP_NODESEL *nodesel, SCIP_Bool enable)
 
SCIP_Real SCIPnodeselGetSetupTime (SCIP_NODESEL *nodesel)
 
SCIP_Real SCIPnodeselGetTime (SCIP_NODESEL *nodesel)
 

Macro Definition Documentation

◆ PQ_PARENT

#define PQ_PARENT (   q)    (((q)+1)/2-1)

Definition at line 49 of file nodesel.c.

Referenced by nodepqDelPos(), and SCIPnodepqInsert().

◆ PQ_LEFTCHILD

#define PQ_LEFTCHILD (   p)    (2*(p)+1)

Definition at line 50 of file nodesel.c.

Referenced by nodepqDelPos(), and SCIPnodepqBound().

◆ PQ_RIGHTCHILD

#define PQ_RIGHTCHILD (   p)    (2*(p)+2)

Definition at line 51 of file nodesel.c.

Referenced by nodepqDelPos(), and SCIPnodepqBound().

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP()

static SCIP_DECL_SORTPTRCOMP ( nodeCompNumber  )
static

node comparator for node numbers

Definition at line 56 of file nodesel.c.

References NULL, and number.

◆ nodepqResize()

static SCIP_RETCODE nodepqResize ( SCIP_NODEPQ nodepq,
SCIP_SET set,
int  minsize 
)
static

resizes node memory to hold at least the given number of nodes

Parameters
nodepqnode priority queue
setglobal SCIP settings
minsizeminimal number of storable nodes

Definition at line 76 of file nodesel.c.

References SCIP_NodePQ::bfsposs, SCIP_NodePQ::bfsqueue, BMSreallocMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcTreeGrowSize(), SCIP_NodePQ::size, and SCIP_NodePQ::slots.

Referenced by SCIPnodepqInsert(), and SCIPnodepqSetNodesel().

◆ SCIPnodepqCreate()

SCIP_RETCODE SCIPnodepqCreate ( SCIP_NODEPQ **  nodepq,
SCIP_SET set,
SCIP_NODESEL nodesel 
)

creates node priority queue

Parameters
nodepqpointer to a node priority queue
setglobal SCIP settings
nodeselnode 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
nodepqpointer 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
nodepqpointer to a node priority queue
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
treebranch and bound tree
lpcurrent 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
nodepqnode priority queue
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
treebranch and bound tree
lpcurrent 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
nodepqnode 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
nodepqpointer to a node priority queue
setglobal SCIP settings
nodeselnode 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
nodepqnode priority queue
setglobal SCIP settings
node1first node to compare
node2second 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
nodepqnode priority queue
setglobal SCIP settings
nodenode 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().

◆ nodepqDelPos()

static SCIP_Bool nodepqDelPos ( SCIP_NODEPQ nodepq,
SCIP_SET set,
int  rempos 
)
static

deletes node at given position from the node priority queue; returns TRUE, if the parent fell down to the free position

Parameters
nodepqnode priority queue
setglobal SCIP settings
remposqueue position of node to remove

Definition at line 333 of file nodesel.c.

References SCIP_NodePQ::bfsposs, SCIP_NodePQ::bfsqueue, FALSE, SCIP_NodePQ::len, SCIP_NodePQ::lowerboundsum, SCIP_NodePQ::nodesel, NULL, PQ_LEFTCHILD, PQ_PARENT, PQ_RIGHTCHILD, SCIP_Bool, SCIP_Real, SCIPnodeGetLowerbound(), SCIPsetDebugMsg, SCIP_NodePQ::slots, and TRUE.

Referenced by SCIPnodepqBound(), and SCIPnodepqRemove().

◆ nodepqFindNode()

static int nodepqFindNode ( SCIP_NODEPQ nodepq,
SCIP_SET set,
SCIP_NODE node 
)
static

returns the position of given node in the priority queue, or -1 if not existing

Parameters
nodepqnode priority queue
setglobal SCIP settings
nodenode to find

Definition at line 491 of file nodesel.c.

References SCIP_NodePQ::len, NULL, and SCIP_NodePQ::slots.

Referenced by SCIPnodepqRemove().

◆ SCIPnodepqRemove()

SCIP_RETCODE SCIPnodepqRemove ( SCIP_NODEPQ nodepq,
SCIP_SET set,
SCIP_NODE node 
)

removes node from the node priority queue

Parameters
nodepqnode priority queue
setglobal SCIP settings
nodenode 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
nodepqnode 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
nodepqnode 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
nodepqnode 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
nodepqnode priority queue
setglobal 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
nodepqnode priority queue
setglobal 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
nodepqnode 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
nodepqnode priority queue
blkmemblock memory buffer
setglobal SCIP settings
statdynamic problem statistics
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
cutoffboundcutoff 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().

◆ SCIP_DECL_PARAMCHGD() [1/2]

static SCIP_DECL_PARAMCHGD ( paramChgdNodeselStdPriority  )
static

method to call, when the standard mode priority of a node selector was changed

Definition at line 711 of file nodesel.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetNodeselStdPriority().

◆ SCIP_DECL_PARAMCHGD() [2/2]

static SCIP_DECL_PARAMCHGD ( paramChgdNodeselMemsavePriority  )
static

method to call, when the memory saving mode priority of a node selector was changed

Definition at line 726 of file nodesel.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetNodeselMemsavePriority().

◆ SCIPnodeselCopyInclude()

SCIP_RETCODE SCIPnodeselCopyInclude ( SCIP_NODESEL nodesel,
SCIP_SET set 
)

copies the given node selector to a new scip

Parameters
nodeselnode selector
setSCIP_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().

◆ doNodeselCreate()

static SCIP_RETCODE doNodeselCreate ( 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 
)
static

internal method for creating a node selector

Parameters
nodeselpointer to store node selector
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of node selector
descdescription of node selector
stdprioritypriority of the node selector in standard mode
memsaveprioritypriority of the node selector in memory saving mode
nodeseldatanode selector data

Definition at line 759 of file nodesel.c.

References BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddIntParam(), SCIPsnprintf(), and TRUE.

Referenced by SCIPnodeselCreate().

◆ 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
nodeselpointer to store node selector
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of node selector
descdescription of node selector
stdprioritypriority of the node selector in standard mode
memsaveprioritypriority of the node selector in memory saving mode
nodeseldatanode 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
nodeselpointer to node selector data structure
setglobal 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
nodeselnode selector
setglobal 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
nodeselnode selector
setglobal 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
nodeselnode selector
setglobal 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
nodeselnode selector
setglobal 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
nodeselnode selector
setglobal SCIP settings
selnodepointer 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
nodeselnode selector
setglobal SCIP settings
node1first node to compare
node2second 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 
)

gets priority of node selector in standard mode

Parameters
nodeselnode selector
setglobal SCIP settings
prioritynew 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
nodeselnode selector
setglobal SCIP settings
prioritynew 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
nodeselnode 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
nodeselnode 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
nodeselnode 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
nodeselnode 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
nodeselnode 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
nodeselnode 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
nodeselthe node selector for which all clocks should be enabled or disabled
enableshould 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.