SCIP Doxygen Documentation
 
Loading...
Searching...
No Matches

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)
 
#define PQ_LEFTCHILD(p)
 
#define PQ_RIGHTCHILD(p)
 

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,)
 
void SCIPnodeselSetFree (SCIP_NODESEL *nodesel,)
 
void SCIPnodeselSetInit (SCIP_NODESEL *nodesel,)
 
void SCIPnodeselSetExit (SCIP_NODESEL *nodesel,)
 
void SCIPnodeselSetInitsol (SCIP_NODESEL *nodesel,)
 
void SCIPnodeselSetExitsol (SCIP_NODESEL *nodesel,)
 
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)
Value:
(((q)+1)/2-1)

Definition at line 58 of file nodesel.c.

Referenced by nodepqDelPos(), and SCIPnodepqInsert().

◆ PQ_LEFTCHILD

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

Definition at line 59 of file nodesel.c.

Referenced by nodepqDelPos(), and SCIPnodepqBound().

◆ PQ_RIGHTCHILD

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

Definition at line 60 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 65 of file nodesel.c.

References assert(), 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 85 of file nodesel.c.

References assert(), 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 105 of file nodesel.c.

References assert(), 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 127 of file nodesel.c.

References assert(), 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 141 of file nodesel.c.

References assert(), 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 165 of file nodesel.c.

References assert(), i, 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 206 of file nodesel.c.

References assert(), 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 216 of file nodesel.c.

References assert(), i, nodepqResize(), NULL, SCIP_CALL, SCIP_OKAY, SCIPnodepqCreate(), SCIPnodepqDestroy(), and SCIPnodepqInsert().

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 264 of file nodesel.c.

References assert(), 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 280 of file nodesel.c.

References assert(), 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 342 of file nodesel.c.

References assert(), 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 500 of file nodesel.c.

References assert(), 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 524 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 545 of file nodesel.c.

References assert(), 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 561 of file nodesel.c.

References assert(), 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 571 of file nodesel.c.

References assert(), SCIP_NodePQ::len, and NULL.

Referenced by SCIPgetLeaves(), SCIPgetNLeaves(), SCIPgetOpenNodesData(), SCIPnodeFocus(), SCIPnodepqBound(), 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 582 of file nodesel.c.

References assert(), SCIP_NodePQ::bfsqueue, SCIP_NodePQ::len, SCIP_NodePQ::nodesel, NULL, SCIP_Real, 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 605 of file nodesel.c.

References assert(), 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 629 of file nodesel.c.

References assert(), SCIP_NodePQ::lowerboundsum, NULL, and SCIP_Real.

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 639 of file nodesel.c.

References SCIP_Node::active, assert(), SCIP_Node::cutoff, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Stat::lastlowerbound, SCIP_NodePQ::len, SCIP_Node::lowerbound, nodepqDelPos(), NULL, PQ_LEFTCHILD, PQ_RIGHTCHILD, SCIP_Tree::root, SCIP_Stat::rootlowerbound, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_NODETYPE_LEAF, SCIP_OKAY, SCIP_Real, SCIPlpGetSolstat(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetLowerbound(), SCIPnodeGetType(), SCIPnodepqLen(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetLowerbound(), SCIPvisualCutoffNode(), SCIP_NodePQ::slots, TRUE, 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 738 of file nodesel.c.

References assert(), 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 753 of file nodesel.c.

References assert(), 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 767 of file nodesel.c.

References assert(), 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 786 of file nodesel.c.

References assert(), BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_DECL_NODESELCOMP, SCIP_DECL_NODESELCOPY, SCIP_DECL_NODESELEXIT, SCIP_DECL_NODESELFREE, SCIP_DECL_NODESELINIT, 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 853 of file nodesel.c.

References assert(), doNodeselCreate(), NULL, SCIP_CALL_FINALLY, SCIP_DECL_NODESELCOMP, SCIP_DECL_NODESELCOPY, SCIP_DECL_NODESELEXIT, SCIP_DECL_NODESELFREE, SCIP_DECL_NODESELINIT, 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 887 of file nodesel.c.

References assert(), 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 916 of file nodesel.c.

References assert(), 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.

◆ SCIPnodeselExit()

SCIP_RETCODE SCIPnodeselExit ( SCIP_NODESEL * nodesel,
SCIP_SET * set )

deinitializes node selector

Parameters
nodeselnode selector
setglobal SCIP settings

Definition at line 952 of file nodesel.c.

References assert(), FALSE, SCIP_Nodesel::initialized, SCIP_Nodesel::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Nodesel::setuptime.

◆ 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 982 of file nodesel.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Nodesel::setuptime.

◆ 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 1006 of file nodesel.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Nodesel::setuptime.

◆ 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 1030 of file nodesel.c.

References assert(), 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 1053 of file nodesel.c.

References assert(), and 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 1100 of file nodesel.c.

References assert(), 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 1124 of file nodesel.c.

References assert(), SCIP_Nodesel::memsavepriority, and NULL.

Referenced by SCIPsetNodeselMemsavePriority().

◆ SCIPnodeselSetCopy()

void SCIPnodeselSetCopy ( SCIP_NODESEL * nodesel)

sets copy method of node selector

Parameters
nodeselnode selector copy method of node selector or NULL if you don't want to copy your plugin into sub-SCIPs

Definition at line 1161 of file nodesel.c.

References assert(), NULL, and SCIP_DECL_NODESELCOPY.

Referenced by SCIPsetNodeselCopy().

◆ SCIPnodeselSetFree()

void SCIPnodeselSetFree ( SCIP_NODESEL * nodesel)

sets destructor method of node selector

Parameters
nodeselnode selector destructor of node selector

Definition at line 1172 of file nodesel.c.

References assert(), NULL, and SCIP_DECL_NODESELFREE.

Referenced by SCIPsetNodeselFree().

◆ SCIPnodeselSetInit()

void SCIPnodeselSetInit ( SCIP_NODESEL * nodesel)

sets initialization method of node selector

Parameters
nodeselnode selector initialize node selector

Definition at line 1183 of file nodesel.c.

References assert(), NULL, and SCIP_DECL_NODESELINIT.

Referenced by SCIPsetNodeselInit().

◆ SCIPnodeselSetExit()

void SCIPnodeselSetExit ( SCIP_NODESEL * nodesel)

sets deinitialization method of node selector

Parameters
nodeselnode selector deinitialize node selector

Definition at line 1194 of file nodesel.c.

References assert(), NULL, and SCIP_DECL_NODESELEXIT.

Referenced by SCIPsetNodeselExit().

◆ SCIPnodeselSetInitsol()

void SCIPnodeselSetInitsol ( SCIP_NODESEL * nodesel)

sets solving process initialization method of node selector

Parameters
nodeselnode selector solving process initialization method of node selector

Definition at line 1205 of file nodesel.c.

References assert(), NULL, and SCIP_DECL_NODESELINITSOL.

Referenced by SCIPsetNodeselInitsol().

◆ SCIPnodeselSetExitsol()

void SCIPnodeselSetExitsol ( SCIP_NODESEL * nodesel)

sets solving process deinitialization method of node selector

Parameters
nodeselnode selector solving process deinitialization method of node selector

Definition at line 1216 of file nodesel.c.

References assert(), NULL, and SCIP_DECL_NODESELEXITSOL.

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 1237 of file nodesel.c.

References assert(), SCIP_Nodesel::nodeseltime, NULL, SCIP_Bool, SCIPclockEnableOrDisable(), and SCIP_Nodesel::setuptime.