nodesel.c
Go to the documentation of this file.
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 170 /* @todo: if a node is freed, the parent will also be freed, if no children are left; maybe we want to free all 202 /** sets the node selector used for sorting the nodes in the queue, and resorts the queue if necessary */ 287 /* insert node as leaf in the tree, move it towards the root as long it is better than its parent */ 312 SCIPdebugMessage("inserted node %p[%g] at pos %d and bfspos %d of node queue\n", (void*)node, lowerbound, pos, bfspos); 317 /** deletes node at given position from the node priority queue; returns TRUE, if the parent fell down to the 380 while( freepos > 0 && nodesel->nodeselcomp(set->scip, nodesel, lastnode, slots[parentpos]) < 0 ) 455 && SCIPnodeGetLowerbound(slots[bfsqueue[brotherpos]]) < SCIPnodeGetLowerbound(slots[bfsqueue[childpos]]) ) 627 SCIP_Real cutoffbound /**< cutoff bound: all nodes with lowerbound >= cutoffbound are cut off */ 636 SCIPdebugMessage("bounding node queue of length %d with cutoffbound=%g\n", nodepq->len, cutoffbound); 649 /* cut off node; because we looped from back to front, the existing children of the node must have a smaller 660 /* - if the slot was occupied by the parent, we have to check this slot (the parent) again; unfortunately, 661 * we will check the node which occupied the parent's slot again, even though it cannot be cut off; 662 * - otherwise, the slot was the last slot or it was occupied by a node with a position greater than 706 SCIP_CALL( SCIPsetNodeselStdPriority(scip, (SCIP_NODESEL*)paramdata, SCIPparamGetInt(param)) ); /*lint !e740*/ 721 SCIP_CALL( SCIPsetNodeselMemsavePriority(scip, (SCIP_NODESEL*)paramdata, SCIPparamGetInt(param)) ); /*lint !e740*/ 738 SCIPdebugMessage("including node selector %s in subscip %p\n", SCIPnodeselGetName(nodesel), (void*)set->scip); 754 SCIP_DECL_NODESELCOPY ((*nodeselcopy)), /**< copy method of node selector or NULL if you don't want to copy your plugin into sub-SCIPs */ 758 SCIP_DECL_NODESELINITSOL((*nodeselinitsol)),/**< solving process initialization method of node selector */ 759 SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)),/**< solving process deinitialization method of node selector */ 795 (void) SCIPsnprintf(paramdesc, SCIP_MAXSTRLEN, "priority of node selection rule <%s> in standard mode", name); 801 (void) SCIPsnprintf(paramdesc, SCIP_MAXSTRLEN, "priority of node selection rule <%s> in memory saving mode", name); 1085 SCIP_DECL_NODESELCOPY ((*nodeselcopy)) /**< copy method of node selector or NULL if you don't want to copy your plugin into sub-SCIPs */ 1129 SCIP_DECL_NODESELINITSOL ((*nodeselinitsol))/**< solving process initialization method of node selector */ 1140 SCIP_DECL_NODESELEXITSOL ((*nodeselexitsol))/**< solving process deinitialization method of node selector */ 1160 SCIP_NODESEL* nodesel, /**< the node selector for which all clocks should be enabled or disabled */
void SCIPnodeselSetFree(SCIP_NODESEL *nodesel, SCIP_DECL_NODESELFREE((*nodeselfree))) Definition: nodesel.c:1094 Definition: struct_nodesel.h:51 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) Definition: nodesel.c:618 void SCIPnodeselEnableOrDisableClocks(SCIP_NODESEL *nodesel, SCIP_Bool enable) Definition: nodesel.c:1159 internal methods for branch and bound tree void SCIPnodeselSetInit(SCIP_NODESEL *nodesel, SCIP_DECL_NODESELINIT((*nodeselinit))) Definition: nodesel.c:1105 SCIP_RETCODE SCIPsetNodeselMemsavePriority(SCIP *scip, SCIP_NODESEL *nodesel, int priority) Definition: scip.c:8174 SCIP_RETCODE SCIPreoptCheckCutoff(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_EVENTTYPE eventtype, SCIP_LPSOLSTAT lpsolstat, SCIP_Bool isrootnode, SCIP_Bool isfocusnode, SCIP_Real lowerbound, int effectiverootdepth) Definition: reopt.c:4825 SCIP_RETCODE SCIPnodeselExitsol(SCIP_NODESEL *nodesel, SCIP_SET *set) Definition: nodesel.c:928 int SCIPnodepqCompare(SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node1, SCIP_NODE *node2) Definition: nodesel.c:243 internal methods for clocks and timing issues int SCIPnodeselGetMemsavePriority(SCIP_NODESEL *nodesel) Definition: nodesel.c:1036 Definition: struct_message.h:35 SCIP_NODE * SCIPnodepqGetLowerboundNode(SCIP_NODEPQ *nodepq, SCIP_SET *set) Definition: nodesel.c:584 SCIP_Real SCIPnodepqGetLowerboundSum(SCIP_NODEPQ *nodepq) Definition: nodesel.c:608 SCIP_RETCODE SCIPnodeselInitsol(SCIP_NODESEL *nodesel, SCIP_SET *set) Definition: nodesel.c:904 int SCIPnodeselGetStdPriority(SCIP_NODESEL *nodesel) Definition: nodesel.c:1012 internal methods for handling parameter settings methods for creating output for visualization tools (VBC, BAK) void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable) Definition: clock.c:250 SCIP_NODESEL * SCIPnodepqGetNodesel(SCIP_NODEPQ *nodepq) Definition: nodesel.c:193 static int nodepqFindNode(SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node) Definition: nodesel.c:479 static SCIP_RETCODE nodepqResize(SCIP_NODEPQ *nodepq, SCIP_SET *set, int minsize) Definition: nodesel.c:75 internal methods for LP management SCIP_RETCODE SCIPnodeselExit(SCIP_NODESEL *nodesel, SCIP_SET *set) Definition: nodesel.c:874 Definition: struct_tree.h:122 SCIP_RETCODE SCIPnodeselSelect(SCIP_NODESEL *nodesel, SCIP_SET *set, SCIP_NODE **selnode) Definition: nodesel.c:952 SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:5274 Definition: struct_set.h:56 SCIP_RETCODE SCIPnodeselCopyInclude(SCIP_NODESEL *nodesel, SCIP_SET *set) Definition: nodesel.c:727 SCIP_RETCODE SCIPnodepqInsert(SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node) Definition: nodesel.c:259 SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:5220 Definition: type_clock.h:34 SCIP_NODESELDATA * SCIPnodeselGetData(SCIP_NODESEL *nodesel) Definition: nodesel.c:1060 Definition: type_tree.h:36 Definition: type_retcode.h:42 void SCIPsortDownPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len) SCIP_RETCODE SCIPnodepqSetNodesel(SCIP_NODEPQ **nodepq, SCIP_SET *set, SCIP_NODESEL *nodesel) Definition: nodesel.c:203 SCIP_Bool SCIPnodeselIsInitialized(SCIP_NODESEL *nodesel) Definition: nodesel.c:1149 SCIP_RETCODE SCIPnodeselFree(SCIP_NODESEL **nodesel, SCIP_SET *set) Definition: nodesel.c:810 internal methods for node selectors and node priority queues Definition: type_retcode.h:33 internal methods for global SCIP settings SCIP_Real SCIPnodeselGetSetupTime(SCIP_NODESEL *nodesel) Definition: nodesel.c:1171 SCIP main data structure. int SCIPnodeselCompare(SCIP_NODESEL *nodesel, SCIP_SET *set, SCIP_NODE *node1, SCIP_NODE *node2) Definition: nodesel.c:975 SCIP_RETCODE SCIPsetAddIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata) Definition: set.c:2455 SCIP_RETCODE SCIPnodeselInit(SCIP_NODESEL *nodesel, SCIP_SET *set) Definition: nodesel.c:838 void SCIPnodeselSetInitsol(SCIP_NODESEL *nodesel, SCIP_DECL_NODESELINITSOL((*nodeselinitsol))) Definition: nodesel.c:1127 SCIP_RETCODE SCIPnodepqFree(SCIP_NODEPQ **nodepq, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp) Definition: nodesel.c:130 SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype) Definition: clock.c:160 data structures and methods for collecting reoptimization information public data structures and miscellaneous methods int SCIPtreeGetEffectiveRootDepth(SCIP_TREE *tree) Definition: tree.c:8006 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) Definition: nodesel.c:745 SCIP_RETCODE SCIPnodepqRemove(SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node) Definition: nodesel.c:503 void SCIPnodeselSetMemsavePriority(SCIP_NODESEL *nodesel, SCIP_SET *set, int priority) Definition: nodesel.c:1046 SCIP_RETCODE SCIPnodepqCreate(SCIP_NODEPQ **nodepq, SCIP_SET *set, SCIP_NODESEL *nodesel) Definition: nodesel.c:95 void SCIPnodeselSetExit(SCIP_NODESEL *nodesel, SCIP_DECL_NODESELEXIT((*nodeselexit))) Definition: nodesel.c:1116 Definition: struct_reopt.h:113 void SCIPnodeselSetData(SCIP_NODESEL *nodesel, SCIP_NODESELDATA *nodeseldata) Definition: nodesel.c:1070 void SCIPnodeselSetStdPriority(SCIP_NODESEL *nodesel, SCIP_SET *set, int priority) Definition: nodesel.c:1022 SCIP_Real SCIPnodepqGetLowerbound(SCIP_NODEPQ *nodepq, SCIP_SET *set) Definition: nodesel.c:561 static SCIP_Bool nodepqDelPos(SCIP_NODEPQ *nodepq, SCIP_SET *set, int rempos) Definition: nodesel.c:321 Definition: struct_lp.h:255 public methods for message output datastructures for node selectors and node priority queues SCIP_RETCODE SCIPnodepqClear(SCIP_NODEPQ *nodepq, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp) Definition: nodesel.c:153 Definition: struct_nodesel.h:39 void SCIPvisualCutoffNode(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node, SCIP_Bool infeasible) Definition: visual.c:520 internal methods for problem statistics void SCIPnodeselSetCopy(SCIP_NODESEL *nodesel, SCIP_DECL_NODESELCOPY((*nodeselcopy))) Definition: nodesel.c:1083 Definition: struct_stat.h:44 Definition: struct_tree.h:165 common defines and data types used in all packages of SCIP Definition: struct_event.h:204 Definition: type_retcode.h:43 Definition: objbranchrule.h:33 SCIP_RETCODE SCIPsetNodeselStdPriority(SCIP *scip, SCIP_NODESEL *nodesel, int priority) Definition: scip.c:8159 void SCIPnodeselSetExitsol(SCIP_NODESEL *nodesel, SCIP_DECL_NODESELEXITSOL((*nodeselexitsol))) Definition: nodesel.c:1138 SCIP_RETCODE SCIPnodeFree(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp) Definition: tree.c:1002 SCIP callable library. |