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_scip.h"
#include "scip/struct_mem.h"
#include "scip/struct_event.h"
#include "scip/pub_message.h"
#include "lpi/lpi.h"
Go to the source code of this file.
Macros | |
#define | MAXREPROPMARK 511 |
#define | ARRAYGROWTH 5 |
#define MAXREPROPMARK 511 |
maximal subtree repropagation marker; must correspond to node data structure
Definition at line 65 of file tree.c.
Referenced by SCIPtreeCreateRoot(), and treeNextRepropsubtreecount().
#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 6343 of file tree.c.
Referenced by SCIPtreeAddDiveBoundChange().
|
static |
resizes children arrays to be able to store at least num nodes
tree | branch and bound tree |
set | global SCIP settings |
num | minimal number of node slots in array |
Definition at line 74 of file tree.c.
References assert(), BMSreallocMemoryArray, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::childrensize, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by treeAddChild().
|
static |
resizes path array to be able to store at least num nodes
tree | branch and bound tree |
set | global SCIP settings |
num | minimal number of node slots in path |
Definition at line 99 of file tree.c.
References assert(), 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().
|
static |
resizes pendingbdchgs array to be able to store at least num nodes
tree | branch and bound tree |
set | global SCIP settings |
num | minimal number of node slots in path |
Definition at line 125 of file tree.c.
References assert(), BMSreallocMemoryArray, NULL, SCIP_Tree::pendingbdchgs, SCIP_Tree::pendingbdchgssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by treeAddPendingBdchg().
|
static |
increases the reference counter of the LP state in the fork
fork | fork data |
nuses | number to add to the usage counter |
Definition at line 170 of file tree.c.
References assert(), SCIP_Fork::nlpistateref, NULL, and SCIPdebugMessage.
Referenced by focusnodeToFork(), forkCreate(), and SCIPnodeCaptureLPIState().
|
static |
decreases the reference counter of the LP state in the fork
fork | fork data |
blkmem | block memory buffers |
lp | current LP data |
Definition at line 185 of file tree.c.
References assert(), SCIP_Fork::lpistate, SCIP_Fork::nlpistateref, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPlpFreeState().
Referenced by SCIPnodeReleaseLPIState().
|
static |
increases the reference counter of the LP state in the subroot
subroot | subroot data |
nuses | number to add to the usage counter |
Definition at line 209 of file tree.c.
References assert(), SCIP_Subroot::nlpistateref, NULL, and SCIPdebugMessage.
Referenced by SCIPnodeCaptureLPIState().
|
static |
decreases the reference counter of the LP state in the subroot
subroot | subroot data |
blkmem | block memory buffers |
lp | current LP data |
Definition at line 225 of file tree.c.
References assert(), SCIP_Subroot::lpistate, SCIP_Subroot::nlpistateref, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPlpFreeState().
Referenced by SCIPnodeReleaseLPIState().
SCIP_RETCODE SCIPnodeCaptureLPIState | ( | SCIP_NODE * | node, |
int | nuses ) |
increases the reference counter of the LP state in the fork or subroot node
node | fork/subroot node |
nuses | number to add to the usage counter |
Definition at line 248 of file tree.c.
References assert(), SCIP_Node::data, SCIP_Node::fork, forkCaptureLPIState(), SCIP_Fork::nlpistateref, SCIP_Subroot::nlpistateref, NULL, SCIP_INVALIDDATA, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPABORT, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIP_Node::subroot, and subrootCaptureLPIState().
Referenced by junctionInit(), and pseudoforkCreate().
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
node | fork/subroot node |
blkmem | block memory buffers |
lp | current LP data |
Definition at line 276 of file tree.c.
References assert(), SCIP_Node::data, SCIP_Node::fork, forkReleaseLPIState(), SCIP_Fork::nlpistateref, SCIP_Subroot::nlpistateref, NULL, SCIP_INVALIDDATA, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIP_Node::subroot, and subrootReleaseLPIState().
Referenced by focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToPseudofork(), nodeToLeaf(), and SCIPnodeFree().
|
static |
creates probingnode data without LP information
probingnode | pointer to probingnode data |
blkmem | block memory |
lp | current LP data |
Definition at line 301 of file tree.c.
References assert(), BMSallocBlockMemory, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPdebugMessage, SCIPlpGetNCols(), and SCIPlpGetNRows().
Referenced by treeCreateProbingNode().
|
static |
updates LP information in probingnode data
probingnode | probingnode data |
blkmem | block memory |
tree | branch and bound tree |
lp | current LP data |
Definition at line 328 of file tree.c.
References assert(), 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().
|
static |
frees probingnode data
probingnode | probingnode data |
blkmem | block memory |
lp | current LP data |
Definition at line 383 of file tree.c.
References assert(), BMSfreeBlockMemory, BMSfreeMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpFreeNorms(), and SCIPlpFreeState().
Referenced by SCIPnodeFree(), and treeCreateProbingNode().
|
static |
initializes junction data
junction | pointer to junction data |
tree | branch and bound tree |
Definition at line 420 of file tree.c.
References assert(), SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Junction::nchildren, SCIP_Tree::nchildren, NULL, SCIP_CALL, SCIP_OKAY, SCIPnodeCaptureLPIState(), and SCIPtreeIsPathComplete().
Referenced by focusnodeToJunction().
|
static |
creates pseudofork data
pseudofork | pointer to pseudofork data |
blkmem | block memory |
tree | branch and bound tree |
lp | current LP data |
Definition at line 444 of file tree.c.
References assert(), BMSallocBlockMemory, BMSduplicateBlockMemoryArray, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, i, SCIP_Tree::nchildren, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpGetNewcols(), SCIPlpGetNewrows(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPnodeCaptureLPIState(), SCIProwCapture(), and SCIPtreeIsPathComplete().
Referenced by focusnodeToPseudofork().
|
static |
frees pseudofork data
pseudofork | pseudofork data |
blkmem | block memory |
set | global SCIP settings |
lp | current LP data |
Definition at line 497 of file tree.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, i, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().
Referenced by SCIPnodeFree().
|
static |
creates fork data
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 527 of file tree.c.
References assert(), BMSallocBlockMemory, BMSduplicateBlockMemoryArray, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, SCIP_Lp::flushed, SCIP_Tree::focusnode, forkCaptureLPIState(), i, 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().
|
static |
frees fork data
fork | fork data |
blkmem | block memory |
set | global SCIP settings |
lp | current LP data |
Definition at line 590 of file tree.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, i, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().
Referenced by SCIPnodeFree().
|
static |
frees subroot
subroot | subroot data |
blkmem | block memory |
set | global SCIP settings |
lp | current LP data |
Definition at line 684 of file tree.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, i, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().
Referenced by SCIPnodeFree().
removes given sibling node from the siblings array
tree | branch and bound tree |
sibling | sibling node to remove |
Definition at line 717 of file tree.c.
References SCIP_Sibling::arraypos, assert(), 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().
|
static |
adds given child node to children array of focus node
tree | branch and bound tree |
set | global SCIP settings |
child | child node to add |
nodeselprio | node selection priority of child node |
Definition at line 743 of file tree.c.
References SCIP_Child::arraypos, assert(), SCIP_Node::child, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Node::data, SCIP_Tree::nchildren, NULL, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_OKAY, SCIP_Real, SCIPnodeGetType(), and treeEnsureChildrenMem().
Referenced by nodeAssignParent().
removes given child node from the children array
tree | branch and bound tree |
child | child node to remove |
Definition at line 766 of file tree.c.
References SCIP_Child::arraypos, assert(), 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().
|
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
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 794 of file tree.c.
References assert(), 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_LONGINT_FORMAT, SCIP_MAXDEPTHLEVEL, SCIP_MAXTREEDEPTH, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPsetIsInfinity(), SCIPtreeIsPathComplete(), and treeAddChild().
Referenced by SCIPnodeCreateChild(), and treeCreateProbingNode().
|
static |
decreases number of children of the parent, frees it if no children are left
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 849 of file tree.c.
References SCIP_Node::active, assert(), SCIP_Node::data, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Node::fork, SCIP_Node::junction, SCIP_Fork::nchildren, SCIP_Junction::nchildren, SCIP_Pseudofork::nchildren, SCIP_Subroot::nchildren, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Node::pseudofork, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LONGINT_FORMAT, 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, SCIPtreeGetEffectiveRootDepth(), SCIPtreeGetFocusDepth(), SCIPtreeProbing(), SCIP_Node::subroot, and treeRemoveChild().
Referenced by SCIPnodeFree().
|
static |
creates a node data structure
node | pointer to node data structure |
blkmem | block memory |
set | global SCIP settings |
Definition at line 1013 of file tree.c.
References assert(), BMSallocBlockMemory, FALSE, NULL, SCIP_ALLOC, SCIP_OKAY, SCIP_REOPTTYPE_NONE, and SCIPsetInfinity().
Referenced by SCIPnodeCreateChild(), and treeCreateProbingNode().
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
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 1040 of file tree.c.
References assert(), SCIP_Tree::focusnode, SCIP_Tree::lastbranchparentid, SCIP_Stat::ncreatednodes, SCIP_Stat::ncreatednodesrun, nodeAssignParent(), nodeCreate(), NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIP_Real, SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeSetEstimate(), SCIPsetDebugMsg, SCIPtreeIsPathComplete(), SCIPvisualNewChild(), and SCIP_Stat::visual.
Referenced by propAndSolve(), SCIPcreateChild(), SCIPreoptApply(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), SCIPtreeBranchVarNary(), SCIPtreeCreateRoot(), and solveNode().
query if focus node was already branched on
tree | branch and bound tree |
node | tree node, or NULL to check focus node |
Definition at line 1089 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::lastbranchparentid, NULL, SCIP_Node::number, SCIP_Bool, and TRUE.
Referenced by SCIPwasNodeLastBranchParent().
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
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 1102 of file tree.c.
References assert(), 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_LONGINT_FORMAT, 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 nodeReleaseParent(), nodeToLeaf(), SCIPnodeFocus(), SCIPnodepqBound(), SCIPnodepqClear(), SCIPtreeCutoff(), treeBacktrackProbing(), and treeSwitchPath().
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
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 1238 of file tree.c.
References SCIP_Node::active, assert(), 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_LONGINT_FORMAT, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SIBLING, SCIP_OKAY, SCIP_Real, SCIPlpGetSolstat(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsRelEQ(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetLowerbound(), SCIPvisualCutoffNode(), TRUE, and SCIP_Stat::visual.
Referenced by createAndAddProofcons(), detectImpliedBounds(), nodeActivate(), nodeRepropagate(), nodeToLeaf(), priceAndCutLoop(), SCIPconflictAnalyzeDualProof(), SCIPconflictFlushConss(), SCIPcutoffNode(), SCIPnodeAddBoundinfer(), SCIPnodeFocus(), SCIPnodeUpdateLowerboundLP(), SCIPtreeCutoff(), SCIPupdateNodeLowerbound(), sepastoreApplyLb(), sepastoreApplyUb(), solveNode(), tightenSingleVar(), treeApplyPendingBdchgs(), and treeSwitchPath().
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
node | node that should be propagated again |
set | global SCIP settings |
stat | problem statistics |
tree | branch and bound tree |
Definition at line 1302 of file tree.c.
References SCIP_Node::active, assert(), SCIP_Node::depth, MIN, NULL, SCIP_Node::reprop, SCIP_Tree::repropdepth, SCIP_LONGINT_FORMAT, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPsetDebugMsg, SCIPvisualMarkedRepropagateNode(), TRUE, and SCIP_Stat::visual.
Referenced by SCIPconflictFlushConss(), SCIPnodeAddBoundinfer(), SCIPnodeAddHoleinfer(), SCIPrepropagateNode(), and tightenSingleVar().
marks node, that it is completely propagated in the current repropagation subtree level
node | node that should be marked to be propagated |
tree | branch and bound tree |
Definition at line 1328 of file tree.c.
References SCIP_Node::active, assert(), 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().
|
static |
moves the subtree repropagation counter to the next value
tree | branch and bound tree |
Definition at line 1358 of file tree.c.
References assert(), MAXREPROPMARK, NULL, and SCIP_Tree::repropsubtreecount.
Referenced by nodeRepropagate().
|
static |
applies propagation on the node, that was marked to be propagated again
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 1370 of file tree.c.
References SCIP_Node::active, assert(), cutoff, 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_LONGINT_FORMAT, 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().
|
static |
informs node, that it is now on the active path and applies any domain and constraint set changes
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 1521 of file tree.c.
References SCIP_Node::active, assert(), SCIP_Node::conssetchg, cutoff, SCIP_Node::depth, SCIP_Node::domchg, SCIP_Node::lowerbound, SCIP_Stat::nactivatednodes, nodeRepropagate(), NULL, SCIP_Node::parent, SCIP_Node::reprop, SCIP_Node::repropsubtreemark, SCIP_Bool, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPconssetchgApply(), SCIPdomchgApply(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeUpdateLowerbound(), SCIPsetDebugMsg, SCIPtreeProbing(), and TRUE.
Referenced by treeSwitchPath().
|
static |
informs node, that it is no longer on the active path and undoes any domain and constraint set changes
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 |
eventqueue | event queue |
Definition at line 1592 of file tree.c.
References SCIP_Node::active, assert(), SCIP_Node::conssetchg, SCIP_Node::domchg, FALSE, SCIP_Stat::ndeactivatednodes, NULL, SCIP_Node::repropsubtreemark, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPconssetchgUndo(), SCIPdomchgUndo(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by treeBacktrackProbing(), and treeSwitchPath().
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
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 1628 of file tree.c.
References SCIP_Node::active, SCIP_ConsSetChg::addedconss, assert(), 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().
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
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 1671 of file tree.c.
References SCIP_Node::active, assert(), 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().
|
static |
adds the given bound change to the list of pending bound changes
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 1745 of file tree.c.
References assert(), 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_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugCheckLbGlobal, SCIPdebugCheckUbGlobal, SCIPsetIsEQ(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPvarAdjustBd(), SCIPvarCapture(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), treeEnsurePendingbdchgsMem(), SCIP_PendingBdchg::var, and var.
Referenced by 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
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 1832 of file tree.c.
References SCIP_Node::active, assert(), SCIP_DomChgDyn::boundchgs, cutoff, 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, MIN, 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_LONGINT_FORMAT, 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(), SCIP_BoundChg::var, and var.
Referenced by SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPnodeAddBoundchg(), SCIPnodePropagateImplics(), and treeApplyPendingBdchgs().
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
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 2107 of file tree.c.
References NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPnodeAddBoundinfer(), and var.
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().
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
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 2136 of file tree.c.
References SCIP_Node::active, assert(), 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_Bool, 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(), SCIPvarGetUbLocal(), and var.
Referenced by 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
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 2249 of file tree.c.
References assert(), SCIP_Node::depth, SCIP_Node::nodetype, NULL, SCIP_Bool, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIP_Real, SCIPnodeAddHoleinfer(), SCIPsetDebugMsg, SCIPvarGetName(), and var.
|
static |
applies the pending bound changes
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 2282 of file tree.c.
References assert(), SCIP_PendingBdchg::boundtype, SCIP_Tree::cutoffdepth, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, i, 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(), SCIP_PendingBdchg::var, and var.
Referenced by treeBacktrackProbing(), and treeSwitchPath().
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
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 2380 of file tree.c.
References assert(), SCIP_Node::depth, SCIP_Node::estimate, SCIP_Tree::focusnode, SCIP_Stat::lastlowerbound, SCIP_Node::lowerbound, NULL, SCIP_Stat::rootlowerbound, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SIBLING, SCIP_Real, SCIPnodeGetLowerbound(), SCIPnodeGetType(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsRelEQ(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetLowerbound(), SCIPvisualLowerbound(), and SCIP_Stat::visual.
Referenced by applyBounding(), nodeActivate(), SCIPnodeAddBoundinfer(), SCIPnodeUpdateLowerboundLP(), SCIPpriceLoop(), SCIPupdateNodeLowerbound(), and solveNodeRelax().
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
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 2426 of file tree.c.
References assert(), SCIP_Lp::flushed, SCIP_Lp::lpsolstat, NULL, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_OKAY, SCIP_Real, SCIPlpGetObjval(), SCIPlpGetProvedLowerbound(), SCIPnodeCutoff(), and SCIPnodeUpdateLowerbound().
Referenced by priceAndCutLoop(), propAndSolve(), SCIPendDive(), SCIPtreeEndProbing(), and solveNodeInitialLP().
change the node selection priority of the given child
tree | branch and bound tree |
child | child to update the node selection priority |
priority | node selection priority value |
Definition at line 2468 of file tree.c.
References SCIP_Child::arraypos, assert(), SCIP_Node::child, SCIP_Tree::childrenprio, SCIP_Node::data, SCIP_NODETYPE_CHILD, SCIP_Real, and SCIPnodeGetType().
Referenced by SCIPchgChildPrio().
sets the node's estimated bound to the new value
node | node to update lower bound for |
set | global SCIP settings |
newestimate | new estimated bound for the node |
Definition at line 2486 of file tree.c.
References assert(), SCIP_Node::estimate, SCIP_Node::lowerbound, NULL, SCIP_Real, and SCIPsetIsRelGE().
Referenced by SCIPnodeCreateChild(), SCIPreoptApply(), and updateEstimate().
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
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 2502 of file tree.c.
References assert(), cutoff, SCIP_Node::domchg, FALSE, i, NULL, nvars, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_LONGINT_FORMAT, 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(), TRUE, var, and vars.
Referenced by SCIPpropagateProbingImplications().
|
static |
updates the LP sizes of the active path starting at the given depth
tree | branch and bound tree |
startdepth | depth to start counting |
Definition at line 2689 of file tree.c.
References SCIP_Node::active, assert(), SCIP_Node::data, SCIP_Node::depth, SCIP_Tree::focuslpconstructed, SCIP_Node::fork, i, SCIP_Fork::naddedcols, SCIP_Pseudofork::naddedcols, SCIP_Fork::naddedrows, SCIP_Pseudofork::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 treeCreateProbingNode(), and treeSwitchPath().
|
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
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 2797 of file tree.c.
References SCIP_Node::active, assert(), cutoff, 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_Bool, SCIP_NODETYPE_FORK, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SUBROOT, SCIPdebugMessage, SCIPnodeGetType(), and TRUE.
Referenced by SCIPnodeFocus().
|
static |
switches the active path to the new focus node, frees dead end, applies domain and constraint set changes
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 3097 of file tree.c.
References SCIP_Node::active, SCIP_Tree::appliedeffectiverootdepth, assert(), SCIP_Node::conssetchg, cutoff, SCIP_Node::cutoff, SCIP_Node::data, SCIP_Node::depth, SCIP_Node::domchg, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Node::fork, i, SCIP_Node::junction, MIN, SCIP_Fork::nchildren, SCIP_Junction::nchildren, SCIP_Pseudofork::nchildren, SCIP_Subroot::nchildren, nodeActivate(), nodeDeactivate(), nodeRepropagate(), NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Node::pseudofork, SCIP_Node::reprop, 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, SCIPconssetchgMakeGlobal(), SCIPdomchgApplyGlobal(), SCIPerrorMessage, SCIPeventqueueDelay(), SCIPeventqueueProcess(), SCIPnodeCutoff(), SCIPnodeFree(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIP_Node::subroot, treeApplyPendingBdchgs(), treeEnsurePathMem(), treeUpdatePathLPSize(), and TRUE.
Referenced by SCIPnodeFocus().
|
static |
loads the subroot's LP data
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 3312 of file tree.c.
References assert(), c, 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().
|
static |
loads the fork's additional LP data
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 3357 of file tree.c.
References SCIP_Fork::addedcols, SCIP_Fork::addedrows, assert(), c, 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().
|
static |
loads the pseudofork's additional LP data
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 3402 of file tree.c.
References SCIP_Pseudofork::addedcols, SCIP_Pseudofork::addedrows, assert(), c, 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().
|
static |
checks validity of active path
tree | branch and bound tree |
Definition at line 3448 of file tree.c.
References assert(), SCIP_Node::data, SCIP_Node::depth, SCIP_Tree::focuslpconstructed, SCIP_Node::fork, SCIP_Fork::naddedcols, SCIP_Pseudofork::naddedcols, SCIP_Fork::naddedrows, SCIP_Pseudofork::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().
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
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 3520 of file tree.c.
References SCIP_Node::active, assert(), 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_Bool, SCIP_CALL, SCIP_LONGINT_FORMAT, 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().
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
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 3648 of file tree.c.
References SCIP_Node::active, assert(), 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_LONGINT_FORMAT, 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().
|
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
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 3768 of file tree.c.
References SCIP_Node::active, assert(), SCIP_Node::depth, SCIP_Tree::leaves, NULL, SCIP_Node::parent, SCIP_CALL, SCIP_LONGINT_FORMAT, 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, SCIP_Real, SCIPdomchgMakeStatic(), SCIPnodeCutoff(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodepqInsert(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPsetIsInfinity(), and SCIPsetIsLT().
Referenced by focusnodeToLeaf(), and treeNodesToQueue().
|
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)
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 3846 of file tree.c.
References assert(), FALSE, SCIP_Tree::focusnode, i, SCIP_Stat::nnodes, NULL, SCIP_Tree::root, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPlpFlush(), SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpShrinkCols(), SCIPnodeAddBoundchg(), SCIPnodeGetType(), SCIPprobDelVar(), SCIPprobGetNVars(), SCIPprobGetVars(), SCIPprobPerformVarDeletions(), SCIPsetDebugMsg, SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIPsetIsFeasZero(), SCIPtreeProbing(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarIsDeletable(), SCIPvarIsInLP(), SCIPvarMarkNotDeletable(), and var.
Referenced by focusnodeToDeadend(), focusnodeToFork(), and focusnodeToPseudofork().
|
static |
converts the focus node into a dead-end node
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 3947 of file tree.c.
References assert(), SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, focusnodeCleanupVars(), SCIP_Tree::nchildren, SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, SCIPtreeProbing(), and TRUE.
Referenced by SCIPnodeFocus().
|
static |
converts the focus node into a leaf node (if it was postponed)
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 3987 of file tree.c.
References SCIP_Node::active, assert(), SCIP_Tree::focusnode, nodeToLeaf(), NULL, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIP_Real, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by SCIPnodeFocus().
|
static |
converts the focus node into a junction node
blkmem | block memory buffers |
set | global SCIP settings |
eventqueue | event queue |
tree | branch and bound tree |
lp | current LP data |
Definition at line 4017 of file tree.c.
References SCIP_Node::active, assert(), SCIP_Node::data, SCIP_Node::domchg, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Node::junction, junctionInit(), SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_JUNCTION, SCIP_OKAY, SCIPdomchgMakeStatic(), SCIPlpGetNNewcols(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by focusnodeToFork(), and SCIPnodeFocus().
|
static |
converts the focus node into a pseudofork node
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 4054 of file tree.c.
References SCIP_Node::active, assert(), 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_LONGINT_FORMAT, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_OKAY, SCIPdomchgMakeStatic(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by SCIPnodeFocus().
|
static |
converts the focus node into a fork node
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 4105 of file tree.c.
References SCIP_Node::active, assert(), 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(), lperror, SCIP_Tree::nchildren, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Node::nodetype, NULL, SCIP_Lp::resolvelperror, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPdomchgMakeStatic(), SCIPlpCleanupNew(), SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPlpGetNRows(), SCIPlpGetSolstat(), SCIPlpShrinkCols(), SCIPlpShrinkRows(), SCIPlpSolveAndEval(), SCIPmessagePrintVerbInfo(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIP_Lp::solved, and TRUE.
Referenced by SCIPnodeFocus().
|
static |
puts all nodes in the array on the node queue and makes them LEAFs
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 4336 of file tree.c.
References assert(), nnodes, nodeToLeaf(), NULL, SCIP_CALL, SCIP_OKAY, and SCIP_Real.
Referenced by SCIPnodeFocus(), and SCIPtreeCreateRoot().
|
static |
converts children into siblings, clears children array
tree | branch and bound tree |
Definition at line 4373 of file tree.c.
References SCIP_Child::arraypos, SCIP_Sibling::arraypos, assert(), SCIP_Node::child, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::childrensize, SCIP_Node::data, i, 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().
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
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 4410 of file tree.c.
References SCIP_Node::active, assert(), c, SCIP_Tree::children, SCIP_Tree::correctlpdepth, cutoff, 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_Stat::lastlowerbound, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Stat::lpcount, MIN, 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_Stat::rootlowerbound, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_INVALIDDATA, SCIP_LONGINT_FORMAT, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIP_Real, SCIPdebugCheckGlobalLowerbound, SCIPdebugCheckLocalLowerbound, SCIPerrorMessage, SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPlpGetNRows(), SCIPlpGetSolstat(), SCIPlpMarkSize(), SCIPnodeCutoff(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetLowerbound(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodepqCompare(), SCIPnodepqLen(), SCIPnodepqRemove(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetBestLeaf(), SCIPtreeGetLowerbound(), SCIPtreeIsPathComplete(), SCIPtreeProbing(), SCIPvisualCutoffNode(), SCIP_Tree::siblings, treeChildrenToSiblings(), treeFindSwitchForks(), treeNodesToQueue(), treeRemoveChild(), treeRemoveSibling(), treeSwitchPath(), TRUE, and SCIP_Stat::visual.
Referenced by freeReoptSolve(), freeSolve(), SCIPsolveCIP(), SCIPtreeCreatePresolvingRoot(), and SCIPtreeFreePresolvingRoot().
SCIP_RETCODE SCIPtreeCreate | ( | SCIP_TREE ** | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_NODESEL * | nodesel ) |
creates an initialized tree data structure
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 4868 of file tree.c.
References assert(), BMSallocBlockMemoryArray, BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPnodepqCreate(), and TRUE.
Referenced by SCIPtransformProb().
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
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 4949 of file tree.c.
References assert(), BMSfreeBlockMemoryArray, BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, SCIPnodepqFree(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by freeTransform(), and freeTransforming().
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
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 4998 of file tree.c.
References SCIP_Tree::appliedeffectiverootdepth, assert(), 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(), SCIP_PendingBdchg::var, and var.
Referenced by freeReoptSolve(), freeSolve(), SCIPpresolve(), and SCIPtreeFreePresolvingRoot().
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
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 5059 of file tree.c.
References SCIP_Node::active, assert(), 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().
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
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 5105 of file tree.c.
References assert(), cutoff, 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().
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
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 5146 of file tree.c.
References assert(), cutoff, FALSE, SCIP_Tree::focusnode, NULL, SCIP_Tree::pathlen, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPnodeFocus(), and SCIPtreeClear().
Referenced by exitPresolve().
SCIP_NODESEL * SCIPtreeGetNodesel | ( | SCIP_TREE * | tree | ) |
returns the node selector associated with the given node priority queue
tree | branch and bound tree |
Definition at line 5189 of file tree.c.
References assert(), SCIP_Tree::leaves, NULL, and SCIPnodepqGetNodesel().
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
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 5199 of file tree.c.
References assert(), SCIP_Tree::leaves, SCIP_Stat::nnodes, NULL, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPmessagePrintVerbInfo(), SCIPnodepqGetNodesel(), SCIPnodepqSetNodesel(), and SCIPnodeselGetName().
Referenced by SCIPsolveCIP().
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
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 5227 of file tree.c.
References assert(), SCIP_Tree::children, SCIP_Tree::cutoffdelayed, FALSE, i, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPlpDiving(), SCIPnodeCutoff(), SCIPnodeFree(), SCIPnodepqBound(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIP_Tree::siblings, and TRUE.
Referenced by primalSetCutoffbound(), SCIPendDive(), SCIPpruneTree(), and SCIPsolveCIP().
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
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 5291 of file tree.c.
References assert(), 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(), SCIPvarGetSol(), and var.
Referenced by SCIPcalcNodeselPriority(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), and SCIPtreeBranchVarNary().
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
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 5441 of file tree.c.
References assert(), SCIP_Tree::focusnode, MIN, NULL, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetEstimate(), SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPtreeHasFocusNodeLP(), SCIPvarGetPseudocost(), SCIPvarGetSol(), SCIPvarGetType(), and var.
Referenced by SCIPcalcChildEstimate(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), and SCIPtreeBranchVarNary().
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)
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 5500 of file tree.c.
References assert(), FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, MAX, MIN, 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(), var, and SCIP_Stat::visual.
Referenced by SCIPbranchExecExtern(), SCIPbranchExecLP(), SCIPbranchExecPseudo(), SCIPbranchVar(), SCIPbranchVarVal(), and SCIPtreeBranchVarNary().
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)
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 5831 of file tree.c.
References assert(), 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(), var, and SCIP_Stat::visual.
Referenced by SCIPbranchVarHole().
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).
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 5973 of file tree.c.
References assert(), FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, i, MAX, MIN, 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(), var, and SCIP_Stat::visual.
Referenced by SCIPbranchVarValNary().
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
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 6344 of file tree.c.
References ARRAYGROWTH, assert(), BMSreallocBlockMemoryArray, SCIP_Tree::divebdchgdirs, SCIP_Tree::divebdchgsize, SCIP_Tree::divebdchgvals, SCIP_Tree::divebdchgvars, SCIP_Tree::ndivebdchanges, SCIP_ALLOC, SCIP_Bool, SCIP_OKAY, SCIP_Real, and var.
Referenced by SCIPaddDiveBoundChange().
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
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 6376 of file tree.c.
References assert(), SCIP_Tree::divebdchgdirs, SCIP_Tree::divebdchgvals, SCIP_Tree::divebdchgvars, SCIP_Tree::ndivebdchanges, NULL, SCIP_Bool, and SCIP_Real.
Referenced by SCIPgetDiveBoundChangeData(), and SCIPgetDiveBoundChanges().
void SCIPtreeClearDiveBoundChanges | ( | SCIP_TREE * | tree | ) |
clear the tree bound change data structure
tree | branch and bound tree |
Definition at line 6399 of file tree.c.
References SCIP_Tree::ndivebdchanges.
Referenced by SCIPclearDiveBoundChanges().
|
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
tree | branch and bound tree |
blkmem | block memory |
set | global SCIP settings |
lp | current LP data |
Definition at line 6414 of file tree.c.
References SCIP_Node::active, assert(), 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_LONGINT_FORMAT, 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().
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
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 6505 of file tree.c.
References assert(), 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_Bool, SCIP_CALL, SCIP_OKAY, SCIPconshdlrsStorePropagationStatus(), SCIPlpGetNorms(), SCIPlpGetSolstat(), SCIPlpGetState(), SCIPlpStartProbing(), SCIPrelaxationIsSolValid(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIPtreeStoreRelaxSol(), SCIP_Lp::solved, treeCreateProbingNode(), and TRUE.
Referenced by SCIPstartProbing(), and SCIPstartStrongbranch().
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
tree | branch and bound tree |
blkmem | block memory |
set | global SCIP settings |
lp | current LP data |
Definition at line 6570 of file tree.c.
References assert(), SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_CALL, SCIP_OKAY, SCIPnodeGetDepth(), SCIPsetDebugMsg, SCIPtreeProbing(), and treeCreateProbingNode().
Referenced by SCIPnewProbingNode().
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
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 6595 of file tree.c.
References assert(), SCIP_Node::data, SCIP_Probingnode::lpinorms, SCIP_Probingnode::lpistate, SCIP_Probingnode::lpwasdualfeas, SCIP_Probingnode::lpwasprimfeas, NULL, SCIP_Tree::probingloadlpistate, SCIP_Node::probingnode, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPlpFreeNorms(), SCIPlpFreeState(), SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), and TRUE.
Referenced by SCIPsetProbingLPState().
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
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 6649 of file tree.c.
References assert(), 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().
SCIP_RETCODE SCIPtreeMarkProbingNodeHasLP | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LP * | lp ) |
marks the probing node to have a solved LP relaxation
tree | branch and bound tree |
blkmem | block memory |
lp | current LP data |
Definition at line 6731 of file tree.c.
References assert(), 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().
|
static |
undoes all changes to the problem applied in probing up to the given probing depth
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 6760 of file tree.c.
References assert(), SCIP_Primal::cutoffbound, SCIP_Tree::cutoffdepth, SCIP_Node::data, FALSE, SCIP_Tree::focuslpconstructed, SCIP_Tree::focusnode, i, 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().
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
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 6906 of file tree.c.
References assert(), NULL, SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeGetProbingDepth(), SCIPtreeProbing(), and treeBacktrackProbing().
Referenced by SCIPbacktrackProbing().
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
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 6940 of file tree.c.
References assert(), SCIP_Lp::cutoffbound, SCIP_Primal::cutoffbound, SCIP_Lp::divingobjchg, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Tree::focuslpconstructed, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, lperror, 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_LONGINT_FORMAT, 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().
SCIP_RETCODE SCIPtreeStoreRelaxSol | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PROB * | transprob ) |
stores relaxation solution before diving or probing
tree | branch and bound tree |
set | global SCIP settings |
relaxation | global relaxation data |
transprob | transformed problem after presolve |
Definition at line 7101 of file tree.c.
References assert(), BMSallocMemoryArray, BMSreallocMemoryArray, SCIP_Tree::nprobdiverelaxsol, NULL, nvars, SCIP_Tree::probdiverelaxincludeslp, SCIP_Tree::probdiverelaxsol, SCIP_Tree::probdiverelaxstored, SCIP_ALLOC, SCIP_OKAY, SCIPprobGetNVars(), SCIPprobGetVars(), SCIPrelaxationIsLpIncludedForSol(), SCIPrelaxationIsSolValid(), SCIPvarGetRelaxSol(), TRUE, and vars.
Referenced by SCIPstartDive(), and SCIPtreeStartProbing().
SCIP_RETCODE SCIPtreeRestoreRelaxSol | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PROB * | transprob ) |
restores relaxation solution after diving or probing
tree | branch and bound tree |
set | global SCIP settings |
relaxation | global relaxation data |
transprob | transformed problem after presolve |
Definition at line 7145 of file tree.c.
References assert(), FALSE, NULL, nvars, SCIP_Tree::probdiverelaxincludeslp, SCIP_Tree::probdiverelaxsol, SCIP_Tree::probdiverelaxstored, SCIP_CALL, SCIP_OKAY, SCIPprobGetNVars(), SCIPprobGetVars(), SCIPrelaxationSetSolValid(), SCIPvarSetRelaxSol(), TRUE, and vars.
Referenced by SCIPendDive(), and SCIPtreeEndProbing().
gets the best child of the focus node w.r.t. the node selection priority assigned by the branching rule
tree | branch and bound tree |
Definition at line 7178 of file tree.c.
References assert(), SCIP_Tree::children, SCIP_Tree::childrenprio, i, SCIP_Tree::nchildren, NULL, SCIP_Real, and SCIP_REAL_MIN.
Referenced by SCIPgetPrioChild().
gets the best sibling of the focus node w.r.t. the node selection priority assigned by the branching rule
tree | branch and bound tree |
Definition at line 7204 of file tree.c.
References assert(), i, SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIP_REAL_MIN, SCIP_Tree::siblings, and SCIP_Tree::siblingsprio.
Referenced by SCIPgetPrioSibling().
gets the best child of the focus node w.r.t. the node selection strategy
tree | branch and bound tree |
set | global SCIP settings |
Definition at line 7230 of file tree.c.
References assert(), SCIP_Tree::children, i, SCIP_Tree::leaves, SCIP_Tree::nchildren, NULL, SCIPnodepqGetNodesel(), and SCIPnodeselCompare().
Referenced by SCIPgetBestChild(), and SCIPtreeGetBestNode().
gets the best sibling of the focus node w.r.t. the node selection strategy
tree | branch and bound tree |
set | global SCIP settings |
Definition at line 7257 of file tree.c.
References assert(), i, SCIP_Tree::leaves, SCIP_Tree::nsiblings, NULL, SCIPnodepqGetNodesel(), SCIPnodeselCompare(), and SCIP_Tree::siblings.
Referenced by SCIPgetBestSibling(), and SCIPtreeGetBestNode().
gets the best leaf from the node queue w.r.t. the node selection strategy
tree | branch and bound tree |
Definition at line 7284 of file tree.c.
References assert(), SCIP_Tree::leaves, NULL, and SCIPnodepqFirst().
Referenced by SCIPgetBestLeaf(), SCIPnodeFocus(), and SCIPtreeGetBestNode().
gets the best node from the tree (child, sibling, or leaf) w.r.t. the node selection strategy
tree | branch and bound tree |
set | global SCIP settings |
Definition at line 7294 of file tree.c.
References assert(), SCIP_Tree::leaves, NULL, SCIPnodepqGetNodesel(), SCIPnodeselCompare(), SCIPtreeGetBestChild(), SCIPtreeGetBestLeaf(), SCIPtreeGetBestSibling(), and SCIPtreeGetNLeaves().
Referenced by SCIPgetBestNode().
gets the minimal lower bound of all nodes in the tree
tree | branch and bound tree |
set | global SCIP settings |
Definition at line 7328 of file tree.c.
References assert(), SCIP_Tree::children, SCIP_Tree::focusnode, i, SCIP_Tree::leaves, SCIP_Node::lowerbound, MIN, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIPnodepqGetLowerbound(), and SCIP_Tree::siblings.
Referenced by priceAndCutLoop(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPbranchruleExecPseudoSol(), SCIPgetLowerbound(), SCIPnodeCutoff(), SCIPnodeFocus(), SCIPnodepqBound(), and SCIPnodeUpdateLowerbound().
gets the node with minimal lower bound of all nodes in the tree (child, sibling, or leaf)
tree | branch and bound tree |
set | global SCIP settings |
Definition at line 7366 of file tree.c.
References assert(), SCIP_Tree::children, SCIP_Tree::childrenprio, i, 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().
gets the average lower bound of all nodes in the tree
tree | branch and bound tree |
cutoffbound | global cutoff bound |
Definition at line 7418 of file tree.c.
References assert(), SCIP_Tree::children, SCIP_Tree::focusnode, i, 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().
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.
node | node |
Definition at line 7687 of file tree.c.
References assert(), SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, i, 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().
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
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 7732 of file tree.c.
References assert(), SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, i, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, nvars, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPnodeGetDepth(), SCIP_BoundChg::var, var, vars, and SCIP_Var::vartype.
Referenced by collectDualInformation().
void SCIPnodeGetPropsBeforeDual | ( | SCIP_NODE * | node, |
SCIP_VAR ** | vars, | ||
SCIP_Real * | varbounds, | ||
SCIP_BOUNDTYPE * | varboundtypes, | ||
int * | npropvars, | ||
int | propvarssize ) |
return all bound changes on non-continuous variables based on constraint and propagator propagation
Stop saving the bound changes when a propagation based on a dual information is reached.
node | node |
vars | array of variables on which propagation triggers a bound change |
varbounds | array of bounds set by propagation |
varboundtypes | array of boundtypes set by propagation |
npropvars | number of variables on which propagation triggers a bound change if this is larger than the array size, arrays should be reallocated and method should be called again |
propvarssize | available slots in arrays |
Definition at line 7963 of file tree.c.
References assert(), SCIP_DomChgBound::boundchgs, SCIP_Node::domchg, SCIP_DomChg::domchgbound, i, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetDepth(), SCIPnodeGetNDomchg(), SCIP_BoundChg::var, var, and vars.
Referenced by updatePropagation().
void SCIPnodeGetPropsAfterDual | ( | SCIP_NODE * | node, |
SCIP_VAR ** | vars, | ||
SCIP_Real * | varbounds, | ||
SCIP_BOUNDTYPE * | varboundtypes, | ||
int * | nvars, | ||
int | varssize ) |
return bound changes on non-continuous variables based on constraint and propagator propagation
Start saving the bound changes when a propagation based on a dual information is reached.
node | node |
vars | array where to store variables with bound changes |
varbounds | array where to store changed bounds |
varboundtypes | array where to store type of changed bound |
nvars | buffer to store number of bound changes; if this is larger than varssize, arrays should be reallocated and method should be called again |
varssize | available slots in provided arrays |
Definition at line 8045 of file tree.c.
References assert(), SCIP_DomChgBound::boundchgs, SCIP_Node::domchg, SCIP_DomChg::domchgbound, i, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, nvars, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetDepth(), SCIP_BoundChg::var, var, and vars.
Referenced by saveAfterDualBranchings().
int SCIPtreeGetNChildren | ( | SCIP_TREE * | tree | ) |
gets number of children of the focus node
tree | branch and bound tree |
Definition at line 8332 of file tree.c.
References assert(), SCIP_Tree::nchildren, and NULL.
Referenced by SCIPgetOpenNodesData().
int SCIPtreeGetNSiblings | ( | SCIP_TREE * | tree | ) |
gets number of siblings of the focus node
tree | branch and bound tree |
Definition at line 8342 of file tree.c.
References assert(), SCIP_Tree::nsiblings, and NULL.
Referenced by SCIPgetOpenNodesData().
int SCIPtreeGetNLeaves | ( | SCIP_TREE * | tree | ) |
gets number of leaves in the tree (excluding children and siblings of focus nodes)
tree | branch and bound tree |
Definition at line 8352 of file tree.c.
References assert(), SCIP_Tree::leaves, NULL, and SCIPnodepqLen().
Referenced by SCIPsolveCIP(), SCIPtreeGetAvgLowerbound(), SCIPtreeGetBestNode(), and SCIPtreeGetNNodes().
int SCIPtreeGetNNodes | ( | SCIP_TREE * | tree | ) |
gets number of open nodes in the tree (children + siblings + leaves)
tree | branch and bound tree |
Definition at line 8362 of file tree.c.
References assert(), SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, and SCIPtreeGetNLeaves().
Referenced by SCIPgetNNodesLeft(), SCIPprimalHeuristics(), SCIPprintTreeStatistics(), SCIPsolve(), SCIPsolveCIP(), and solveNode().
returns whether the active path goes completely down to the focus node
tree | branch and bound tree |
Definition at line 8372 of file tree.c.
References assert(), SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Bool, and SCIPtreeProbing().
Referenced by forkCreate(), junctionInit(), nodeAssignParent(), probingnodeUpdate(), pseudoforkCreate(), SCIPnodeCreateChild(), SCIPnodeFocus(), SCIPtreeHasCurrentNodeLP(), and treeCreateProbingNode().
returns whether the current node is a temporary probing node
tree | branch and bound tree |
Definition at line 8389 of file tree.c.
References assert(), SCIP_Node::nodetype, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_Bool, 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(), 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().
returns the temporary probing root node, or NULL if the we are not in probing mode
tree | branch and bound tree |
Definition at line 8402 of file tree.c.
References assert(), SCIP_Node::nodetype, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_NODETYPE_PROBINGNODE, and SCIPnodeGetDepth().
gets focus node of the tree
tree | branch and bound tree |
Definition at line 8415 of file tree.c.
References assert(), 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(), SCIPpriceLoop(), SCIPprimalHeuristics(), SCIPsolveCIP(), solveNode(), solveNodeInitialLP(), solveNodeRelax(), updateEstimate(), updateLoopStatus(), and updatePseudocost().
int SCIPtreeGetFocusDepth | ( | SCIP_TREE * | tree | ) |
gets depth of focus node in the tree
tree | branch and bound tree |
Definition at line 8432 of file tree.c.
References assert(), SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by conflictAddConflictCons(), conflictAddConflictset(), conflictAnalyze(), conflictCreateReconvergenceConss(), createAndAddProofcons(), nodeReleaseParent(), SCIPconflictAnalyzeDualProof(), SCIPconflictFlushConss(), SCIPgetDualProof(), SCIPgetFarkasProof(), SCIPgetFocusDepth(), and SCIPprimalHeuristics().
returns, whether the LP was or is to be solved in the focus node
tree | branch and bound tree |
Definition at line 8449 of file tree.c.
References assert(), SCIP_Tree::focusnodehaslp, NULL, and SCIP_Bool.
Referenced by addCurrentSolution(), enforceConstraints(), propAndSolve(), SCIPprimalHeuristics(), SCIPsolveCIP(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPtreeHasCurrentNodeLP(), solveNode(), solveNodeLP(), and updateEstimate().
sets mark to solve or to ignore the LP while processing the focus node
tree | branch and bound tree |
solvelp | should the LP be solved in focus node? |
Definition at line 8459 of file tree.c.
References assert(), SCIP_Tree::focusnodehaslp, NULL, and SCIP_Bool.
Referenced by enforceConstraints(), propAndSolve(), SCIPsetFocusnodeLP(), and solveNode().
returns whether the LP of the focus node is already constructed
tree | branch and bound tree |
Definition at line 8470 of file tree.c.
References assert(), SCIP_Tree::focuslpconstructed, NULL, and SCIP_Bool.
Referenced by SCIPconstructCurrentLP(), SCIPendDive(), SCIPgetLPCols(), SCIPgetLPColsData(), SCIPgetLPRows(), SCIPgetLPRowsData(), SCIPgetLPSolstat(), SCIPgetNLPCols(), SCIPgetNLPRows(), SCIPgetNUnfixedLPCols(), SCIPisLPConstructed(), SCIPpricestoreApplyVars(), SCIPstartDive(), SCIPwriteLP(), and solveProbingLP().
returns whether the focus node is already solved and only propagated again
tree | branch and bound tree |
Definition at line 8480 of file tree.c.
References assert(), SCIP_Tree::focusnode, NULL, SCIP_Bool, SCIP_NODETYPE_REFOCUSNODE, and SCIPnodeGetType().
Referenced by primalAddSol(), primalSetCutoffbound(), and SCIPinRepropagation().
gets current node of the tree, i.e. the last node in the active path, or NULL if no current node exists
tree | branch and bound tree |
Definition at line 8490 of file tree.c.
References assert(), 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().
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
tree | branch and bound tree |
Definition at line 8507 of file tree.c.
References assert(), 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(), 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(), SCIPrunBoundHeuristic(), SCIPseparateCutpool(), SCIPseparateSol(), SCIPsolveCIP(), SCIPsolveProbingRelax(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeCalcNodeselPriority(), SCIPtreeGetProbingDepth(), solStamp(), solveNodeLP(), and solveProbingLP().
returns, whether the LP was or is to be solved in the current node
tree | branch and bound tree |
Definition at line 8524 of file tree.c.
References assert(), NULL, SCIP_Tree::probingnodehaslp, SCIP_Bool, 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().
int SCIPtreeGetProbingDepth | ( | SCIP_TREE * | tree | ) |
returns the current probing depth, i.e. the number of probing sub nodes existing in the probing path
tree | branch and bound tree |
Definition at line 8535 of file tree.c.
References assert(), NULL, SCIP_Tree::probingroot, SCIPnodeGetDepth(), SCIPtreeGetCurrentDepth(), and SCIPtreeProbing().
Referenced by performStrongbranchWithPropagation(), SCIPbacktrackProbing(), SCIPgetProbingDepth(), SCIPtreeBacktrackProbing(), and treeBacktrackProbing().
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)
tree | branch and bound tree |
Definition at line 8546 of file tree.c.
References assert(), SCIP_Tree::effectiverootdepth, and NULL.
Referenced by conflictAnalyzeLP(), createAndAddProofcons(), nodeReleaseParent(), SCIPaddCons(), SCIPaddConsNode(), SCIPdelConsLocal(), SCIPdelConsNode(), SCIPgetEffectiveRootDepth(), SCIPrunBoundHeuristic(), and tightenSingleVar().
gets the root node of the tree
tree | branch and bound tree |
Definition at line 8557 of file tree.c.
References assert(), NULL, and SCIP_Tree::root.
Referenced by applyImplic(), detectImpliedBounds(), SCIPgetRootNode(), SCIPreoptSplitRoot(), SCIPvarAddVlb(), SCIPvarAddVub(), SCIPvarFixBinary(), sepastoreApplyLb(), sepastoreApplyUb(), and varAddImplic().
returns whether we are in probing and the objective value of at least one column was changed
tree | branch and bound tree |
Definition at line 8568 of file tree.c.
References assert(), NULL, SCIP_Tree::probingobjchanged, SCIP_Bool, and SCIPtreeProbing().
Referenced by SCIPchgVarObjProbing(), and SCIPisObjChangedProbing().
void SCIPtreeMarkProbingObjChanged | ( | SCIP_TREE * | tree | ) |
marks the current probing node to have a changed objective function
tree | branch and bound tree |
Definition at line 8579 of file tree.c.
References assert(), NULL, SCIP_Tree::probingobjchanged, SCIPtreeProbing(), and TRUE.
Referenced by SCIPchgVarObjProbing().