Detailed Description
methods for branch and bound tree
Definition in file tree.c.
#include <assert.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/clock.h"
#include "scip/visual.h"
#include "scip/event.h"
#include "scip/lp.h"
#include "scip/relax.h"
#include "scip/var.h"
#include "scip/implics.h"
#include "scip/primal.h"
#include "scip/tree.h"
#include "scip/reopt.h"
#include "scip/conflictstore.h"
#include "scip/solve.h"
#include "scip/cons.h"
#include "scip/nodesel.h"
#include "scip/prop.h"
#include "scip/debug.h"
#include "scip/prob.h"
#include "scip/scip.h"
#include "scip/struct_event.h"
#include "scip/pub_message.h"
#include "scip/struct_branch.h"
#include "lpi/lpi.h"
Go to the source code of this file.
Macros | |
#define | MAXREPROPMARK 511 |
#define | ARRAYGROWTH 5 |
Macro Definition Documentation
◆ MAXREPROPMARK
#define MAXREPROPMARK 511 |
maximal subtree repropagation marker; must correspond to node data structure
Definition at line 64 of file tree.c.
Referenced by SCIPtreeCreateRoot(), and treeNextRepropsubtreecount().
◆ ARRAYGROWTH
#define ARRAYGROWTH 5 |
adds a diving bound change to the tree together with the information if this is a bound change for the preferred direction or not
Definition at line 6274 of file tree.c.
Referenced by SCIPtreeAddDiveBoundChange().
Function Documentation
◆ treeEnsureChildrenMem()
|
static |
resizes children arrays to be able to store at least num nodes
- Parameters
-
tree branch and bound tree set global SCIP settings num minimal number of node slots in array
Definition at line 73 of file tree.c.
References BMSreallocMemoryArray, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::childrensize, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by treeAddChild().
◆ treeEnsurePathMem()
|
static |
resizes path array to be able to store at least num nodes
- Parameters
-
tree branch and bound tree set global SCIP settings num minimal number of node slots in path
Definition at line 98 of file tree.c.
References BMSreallocMemoryArray, NULL, SCIP_Tree::path, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Tree::pathsize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcPathGrowSize().
Referenced by treeCreateProbingNode(), and treeSwitchPath().
◆ treeEnsurePendingbdchgsMem()
|
static |
resizes pendingbdchgs array to be able to store at least num nodes
- Parameters
-
tree branch and bound tree set global SCIP settings num minimal number of node slots in path
Definition at line 124 of file tree.c.
References BMSreallocMemoryArray, NULL, SCIP_Tree::pendingbdchgs, SCIP_Tree::pendingbdchgssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by treeAddPendingBdchg().
◆ forkCaptureLPIState()
|
static |
increases the reference counter of the LP state in the fork
- Parameters
-
fork fork data nuses number to add to the usage counter
Definition at line 169 of file tree.c.
References SCIP_Fork::nlpistateref, NULL, and SCIPdebugMessage.
Referenced by focusnodeToFork(), forkCreate(), and SCIPnodeCaptureLPIState().
◆ forkReleaseLPIState()
|
static |
decreases the reference counter of the LP state in the fork
- Parameters
-
fork fork data blkmem block memory buffers lp current LP data
Definition at line 184 of file tree.c.
References SCIP_Fork::lpistate, SCIP_Fork::nlpistateref, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPlpFreeState().
Referenced by SCIPnodeReleaseLPIState().
◆ subrootCaptureLPIState()
|
static |
increases the reference counter of the LP state in the subroot
- Parameters
-
subroot subroot data nuses number to add to the usage counter
Definition at line 208 of file tree.c.
References SCIP_Subroot::nlpistateref, NULL, and SCIPdebugMessage.
Referenced by forkFree(), and SCIPnodeCaptureLPIState().
◆ subrootReleaseLPIState()
|
static |
decreases the reference counter of the LP state in the subroot
- Parameters
-
subroot subroot data blkmem block memory buffers lp current LP data
Definition at line 224 of file tree.c.
References SCIP_Subroot::lpistate, SCIP_Subroot::nlpistateref, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPlpFreeState().
Referenced by SCIPnodeReleaseLPIState().
◆ SCIPnodeCaptureLPIState()
SCIP_RETCODE SCIPnodeCaptureLPIState | ( | SCIP_NODE * | node, |
int | nuses | ||
) |
increases the reference counter of the LP state in the fork or subroot node
- Parameters
-
node fork/subroot node nuses number to add to the usage counter
Definition at line 247 of file tree.c.
References SCIP_Node::data, SCIP_Node::fork, forkCaptureLPIState(), SCIP_Fork::nlpistateref, SCIP_Subroot::nlpistateref, NULL, SCIP_INVALIDDATA, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPABORT, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIP_Node::subroot, and subrootCaptureLPIState().
Referenced by junctionInit(), and pseudoforkCreate().
◆ SCIPnodeReleaseLPIState()
SCIP_RETCODE SCIPnodeReleaseLPIState | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LP * | lp | ||
) |
decreases the reference counter of the LP state in the fork or subroot node
- Parameters
-
node fork/subroot node blkmem block memory buffers lp current LP data
Definition at line 275 of file tree.c.
References SCIP_Node::data, SCIP_Node::fork, forkReleaseLPIState(), SCIP_Fork::nlpistateref, SCIP_Subroot::nlpistateref, NULL, SCIP_INVALIDDATA, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIP_Node::subroot, and subrootReleaseLPIState().
Referenced by focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToPseudofork(), and SCIPnodeFree().
◆ probingnodeCreate()
|
static |
creates probingnode data without LP information
- Parameters
-
probingnode pointer to probingnode data blkmem block memory lp current LP data
Definition at line 300 of file tree.c.
References BMSallocBlockMemory, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPdebugMessage, SCIPlpGetNCols(), and SCIPlpGetNRows().
Referenced by treeCreateProbingNode().
◆ probingnodeUpdate()
|
static |
updates LP information in probingnode data
- Parameters
-
probingnode probingnode data blkmem block memory tree branch and bound tree lp current LP data
Definition at line 327 of file tree.c.
References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Probingnode::lpinorms, SCIP_Probingnode::lpistate, SCIP_Probingnode::lpwasdualchecked, SCIP_Probingnode::lpwasdualfeas, SCIP_Probingnode::lpwasprimchecked, SCIP_Probingnode::lpwasprimfeas, SCIP_Probingnode::ncols, SCIP_Probingnode::nrows, NULL, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpFreeNorms(), SCIPlpFreeState(), SCIPlpGetNCols(), SCIPlpGetNorms(), SCIPlpGetNRows(), SCIPlpGetState(), SCIPtreeIsPathComplete(), SCIP_Lp::solved, and TRUE.
Referenced by SCIPtreeMarkProbingNodeHasLP().
◆ probingnodeFree()
|
static |
frees probingnode data
- Parameters
-
probingnode probingnode data blkmem block memory lp current LP data
Definition at line 382 of file tree.c.
References BMSfreeBlockMemory, BMSfreeMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpFreeNorms(), and SCIPlpFreeState().
Referenced by SCIPnodeFree(), and treeCreateProbingNode().
◆ junctionInit()
|
static |
initializes junction data
- Parameters
-
junction pointer to junction data tree branch and bound tree
Definition at line 419 of file tree.c.
References SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Junction::nchildren, SCIP_Tree::nchildren, NULL, SCIP_CALL, SCIP_OKAY, SCIPnodeCaptureLPIState(), and SCIPtreeIsPathComplete().
Referenced by focusnodeToJunction().
◆ pseudoforkCreate()
|
static |
creates pseudofork data
- Parameters
-
pseudofork pointer to pseudofork data blkmem block memory tree branch and bound tree lp current LP data
Definition at line 443 of file tree.c.
References BMSallocBlockMemory, BMSduplicateBlockMemoryArray, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Tree::nchildren, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpGetNewcols(), SCIPlpGetNewrows(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPnodeCaptureLPIState(), SCIProwCapture(), and SCIPtreeIsPathComplete().
Referenced by focusnodeToPseudofork().
◆ pseudoforkFree()
|
static |
frees pseudofork data
- Parameters
-
pseudofork pseudofork data blkmem block memory set global SCIP settings lp current LP data
Definition at line 496 of file tree.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().
Referenced by SCIPnodeFree().
◆ forkCreate()
|
static |
creates fork data
- Parameters
-
fork pointer to fork data blkmem block memory set global SCIP settings prob transformed problem after presolve tree branch and bound tree lp current LP data
Definition at line 526 of file tree.c.
References BMSallocBlockMemory, BMSduplicateBlockMemoryArray, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, SCIP_Lp::flushed, SCIP_Tree::focusnode, forkCaptureLPIState(), SCIP_Tree::nchildren, NULL, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_ALLOC, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetNewcols(), SCIPlpGetNewrows(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPlpGetObjval(), SCIPlpGetSolstat(), SCIPlpGetState(), SCIProwCapture(), SCIPsetDebugMsg, SCIPtreeIsPathComplete(), and SCIP_Lp::solved.
Referenced by focusnodeToFork().
◆ forkFree()
|
static |
frees fork data
- Parameters
-
fork fork data blkmem block memory set global SCIP settings lp current LP data
Definition at line 589 of file tree.c.
References BMSallocBlockMemory, BMSduplicateBlockMemoryArray, BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, SCIP_Lp::flushed, SCIP_Tree::focusnode, SCIP_Tree::nchildren, NULL, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_ALLOC, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetCols(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetObjval(), SCIPlpGetRows(), SCIPlpGetSolstat(), SCIPlpGetState(), SCIProwCapture(), SCIProwRelease(), SCIPtreeIsPathComplete(), SCIP_Lp::solved, and subrootCaptureLPIState().
Referenced by SCIPnodeFree().
◆ subrootFree()
|
static |
frees subroot
- Parameters
-
subroot subroot data blkmem block memory set global SCIP settings lp current LP data
Definition at line 683 of file tree.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().
Referenced by SCIPnodeFree().
◆ treeRemoveSibling()
removes given sibling node from the siblings array
- Parameters
-
tree branch and bound tree sibling sibling node to remove
Definition at line 716 of file tree.c.
References SCIP_Sibling::arraypos, SCIP_Node::data, SCIP_Tree::nsiblings, NULL, SCIP_NODETYPE_SIBLING, SCIPnodeGetType(), SCIP_Node::sibling, SCIP_Tree::siblings, and SCIP_Tree::siblingsprio.
Referenced by SCIPnodeFocus(), and SCIPnodeFree().
◆ treeAddChild()
|
static |
adds given child node to children array of focus node
- Parameters
-
tree branch and bound tree set global SCIP settings child child node to add nodeselprio node selection priority of child node
Definition at line 742 of file tree.c.
References SCIP_Child::arraypos, SCIP_Node::child, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Node::data, SCIP_Tree::nchildren, NULL, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_OKAY, SCIPnodeGetType(), and treeEnsureChildrenMem().
Referenced by nodeAssignParent().
◆ treeRemoveChild()
removes given child node from the children array
- Parameters
-
tree branch and bound tree child child node to remove
Definition at line 765 of file tree.c.
References SCIP_Child::arraypos, SCIP_Node::child, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Node::data, SCIP_Tree::nchildren, NULL, SCIP_NODETYPE_CHILD, and SCIPnodeGetType().
Referenced by nodeReleaseParent(), and SCIPnodeFocus().
◆ nodeAssignParent()
|
static |
makes node a child of the given parent node, which must be the focus node; if the child is a probing node, the parent node can also be a refocused node or a probing node
- Parameters
-
node child node blkmem block memory buffers set global SCIP settings tree branch and bound tree parent parent (= focus) node (or NULL, if node is root) nodeselprio node selection priority of child node
Definition at line 793 of file tree.c.
References SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_Node::domchg, SCIP_Node::estimate, SCIP_Tree::focusnode, SCIP_Node::lowerbound, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_CALL, SCIP_MAXDEPTHLEVEL, SCIP_MAXTREEDEPTH, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPsetIsInfinity(), SCIPtreeIsPathComplete(), and treeAddChild().
Referenced by SCIPnodeCreateChild(), and treeCreateProbingNode().
◆ nodeReleaseParent()
|
static |
decreases number of children of the parent, frees it if no children are left
- Parameters
-
node child node blkmem block memory buffer 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 848 of file tree.c.
References SCIP_Node::active, SCIP_Node::data, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Node::fork, SCIP_Node::junction, SCIP_Junction::nchildren, SCIP_Pseudofork::nchildren, SCIP_Fork::nchildren, SCIP_Subroot::nchildren, NULL, SCIP_Node::parent, SCIP_Node::pseudofork, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPerrorMessage, SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIP_Node::subroot, and treeRemoveChild().
Referenced by SCIPnodeFree().
◆ nodeCreate()
|
static |
creates a node data structure
- Parameters
-
node pointer to node data structure blkmem block memory set global SCIP settings
Definition at line 966 of file tree.c.
References BMSallocBlockMemory, FALSE, NULL, SCIP_ALLOC, SCIP_OKAY, SCIP_REOPTTYPE_NONE, and SCIPsetInfinity().
Referenced by SCIPnodeCreateChild(), and treeCreateProbingNode().
◆ SCIPnodeCreateChild()
SCIP_RETCODE SCIPnodeCreateChild | ( | SCIP_NODE ** | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_Real | nodeselprio, | ||
SCIP_Real | estimate | ||
) |
creates a child node of the focus node
- Parameters
-
node pointer to node data structure blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree nodeselprio node selection priority of new node estimate estimate for (transformed) objective value of best feasible solution in subtree
Definition at line 993 of file tree.c.
References SCIP_Tree::focusnode, SCIP_Tree::lastbranchparentid, SCIP_Stat::ncreatednodes, SCIP_Stat::ncreatednodesrun, nodeAssignParent(), nodeCreate(), NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeSetEstimate(), SCIPsetDebugMsg, SCIPtreeIsPathComplete(), SCIPvisualNewChild(), and SCIP_Stat::visual.
Referenced by propAndSolve(), SCIPcreateChild(), SCIPreoptApply(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), SCIPtreeBranchVarNary(), SCIPtreeCreateRoot(), and solveNode().
◆ SCIPtreeWasNodeLastBranchParent()
query if focus node was already branched on
- Parameters
-
tree branch and bound tree node tree node, or NULL to check focus node
Definition at line 1042 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::lastbranchparentid, NULL, SCIP_Node::number, and TRUE.
Referenced by SCIPwasNodeLastBranchParent().
◆ SCIPnodeFree()
SCIP_RETCODE SCIPnodeFree | ( | SCIP_NODE ** | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_TREE * | tree, | ||
SCIP_LP * | lp | ||
) |
frees node
- Parameters
-
node node data blkmem block memory buffer 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 1055 of file tree.c.
References BMSfreeBlockMemory, SCIP_Tree::children, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, forkFree(), SCIP_Tree::nchildren, nodeReleaseParent(), SCIP_Tree::nsiblings, NULL, probingnodeFree(), SCIP_Tree::probingroot, pseudoforkFree(), SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_NODEDELETE, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPconssetchgFree(), SCIPdebugCheckGlobalLowerbound, SCIPdebugRemoveNode, SCIPdomchgFree(), SCIPerrorMessage, SCIPeventChgNode(), SCIPeventChgType(), SCIPeventProcess(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIP_Tree::siblings, subrootFree(), and treeRemoveSibling().
Referenced by nodeDeactivate(), nodeReleaseParent(), nodeToLeaf(), SCIPnodeFocus(), SCIPnodepqBound(), SCIPnodepqClear(), SCIPtreeCutoff(), treeBacktrackProbing(), and treeSwitchPath().
◆ SCIPnodeCutoff()
SCIP_RETCODE SCIPnodeCutoff | ( | SCIP_NODE * | node, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
BMS_BLKMEM * | blkmem | ||
) |
cuts off node and whole sub tree from branch and bound tree
- Parameters
-
node node that should be cut off set global SCIP settings stat problem statistics tree branch and bound tree transprob transformed problem after presolve origprob original problem reopt reoptimization data structure lp current LP blkmem block memory
Definition at line 1188 of file tree.c.
References SCIP_Node::active, SCIP_Node::cutoff, SCIP_Tree::cutoffdepth, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, SCIP_Node::estimate, SCIP_Tree::focusnode, SCIP_Stat::lastlowerbound, SCIP_Node::lowerbound, NULL, SCIP_Tree::root, SCIP_Stat::rootlowerbound, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPlpGetSolstat(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsEQ(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetLowerbound(), SCIPvisualCutoffNode(), TRUE, and SCIP_Stat::visual.
Referenced by conflictAnalyzeDualProof(), createAndAddProofcons(), detectImpliedBounds(), nodeActivate(), nodeRepropagate(), SCIPconflictFlushConss(), SCIPcutoffNode(), SCIPnodeAddBoundinfer(), SCIPupdateNodeLowerbound(), sepastoreApplyLb(), sepastoreApplyUb(), tightenSingleVar(), treeApplyPendingBdchgs(), and treeSwitchPath().
◆ SCIPnodePropagateAgain()
void SCIPnodePropagateAgain | ( | SCIP_NODE * | node, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree | ||
) |
marks node, that propagation should be applied again the next time, a node of its subtree is focused
- Parameters
-
node node that should be propagated again set global SCIP settings stat problem statistics tree branch and bound tree
Definition at line 1248 of file tree.c.
References SCIP_Node::active, SCIP_Node::depth, NULL, SCIP_Node::reprop, SCIP_Tree::repropdepth, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPsetDebugMsg, SCIPvisualMarkedRepropagateNode(), TRUE, and SCIP_Stat::visual.
Referenced by SCIPconflictFlushConss(), SCIPnodeAddBoundinfer(), SCIPnodeAddHoleinfer(), SCIPrepropagateNode(), and tightenSingleVar().
◆ SCIPnodeMarkPropagated()
marks node, that it is completely propagated in the current repropagation subtree level
- Parameters
-
node node that should be marked to be propagated tree branch and bound tree
Definition at line 1274 of file tree.c.
References SCIP_Node::active, SCIP_Node::depth, FALSE, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Node::reprop, SCIP_Tree::repropdepth, and SCIP_Node::repropsubtreemark.
Referenced by propagateDomains().
◆ treeNextRepropsubtreecount()
|
static |
moves the subtree repropagation counter to the next value
- Parameters
-
tree branch and bound tree
Definition at line 1304 of file tree.c.
References MAXREPROPMARK, NULL, and SCIP_Tree::repropsubtreecount.
Referenced by nodeRepropagate().
◆ nodeRepropagate()
|
static |
applies propagation on the node, that was marked to be propagated again
- Parameters
-
node node to apply propagation on blkmem block memory buffers set global SCIP settings stat dynamic problem statistics transprob transformed problem origprob original problem primal primal data tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage conflict conflict analysis data eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure cutoff pointer to store whether the node can be cut off
Definition at line 1316 of file tree.c.
References SCIP_Node::active, SCIP_Node::depth, SCIP_Node::domchg, FALSE, SCIP_Tree::focuslpfork, SCIP_Tree::focuslpstatefork, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, SCIP_Tree::focussubroot, SCIP_Stat::nboundchgs, SCIP_Tree::nchildren, SCIP_Stat::nodeactivationtime, SCIP_Node::nodetype, SCIP_Stat::nrepropboundchgs, SCIP_Stat::nrepropcutoffs, SCIP_Stat::nreprops, SCIP_Tree::nsiblings, NULL, SCIP_Node::parent, SCIP_Node::reprop, SCIP_Tree::repropsubtreecount, SCIP_Node::repropsubtreemark, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIP_PROPTIMING_ALWAYS, SCIPclockIsRunning(), SCIPclockStart(), SCIPclockStop(), SCIPdomchgMakeStatic(), SCIPeventqueueDelay(), SCIPeventqueueIsDelayed(), SCIPeventqueueProcess(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPpropagateDomains(), SCIPsetDebugMsg, SCIPvisualRepropagatedNode(), treeNextRepropsubtreecount(), and SCIP_Stat::visual.
Referenced by nodeActivate(), and treeSwitchPath().
◆ nodeActivate()
|
static |
informs node, that it is now on the active path and applies any domain and constraint set changes
- Parameters
-
node node to activate blkmem block memory buffers set global SCIP settings stat problem statistics transprob transformed problem origprob original problem primal primal data tree branch and bound tree reopt reotimization data structure lp current LP data branchcand branching candidate storage conflict conflict analysis data eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure cutoff pointer to store whether the node can be cut off
Definition at line 1467 of file tree.c.
References SCIP_Node::active, SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_Node::domchg, SCIP_Stat::nactivatednodes, nodeRepropagate(), NULL, SCIP_Node::parent, SCIP_Node::reprop, SCIP_Node::repropsubtreemark, SCIP_Bool, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPconssetchgApply(), SCIPdomchgApply(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeProbing(), and TRUE.
Referenced by treeSwitchPath().
◆ nodeDeactivate()
|
static |
informs node, that it is no longer on the active path and undoes any domain and constraint set changes
- Parameters
-
node node to deactivate blkmem block memory buffers set global SCIP settings stat problem statistics tree branch and bound tree lp current LP data branchcand branching candidate storage eventfilter event filter for global (not variable dependent) events eventqueue event queue
Definition at line 1536 of file tree.c.
References SCIP_Node::active, SCIP_Node::conssetchg, SCIP_Node::data, SCIP_Node::domchg, FALSE, SCIP_Node::fork, SCIP_Node::junction, SCIP_Junction::nchildren, SCIP_Pseudofork::nchildren, SCIP_Fork::nchildren, SCIP_Subroot::nchildren, SCIP_Stat::ndeactivatednodes, NULL, SCIP_Node::pseudofork, SCIP_Node::repropsubtreemark, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPconssetchgUndo(), SCIPdomchgUndo(), SCIPerrorMessage, SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeProbing(), and SCIP_Node::subroot.
Referenced by treeBacktrackProbing(), and treeSwitchPath().
◆ SCIPnodeAddCons()
SCIP_RETCODE SCIPnodeAddCons | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_CONS * | cons | ||
) |
adds constraint locally to the node and captures it; activates constraint, if node is active; if a local constraint is added to the root node, it is automatically upgraded into a global constraint
- Parameters
-
node node to add constraint to blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree cons constraint to add
Definition at line 1608 of file tree.c.
References SCIP_Node::active, SCIP_ConsSetChg::addedconss, SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, SCIP_Stat::nactiveconssadded, NULL, SCIP_Tree::root, SCIP_Cons::scip, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPconsIsActive(), SCIPconsIsGlobal(), SCIPconssetchgAddAddedCons(), SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetType(), and SCIP_Cons::validdepth.
Referenced by createAndAddProofcons(), SCIPaddCons(), SCIPaddConsNode(), and tightenSingleVar().
◆ SCIPnodeDelCons()
SCIP_RETCODE SCIPnodeDelCons | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_CONS * | cons | ||
) |
locally deletes constraint at the given node by disabling its separation, enforcing, and propagation capabilities at the node; captures constraint; disables constraint, if node is active
- Parameters
-
node node to add constraint to blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree cons constraint to locally delete
Definition at line 1651 of file tree.c.
References SCIP_Node::active, SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_ConsSetChg::disabledconss, SCIP_Cons::enabled, SCIP_Cons::name, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsDisable(), SCIPconssetchgAddDisabledCons(), SCIPsetDebugMsg, and SCIP_Cons::updatedisable.
Referenced by SCIPdelConsLocal(), and SCIPdelConsNode().
◆ treeAddPendingBdchg()
|
static |
adds the given bound change to the list of pending bound changes
- Parameters
-
tree branch and bound tree set global SCIP settings node node to add bound change to var variable to change the bounds for newbound new value for bound boundtype type of bound: lower or upper bound infercons constraint that deduced the bound change, or NULL inferprop propagator that deduced the bound change, or NULL inferinfo user information for inference to help resolving the conflict probingchange is the bound change a temporary setting due to probing?
Definition at line 1725 of file tree.c.
References bound, SCIP_PendingBdchg::boundtype, SCIP_Node::depth, SCIP_PendingBdchg::infercons, SCIP_PendingBdchg::inferinfo, SCIP_PendingBdchg::inferprop, SCIP_PendingBdchg::newbound, SCIP_PendingBdchg::node, SCIP_Tree::npendingbdchgs, NULL, SCIP_Tree::pendingbdchgs, SCIP_PendingBdchg::probingchange, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugCheckLbGlobal, SCIPdebugCheckUbGlobal, SCIPsetIsEQ(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPvarAdjustBd(), SCIPvarCapture(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), treeEnsurePendingbdchgsMem(), and SCIP_PendingBdchg::var.
Referenced by SCIPnodeAddBoundinfer().
◆ SCIPnodeAddBoundinfer()
SCIP_RETCODE SCIPnodeAddBoundinfer | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_VAR * | var, | ||
SCIP_Real | newbound, | ||
SCIP_BOUNDTYPE | boundtype, | ||
SCIP_CONS * | infercons, | ||
SCIP_PROP * | inferprop, | ||
int | inferinfo, | ||
SCIP_Bool | probingchange | ||
) |
adds bound change with inference information to focus node, child of focus node, or probing node; if possible, adjusts bound to integral value; at most one of infercons and inferprop may be non-NULL
- Parameters
-
node node to add bound change to blkmem block memory set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure var variable to change the bounds for newbound new value for bound boundtype type of bound: lower or upper bound infercons constraint that deduced the bound change, or NULL inferprop propagator that deduced the bound change, or NULL inferinfo user information for inference to help resolving the conflict probingchange is the bound change a temporary setting due to probing?
Definition at line 1812 of file tree.c.
References SCIP_Node::active, SCIP_DomChgDyn::boundchgs, SCIP_Node::depth, SCIP_Node::domchg, SCIP_DomChg::domchgdyn, SCIP_DomChgDyn::domchgtype, SCIP_Tree::effectiverootdepth, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Stat::lpcount, MAX, SCIP_DomChgDyn::nboundchgs, SCIP_BoundChg::newbound, SCIP_Node::nodetype, NULL, SCIP_Node::number, SCIP_Tree::path, SCIP_Tree::probingroot, SCIP_Tree::root, SCIP_Bool, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_DOMCHGTYPE_DYNAMIC, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPABORT, SCIPboundchgApply(), SCIPconsGetName(), SCIPdebugCheckInference, SCIPdomchgAddBoundchg(), SCIPerrorMessage, SCIPlpGetModifiedProvedPseudoObjval(), SCIPlpGetModifiedPseudoObjval(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodePropagateAgain(), SCIPnodeUpdateLowerbound(), SCIPpropGetName(), SCIPsetDebugMsg, SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPstatIncrement, SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarChgBdGlobal(), SCIPvarGetConflictingBdchgDepth(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbvarBound(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), treeAddPendingBdchg(), and SCIP_BoundChg::var.
Referenced by SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPnodeAddBoundchg(), SCIPnodePropagateImplics(), and treeApplyPendingBdchgs().
◆ SCIPnodeAddBoundchg()
SCIP_RETCODE SCIPnodeAddBoundchg | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_VAR * | var, | ||
SCIP_Real | newbound, | ||
SCIP_BOUNDTYPE | boundtype, | ||
SCIP_Bool | probingchange | ||
) |
adds bound change to focus node, or child of focus node, or probing node; if possible, adjusts bound to integral value
- Parameters
-
node node to add bound change to blkmem block memory set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure var variable to change the bounds for newbound new value for bound boundtype type of bound: lower or upper bound probingchange is the bound change a temporary setting due to probing?
Definition at line 2087 of file tree.c.
References NULL, SCIP_CALL, SCIP_OKAY, and SCIPnodeAddBoundinfer().
Referenced by addSplitcons(), applyImplic(), changeAncestorBranchings(), conflictAddConflictCons(), fixBounds(), fixInterdiction(), focusnodeCleanupVars(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarLbNode(), SCIPchgVarLbProbing(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPchgVarUbNode(), SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPshrinkDisjunctiveVarSet(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), SCIPtreeBranchVarNary(), SCIPvarAddVlb(), SCIPvarAddVub(), SCIPvarFixBinary(), sepastoreApplyLb(), sepastoreApplyUb(), tightenSingleVar(), and varAddImplic().
◆ SCIPnodeAddHoleinfer()
SCIP_RETCODE SCIPnodeAddHoleinfer | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | left, | ||
SCIP_Real | right, | ||
SCIP_CONS * | infercons, | ||
SCIP_PROP * | inferprop, | ||
int | inferinfo, | ||
SCIP_Bool | probingchange, | ||
SCIP_Bool * | added | ||
) |
adds hole with inference information to focus node, child of focus node, or probing node; if possible, adjusts bound to integral value; at most one of infercons and inferprop may be non-NULL
- Parameters
-
node node to add bound change to blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree eventqueue event queue var variable to change the bounds for left left bound of open interval defining the hole (left,right) right right bound of open interval defining the hole (left,right) infercons constraint that deduced the bound change, or NULL inferprop propagator that deduced the bound change, or NULL inferinfo user information for inference to help resolving the conflict probingchange is the bound change a temporary setting due to probing? added pointer to store whether the hole was added, or NULL
Definition at line 2116 of file tree.c.
References SCIP_Node::active, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Stat::nholechgs, SCIP_Node::nodetype, SCIP_Stat::nprobholechgs, NULL, SCIP_Tree::probingroot, SCIP_Tree::root, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPABORT, SCIPconsGetName(), SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodePropagateAgain(), SCIPpropGetName(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsGE(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPvarAddHoleGlobal(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbvarHole(), SCIPvarGetStatus(), and SCIPvarGetUbLocal().
Referenced by SCIPnodeAddHolechg().
◆ SCIPnodeAddHolechg()
SCIP_RETCODE SCIPnodeAddHolechg | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | left, | ||
SCIP_Real | right, | ||
SCIP_Bool | probingchange, | ||
SCIP_Bool * | added | ||
) |
adds hole change to focus node, or child of focus node
- Parameters
-
node node to add bound change to blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree eventqueue event queue var variable to change the bounds for left left bound of open interval defining the hole (left,right) right right bound of open interval defining the hole (left,right) probingchange is the bound change a temporary setting due to probing? added pointer to store whether the hole was added, or NULL
Definition at line 2237 of file tree.c.
References SCIP_Node::depth, SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeAddHoleinfer(), SCIPsetDebugMsg, and SCIPvarGetName().
◆ treeApplyPendingBdchgs()
|
static |
applies the pending bound changes
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem lp current LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure
Definition at line 2270 of file tree.c.
References SCIP_PendingBdchg::boundtype, SCIP_Tree::cutoffdepth, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, SCIP_PendingBdchg::infercons, SCIP_PendingBdchg::inferinfo, SCIP_PendingBdchg::inferprop, SCIP_PendingBdchg::newbound, SCIP_PendingBdchg::node, SCIP_Tree::npendingbdchgs, NULL, SCIP_Tree::pendingbdchgs, SCIP_PendingBdchg::probingchange, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPnodeAddBoundinfer(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPsetDebugMsg, SCIPsetIsGT(), SCIPsetIsLT(), SCIPvarGetConflictingBdchgDepth(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPvarRelease(), and SCIP_PendingBdchg::var.
Referenced by treeBacktrackProbing(), and treeSwitchPath().
◆ SCIPnodeUpdateLowerbound()
void SCIPnodeUpdateLowerbound | ( | SCIP_NODE * | node, |
SCIP_STAT * | stat, | ||
SCIP_SET * | set, | ||
SCIP_TREE * | tree, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_Real | newbound | ||
) |
if given value is larger than the node's lower bound, sets the node's lower bound to the new value
- Parameters
-
node node to update lower bound for stat problem statistics set global SCIP settings tree branch and bound tree transprob transformed problem after presolve origprob original problem newbound new lower bound for the node (if it's larger than the old one)
Definition at line 2365 of file tree.c.
References SCIP_Node::depth, SCIP_Node::estimate, SCIP_Stat::lastlowerbound, SCIP_Node::lowerbound, MAX, NULL, SCIP_Stat::rootlowerbound, SCIP_NODETYPE_PROBINGNODE, SCIP_Real, SCIPnodeGetType(), SCIPsetInfinity(), SCIPsetIsEQ(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetLowerbound(), SCIPvisualLowerbound(), and SCIP_Stat::visual.
Referenced by applyBounding(), initSolve(), priceAndCutLoop(), SCIPnodeAddBoundinfer(), SCIPnodeUpdateLowerboundLP(), SCIPpriceLoop(), SCIPupdateNodeLowerbound(), solveNode(), and solveNodeRelax().
◆ SCIPnodeUpdateLowerboundLP()
SCIP_RETCODE SCIPnodeUpdateLowerboundLP | ( | SCIP_NODE * | node, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp | ||
) |
updates lower bound of node using lower bound of LP
- Parameters
-
node node to set lower bound for set global SCIP settings stat problem statistics tree branch and bound tree transprob transformed problem after presolve origprob original problem lp LP data
Definition at line 2409 of file tree.c.
References SCIP_Lp::flushed, SCIP_Lp::lpsolstat, NULL, SCIP_CALL, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_OKAY, SCIP_Real, SCIPlpGetObjval(), SCIPlpGetProvedLowerbound(), and SCIPnodeUpdateLowerbound().
Referenced by priceAndCutLoop(), propAndSolve(), SCIPendDive(), SCIPtreeEndProbing(), and solveNodeInitialLP().
◆ SCIPchildChgNodeselPrio()
change the node selection priority of the given child
- Parameters
-
tree branch and bound tree child child to update the node selection priority priority node selection priority value
Definition at line 2443 of file tree.c.
References SCIP_Child::arraypos, SCIP_Node::child, SCIP_Tree::childrenprio, SCIP_Node::data, SCIP_NODETYPE_CHILD, and SCIPnodeGetType().
Referenced by SCIPchgChildPrio().
◆ SCIPnodeSetEstimate()
sets the node's estimated bound to the new value
- Parameters
-
node node to update lower bound for set global SCIP settings newestimate new estimated bound for the node
Definition at line 2461 of file tree.c.
References SCIP_Node::estimate, SCIP_Node::lowerbound, NULL, and SCIPsetIsRelGE().
Referenced by SCIPnodeCreateChild(), SCIPreoptApply(), and updateEstimate().
◆ SCIPnodePropagateImplics()
SCIP_RETCODE SCIPnodePropagateImplics | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_Bool * | cutoff | ||
) |
propagates implications of binary fixings at the given node triggered by the implication graph and the clique table
- Parameters
-
node node to propagate implications on blkmem block memory set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure cutoff pointer to store whether the node can be cut off
Definition at line 2477 of file tree.c.
References SCIP_Node::domchg, FALSE, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPboundchgGetBoundtype(), SCIPboundchgGetVar(), SCIPboundchgIsRedundant(), SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPdomchgGetBoundchg(), SCIPdomchgGetNBoundchgs(), SCIPnodeAddBoundinfer(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeIsActive(), SCIPsetDebugMsg, SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsFeasLT(), SCIPvarGetCliques(), SCIPvarGetImplBounds(), SCIPvarGetImplTypes(), SCIPvarGetImplVars(), SCIPvarGetLbLocal(), SCIPvarGetNCliques(), SCIPvarGetNImpls(), SCIPvarGetProbvar(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), and TRUE.
Referenced by SCIPpropagateProbingImplications().
◆ treeUpdatePathLPSize()
|
static |
updates the LP sizes of the active path starting at the given depth
- Parameters
-
tree branch and bound tree startdepth depth to start counting
Definition at line 2664 of file tree.c.
References SCIP_Node::active, SCIP_Node::data, SCIP_Node::depth, SCIP_Tree::focuslpconstructed, SCIP_Node::fork, SCIP_Pseudofork::naddedcols, SCIP_Fork::naddedcols, SCIP_Pseudofork::naddedrows, SCIP_Fork::naddedrows, SCIP_Probingnode::ncols, SCIP_Subroot::ncols, SCIP_Probingnode::ninitialcols, SCIP_Probingnode::ninitialrows, SCIP_Probingnode::nrows, SCIP_Subroot::nrows, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Node::probingnode, SCIP_Node::pseudofork, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPABORT, SCIPerrorMessage, SCIPnodeGetType(), SCIPtreeProbing(), and SCIP_Node::subroot.
Referenced by focusnodeToFork(), treeCreateProbingNode(), and treeSwitchPath().
◆ treeFindSwitchForks()
|
static |
finds the common fork node, the new LP state defining fork, and the new focus subroot, if the path is switched to the given node
- Parameters
-
tree branch and bound tree node new focus node, or NULL commonfork pointer to store common fork node of old and new focus node newlpfork pointer to store the new LP defining fork node newlpstatefork pointer to store the new LP state defining fork node newsubroot pointer to store the new subroot node cutoff pointer to store whether the given node can be cut off and no path switching should be performed
Definition at line 2772 of file tree.c.
References SCIP_Node::active, SCIP_Node::cutoff, SCIP_Tree::cutoffdepth, SCIP_Node::depth, FALSE, SCIP_Tree::focuslpfork, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Tree::focussubroot, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Node::reprop, SCIP_Tree::repropdepth, SCIP_Tree::root, SCIP_NODETYPE_FORK, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SUBROOT, SCIPdebugMessage, SCIPnodeGetType(), and TRUE.
Referenced by SCIPnodeFocus().
◆ treeSwitchPath()
|
static |
switches the active path to the new focus node, frees dead end, applies domain and constraint set changes
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory buffers set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem primal primal data lp current LP data branchcand branching candidate storage conflict conflict analysis data eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure fork common fork node of old and new focus node, or NULL focusnode new focus node, or NULL cutoff pointer to store whether the new focus node can be cut off
Definition at line 3072 of file tree.c.
References SCIP_Node::active, SCIP_Tree::appliedeffectiverootdepth, SCIP_Node::conssetchg, SCIP_Node::cutoff, SCIP_Node::depth, SCIP_Node::domchg, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, nodeActivate(), nodeDeactivate(), nodeRepropagate(), NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Node::reprop, SCIP_CALL, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPconssetchgMakeGlobal(), SCIPdomchgApplyGlobal(), SCIPeventqueueDelay(), SCIPeventqueueProcess(), SCIPnodeCutoff(), SCIPnodeFree(), SCIPnodeGetType(), SCIPsetDebugMsg, treeApplyPendingBdchgs(), treeEnsurePathMem(), treeUpdatePathLPSize(), and TRUE.
Referenced by SCIPnodeFocus().
◆ subrootConstructLP()
|
static |
loads the subroot's LP data
- Parameters
-
subroot subroot node to construct LP for blkmem block memory buffers set global SCIP settings eventqueue event queue eventfilter global event filter lp current LP data
Definition at line 3252 of file tree.c.
References SCIP_Subroot::cols, SCIP_Node::data, SCIP_Node::depth, SCIP_Subroot::ncols, SCIP_Subroot::nrows, NULL, r, SCIP_Subroot::rows, SCIP_CALL, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPlpAddCol(), SCIPlpAddRow(), SCIPnodeGetType(), and SCIP_Node::subroot.
Referenced by SCIPtreeLoadLP().
◆ forkAddLP()
|
static |
loads the fork's additional LP data
- Parameters
-
fork fork node to construct additional LP for blkmem block memory buffers set global SCIP settings eventqueue event queue eventfilter global event filter lp current LP data
Definition at line 3297 of file tree.c.
References SCIP_Fork::addedcols, SCIP_Fork::addedrows, SCIP_Node::data, SCIP_Node::depth, SCIP_Node::fork, SCIP_Fork::naddedcols, SCIP_Fork::naddedrows, NULL, r, SCIP_CALL, SCIP_NODETYPE_FORK, SCIP_OKAY, SCIPlpAddCol(), SCIPlpAddRow(), and SCIPnodeGetType().
Referenced by SCIPtreeLoadLP().
◆ pseudoforkAddLP()
|
static |
loads the pseudofork's additional LP data
- Parameters
-
pseudofork pseudofork node to construct additional LP for blkmem block memory buffers set global SCIP settings eventqueue event queue eventfilter global event filter lp current LP data
Definition at line 3342 of file tree.c.
References SCIP_Pseudofork::addedcols, SCIP_Pseudofork::addedrows, SCIP_Node::data, SCIP_Node::depth, SCIP_Pseudofork::naddedcols, SCIP_Pseudofork::naddedrows, NULL, SCIP_Node::pseudofork, r, SCIP_CALL, SCIP_NODETYPE_PSEUDOFORK, SCIP_OKAY, SCIPlpAddCol(), SCIPlpAddRow(), and SCIPnodeGetType().
Referenced by SCIPtreeLoadLP().
◆ treeCheckPath()
|
static |
checks validity of active path
- Parameters
-
tree branch and bound tree
Definition at line 3388 of file tree.c.
References SCIP_Node::data, SCIP_Node::depth, SCIP_Tree::focuslpconstructed, SCIP_Node::fork, SCIP_Pseudofork::naddedcols, SCIP_Fork::naddedcols, SCIP_Pseudofork::naddedrows, SCIP_Fork::naddedrows, SCIP_Probingnode::ncols, SCIP_Subroot::ncols, SCIP_Probingnode::ninitialcols, SCIP_Probingnode::ninitialrows, SCIP_Probingnode::nrows, SCIP_Subroot::nrows, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Node::probingnode, SCIP_Node::pseudofork, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SUBROOT, SCIPABORT, SCIPerrorMessage, SCIPnodeGetType(), SCIPtreeProbing(), and SCIP_Node::subroot.
Referenced by SCIPtreeLoadLP(), and treeBacktrackProbing().
◆ SCIPtreeLoadLP()
SCIP_RETCODE SCIPtreeLoadLP | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_LP * | lp, | ||
SCIP_Bool * | initroot | ||
) |
constructs the LP relaxation of the focus node
- Parameters
-
tree branch and bound tree blkmem block memory buffers set global SCIP settings eventqueue event queue eventfilter global event filter lp current LP data initroot pointer to store whether the root LP relaxation has to be initialized
Definition at line 3460 of file tree.c.
References SCIP_Node::active, SCIP_Tree::correctlpdepth, SCIP_Node::depth, SCIP_Tree::focuslpconstructed, SCIP_Tree::focuslpfork, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Tree::focussubroot, forkAddLP(), MAX, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, pseudoforkAddLP(), SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPlpClear(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpMarkSize(), SCIPlpShrinkCols(), SCIPlpShrinkRows(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeProbing(), subrootConstructLP(), treeCheckPath(), and TRUE.
Referenced by SCIPconstructCurrentLP().
◆ SCIPtreeLoadLPState()
SCIP_RETCODE SCIPtreeLoadLPState | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_PROB * | prob, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
loads LP state for fork/subroot of the focus node
- Parameters
-
tree branch and bound tree blkmem block memory buffers set global SCIP settings prob problem data stat dynamic problem statistics eventqueue event queue lp current LP data
Definition at line 3588 of file tree.c.
References SCIP_Node::active, SCIP_Tree::correctlpdepth, SCIP_Node::data, SCIP_Node::depth, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Tree::focuslpconstructed, SCIP_Tree::focuslpstatefork, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Node::fork, SCIP_Stat::lpcount, SCIP_Fork::lpistate, SCIP_Subroot::lpistate, SCIP_Fork::lpwasdualchecked, SCIP_Subroot::lpwasdualchecked, SCIP_Fork::lpwasdualfeas, SCIP_Subroot::lpwasdualfeas, SCIP_Fork::lpwasprimchecked, SCIP_Subroot::lpwasprimchecked, SCIP_Fork::lpwasprimfeas, SCIP_Subroot::lpwasprimfeas, SCIP_DomChgBound::nboundchgs, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPlpSetState(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIP_Lp::solisbasic, SCIP_Lp::solved, SCIP_Node::subroot, and TRUE.
Referenced by solveNodeInitialLP().
◆ nodeToLeaf()
|
static |
converts node into LEAF and moves it into the array of the node queue if node's lower bound is greater or equal than the given upper bound, the node is deleted; otherwise, it is moved to the node queue; anyways, the given pointer is NULL after the call
- Parameters
-
node pointer to child or sibling node to convert blkmem block memory buffers 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 lpstatefork LP state defining fork of the node cutoffbound cutoff bound: all nodes with lowerbound >= cutoffbound are cut off
Definition at line 3708 of file tree.c.
References SCIP_Node::active, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Tree::leaves, SCIP_Node::lowerbound, NULL, SCIP_Node::parent, SCIP_Tree::root, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPdomchgMakeStatic(), SCIPlpGetSolstat(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodepqInsert(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPvisualCutoffNode(), and SCIP_Stat::visual.
Referenced by focusnodeToLeaf(), and treeNodesToQueue().
◆ focusnodeCleanupVars()
|
static |
removes variables from the problem, that are marked to be deletable, and were created at the focusnode; only removes variables that were created at the focusnode, unless inlp is TRUE (e.g., when the node is cut off, anyway)
- Parameters
-
blkmem block memory buffers set global SCIP settings stat dynamic problem statistics eventqueue event queue transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage cliquetable clique table data structure inlp should variables in the LP be deleted, too?
Definition at line 3790 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Stat::nnodes, NULL, SCIP_Prob::nvars, SCIP_Tree::root, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPlpFlush(), SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpShrinkCols(), SCIPnodeAddBoundchg(), SCIPnodeGetType(), SCIPprobDelVar(), SCIPprobPerformVarDeletions(), SCIPsetDebugMsg, SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIPsetIsFeasZero(), SCIPtreeProbing(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarIsDeletable(), SCIPvarIsInLP(), SCIPvarMarkNotDeletable(), and SCIP_Prob::vars.
Referenced by focusnodeToDeadend(), focusnodeToFork(), and focusnodeToPseudofork().
◆ focusnodeToDeadend()
|
static |
converts the focus node into a dead-end node
- Parameters
-
blkmem block memory buffers set global SCIP settings stat dynamic problem statistics eventqueue event queue transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage cliquetable clique table data structure
Definition at line 3891 of file tree.c.
References SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, focusnodeCleanupVars(), SCIP_Tree::nchildren, SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, SCIPtreeProbing(), and TRUE.
Referenced by SCIPnodeFocus().
◆ focusnodeToLeaf()
|
static |
converts the focus node into a leaf node (if it was postponed)
- Parameters
-
blkmem block memory buffers 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 lpstatefork LP state defining fork of the node cutoffbound cutoff bound: all nodes with lowerbound >= cutoffbound are cut off
Definition at line 3931 of file tree.c.
References SCIP_Node::active, SCIP_Tree::focusnode, nodeToLeaf(), NULL, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by SCIPnodeFocus().
◆ focusnodeToJunction()
|
static |
converts the focus node into a junction node
- Parameters
-
blkmem block memory buffers set global SCIP settings eventqueue event queue tree branch and bound tree lp current LP data
Definition at line 3961 of file tree.c.
References SCIP_Node::active, SCIP_Node::data, SCIP_Node::domchg, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Node::junction, junctionInit(), SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_JUNCTION, SCIP_OKAY, SCIPdomchgMakeStatic(), SCIPlpGetNNewcols(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by focusnodeToFork(), and SCIPnodeFocus().
◆ focusnodeToPseudofork()
|
static |
converts the focus node into a pseudofork node
- Parameters
-
blkmem block memory buffers set global SCIP settings stat dynamic problem statistics eventqueue event queue transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage cliquetable clique table data structure
Definition at line 3998 of file tree.c.
References SCIP_Node::active, SCIP_Node::data, SCIP_Node::domchg, FALSE, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, focusnodeCleanupVars(), SCIP_Tree::nchildren, SCIP_Node::nodetype, NULL, SCIP_Node::pseudofork, pseudoforkCreate(), SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_OKAY, SCIPdomchgMakeStatic(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by SCIPnodeFocus().
◆ focusnodeToFork()
|
static |
converts the focus node into a fork node
- Parameters
-
blkmem block memory buffers set global SCIP settings messagehdlr message handler stat dynamic problem statistics eventqueue event queue eventfilter global event filter transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage cliquetable clique table data structure
Definition at line 4049 of file tree.c.
References SCIP_Node::active, SCIP_Node::data, SCIP_Node::depth, SCIP_Node::domchg, FALSE, SCIP_Lp::flushed, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, focusnodeCleanupVars(), focusnodeToJunction(), SCIP_Node::fork, forkCaptureLPIState(), forkCreate(), SCIP_Tree::nchildren, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Node::nodetype, NULL, SCIP_Lp::resolvelperror, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPdomchgMakeStatic(), SCIPlpCleanupAll(), SCIPlpCleanupNew(), SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPlpGetNRows(), SCIPlpGetSolstat(), SCIPlpRemoveAllObsoletes(), SCIPlpShrinkCols(), SCIPlpShrinkRows(), SCIPlpSolveAndEval(), SCIPmessagePrintVerbInfo(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIP_Lp::solved, SCIP_Node::subroot, treeUpdatePathLPSize(), and TRUE.
Referenced by SCIPnodeFocus().
◆ treeNodesToQueue()
|
static |
puts all nodes in the array on the node queue and makes them LEAFs
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory buffers set global SCIP settings stat dynamic problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data nodes array of nodes to put on the queue nnodes pointer to number of nodes in the array lpstatefork LP state defining fork of the nodes cutoffbound cutoff bound: all nodes with lowerbound >= cutoffbound are cut off
Definition at line 4280 of file tree.c.
References nodeToLeaf(), NULL, SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPnodeFocus(), and SCIPtreeCreateRoot().
◆ treeChildrenToSiblings()
|
static |
converts children into siblings, clears children array
- Parameters
-
tree branch and bound tree
Definition at line 4315 of file tree.c.
References SCIP_Sibling::arraypos, SCIP_Child::arraypos, SCIP_Node::child, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::childrensize, SCIP_Node::data, SCIP_Tree::nchildren, SCIP_Node::nodetype, SCIP_Tree::nsiblings, NULL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_SIBLING, SCIP_Real, SCIPnodeGetType(), SCIP_Node::sibling, SCIP_Tree::siblings, SCIP_Tree::siblingsprio, and SCIP_Tree::siblingssize.
Referenced by SCIPnodeFocus().
◆ SCIPnodeFocus()
SCIP_RETCODE SCIPnodeFocus | ( | SCIP_NODE ** | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_CONFLICT * | conflict, | ||
SCIP_CONFLICTSTORE * | conflictstore, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_Bool * | cutoff, | ||
SCIP_Bool | postponed, | ||
SCIP_Bool | exitsolve | ||
) |
installs a child, a sibling, or a leaf node as the new focus node
- Parameters
-
node pointer to node to focus (or NULL to remove focus); the node is freed, if it was cut off due to a cut off subtree blkmem block memory buffers set global SCIP settings messagehdlr message handler stat problem statistics transprob transformed problem origprob original problem primal primal data tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage conflict conflict analysis data conflictstore conflict store eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure cutoff pointer to store whether the given node can be cut off postponed was the current focus node postponed? exitsolve are we in exitsolve stage, so we only need to loose the children
Definition at line 4352 of file tree.c.
References SCIP_Node::active, SCIP_Tree::children, SCIP_Tree::correctlpdepth, SCIP_Primal::cutoffbound, SCIP_Tree::cutoffdepth, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focuslpconstructed, SCIP_Tree::focuslpfork, SCIP_Tree::focuslpstatefork, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToLeaf(), focusnodeToPseudofork(), SCIP_Tree::focussubroot, SCIP_Lp::isrelax, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Stat::lpcount, SCIP_Stat::nbacktracks, SCIP_Tree::nchildren, SCIP_Stat::nearlybacktracks, SCIP_Tree::nsiblings, NULL, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Stat::plungedepth, SCIP_Stat::referencebound, SCIP_Lp::resolvelperror, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPdebugCheckGlobalLowerbound, SCIPdebugCheckLocalLowerbound, SCIPerrorMessage, SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPlpGetNRows(), SCIPlpGetSolstat(), SCIPlpMarkSize(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetLowerbound(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodepqCompare(), SCIPnodepqRemove(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPtreeGetBestLeaf(), SCIPtreeIsPathComplete(), SCIPtreeProbing(), SCIPvisualCutoffNode(), SCIP_Tree::siblings, treeChildrenToSiblings(), treeFindSwitchForks(), treeNodesToQueue(), treeRemoveChild(), treeRemoveSibling(), treeSwitchPath(), and SCIP_Stat::visual.
Referenced by freeReoptSolve(), freeSolve(), SCIPsolveCIP(), SCIPtreeCreatePresolvingRoot(), and SCIPtreeFreePresolvingRoot().
◆ SCIPtreeCreate()
SCIP_RETCODE SCIPtreeCreate | ( | SCIP_TREE ** | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_NODESEL * | nodesel | ||
) |
creates an initialized tree data structure
- Parameters
-
tree pointer to tree data structure blkmem block memory buffers set global SCIP settings nodesel node selector to use for sorting leaves in the priority queue
Definition at line 4777 of file tree.c.
References BMSallocBlockMemoryArray, BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPnodepqCreate(), and TRUE.
Referenced by SCIPtransformProb().
◆ SCIPtreeFree()
SCIP_RETCODE SCIPtreeFree | ( | SCIP_TREE ** | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
frees tree data structure
- Parameters
-
tree pointer to tree data structure blkmem block memory buffers set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data
Definition at line 4858 of file tree.c.
References BMSfreeBlockMemoryArray, BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, SCIPnodepqFree(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by freeTransform(), and freeTransforming().
◆ SCIPtreeClear()
SCIP_RETCODE SCIPtreeClear | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
clears and resets tree data structure and deletes all nodes
- Parameters
-
tree tree data structure blkmem block memory buffers set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data
Definition at line 4907 of file tree.c.
References SCIP_Tree::appliedeffectiverootdepth, SCIP_Tree::correctlpdepth, SCIP_Tree::cutoffdelayed, SCIP_Tree::cutoffdepth, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, SCIP_Tree::leaves, SCIP_Tree::nchildren, SCIP_Tree::npendingbdchgs, SCIP_Tree::nsiblings, NULL, SCIP_Tree::pathlen, SCIP_Tree::pendingbdchgs, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpwasflushed, SCIP_Tree::probinglpwasrelax, SCIP_Tree::probinglpwassolved, SCIP_Tree::probingnodehaslp, SCIP_Tree::probingsolvedlp, SCIP_Tree::repropdepth, SCIP_Tree::repropsubtreecount, SCIP_Tree::root, SCIP_CALL, SCIP_OKAY, SCIPnodepqClear(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIPvarRelease(), and SCIP_PendingBdchg::var.
Referenced by freeReoptSolve(), freeSolve(), SCIPpresolve(), and SCIPtreeFreePresolvingRoot().
◆ SCIPtreeCreateRoot()
SCIP_RETCODE SCIPtreeCreateRoot | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
creates the root node of the tree and puts it into the leaves queue
- Parameters
-
tree tree data structure reopt reoptimization data structure blkmem block memory buffers set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data
Definition at line 4968 of file tree.c.
References SCIP_Node::active, SCIP_Tree::children, SCIP_Node::cutoff, SCIP_Node::depth, SCIP_Tree::focusnode, MAXREPROPMARK, SCIP_Tree::nchildren, SCIP_Node::nodetype, SCIP_Tree::nsiblings, NULL, SCIP_Node::reprop, SCIP_Node::repropsubtreemark, SCIP_Tree::root, SCIP_CALL, SCIP_MAXTREEDEPTH, SCIP_NODETYPE_CHILD, SCIP_OKAY, SCIPnodeCreateChild(), SCIPsetInfinity(), SCIPtreeProbing(), and treeNodesToQueue().
Referenced by initSolve(), and SCIPtreeCreatePresolvingRoot().
◆ SCIPtreeCreatePresolvingRoot()
SCIP_RETCODE SCIPtreeCreatePresolvingRoot | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_CONFLICT * | conflict, | ||
SCIP_CONFLICTSTORE * | conflictstore, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable | ||
) |
creates a temporary presolving root node of the tree and installs it as focus node
- Parameters
-
tree tree data structure reopt reoptimization data structure blkmem block memory buffers set global SCIP settings messagehdlr message handler stat problem statistics transprob transformed problem origprob original problem primal primal data lp current LP data branchcand branching candidate storage conflict conflict analysis data conflictstore conflict store eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure
Definition at line 5014 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPnodeFocus(), SCIPtreeCreateRoot(), and SCIPtreeProbing().
Referenced by initPresolve().
◆ SCIPtreeFreePresolvingRoot()
SCIP_RETCODE SCIPtreeFreePresolvingRoot | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_CONFLICT * | conflict, | ||
SCIP_CONFLICTSTORE * | conflictstore, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable | ||
) |
frees the temporary presolving root and resets tree data structure
- Parameters
-
tree tree data structure reopt reoptimization data structure blkmem block memory buffers set global SCIP settings messagehdlr message handler stat problem statistics transprob transformed problem origprob original problem primal primal data lp current LP data branchcand branching candidate storage conflict conflict analysis data conflictstore conflict store eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure
Definition at line 5055 of file tree.c.
References FALSE, SCIP_Tree::focusnode, NULL, SCIP_Tree::pathlen, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPnodeFocus(), and SCIPtreeClear().
Referenced by exitPresolve().
◆ SCIPtreeGetNodesel()
SCIP_NODESEL* SCIPtreeGetNodesel | ( | SCIP_TREE * | tree | ) |
returns the node selector associated with the given node priority queue
- Parameters
-
tree branch and bound tree
Definition at line 5098 of file tree.c.
References SCIP_Tree::leaves, NULL, and SCIPnodepqGetNodesel().
◆ SCIPtreeSetNodesel()
SCIP_RETCODE SCIPtreeSetNodesel | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_NODESEL * | nodesel | ||
) |
sets the node selector used for sorting the nodes in the priority queue, and resorts the queue if necessary
- Parameters
-
tree branch and bound tree set global SCIP settings messagehdlr message handler stat problem statistics nodesel node selector to use for sorting the nodes in the queue
Definition at line 5108 of file tree.c.
References SCIP_Tree::leaves, SCIP_Stat::nnodes, NULL, SCIP_CALL, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPmessagePrintVerbInfo(), SCIPnodepqGetNodesel(), SCIPnodepqSetNodesel(), and SCIPnodeselGetName().
Referenced by SCIPsolveCIP().
◆ SCIPtreeCutoff()
SCIP_RETCODE SCIPtreeCutoff | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_Real | cutoffbound | ||
) |
cuts off nodes with lower bound not better than given cutoff bound
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat dynamic problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data cutoffbound cutoff bound: all nodes with lowerbound >= cutoffbound are cut off
Definition at line 5136 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::cutoffdelayed, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Tree::root, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_OKAY, SCIPlpDiving(), SCIPlpGetSolstat(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodepqBound(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPvisualCutoffNode(), SCIP_Tree::siblings, TRUE, and SCIP_Stat::visual.
Referenced by primalSetCutoffbound(), SCIPendDive(), SCIPpruneTree(), and SCIPsolveCIP().
◆ SCIPtreeCalcNodeselPriority()
SCIP_Real SCIPtreeCalcNodeselPriority | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_VAR * | var, | ||
SCIP_BRANCHDIR | branchdir, | ||
SCIP_Real | targetvalue | ||
) |
calculates the node selection priority for moving the given variable's LP value to the given target value; this node selection priority can be given to the SCIPcreateChild() call
- Parameters
-
tree branch and bound tree set global SCIP settings stat dynamic problem statistics var variable, of which the branching factor should be applied, or NULL branchdir type of branching that was performed: upwards, downwards, or fixed fixed should only be used, when both bounds changed targetvalue new value of the variable in the child node
Definition at line 5222 of file tree.c.
References NULL, SCIP_Bool, SCIP_BRANCHDIR_AUTO, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_Real, SCIPerrorMessage, SCIPsetEpsilon(), SCIPsetInfinity(), SCIPtreeGetCurrentDepth(), SCIPtreeHasFocusNodeLP(), SCIPvarGetAvgInferences(), SCIPvarGetBranchDirection(), SCIPvarGetName(), SCIPvarGetPseudocost(), SCIPvarGetRootSol(), and SCIPvarGetSol().
Referenced by SCIPcalcNodeselPriority(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), and SCIPtreeBranchVarNary().
◆ SCIPtreeCalcChildEstimate()
SCIP_Real SCIPtreeCalcChildEstimate | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_VAR * | var, | ||
SCIP_Real | targetvalue | ||
) |
calculates an estimate for the objective of the best feasible solution contained in the subtree after applying the given branching; this estimate can be given to the SCIPcreateChild() call
- Parameters
-
tree branch and bound tree set global SCIP settings stat dynamic problem statistics var variable, of which the branching factor should be applied, or NULL targetvalue new value of the variable in the child node
Definition at line 5372 of file tree.c.
References SCIP_Tree::focusnode, NULL, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetEstimate(), SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPtreeHasFocusNodeLP(), SCIPvarGetPseudocost(), SCIPvarGetSol(), and SCIPvarGetType().
Referenced by SCIPcalcChildEstimate(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), and SCIPtreeBranchVarNary().
◆ SCIPtreeBranchVar()
SCIP_RETCODE SCIPtreeBranchVar | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | val, | ||
SCIP_NODE ** | downchild, | ||
SCIP_NODE ** | eqchild, | ||
SCIP_NODE ** | upchild | ||
) |
branches on a variable x if x is a continuous variable, then two child nodes will be created (x <= x', x >= x') but if the bounds of x are such that their relative difference is smaller than epsilon, the variable is fixed to val (if not SCIP_INVALID) or a well chosen alternative in the current node, i.e., no children are created if x is not a continuous variable, then: if solution value x' is fractional, two child nodes will be created (x <= floor(x'), x >= ceil(x')), if solution value is integral, the x' is equal to lower or upper bound of the branching variable and the bounds of x are finite, then two child nodes will be created (x <= x", x >= x"+1 with x" = floor((lb + ub)/2)), otherwise (up to) three child nodes will be created (x <= x'-1, x == x', x >= x'+1) if solution value is equal to one of the bounds and the other bound is infinite, only two child nodes will be created (the third one would be infeasible anyway)
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat problem statistics data transprob transformed problem after presolve origprob original problem lp current LP data branchcand branching candidate storage eventqueue event queue var variable to branch on val value to branch on or SCIP_INVALID for branching on current LP/pseudo solution. A branching value is required for branching on continuous variables downchild pointer to return the left child with variable rounded down, or NULL eqchild pointer to return the middle child with variable fixed, or NULL upchild pointer to return the right child with variable rounded up, or NULL
Definition at line 5431 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, MAX, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPnodeGetLowerbound(), SCIPrelDiff(), SCIPsetCeil(), SCIPsetDebugMsg, SCIPsetEpsilon(), SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPsetIsEQ(), SCIPsetIsFeasEQ(), SCIPsetIsFeasGE(), SCIPsetIsFeasIntegral(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetIsRelEQ(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPtreeGetCurrentNode(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetProbvar(), SCIPvarGetProbvarSum(), SCIPvarGetRootSol(), SCIPvarGetSol(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarGetWorstBoundLocal(), SCIPvarIsActive(), SCIPvisualUpdateChild(), and SCIP_Stat::visual.
Referenced by SCIPbranchExecExtern(), SCIPbranchExecLP(), SCIPbranchExecPseudo(), SCIPbranchVar(), SCIPbranchVarVal(), and SCIPtreeBranchVarNary().
◆ SCIPtreeBranchVarHole()
SCIP_RETCODE SCIPtreeBranchVarHole | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | left, | ||
SCIP_Real | right, | ||
SCIP_NODE ** | downchild, | ||
SCIP_NODE ** | upchild | ||
) |
branches a variable x using the given domain hole; two child nodes will be created (x <= left, x >= right)
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat problem statistics data transprob transformed problem after presolve origprob original problem lp current LP data branchcand branching candidate storage eventqueue event queue var variable to branch on left left side of the domain hole right right side of the domain hole downchild pointer to return the left child with variable rounded down, or NULL upchild pointer to return the right child with variable rounded up, or NULL
Definition at line 5762 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPsetDebugMsg, SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPsetIsFeasGE(), SCIPsetIsFeasIntegral(), SCIPsetIsFeasLE(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetProbvarHole(), SCIPvarGetSol(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarIsActive(), SCIPvarIsIntegral(), SCIPvisualUpdateChild(), and SCIP_Stat::visual.
Referenced by SCIPbranchVarHole().
◆ SCIPtreeBranchVarNary()
SCIP_RETCODE SCIPtreeBranchVarNary | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | val, | ||
int | n, | ||
SCIP_Real | minwidth, | ||
SCIP_Real | widthfactor, | ||
int * | nchildren | ||
) |
n-ary branching on a variable x Branches on variable x such that up to n/2 children are created on each side of the usual branching value. The branching value is selected as in SCIPtreeBranchVar(). If n is 2 or the variables local domain is too small for a branching into n pieces, SCIPtreeBranchVar() is called. The parameters minwidth and widthfactor determine the domain width of the branching variable in the child nodes. If n is odd, one child with domain width 'width' and having the branching value in the middle is created. Otherwise, two children with domain width 'width' and being left and right of the branching value are created. Next further nodes to the left and right are created, where width is multiplied by widthfactor with increasing distance from the first nodes. The initial width is calculated such that n/2 nodes are created to the left and to the right of the branching value. If this value is below minwidth, the initial width is set to minwidth, which may result in creating less than n nodes.
Giving a large value for widthfactor results in creating children with small domain when close to the branching value and large domain when closer to the current variable bounds. That is, setting widthfactor to a very large value and n to 3 results in a ternary branching where the branching variable is mostly fixed in the middle child. Setting widthfactor to 1.0 results in children where the branching variable always has the same domain width (except for one child if the branching value is not in the middle).
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat problem statistics data transprob transformed problem after presolve origprob original problem lp current LP data branchcand branching candidate storage eventqueue event queue var variable to branch on val value to branch on or SCIP_INVALID for branching on current LP/pseudo solution. A branching value is required for branching on continuous variables n attempted number of children to be created, must be >= 2 minwidth minimal domain width in children widthfactor multiplier for children domain width with increasing distance from val, must be >= 1.0 nchildren buffer to store number of created children, or NULL
Definition at line 5904 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, MAX, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPrelDiff(), SCIPsetCeil(), SCIPsetDebugMsg, SCIPsetEpsilon(), SCIPsetFloor(), SCIPsetIsFeasGE(), SCIPsetIsFeasIntegral(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetIsPositive(), SCIPsetIsRelEQ(), SCIPsetIsRelGT(), SCIPsetIsRelLT(), SCIPsetIsZero(), SCIPtreeBranchVar(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetProbvar(), SCIPvarGetProbvarSum(), SCIPvarGetSol(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarGetWorstBoundLocal(), SCIPvarIsActive(), SCIPvisualUpdateChild(), and SCIP_Stat::visual.
Referenced by SCIPbranchVarValNary().
◆ SCIPtreeAddDiveBoundChange()
SCIP_RETCODE SCIPtreeAddDiveBoundChange | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_VAR * | var, | ||
SCIP_BRANCHDIR | dir, | ||
SCIP_Real | value, | ||
SCIP_Bool | preferred | ||
) |
adds a diving bound change to the tree together with the information if this is a bound change for the preferred direction or not
- Parameters
-
tree branch and bound tree blkmem block memory buffers var variable to apply the bound change to dir direction of the bound change value value to adjust this variable bound to preferred is this a bound change for the preferred child?
Definition at line 6275 of file tree.c.
References ARRAYGROWTH, BMSreallocBlockMemoryArray, SCIP_Tree::divebdchgdirs, SCIP_Tree::divebdchgsize, SCIP_Tree::divebdchgvals, SCIP_Tree::divebdchgvars, SCIP_Tree::ndivebdchanges, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPaddDiveBoundChange().
◆ SCIPtreeGetDiveBoundChangeData()
void SCIPtreeGetDiveBoundChangeData | ( | SCIP_TREE * | tree, |
SCIP_VAR *** | variables, | ||
SCIP_BRANCHDIR ** | directions, | ||
SCIP_Real ** | values, | ||
int * | ndivebdchgs, | ||
SCIP_Bool | preferred | ||
) |
get the dive bound change data for the preferred or the alternative direction
- Parameters
-
tree branch and bound tree variables pointer to store variables for the specified direction directions pointer to store the branching directions values pointer to store bound change values ndivebdchgs pointer to store the number of dive bound changes preferred should the dive bound changes for the preferred child be output?
Definition at line 6307 of file tree.c.
References SCIP_Tree::divebdchgdirs, SCIP_Tree::divebdchgvals, SCIP_Tree::divebdchgvars, SCIP_Tree::ndivebdchanges, and NULL.
Referenced by SCIPgetDiveBoundChangeData(), and SCIPgetDiveBoundChanges().
◆ SCIPtreeClearDiveBoundChanges()
void SCIPtreeClearDiveBoundChanges | ( | SCIP_TREE * | tree | ) |
clear the tree bound change data structure
- Parameters
-
tree branch and bound tree
Definition at line 6330 of file tree.c.
References SCIP_Tree::ndivebdchanges.
Referenced by SCIPclearDiveBoundChanges().
◆ treeCreateProbingNode()
|
static |
creates a probing child node of the current node, which must be the focus node, the current refocused node, or another probing node; if the current node is the focus or a refocused node, the created probing node is installed as probing root node
- Parameters
-
tree branch and bound tree blkmem block memory set global SCIP settings lp current LP data
Definition at line 6345 of file tree.c.
References SCIP_Node::active, BMSfreeBlockMemory, SCIP_Node::data, FALSE, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, SCIP_Probingnode::ncols, nodeAssignParent(), nodeCreate(), SCIP_Node::nodetype, SCIP_Probingnode::nrows, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Node::probingnode, probingnodeCreate(), probingnodeFree(), SCIP_Tree::probingnodehaslp, SCIP_Tree::probingroot, SCIP_CALL, SCIP_MAXDEPTHLEVEL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpMarkSize(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeGetCurrentNode(), SCIPtreeIsPathComplete(), SCIPtreeProbing(), treeEnsurePathMem(), treeUpdatePathLPSize(), and TRUE.
Referenced by SCIPtreeCreateProbingNode(), and SCIPtreeStartProbing().
◆ SCIPtreeStartProbing()
SCIP_RETCODE SCIPtreeStartProbing | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_LP * | lp, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PROB * | transprob, | ||
SCIP_Bool | strongbranching | ||
) |
switches to probing mode and creates a probing root
- Parameters
-
tree branch and bound tree blkmem block memory set global SCIP settings lp current LP data relaxation global relaxation data transprob transformed problem after presolve strongbranching is the probing mode used for strongbranching?
Definition at line 6435 of file tree.c.
References SCIP_Lp::divingobjchg, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Lp::isrelax, NULL, SCIP_Tree::pathlen, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpinorms, SCIP_Tree::probinglpistate, SCIP_Tree::probinglpwasdualchecked, SCIP_Tree::probinglpwasdualfeas, SCIP_Tree::probinglpwasflushed, SCIP_Tree::probinglpwasprimchecked, SCIP_Tree::probinglpwasprimfeas, SCIP_Tree::probinglpwasrelax, SCIP_Tree::probinglpwassolved, SCIP_Tree::probingobjchanged, SCIP_Tree::probingsolvedlp, SCIP_Tree::probingsumchgdobjs, SCIP_Tree::sbprobing, SCIP_CALL, SCIP_OKAY, SCIPconshdlrsStorePropagationStatus(), SCIPlpGetNorms(), SCIPlpGetSolstat(), SCIPlpGetState(), SCIPlpStartProbing(), SCIPrelaxationIsSolValid(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIPtreeStoreRelaxSol(), SCIP_Lp::solved, treeCreateProbingNode(), and TRUE.
Referenced by SCIPstartProbing(), and SCIPstartStrongbranch().
◆ SCIPtreeCreateProbingNode()
SCIP_RETCODE SCIPtreeCreateProbingNode | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_LP * | lp | ||
) |
creates a new probing child node in the probing path
- Parameters
-
tree branch and bound tree blkmem block memory set global SCIP settings lp current LP data
Definition at line 6500 of file tree.c.
References SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_CALL, SCIP_OKAY, SCIPnodeGetDepth(), SCIPsetDebugMsg, SCIPtreeProbing(), and treeCreateProbingNode().
Referenced by SCIPnewProbingNode().
◆ SCIPtreeSetProbingLPState()
SCIP_RETCODE SCIPtreeSetProbingLPState | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LP * | lp, | ||
SCIP_LPISTATE ** | lpistate, | ||
SCIP_LPINORMS ** | lpinorms, | ||
SCIP_Bool | primalfeas, | ||
SCIP_Bool | dualfeas | ||
) |
sets the LP state for the current probing node
- Note
- state and norms are stored at the node and later released by SCIP; therefore, the pointers are set to NULL by the method
- the pointers to state and norms must not be NULL; however, they may point to a NULL pointer if the respective information should not be set
- Parameters
-
tree branch and bound tree blkmem block memory lp current LP data lpistate pointer to LP state information (like basis information) lpinorms pointer to LP pricing norms information primalfeas primal feasibility when LP state information was stored dualfeas dual feasibility when LP state information was stored
Definition at line 6525 of file tree.c.
References SCIP_Node::data, SCIP_Probingnode::lpinorms, SCIP_Probingnode::lpistate, SCIP_Probingnode::lpwasdualfeas, SCIP_Probingnode::lpwasprimfeas, NULL, SCIP_Tree::probingloadlpistate, SCIP_Node::probingnode, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPlpFreeNorms(), SCIPlpFreeState(), SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), and TRUE.
Referenced by SCIPsetProbingLPState().
◆ SCIPtreeLoadProbingLPState()
SCIP_RETCODE SCIPtreeLoadProbingLPState | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_PROB * | prob, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
loads the LP state for the current probing node
- Parameters
-
tree branch and bound tree blkmem block memory buffers set global SCIP settings prob problem data eventqueue event queue lp current LP data
Definition at line 6579 of file tree.c.
References SCIP_Node::data, FALSE, SCIP_Probingnode::lpinorms, SCIP_Probingnode::lpistate, SCIP_Probingnode::lpwasdualchecked, SCIP_Probingnode::lpwasdualfeas, SCIP_Probingnode::lpwasprimchecked, SCIP_Probingnode::lpwasprimfeas, NULL, SCIP_Node::parent, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpinorms, SCIP_Tree::probinglpistate, SCIP_Tree::probinglpwasdualchecked, SCIP_Tree::probinglpwasdualfeas, SCIP_Tree::probinglpwasprimchecked, SCIP_Tree::probinglpwasprimfeas, SCIP_Node::probingnode, SCIP_Bool, SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPlpSetNorms(), SCIPlpSetState(), SCIPnodeGetType(), SCIPtreeGetCurrentNode(), and SCIPtreeProbing().
Referenced by solveProbingLP().
◆ SCIPtreeMarkProbingNodeHasLP()
SCIP_RETCODE SCIPtreeMarkProbingNodeHasLP | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LP * | lp | ||
) |
marks the probing node to have a solved LP relaxation
- Parameters
-
tree branch and bound tree blkmem block memory lp current LP data
Definition at line 6661 of file tree.c.
References SCIP_Node::data, NULL, SCIP_Node::probingnode, SCIP_Tree::probingnodehaslp, probingnodeUpdate(), SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), and TRUE.
Referenced by solveProbingLP().
◆ treeBacktrackProbing()
|
static |
undoes all changes to the problem applied in probing up to the given probing depth
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory buffers set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem lp current LP data primal primal data structure branchcand branching candidate storage eventqueue event queue eventfilter global event filter cliquetable clique table data structure probingdepth probing depth of the node in the probing path that should be reactivated, -1 to even deactivate the probing root, thus exiting probing mode
Definition at line 6689 of file tree.c.
References SCIP_Primal::cutoffbound, SCIP_Tree::cutoffdepth, SCIP_Node::data, FALSE, SCIP_Tree::focuslpconstructed, SCIP_Tree::focusnode, SCIP_Probingnode::nchgdobjs, SCIP_Lp::ncols, SCIP_Probingnode::ninitialcols, SCIP_Probingnode::ninitialrows, nodeDeactivate(), SCIP_Lp::nrows, NULL, SCIP_Probingnode::origobjvals, SCIP_Probingnode::origobjvars, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Tree::probingloadlpistate, SCIP_Node::probingnode, SCIP_Tree::probingobjchanged, SCIP_Tree::probingroot, SCIP_Tree::probingsumchgdobjs, SCIP_Tree::repropdepth, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpRecomputeLocalAndGlobalPseudoObjval(), SCIPlpSetCutoffbound(), SCIPlpSetSizeMark(), SCIPlpShrinkCols(), SCIPlpShrinkRows(), SCIPlpUnmarkDivingObjChanged(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeGetProbingDepth(), SCIPtreeProbing(), SCIPvarChgObj(), treeApplyPendingBdchgs(), treeCheckPath(), and TRUE.
Referenced by SCIPtreeBacktrackProbing(), and SCIPtreeEndProbing().
◆ SCIPtreeBacktrackProbing()
SCIP_RETCODE SCIPtreeBacktrackProbing | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
int | probingdepth | ||
) |
undoes all changes to the problem applied in probing up to the given probing depth; the changes of the probing node of the given probing depth are the last ones that remain active; changes that were applied before calling SCIPtreeCreateProbingNode() cannot be undone
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory buffers set global SCIP settings stat problem statistics transprob transformed problem origprob original problem lp current LP data primal primal data structure branchcand branching candidate storage eventqueue event queue eventfilter global event filter cliquetable clique table data structure probingdepth probing depth of the node in the probing path that should be reactivated
Definition at line 6835 of file tree.c.
References NULL, SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeGetProbingDepth(), SCIPtreeProbing(), and treeBacktrackProbing().
Referenced by SCIPbacktrackProbing().
◆ SCIPtreeEndProbing()
SCIP_RETCODE SCIPtreeEndProbing | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_CLIQUETABLE * | cliquetable | ||
) |
switches back from probing to normal operation mode, frees all nodes on the probing path, restores bounds of all variables and restores active constraints arrays of focus node
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory buffers set global SCIP settings messagehdlr message handler stat problem statistics transprob transformed problem after presolve origprob original problem lp current LP data relaxation global relaxation data primal Primal LP data branchcand branching candidate storage eventqueue event queue eventfilter global event filter cliquetable clique table data structure
Definition at line 6869 of file tree.c.
References SCIP_Primal::cutoffbound, SCIP_Lp::cutoffbound, SCIP_Lp::divingobjchg, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Tree::focuslpconstructed, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, SCIP_Lp::lpi, SCIP_Lp::lpsolstat, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Stat::nlps, SCIP_Stat::nnodes, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Tree::probdiverelaxstored, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpinorms, SCIP_Tree::probinglpistate, SCIP_Tree::probinglpwasdualchecked, SCIP_Tree::probinglpwasdualfeas, SCIP_Tree::probinglpwasflushed, SCIP_Tree::probinglpwasprimchecked, SCIP_Tree::probinglpwasprimfeas, SCIP_Tree::probinglpwasrelax, SCIP_Tree::probinglpwassolved, SCIP_Tree::probingobjchanged, SCIP_Tree::probingroot, SCIP_Tree::probingsolvedlp, SCIP_Tree::probingsumchgdobjs, SCIP_Lp::resolvelperror, SCIP_Tree::sbprobing, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPconshdlrsResetPropagationStatus(), SCIPlpDivingObjChanged(), SCIPlpEndProbing(), SCIPlpFlush(), SCIPlpFreeNorms(), SCIPlpFreeState(), SCIPlpGetSolstat(), SCIPlpiClearState(), SCIPlpIsRelax(), SCIPlpSetIsRelax(), SCIPlpSetNorms(), SCIPlpSetState(), SCIPlpSolveAndEval(), SCIPmessagePrintVerbInfo(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodeUpdateLowerboundLP(), SCIPprobAllColsInLP(), SCIPsetDebugMsg, SCIPtreeGetCurrentNode(), SCIPtreeProbing(), SCIPtreeRestoreRelaxSol(), SCIP_Lp::solisbasic, SCIP_Lp::solved, treeBacktrackProbing(), and TRUE.
Referenced by SCIPendProbing(), and SCIPendStrongbranch().
◆ SCIPtreeStoreRelaxSol()
SCIP_RETCODE SCIPtreeStoreRelaxSol | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PROB * | transprob | ||
) |
stores relaxation solution before diving or probing
- Parameters
-
tree branch and bound tree set global SCIP settings relaxation global relaxation data transprob transformed problem after presolve
Definition at line 7030 of file tree.c.
References BMSallocMemoryArray, BMSreallocMemoryArray, SCIP_Tree::nprobdiverelaxsol, NULL, SCIP_Prob::nvars, SCIP_Tree::probdiverelaxincludeslp, SCIP_Tree::probdiverelaxsol, SCIP_Tree::probdiverelaxstored, SCIP_ALLOC, SCIP_OKAY, SCIPrelaxationIsLpIncludedForSol(), SCIPrelaxationIsSolValid(), SCIPvarGetRelaxSol(), TRUE, and SCIP_Prob::vars.
Referenced by SCIPstartDive(), and SCIPtreeStartProbing().
◆ SCIPtreeRestoreRelaxSol()
SCIP_RETCODE SCIPtreeRestoreRelaxSol | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PROB * | transprob | ||
) |
restores relaxation solution after diving or probing
- Parameters
-
tree branch and bound tree set global SCIP settings relaxation global relaxation data transprob transformed problem after presolve
Definition at line 7074 of file tree.c.
References FALSE, NULL, SCIP_Prob::nvars, SCIP_Tree::probdiverelaxincludeslp, SCIP_Tree::probdiverelaxsol, SCIP_Tree::probdiverelaxstored, SCIP_CALL, SCIP_OKAY, SCIPrelaxationSetSolValid(), SCIPvarSetRelaxSol(), TRUE, and SCIP_Prob::vars.
Referenced by SCIPendDive(), and SCIPtreeEndProbing().
◆ SCIPtreeGetPrioChild()
gets the best child of the focus node w.r.t. the node selection priority assigned by the branching rule
- Parameters
-
tree branch and bound tree
Definition at line 7107 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::nchildren, NULL, SCIP_Real, and SCIP_REAL_MIN.
Referenced by SCIPgetPrioChild().
◆ SCIPtreeGetPrioSibling()
gets the best sibling of the focus node w.r.t. the node selection priority assigned by the branching rule
- Parameters
-
tree branch and bound tree
Definition at line 7133 of file tree.c.
References SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIP_REAL_MIN, SCIP_Tree::siblings, and SCIP_Tree::siblingsprio.
Referenced by SCIPgetPrioSibling().
◆ SCIPtreeGetBestChild()
gets the best child of the focus node w.r.t. the node selection strategy
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7159 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::leaves, SCIP_Tree::nchildren, NULL, SCIPnodepqGetNodesel(), and SCIPnodeselCompare().
Referenced by SCIPgetBestChild(), and SCIPtreeGetBestNode().
◆ SCIPtreeGetBestSibling()
gets the best sibling of the focus node w.r.t. the node selection strategy
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7186 of file tree.c.
References SCIP_Tree::leaves, SCIP_Tree::nsiblings, NULL, SCIPnodepqGetNodesel(), SCIPnodeselCompare(), and SCIP_Tree::siblings.
Referenced by SCIPgetBestSibling(), and SCIPtreeGetBestNode().
◆ SCIPtreeGetBestLeaf()
gets the best leaf from the node queue w.r.t. the node selection strategy
- Parameters
-
tree branch and bound tree
Definition at line 7213 of file tree.c.
References SCIP_Tree::leaves, NULL, and SCIPnodepqFirst().
Referenced by SCIPgetBestLeaf(), SCIPnodeFocus(), and SCIPtreeGetBestNode().
◆ SCIPtreeGetBestNode()
gets the best node from the tree (child, sibling, or leaf) w.r.t. the node selection strategy
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7223 of file tree.c.
References SCIP_Tree::leaves, NULL, SCIPnodepqGetNodesel(), SCIPnodeselCompare(), SCIPtreeGetBestChild(), SCIPtreeGetBestLeaf(), SCIPtreeGetBestSibling(), and SCIPtreeGetNLeaves().
Referenced by SCIPgetBestNode().
◆ SCIPtreeGetLowerbound()
gets the minimal lower bound of all nodes in the tree
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7257 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::focusnode, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIPnodepqGetLowerbound(), and SCIP_Tree::siblings.
Referenced by priceAndCutLoop(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPbranchruleExecPseudoSol(), SCIPgetLowerbound(), SCIPnodeCutoff(), and SCIPnodeUpdateLowerbound().
◆ SCIPtreeGetLowerboundNode()
gets the node with minimal lower bound of all nodes in the tree (child, sibling, or leaf)
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7295 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIPnodepqGetLowerboundNode(), SCIPsetInfinity(), SCIPsetIsLE(), SCIPsetIsLT(), SCIP_Tree::siblings, and SCIP_Tree::siblingsprio.
Referenced by SCIPgetBestboundNode().
◆ SCIPtreeGetAvgLowerbound()
gets the average lower bound of all nodes in the tree
- Parameters
-
tree branch and bound tree cutoffbound global cutoff bound
Definition at line 7347 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::focusnode, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, nnodes, SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIPnodepqGetLowerboundSum(), SCIPtreeGetNLeaves(), and SCIP_Tree::siblings.
Referenced by SCIPgetAvgDualbound(), and SCIPgetAvgLowerbound().
◆ SCIPnodeGetNDualBndchgs()
int SCIPnodeGetNDualBndchgs | ( | SCIP_NODE * | node | ) |
returns the number of bound changes based on dual information.
currently, this methods works only for bound changes made by strong branching on binary variables. we need this method to ensure optimality within reoptimization.
since the bound changes made by strong branching are stored as SCIP_BOUNDCHGTYPE_CONSINFER or SCIP_BOUNDCHGTYPE_PROPINFER with no constraint or propagator, resp., we are are interested in bound changes with these attributes.
all bound changes of type SCIP_BOUNDCHGTYPE_BRANCHING are stored in the beginning of the bound change array, afterwards, we can find the other two types. thus, we start the search at the end of the list and stop when reaching the first bound change of type SCIP_BOUNDCHGTYPE_BRANCHING.
- Parameters
-
node node
Definition at line 7601 of file tree.c.
References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, NULL, SCIP_Bool, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIP_BoundChg::var, and SCIP_Var::vartype.
Referenced by collectDualInformation(), and SCIPreoptCheckCutoff().
◆ SCIPnodeGetDualBoundchgs()
void SCIPnodeGetDualBoundchgs | ( | SCIP_NODE * | node, |
SCIP_VAR ** | vars, | ||
SCIP_Real * | bounds, | ||
SCIP_BOUNDTYPE * | boundtypes, | ||
int * | nvars, | ||
int | varssize | ||
) |
returns the set of variable branchings that were performed in the parent node to create this node
- Parameters
-
node node data vars array of variables on which the bound change is based on dual information bounds array of bounds which are based on dual information boundtypes array of boundtypes which are based on dual information nvars number of variables on which the bound change is based on dual information if this is larger than the array size, arrays should be reallocated and method should be called again varssize available slots in arrays
Definition at line 7646 of file tree.c.
References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPnodeGetDepth(), SCIP_BoundChg::var, and SCIP_Var::vartype.
Referenced by collectDualInformation().
◆ SCIPnodeGetConsProps()
void SCIPnodeGetConsProps | ( | SCIP_NODE * | node, |
SCIP_VAR ** | vars, | ||
SCIP_Real * | varbounds, | ||
SCIP_BOUNDTYPE * | varboundtypes, | ||
int * | nconspropvars, | ||
int | conspropvarssize | ||
) |
return all bound changes based on constraint propagation; stop saving the bound changes if we reach a branching decision based on a dual information
- Parameters
-
node node vars array of variables on which constraint propagation triggers a bound change varbounds array of bounds set by constraint propagation varboundtypes array of boundtypes set by constraint propagation nconspropvars number of variables on which constraint propagation triggers a bound change if this is larger than the array size, arrays should be reallocated and method should be called again conspropvarssize available slots in arrays
Definition at line 7876 of file tree.c.
References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetDepth(), SCIPnodeGetNDomchg(), and SCIP_BoundChg::var.
Referenced by updateConstraintPropagation().
◆ SCIPnodeGetBdChgsAfterDual()
void SCIPnodeGetBdChgsAfterDual | ( | SCIP_NODE * | node, |
SCIP_VAR ** | vars, | ||
SCIP_Real * | varbounds, | ||
SCIP_BOUNDTYPE * | varboundtypes, | ||
int | start, | ||
int * | nbranchvars, | ||
int | branchvarssize | ||
) |
gets all bound changes applied after the first bound change based on dual information.
- Note
- : currently, we can only detect bound changes based in dual information if they arise from strong branching.
- Parameters
-
node node vars array of variables on which the branching has been performed in the parent node varbounds array of bounds which the branching in the parent node set varboundtypes array of boundtypes which the branching in the parent node set start first free slot in the arrays nbranchvars number of variables on which branching has been performed in the parent node if this is larger than the array size, arrays should be reallocated and method should be called again branchvarssize available slots in arrays
Definition at line 7964 of file tree.c.
References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetDepth(), and SCIP_BoundChg::var.
Referenced by saveAfterDualBranchings().
◆ SCIPtreeGetNChildren()
int SCIPtreeGetNChildren | ( | SCIP_TREE * | tree | ) |
gets number of children of the focus node
- Parameters
-
tree branch and bound tree
Definition at line 8229 of file tree.c.
References SCIP_Tree::nchildren, and NULL.
Referenced by SCIPgetOpenNodesData().
◆ SCIPtreeGetNSiblings()
int SCIPtreeGetNSiblings | ( | SCIP_TREE * | tree | ) |
gets number of siblings of the focus node
- Parameters
-
tree branch and bound tree
Definition at line 8239 of file tree.c.
References SCIP_Tree::nsiblings, and NULL.
Referenced by SCIPgetOpenNodesData().
◆ SCIPtreeGetNLeaves()
int SCIPtreeGetNLeaves | ( | SCIP_TREE * | tree | ) |
gets number of leaves in the tree (excluding children and siblings of focus nodes)
- Parameters
-
tree branch and bound tree
Definition at line 8249 of file tree.c.
References SCIP_Tree::leaves, NULL, and SCIPnodepqLen().
Referenced by SCIPsolveCIP(), SCIPtreeGetAvgLowerbound(), SCIPtreeGetBestNode(), and SCIPtreeGetNNodes().
◆ SCIPtreeGetNNodes()
int SCIPtreeGetNNodes | ( | SCIP_TREE * | tree | ) |
gets number of open nodes in the tree (children + siblings + leaves)
- Parameters
-
tree branch and bound tree
Definition at line 8259 of file tree.c.
References SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, and SCIPtreeGetNLeaves().
Referenced by SCIPgetNNodesLeft(), SCIPprimalHeuristics(), SCIPprintTreeStatistics(), SCIPsolve(), SCIPsolveCIP(), and solveNode().
◆ SCIPtreeIsPathComplete()
returns whether the active path goes completely down to the focus node
- Parameters
-
tree branch and bound tree
Definition at line 8269 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by forkCreate(), forkFree(), junctionInit(), nodeAssignParent(), probingnodeUpdate(), pseudoforkCreate(), SCIPnodeCreateChild(), SCIPnodeFocus(), SCIPtreeHasCurrentNodeLP(), and treeCreateProbingNode().
◆ SCIPtreeProbing()
returns whether the current node is a temporary probing node
- Parameters
-
tree branch and bound tree
Definition at line 8286 of file tree.c.
References SCIP_Node::nodetype, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_NODETYPE_PROBINGNODE, and SCIPnodeGetDepth().
Referenced by focusnodeCleanupVars(), focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToLeaf(), focusnodeToPseudofork(), nodeActivate(), nodeDeactivate(), nodeReleaseParent(), propAndSolve(), SCIPaddRowProbing(), SCIPaggregateVars(), SCIPapplyCutsProbing(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(), SCIPchgVarObjProbing(), SCIPchgVarUbProbing(), SCIPconshdlrInitLP(), SCIPendProbing(), SCIPendStrongbranch(), SCIPfixVarProbing(), SCIPgetProbingDepth(), SCIPgetVarObjProbing(), SCIPgetVarStrongbranchFrac(), SCIPinProbing(), SCIPmultiaggregateVar(), SCIPnewProbingNode(), SCIPnodeFocus(), SCIPnodeFree(), SCIPpriceLoop(), SCIPprimalHeuristics(), SCIPpropagateProbing(), SCIPpropagateProbingImplications(), SCIPsetProbingLPState(), SCIPsolLinkLPSol(), SCIPsolveProbingRelax(), SCIPstartDive(), SCIPstartProbing(), SCIPstartStrongbranch(), SCIPtreeBacktrackProbing(), SCIPtreeClear(), SCIPtreeCreatePresolvingRoot(), SCIPtreeCreateProbingNode(), SCIPtreeCreateRoot(), SCIPtreeEndProbing(), SCIPtreeFree(), SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), SCIPtreeGetFocusDepth(), SCIPtreeGetFocusNode(), SCIPtreeGetProbingDepth(), SCIPtreeHasCurrentNodeLP(), SCIPtreeIsPathComplete(), SCIPtreeLoadLP(), SCIPtreeLoadLPState(), SCIPtreeLoadProbingLPState(), SCIPtreeMarkProbingNodeHasLP(), SCIPtreeMarkProbingObjChanged(), SCIPtreeProbingObjChanged(), SCIPtreeSetProbingLPState(), SCIPtreeStartProbing(), SCIPupdateVarPseudocost(), solveProbingLP(), treeBacktrackProbing(), treeCheckPath(), treeCreateProbingNode(), and treeUpdatePathLPSize().
◆ SCIPtreeGetProbingRoot()
returns the temporary probing root node, or NULL if the we are not in probing mode
- Parameters
-
tree branch and bound tree
Definition at line 8299 of file tree.c.
References SCIP_Node::nodetype, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_NODETYPE_PROBINGNODE, and SCIPnodeGetDepth().
◆ SCIPtreeGetFocusNode()
gets focus node of the tree
- Parameters
-
tree branch and bound tree
Definition at line 8312 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by applyBounding(), enforceConstraints(), freeReoptSolve(), freeSolve(), priceAndCutLoop(), SCIPconflictstoreAddConflict(), SCIPconstructCurrentLP(), SCIPgetFocusNode(), SCIPnodepqBound(), SCIPpriceLoop(), SCIPprimalHeuristics(), SCIPsolveCIP(), solveNode(), solveNodeInitialLP(), solveNodeRelax(), updateEstimate(), updateLoopStatus(), and updatePseudocost().
◆ SCIPtreeGetFocusDepth()
int SCIPtreeGetFocusDepth | ( | SCIP_TREE * | tree | ) |
gets depth of focus node in the tree
- Parameters
-
tree branch and bound tree
Definition at line 8329 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by conflictAddConflictCons(), conflictAddConflictset(), conflictAnalyze(), conflictAnalyzeDualProof(), conflictCreateReconvergenceConss(), createAndAddProofcons(), getDualProof(), getFarkasProof(), SCIPconflictFlushConss(), SCIPgetFocusDepth(), and SCIPprimalHeuristics().
◆ SCIPtreeHasFocusNodeLP()
returns, whether the LP was or is to be solved in the focus node
- Parameters
-
tree branch and bound tree
Definition at line 8346 of file tree.c.
References SCIP_Tree::focusnodehaslp, and NULL.
Referenced by addCurrentSolution(), enforceConstraints(), propAndSolve(), SCIPprimalHeuristics(), SCIPsolveCIP(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPtreeHasCurrentNodeLP(), solveNode(), solveNodeLP(), and updateEstimate().
◆ SCIPtreeSetFocusNodeLP()
sets mark to solve or to ignore the LP while processing the focus node
- Parameters
-
tree branch and bound tree solvelp should the LP be solved in focus node?
Definition at line 8356 of file tree.c.
References SCIP_Tree::focusnodehaslp, and NULL.
Referenced by enforceConstraints(), propAndSolve(), SCIPsetFocusnodeLP(), and solveNode().
◆ SCIPtreeIsFocusNodeLPConstructed()
returns whether the LP of the focus node is already constructed
- Parameters
-
tree branch and bound tree
Definition at line 8367 of file tree.c.
References SCIP_Tree::focuslpconstructed, and NULL.
Referenced by SCIPconstructCurrentLP(), SCIPendDive(), SCIPgetLPCols(), SCIPgetLPColsData(), SCIPgetLPRows(), SCIPgetLPRowsData(), SCIPgetLPSolstat(), SCIPgetNLPCols(), SCIPgetNLPRows(), SCIPgetNUnfixedLPCols(), SCIPisLPConstructed(), SCIPpricestoreApplyVars(), SCIPstartDive(), SCIPwriteLP(), and solveProbingLP().
◆ SCIPtreeInRepropagation()
returns whether the focus node is already solved and only propagated again
- Parameters
-
tree branch and bound tree
Definition at line 8377 of file tree.c.
References SCIP_Tree::focusnode, NULL, SCIP_NODETYPE_REFOCUSNODE, and SCIPnodeGetType().
Referenced by primalAddSol(), primalSetCutoffbound(), and SCIPinRepropagation().
◆ SCIPtreeGetCurrentNode()
gets current node of the tree, i.e. the last node in the active path, or NULL if no current node exists
- Parameters
-
tree branch and bound tree
Definition at line 8387 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by primalAddSol(), propagateDomains(), SCIPaddCons(), SCIPaddConsLocal(), SCIPaddRow(), SCIPaddRowDive(), SCIPaddRowProbing(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarLbProbing(), SCIPchgVarObjProbing(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPchgVarUbProbing(), SCIPdelConsLocal(), SCIPfixVarProbing(), SCIPgetCurrentNode(), SCIPgetLocalDualbound(), SCIPgetLocalLowerbound(), SCIPgetLocalOrigEstimate(), SCIPgetLocalTransEstimate(), SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPnodeAddBoundinfer(), SCIPpriceLoop(), SCIPpropagateProbingImplications(), SCIPrelaxExec(), SCIPseparateCutpool(), SCIPseparateSolCutpool(), SCIPsepastoreApplyCuts(), SCIPsolve(), SCIPsolveCIP(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeBacktrackProbing(), SCIPtreeBranchVar(), SCIPtreeEndProbing(), SCIPtreeLoadProbingLPState(), SCIPtreeMarkProbingNodeHasLP(), SCIPtreeSetProbingLPState(), SCIPupdateLocalDualbound(), SCIPupdateLocalLowerbound(), sepastoreApplyLb(), sepastoreApplyUb(), and treeCreateProbingNode().
◆ SCIPtreeGetCurrentDepth()
int SCIPtreeGetCurrentDepth | ( | SCIP_TREE * | tree | ) |
gets depth of current node in the tree, i.e. the length of the active path minus 1, or -1 if no current node exists
- Parameters
-
tree branch and bound tree
Definition at line 8404 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by addBoundViolated(), analyzeStrongbranch(), conflictAddConflictCons(), conflictAddConflictset(), conflictAnalyze(), conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), conflictAnalyzeLP(), conflictCreateReconvergenceConss(), conflictsetCalcInsertDepth(), priceAndCutLoop(), primalSetUpperbound(), propagationRound(), propAndSolve(), runBoundHeuristic(), SCIPaddCons(), SCIPaddPricedVar(), SCIPaddRow(), SCIPaggregateVars(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPbranchruleExecPseudoSol(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPconflictAnalyze(), SCIPconflictAnalyzePseudo(), SCIPconflictAnalyzeStrongbranch(), SCIPconflictFlushConss(), SCIPconshdlrInitLP(), SCIPconstructCurrentLP(), SCIPfixVar(), SCIPgetDepth(), SCIPgetSepaMinEfficacy(), SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarFixCons(), SCIPinferVarFixProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPisCutEfficacious(), SCIPisEfficacious(), SCIPmultiaggregateVar(), SCIPpricestoreAddProbVars(), SCIPpricestoreApplyVars(), SCIPprimalHeuristics(), SCIPremoveInefficaciousCuts(), SCIPseparateCutpool(), SCIPseparateSol(), SCIPsolveCIP(), SCIPsolveProbingRelax(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeCalcNodeselPriority(), SCIPtreeGetProbingDepth(), solStamp(), solveNodeLP(), and solveProbingLP().
◆ SCIPtreeHasCurrentNodeLP()
returns, whether the LP was or is to be solved in the current node
- Parameters
-
tree branch and bound tree
Definition at line 8421 of file tree.c.
References NULL, SCIP_Tree::probingnodehaslp, SCIPtreeHasFocusNodeLP(), SCIPtreeIsPathComplete(), and SCIPtreeProbing().
Referenced by SCIPbranchGetBranchingPoint(), SCIPcreateLPSol(), SCIPgetColFarkasCoef(), SCIPgetColRedcost(), SCIPgetRowActivity(), SCIPgetRowFeasibility(), SCIPgetRowSolActivity(), SCIPgetRowSolFeasibility(), SCIPgetSolOrigObj(), SCIPgetSolTransObj(), SCIPgetSolVal(), SCIPgetVarSol(), SCIPgetVarSols(), SCIPhasCurrentNodeLP(), SCIPnodeAddBoundinfer(), SCIPpricestoreAddProbVars(), SCIPrecalcRowActivity(), SCIPseparateCutpool(), SCIPseparateSolCutpool(), SCIPsolCreateCurrentSol(), SCIPsolLinkCurrentSol(), SCIPsolveCIP(), and SCIPstartDive().
◆ SCIPtreeGetProbingDepth()
int SCIPtreeGetProbingDepth | ( | SCIP_TREE * | tree | ) |
returns the current probing depth, i.e. the number of probing sub nodes existing in the probing path
- Parameters
-
tree branch and bound tree
Definition at line 8432 of file tree.c.
References NULL, SCIP_Tree::probingroot, SCIPnodeGetDepth(), SCIPtreeGetCurrentDepth(), and SCIPtreeProbing().
Referenced by performStrongbranchWithPropagation(), SCIPbacktrackProbing(), SCIPgetProbingDepth(), SCIPtreeBacktrackProbing(), and treeBacktrackProbing().
◆ SCIPtreeGetEffectiveRootDepth()
int SCIPtreeGetEffectiveRootDepth | ( | SCIP_TREE * | tree | ) |
returns the depth of the effective root node (i.e. the first depth level of a node with at least two children)
- Parameters
-
tree branch and bound tree
Definition at line 8443 of file tree.c.
References SCIP_Tree::effectiverootdepth, and NULL.
Referenced by conflictAnalyzeLP(), createAndAddProofcons(), runBoundHeuristic(), SCIPaddCons(), SCIPaddConsNode(), SCIPdelConsLocal(), SCIPdelConsNode(), SCIPgetEffectiveRootDepth(), SCIPnodepqBound(), and tightenSingleVar().
◆ SCIPtreeGetRootNode()
gets the root node of the tree
- Parameters
-
tree branch and bound tree
Definition at line 8454 of file tree.c.
References NULL, and SCIP_Tree::root.
Referenced by applyImplic(), detectImpliedBounds(), initSolve(), SCIPgetRootNode(), SCIPreoptSplitRoot(), SCIPvarAddVlb(), SCIPvarAddVub(), SCIPvarFixBinary(), sepastoreApplyLb(), sepastoreApplyUb(), and varAddImplic().
◆ SCIPtreeProbingObjChanged()
returns whether we are in probing and the objective value of at least one column was changed
- Parameters
-
tree branch and bound tree
Definition at line 8465 of file tree.c.
References NULL, SCIP_Tree::probingobjchanged, and SCIPtreeProbing().
Referenced by SCIPchgVarObjProbing(), and SCIPisObjChangedProbing().
◆ SCIPtreeMarkProbingObjChanged()
void SCIPtreeMarkProbingObjChanged | ( | SCIP_TREE * | tree | ) |
marks the current probing node to have a changed objective function
- Parameters
-
tree branch and bound tree
Definition at line 8476 of file tree.c.
References NULL, SCIP_Tree::probingobjchanged, SCIPtreeProbing(), and TRUE.
Referenced by SCIPchgVarObjProbing().