Detailed Description
internal methods for branch and bound tree
Definition in file tree.h.
#include "blockmemshell/memory.h"
#include "scip/def.h"
#include "scip/nodesel.h"
#include "scip/type_set.h"
#include "scip/type_stat.h"
#include "scip/type_cons.h"
#include "scip/type_event.h"
#include "scip/type_lp.h"
#include "scip/type_var.h"
#include "scip/type_prob.h"
#include "scip/type_primal.h"
#include "scip/type_tree.h"
#include "scip/type_reopt.h"
#include "scip/type_branch.h"
#include "scip/type_prop.h"
#include "scip/type_implics.h"
#include "scip/type_history.h"
#include "scip/type_conflictstore.h"
#include "scip/pub_tree.h"
#include "scip/struct_tree.h"
Go to the source code of this file.
Function Documentation
◆ SCIPnodeCreateChild()
SCIP_RETCODE SCIPnodeCreateChild | ( | SCIP_NODE ** | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_Real | nodeselprio, | ||
SCIP_Real | estimate | ||
) |
creates a child node of the focus node
- Parameters
-
node pointer to node data structure blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree nodeselprio node selection priority of new node estimate estimate for (transformed) objective value of best feasible solution in subtree
Definition at line 984 of file tree.c.
References SCIP_Tree::focusnode, SCIP_Tree::lastbranchparentid, SCIP_Stat::ncreatednodes, SCIP_Stat::ncreatednodesrun, nodeAssignParent(), nodeCreate(), NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeSetEstimate(), SCIPsetDebugMsg, SCIPtreeIsPathComplete(), SCIPvisualNewChild(), and SCIP_Stat::visual.
Referenced by propAndSolve(), SCIPcreateChild(), SCIPreoptApply(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), SCIPtreeBranchVarNary(), SCIPtreeCreateRoot(), and solveNode().
◆ SCIPnodeFree()
SCIP_RETCODE SCIPnodeFree | ( | SCIP_NODE ** | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_TREE * | tree, | ||
SCIP_LP * | lp | ||
) |
frees node
- Parameters
-
node node data blkmem block memory buffer set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue tree branch and bound tree lp current LP data
Definition at line 1046 of file tree.c.
References BMSfreeBlockMemory, SCIP_Tree::children, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, forkFree(), SCIP_Tree::nchildren, nodeReleaseParent(), SCIP_Tree::nsiblings, NULL, probingnodeFree(), SCIP_Tree::probingroot, pseudoforkFree(), SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_NODEDELETE, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPconssetchgFree(), SCIPdebugRemoveNode, SCIPdomchgFree(), SCIPerrorMessage, SCIPeventChgNode(), SCIPeventChgType(), SCIPeventProcess(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIP_Tree::siblings, subrootFree(), and treeRemoveSibling().
Referenced by nodeDeactivate(), nodeReleaseParent(), nodeToLeaf(), SCIPnodeFocus(), SCIPnodepqBound(), SCIPnodepqClear(), SCIPtreeCutoff(), and treeBacktrackProbing().
◆ SCIPnodeCaptureLPIState()
SCIP_RETCODE SCIPnodeCaptureLPIState | ( | SCIP_NODE * | node, |
int | nuses | ||
) |
increases the reference counter of the LP state in the fork or subroot node
- Parameters
-
node fork/subroot node nuses number to add to the usage counter
Definition at line 238 of file tree.c.
References SCIP_Node::data, SCIP_Node::fork, forkCaptureLPIState(), SCIP_Fork::nlpistateref, SCIP_Subroot::nlpistateref, NULL, SCIP_INVALIDDATA, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPABORT, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIP_Node::subroot, and subrootCaptureLPIState().
Referenced by junctionInit(), and pseudoforkCreate().
◆ SCIPnodeReleaseLPIState()
SCIP_RETCODE SCIPnodeReleaseLPIState | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LP * | lp | ||
) |
decreases the reference counter of the LP state in the fork or subroot node
- Parameters
-
node fork/subroot node blkmem block memory buffers lp current LP data
Definition at line 266 of file tree.c.
References SCIP_Node::data, SCIP_Node::fork, forkReleaseLPIState(), SCIP_Fork::nlpistateref, SCIP_Subroot::nlpistateref, NULL, SCIP_INVALIDDATA, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIP_Node::subroot, and subrootReleaseLPIState().
Referenced by focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToPseudofork(), and SCIPnodeFree().
◆ SCIPnodeFocus()
SCIP_RETCODE SCIPnodeFocus | ( | SCIP_NODE ** | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_CONFLICT * | conflict, | ||
SCIP_CONFLICTSTORE * | conflictstore, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_Bool * | cutoff, | ||
SCIP_Bool | postponed, | ||
SCIP_Bool | exitsolve | ||
) |
installs a child, a sibling, or a leaf node as the new focus node
- Parameters
-
node pointer to node to focus (or NULL to remove focus); the node is freed, if it was cut off due to a cut off subtree blkmem block memory buffers set global SCIP settings messagehdlr message handler stat problem statistics transprob transformed problem origprob original problem primal primal data tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage conflict conflict analysis data conflictstore conflict store eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure cutoff pointer to store whether the given node can be cut off postponed was the current focus node postponed? exitsolve are we in exitsolve stage, so we only need to loose the children
Definition at line 4302 of file tree.c.
References SCIP_Node::active, SCIP_Tree::appliedeffectiverootdepth, SCIP_Tree::children, SCIP_Node::conssetchg, SCIP_Tree::correctlpdepth, SCIP_Primal::cutoffbound, SCIP_Tree::cutoffdepth, SCIP_Node::depth, SCIP_Node::domchg, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focuslpconstructed, SCIP_Tree::focuslpfork, SCIP_Tree::focuslpstatefork, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToLeaf(), focusnodeToPseudofork(), SCIP_Tree::focussubroot, SCIP_Lp::isrelax, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Stat::lpcount, SCIP_Stat::nbacktracks, SCIP_Tree::nchildren, SCIP_Stat::nearlybacktracks, SCIP_Tree::nsiblings, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Stat::plungedepth, SCIP_Stat::referencebound, SCIP_Lp::resolvelperror, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPconssetchgMakeGlobal(), SCIPdomchgApplyGlobal(), SCIPerrorMessage, SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPlpGetNRows(), SCIPlpGetSolstat(), SCIPlpMarkSize(), SCIPnodeCutoff(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetLowerbound(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodepqCompare(), SCIPnodepqRemove(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPtreeGetBestLeaf(), SCIPtreeIsPathComplete(), SCIPtreeProbing(), SCIPvisualCutoffNode(), SCIP_Tree::siblings, treeChildrenToSiblings(), treeFindSwitchForks(), treeNodesToQueue(), treeRemoveChild(), treeRemoveSibling(), treeSwitchPath(), TRUE, and SCIP_Stat::visual.
Referenced by freeReoptSolve(), freeSolve(), SCIPsolveCIP(), SCIPtreeCreatePresolvingRoot(), and SCIPtreeFreePresolvingRoot().
◆ SCIPnodeCutoff()
SCIP_RETCODE SCIPnodeCutoff | ( | SCIP_NODE * | node, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
BMS_BLKMEM * | blkmem | ||
) |
cuts off node and whole sub tree from branch and bound tree
- Parameters
-
node node that should be cut off set global SCIP settings stat problem statistics tree branch and bound tree transprob transformed problem after presolve origprob original problem reopt reoptimization data structure lp current LP blkmem block memory
Definition at line 1176 of file tree.c.
References SCIP_Node::active, SCIP_Node::cutoff, SCIP_Tree::cutoffdepth, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, SCIP_Node::estimate, SCIP_Tree::focusnode, SCIP_Stat::lastlowerbound, SCIP_Node::lowerbound, NULL, SCIP_Tree::root, SCIP_Stat::rootlowerbound, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPlpGetSolstat(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsEQ(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetLowerbound(), SCIPvisualCutoffNode(), TRUE, and SCIP_Stat::visual.
Referenced by conflictAnalyzeDualProof(), createAndAddProofcons(), nodeActivate(), nodeRepropagate(), SCIPconflictFlushConss(), SCIPcutoffNode(), SCIPnodeAddBoundinfer(), SCIPnodeFocus(), SCIPupdateNodeLowerbound(), sepastoreApplyLb(), sepastoreApplyUb(), tightenSingleVar(), treeApplyPendingBdchgs(), and treeSwitchPath().
◆ SCIPnodePropagateAgain()
void SCIPnodePropagateAgain | ( | SCIP_NODE * | node, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree | ||
) |
marks node, that propagation should be applied again the next time, a node of its subtree is focused
- Parameters
-
node node that should be propagated again set global SCIP settings stat problem statistics tree branch and bound tree
Definition at line 1236 of file tree.c.
References SCIP_Node::active, SCIP_Node::depth, NULL, SCIP_Node::reprop, SCIP_Tree::repropdepth, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPsetDebugMsg, SCIPvisualMarkedRepropagateNode(), TRUE, and SCIP_Stat::visual.
Referenced by SCIPconflictFlushConss(), SCIPnodeAddBoundinfer(), SCIPnodeAddHoleinfer(), SCIPrepropagateNode(), and tightenSingleVar().
◆ SCIPnodeMarkPropagated()
marks node, that it is completely propagated in the current repropagation subtree level
- Parameters
-
node node that should be marked to be propagated tree branch and bound tree
Definition at line 1262 of file tree.c.
References SCIP_Node::active, SCIP_Node::depth, FALSE, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Node::reprop, SCIP_Tree::repropdepth, and SCIP_Node::repropsubtreemark.
Referenced by propagateDomains().
◆ SCIPnodeAddCons()
SCIP_RETCODE SCIPnodeAddCons | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_CONS * | cons | ||
) |
adds constraint locally to the node and captures it; activates constraint, if node is active; if a local constraint is added to the root node, it is automatically upgraded into a global constraint
- Parameters
-
node node to add constraint to blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree cons constraint to add
Definition at line 1596 of file tree.c.
References SCIP_Node::active, SCIP_ConsSetChg::addedconss, SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, SCIP_Stat::nactiveconssadded, NULL, SCIP_Tree::root, SCIP_Cons::scip, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPconsIsActive(), SCIPconsIsGlobal(), SCIPconssetchgAddAddedCons(), SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetType(), and SCIP_Cons::validdepth.
Referenced by createAndAddProofcons(), SCIPaddCons(), SCIPaddConsNode(), and tightenSingleVar().
◆ SCIPnodeDelCons()
SCIP_RETCODE SCIPnodeDelCons | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_CONS * | cons | ||
) |
locally deletes constraint at the given node by disabling its separation, enforcing, and propagation capabilities at the node; captures constraint; disables constraint, if node is active
- Parameters
-
node node to add constraint to blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree cons constraint to locally delete
Definition at line 1639 of file tree.c.
References SCIP_Node::active, SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_ConsSetChg::disabledconss, SCIP_Cons::enabled, SCIP_Cons::name, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsDisable(), SCIPconssetchgAddDisabledCons(), SCIPsetDebugMsg, and SCIP_Cons::updatedisable.
Referenced by SCIPdelConsLocal(), and SCIPdelConsNode().
◆ SCIPnodeGetConsProps()
void SCIPnodeGetConsProps | ( | SCIP_NODE * | node, |
SCIP_VAR ** | vars, | ||
SCIP_Real * | varbounds, | ||
SCIP_BOUNDTYPE * | varboundtypes, | ||
int * | nconspropvars, | ||
int | conspropvarssize | ||
) |
return all bound changes based on constraint propagation; stop saving the bound changes if we reach a branching decision based on a dual information
- Parameters
-
node node vars array of variables on which constraint propagation triggers a bound change varbounds array of bounds set by constraint propagation varboundtypes array of boundtypes set by constraint propagation nconspropvars number of variables on which constraint propagation triggers a bound change if this is larger than the array size, arrays should be reallocated and method should be called again conspropvarssize available slots in arrays
Definition at line 7861 of file tree.c.
References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetDepth(), SCIPnodeGetNDomchg(), and SCIP_BoundChg::var.
Referenced by updateConstraintPropagation().
◆ SCIPnodeGetBdChgsAfterDual()
void SCIPnodeGetBdChgsAfterDual | ( | SCIP_NODE * | node, |
SCIP_VAR ** | vars, | ||
SCIP_Real * | varbounds, | ||
SCIP_BOUNDTYPE * | varboundtypes, | ||
int | start, | ||
int * | nbranchvars, | ||
int | branchvarssize | ||
) |
gets all bound changes applied after the first bound change based on dual information.
- Note
- : currently, we can only detect bound changes based in dual information if they arise from strong branching.
- Parameters
-
node node vars array of variables on which the branching has been performed in the parent node varbounds array of bounds which the branching in the parent node set varboundtypes array of boundtypes which the branching in the parent node set start first free slot in the arrays nbranchvars number of variables on which branching has been performed in the parent node if this is larger than the array size, arrays should be reallocated and method should be called again branchvarssize available slots in arrays
Definition at line 7949 of file tree.c.
References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetDepth(), and SCIP_BoundChg::var.
Referenced by saveAfterDualBranchings().
◆ SCIPnodeAddBoundinfer()
SCIP_RETCODE SCIPnodeAddBoundinfer | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_VAR * | var, | ||
SCIP_Real | newbound, | ||
SCIP_BOUNDTYPE | boundtype, | ||
SCIP_CONS * | infercons, | ||
SCIP_PROP * | inferprop, | ||
int | inferinfo, | ||
SCIP_Bool | probingchange | ||
) |
adds bound change with inference information to focus node, child of focus node, or probing node; if possible, adjusts bound to integral value; at most one of infercons and inferprop may be non-NULL
- Parameters
-
node node to add bound change to blkmem block memory set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure var variable to change the bounds for newbound new value for bound boundtype type of bound: lower or upper bound infercons constraint that deduced the bound change, or NULL inferprop propagator that deduced the bound change, or NULL inferinfo user information for inference to help resolving the conflict probingchange is the bound change a temporary setting due to probing?
Definition at line 1800 of file tree.c.
References SCIP_Node::active, SCIP_DomChgDyn::boundchgs, SCIP_Node::depth, SCIP_Node::domchg, SCIP_DomChg::domchgdyn, SCIP_DomChgDyn::domchgtype, SCIP_Tree::effectiverootdepth, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Stat::lpcount, MAX, SCIP_DomChgDyn::nboundchgs, SCIP_BoundChg::newbound, SCIP_Node::nodetype, NULL, SCIP_Node::number, SCIP_Tree::path, SCIP_Tree::probingroot, SCIP_Tree::root, SCIP_Bool, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_DOMCHGTYPE_DYNAMIC, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPABORT, SCIPboundchgApply(), SCIPconsGetName(), SCIPdebugCheckInference, SCIPdomchgAddBoundchg(), SCIPerrorMessage, SCIPlpGetModifiedProvedPseudoObjval(), SCIPlpGetModifiedPseudoObjval(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodePropagateAgain(), SCIPnodeUpdateLowerbound(), SCIPpropGetName(), SCIPsetDebugMsg, SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPstatIncrement, SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarChgBdGlobal(), SCIPvarGetConflictingBdchgDepth(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbvarBound(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), treeAddPendingBdchg(), and SCIP_BoundChg::var.
Referenced by SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPnodeAddBoundchg(), SCIPnodePropagateImplics(), and treeApplyPendingBdchgs().
◆ SCIPnodeAddBoundchg()
SCIP_RETCODE SCIPnodeAddBoundchg | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_VAR * | var, | ||
SCIP_Real | newbound, | ||
SCIP_BOUNDTYPE | boundtype, | ||
SCIP_Bool | probingchange | ||
) |
adds bound change to focus node, or child of focus node, or probing node; if possible, adjusts bound to integral value
- Parameters
-
node node to add bound change to blkmem block memory set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure var variable to change the bounds for newbound new value for bound boundtype type of bound: lower or upper bound probingchange is the bound change a temporary setting due to probing?
Definition at line 2075 of file tree.c.
References NULL, SCIP_CALL, SCIP_OKAY, and SCIPnodeAddBoundinfer().
Referenced by addSplitcons(), applyImplic(), changeAncestorBranchings(), conflictAddConflictCons(), fixBounds(), fixInterdiction(), focusnodeCleanupVars(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarLbNode(), SCIPchgVarLbProbing(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPchgVarUbNode(), SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPshrinkDisjunctiveVarSet(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), SCIPtreeBranchVarNary(), SCIPvarAddVlb(), SCIPvarAddVub(), SCIPvarFixBinary(), sepastoreApplyLb(), sepastoreApplyUb(), tightenSingleVar(), and varAddImplic().
◆ SCIPnodeAddHoleinfer()
SCIP_RETCODE SCIPnodeAddHoleinfer | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | left, | ||
SCIP_Real | right, | ||
SCIP_CONS * | infercons, | ||
SCIP_PROP * | inferprop, | ||
int | inferinfo, | ||
SCIP_Bool | probingchange, | ||
SCIP_Bool * | added | ||
) |
adds hole with inference information to focus node, child of focus node, or probing node; if possible, adjusts bound to integral value; at most one of infercons and inferprop may be non-NULL
- Parameters
-
node node to add bound change to blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree eventqueue event queue var variable to change the bounds for left left bound of open interval defining the hole (left,right) right right bound of open interval defining the hole (left,right) infercons constraint that deduced the bound change, or NULL inferprop propagator that deduced the bound change, or NULL inferinfo user information for inference to help resolving the conflict probingchange is the bound change a temporary setting due to probing? added pointer to store whether the hole was added, or NULL
Definition at line 2104 of file tree.c.
References SCIP_Node::active, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Stat::nholechgs, SCIP_Node::nodetype, SCIP_Stat::nprobholechgs, NULL, SCIP_Tree::probingroot, SCIP_Tree::root, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPABORT, SCIPconsGetName(), SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodePropagateAgain(), SCIPpropGetName(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsGE(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPvarAddHoleGlobal(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbvarHole(), SCIPvarGetStatus(), and SCIPvarGetUbLocal().
Referenced by SCIPnodeAddHolechg().
◆ SCIPnodeAddHolechg()
SCIP_RETCODE SCIPnodeAddHolechg | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | left, | ||
SCIP_Real | right, | ||
SCIP_Bool | probingchange, | ||
SCIP_Bool * | added | ||
) |
adds hole change to focus node, or child of focus node
- Parameters
-
node node to add bound change to blkmem block memory set global SCIP settings stat problem statistics tree branch and bound tree eventqueue event queue var variable to change the bounds for left left bound of open interval defining the hole (left,right) right right bound of open interval defining the hole (left,right) probingchange is the bound change a temporary setting due to probing? added pointer to store whether the hole was added, or NULL
Definition at line 2225 of file tree.c.
References SCIP_Node::depth, SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeAddHoleinfer(), SCIPsetDebugMsg, and SCIPvarGetName().
◆ SCIPnodeUpdateLowerbound()
void SCIPnodeUpdateLowerbound | ( | SCIP_NODE * | node, |
SCIP_STAT * | stat, | ||
SCIP_SET * | set, | ||
SCIP_TREE * | tree, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_Real | newbound | ||
) |
if given value is larger than the node's lower bound, sets the node's lower bound to the new value
- Parameters
-
node node to update lower bound for stat problem statistics set global SCIP settings tree branch and bound tree transprob transformed problem after presolve origprob original problem newbound new lower bound for the node (if it's larger than the old one)
Definition at line 2353 of file tree.c.
References SCIP_Node::depth, SCIP_Node::estimate, SCIP_Stat::lastlowerbound, SCIP_Node::lowerbound, MAX, NULL, SCIP_Stat::rootlowerbound, SCIP_NODETYPE_PROBINGNODE, SCIP_Real, SCIPnodeGetType(), SCIPsetInfinity(), SCIPsetIsEQ(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetLowerbound(), SCIPvisualLowerbound(), and SCIP_Stat::visual.
Referenced by applyBounding(), initSolve(), priceAndCutLoop(), SCIPnodeAddBoundinfer(), SCIPnodeUpdateLowerboundLP(), SCIPpriceLoop(), SCIPupdateNodeLowerbound(), solveNode(), and solveNodeRelax().
◆ SCIPnodeUpdateLowerboundLP()
SCIP_RETCODE SCIPnodeUpdateLowerboundLP | ( | SCIP_NODE * | node, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_TREE * | tree, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp | ||
) |
updates lower bound of node using lower bound of LP
- Parameters
-
node node to set lower bound for set global SCIP settings stat problem statistics tree branch and bound tree transprob transformed problem after presolve origprob original problem lp LP data
Definition at line 2397 of file tree.c.
References SCIP_Lp::flushed, SCIP_Lp::lpsolstat, NULL, SCIP_CALL, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_OKAY, SCIP_Real, SCIPlpGetObjval(), SCIPlpGetProvedLowerbound(), and SCIPnodeUpdateLowerbound().
Referenced by priceAndCutLoop(), propAndSolve(), SCIPendDive(), SCIPtreeEndProbing(), and solveNodeInitialLP().
◆ SCIPchildChgNodeselPrio()
change the node selection priority of the given child
- Parameters
-
tree branch and bound tree child child to update the node selection priority priority node selection priority value
Definition at line 2431 of file tree.c.
References SCIP_Child::arraypos, SCIP_Node::child, SCIP_Tree::childrenprio, SCIP_Node::data, SCIP_NODETYPE_CHILD, and SCIPnodeGetType().
Referenced by SCIPchgChildPrio().
◆ SCIPnodeSetEstimate()
sets the node's estimated bound to the new value
- Parameters
-
node node to update lower bound for set global SCIP settings newestimate new estimated bound for the node
Definition at line 2449 of file tree.c.
References SCIP_Node::estimate, SCIP_Node::lowerbound, NULL, and SCIPsetIsRelGE().
Referenced by SCIPnodeCreateChild(), SCIPreoptApply(), and updateEstimate().
◆ SCIPnodePropagateImplics()
SCIP_RETCODE SCIPnodePropagateImplics | ( | SCIP_NODE * | node, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_Bool * | cutoff | ||
) |
propagates implications of binary fixings at the given node triggered by the implication graph and the clique table
- Parameters
-
node node to propagate implications on blkmem block memory set global SCIP settings stat problem statistics transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure cutoff pointer to store whether the node can be cut off
Definition at line 2465 of file tree.c.
References SCIP_Node::domchg, FALSE, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPboundchgGetBoundtype(), SCIPboundchgGetVar(), SCIPboundchgIsRedundant(), SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPdomchgGetBoundchg(), SCIPdomchgGetNBoundchgs(), SCIPnodeAddBoundinfer(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeIsActive(), SCIPsetDebugMsg, SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsFeasLT(), SCIPvarGetCliques(), SCIPvarGetImplBounds(), SCIPvarGetImplTypes(), SCIPvarGetImplVars(), SCIPvarGetLbLocal(), SCIPvarGetNCliques(), SCIPvarGetNImpls(), SCIPvarGetProbvar(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), and TRUE.
Referenced by SCIPpropagateProbingImplications().
◆ SCIPnodeGetDualBoundchgs()
void SCIPnodeGetDualBoundchgs | ( | SCIP_NODE * | node, |
SCIP_VAR ** | vars, | ||
SCIP_Real * | bounds, | ||
SCIP_BOUNDTYPE * | boundtypes, | ||
int * | nvars, | ||
int | varssize | ||
) |
returns all 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.
returns the set of variable branchings that were performed in the parent node to create this node
- Parameters
-
node node data vars array of variables on which the bound change is based on dual information bounds array of bounds which are based on dual information boundtypes array of boundtypes which are based on dual information nvars number of variables on which the bound change is based on dual information if this is larger than the array size, arrays should be reallocated and method should be called again varssize available slots in arrays
Definition at line 7631 of file tree.c.
References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPnodeGetDepth(), SCIP_BoundChg::var, and SCIP_Var::vartype.
Referenced by collectDualInformation().
◆ SCIPnodeGetNDualBndchgs()
int SCIPnodeGetNDualBndchgs | ( | SCIP_NODE * | node | ) |
returns the number of bound changes based on dual information.
currently, this methods works only for bound changes made by strong branching on binary variables. we need this method to ensure optimality within reoptimization.
since the bound changes made by strong branching are stored as SCIP_BOUNDCHGTYPE_CONSINFER or SCIP_BOUNDCHGTYPE_PROPINFER with no constraint or propagator, resp., we are are interested in bound changes with these attributes.
all bound changes of type SCIP_BOUNDCHGTYPE_BRANCHING are stored in the beginning of the bound change array, afterwards, we can find the other two types. thus, we start the search at the end of the list and stop when reaching the first bound change of type SCIP_BOUNDCHGTYPE_BRANCHING.
- Parameters
-
node node
Definition at line 7586 of file tree.c.
References SCIP_DomChgBound::boundchgs, SCIP_BoundChg::boundchgtype, SCIP_BoundChg::data, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_BoundChg::inferencedata, SCIP_DomChgBound::nboundchgs, NULL, SCIP_Bool, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIP_BoundChg::var, and SCIP_Var::vartype.
Referenced by collectDualInformation(), and SCIPreoptCheckCutoff().
◆ SCIPtreeCreate()
SCIP_RETCODE SCIPtreeCreate | ( | SCIP_TREE ** | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_NODESEL * | nodesel | ||
) |
creates an initialized tree data structure
- Parameters
-
tree pointer to tree data structure blkmem block memory buffers set global SCIP settings nodesel node selector to use for sorting leaves in the priority queue
Definition at line 4763 of file tree.c.
References BMSallocBlockMemoryArray, BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPnodepqCreate(), and TRUE.
Referenced by SCIPtransformProb().
◆ SCIPtreeFree()
SCIP_RETCODE SCIPtreeFree | ( | SCIP_TREE ** | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
frees tree data structure
- Parameters
-
tree pointer to tree data structure blkmem block memory buffers set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data
Definition at line 4844 of file tree.c.
References BMSfreeBlockMemoryArray, BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, SCIPnodepqFree(), SCIPsetDebugMsg, and SCIPtreeProbing().
Referenced by freeTransform().
◆ SCIPtreeClear()
SCIP_RETCODE SCIPtreeClear | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
clears and resets tree data structure and deletes all nodes
- Parameters
-
tree tree data structure blkmem block memory buffers set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data
Definition at line 4893 of file tree.c.
References SCIP_Tree::appliedeffectiverootdepth, SCIP_Tree::correctlpdepth, SCIP_Tree::cutoffdelayed, SCIP_Tree::cutoffdepth, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, SCIP_Tree::leaves, SCIP_Tree::nchildren, SCIP_Tree::npendingbdchgs, SCIP_Tree::nsiblings, NULL, SCIP_Tree::pathlen, SCIP_Tree::pendingbdchgs, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpwasflushed, SCIP_Tree::probinglpwasrelax, SCIP_Tree::probinglpwassolved, SCIP_Tree::probingnodehaslp, SCIP_Tree::probingsolvedlp, SCIP_Tree::repropdepth, SCIP_Tree::repropsubtreecount, SCIP_Tree::root, SCIP_CALL, SCIP_OKAY, SCIPnodepqClear(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIPvarRelease(), and SCIP_PendingBdchg::var.
Referenced by freeReoptSolve(), freeSolve(), SCIPpresolve(), and SCIPtreeFreePresolvingRoot().
◆ SCIPtreeCreateRoot()
SCIP_RETCODE SCIPtreeCreateRoot | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
creates the root node of the tree and puts it into the leaves queue
- Parameters
-
tree tree data structure reopt reoptimization data structure blkmem block memory buffers set global SCIP settings stat problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data
Definition at line 4954 of file tree.c.
References SCIP_Node::active, SCIP_Tree::children, SCIP_Node::cutoff, SCIP_Node::depth, SCIP_Tree::focusnode, MAXREPROPMARK, SCIP_Tree::nchildren, SCIP_Node::nodetype, SCIP_Tree::nsiblings, NULL, SCIP_Node::reprop, SCIP_Node::repropsubtreemark, SCIP_Tree::root, SCIP_CALL, SCIP_MAXTREEDEPTH, SCIP_NODETYPE_CHILD, SCIP_OKAY, SCIPnodeCreateChild(), SCIPsetInfinity(), SCIPtreeProbing(), and treeNodesToQueue().
Referenced by initSolve(), and SCIPtreeCreatePresolvingRoot().
◆ SCIPtreeCreatePresolvingRoot()
SCIP_RETCODE SCIPtreeCreatePresolvingRoot | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_CONFLICT * | conflict, | ||
SCIP_CONFLICTSTORE * | conflictstore, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable | ||
) |
creates a temporary presolving root node of the tree and installs it as focus node
- Parameters
-
tree tree data structure reopt reoptimization data structure blkmem block memory buffers set global SCIP settings messagehdlr message handler stat problem statistics transprob transformed problem origprob original problem primal primal data lp current LP data branchcand branching candidate storage conflict conflict analysis data conflictstore conflict store eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure
Definition at line 5000 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPnodeFocus(), SCIPtreeCreateRoot(), and SCIPtreeProbing().
Referenced by initPresolve().
◆ SCIPtreeFreePresolvingRoot()
SCIP_RETCODE SCIPtreeFreePresolvingRoot | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_CONFLICT * | conflict, | ||
SCIP_CONFLICTSTORE * | conflictstore, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable | ||
) |
frees the temporary presolving root and resets tree data structure
- Parameters
-
tree tree data structure reopt reoptimization data structure blkmem block memory buffers set global SCIP settings messagehdlr message handler stat problem statistics transprob transformed problem origprob original problem primal primal data lp current LP data branchcand branching candidate storage conflict conflict analysis data conflictstore conflict store eventfilter event filter for global (not variable dependent) events eventqueue event queue cliquetable clique table data structure
Definition at line 5041 of file tree.c.
References FALSE, SCIP_Tree::focusnode, NULL, SCIP_Tree::pathlen, SCIP_Tree::root, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPnodeFocus(), and SCIPtreeClear().
Referenced by exitPresolve().
◆ SCIPtreeGetNodesel()
SCIP_NODESEL* SCIPtreeGetNodesel | ( | SCIP_TREE * | tree | ) |
returns the node selector associated with the given node priority queue
- Parameters
-
tree branch and bound tree
Definition at line 5084 of file tree.c.
References SCIP_Tree::leaves, NULL, and SCIPnodepqGetNodesel().
◆ SCIPtreeSetNodesel()
SCIP_RETCODE SCIPtreeSetNodesel | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_NODESEL * | nodesel | ||
) |
sets the node selector used for sorting the nodes in the priority queue, and resorts the queue if necessary
- Parameters
-
tree branch and bound tree set global SCIP settings messagehdlr message handler stat problem statistics nodesel node selector to use for sorting the nodes in the queue
Definition at line 5094 of file tree.c.
References SCIP_Tree::leaves, SCIP_Stat::nnodes, NULL, SCIP_CALL, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPmessagePrintVerbInfo(), SCIPnodepqGetNodesel(), SCIPnodepqSetNodesel(), and SCIPnodeselGetName().
Referenced by SCIPsolveCIP().
◆ SCIPtreeCutoff()
SCIP_RETCODE SCIPtreeCutoff | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_Real | cutoffbound | ||
) |
cuts off nodes with lower bound not better than given upper bound
cuts off nodes with lower bound not better than given cutoff bound
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat dynamic problem statistics eventfilter event filter for global (not variable dependent) events eventqueue event queue lp current LP data cutoffbound cutoff bound: all nodes with lowerbound >= cutoffbound are cut off
Definition at line 5122 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::cutoffdelayed, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Tree::root, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_OKAY, SCIPlpDiving(), SCIPlpGetSolstat(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodepqBound(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPvisualCutoffNode(), SCIP_Tree::siblings, TRUE, and SCIP_Stat::visual.
Referenced by primalSetCutoffbound(), SCIPendDive(), and SCIPsolveCIP().
◆ SCIPtreeLoadLP()
SCIP_RETCODE SCIPtreeLoadLP | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_LP * | lp, | ||
SCIP_Bool * | initroot | ||
) |
constructs the LP relaxation of the focus node
- Parameters
-
tree branch and bound tree blkmem block memory buffers set global SCIP settings eventqueue event queue eventfilter global event filter lp current LP data initroot pointer to store whether the root LP relaxation has to be initialized
Definition at line 3405 of file tree.c.
References SCIP_Node::active, SCIP_Tree::correctlpdepth, SCIP_Node::depth, SCIP_Tree::focuslpconstructed, SCIP_Tree::focuslpfork, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Tree::focussubroot, forkAddLP(), MAX, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, pseudoforkAddLP(), SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPlpClear(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpMarkSize(), SCIPlpShrinkCols(), SCIPlpShrinkRows(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeProbing(), subrootConstructLP(), treeCheckPath(), and TRUE.
Referenced by SCIPconstructCurrentLP().
◆ SCIPtreeLoadLPState()
SCIP_RETCODE SCIPtreeLoadLPState | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
loads LP state for fork/subroot of the focus node
- Parameters
-
tree branch and bound tree blkmem block memory buffers set global SCIP settings stat dynamic problem statistics eventqueue event queue lp current LP data
Definition at line 3533 of file tree.c.
References SCIP_Node::active, SCIP_Tree::correctlpdepth, SCIP_Node::data, SCIP_Node::depth, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Tree::focuslpconstructed, SCIP_Tree::focuslpstatefork, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Node::fork, SCIP_Stat::lpcount, SCIP_Fork::lpistate, SCIP_Subroot::lpistate, SCIP_Fork::lpwasdualchecked, SCIP_Subroot::lpwasdualchecked, SCIP_Fork::lpwasdualfeas, SCIP_Subroot::lpwasdualfeas, SCIP_Fork::lpwasprimchecked, SCIP_Subroot::lpwasprimchecked, SCIP_Fork::lpwasprimfeas, SCIP_Subroot::lpwasprimfeas, SCIP_DomChgBound::nboundchgs, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPlpSetState(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIP_Lp::solisbasic, SCIP_Lp::solved, SCIP_Node::subroot, and TRUE.
Referenced by solveNodeInitialLP().
◆ SCIPtreeCalcNodeselPriority()
SCIP_Real SCIPtreeCalcNodeselPriority | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_VAR * | var, | ||
SCIP_BRANCHDIR | branchdir, | ||
SCIP_Real | targetvalue | ||
) |
calculates the node selection priority for moving the given variable's LP value to the given target value; this node selection priority can be given to the SCIPcreateChild() call
- Parameters
-
tree branch and bound tree set global SCIP settings stat dynamic problem statistics var variable, of which the branching factor should be applied, or NULL branchdir type of branching that was performed: upwards, downwards, or fixed fixed should only be used, when both bounds changed targetvalue new value of the variable in the child node
Definition at line 5208 of file tree.c.
References NULL, SCIP_Bool, SCIP_BRANCHDIR_AUTO, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_Real, SCIPerrorMessage, SCIPsetEpsilon(), SCIPsetInfinity(), SCIPtreeGetCurrentDepth(), SCIPtreeHasFocusNodeLP(), SCIPvarGetAvgInferences(), SCIPvarGetBranchDirection(), SCIPvarGetName(), SCIPvarGetPseudocost(), SCIPvarGetRootSol(), and SCIPvarGetSol().
Referenced by SCIPcalcNodeselPriority(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), and SCIPtreeBranchVarNary().
◆ SCIPtreeCalcChildEstimate()
SCIP_Real SCIPtreeCalcChildEstimate | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_VAR * | var, | ||
SCIP_Real | targetvalue | ||
) |
calculates an estimate for the objective of the best feasible solution contained in the subtree after applying the given branching; this estimate can be given to the SCIPcreateChild() call
- Parameters
-
tree branch and bound tree set global SCIP settings stat dynamic problem statistics var variable, of which the branching factor should be applied, or NULL targetvalue new value of the variable in the child node
Definition at line 5358 of file tree.c.
References SCIP_Tree::focusnode, NULL, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetEstimate(), SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPtreeHasFocusNodeLP(), SCIPvarGetPseudocost(), SCIPvarGetSol(), and SCIPvarGetType().
Referenced by SCIPcalcChildEstimate(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), and SCIPtreeBranchVarNary().
◆ SCIPtreeBranchVar()
SCIP_RETCODE SCIPtreeBranchVar | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | val, | ||
SCIP_NODE ** | downchild, | ||
SCIP_NODE ** | eqchild, | ||
SCIP_NODE ** | upchild | ||
) |
branches on a variable x if x is a continuous variable, then two child nodes will be created (x <= x', x >= x') but if the bounds of x are such that their relative difference is smaller than epsilon, the variable is fixed to val (if not SCIP_INVALID) or a well chosen alternative in the current node, i.e., no children are created if x is not a continuous variable, then: if solution value x' is fractional, two child nodes will be created (x <= floor(x'), x >= ceil(x')), if solution value is integral, the x' is equal to lower or upper bound of the branching variable and the bounds of x are finite, then two child nodes will be created (x <= x", x >= x"+1 with x" = floor((lb + ub)/2)), otherwise (up to) three child nodes will be created (x <= x'-1, x == x', x >= x'+1) if solution value is equal to one of the bounds and the other bound is infinite, only two child nodes will be created (the third one would be infeasible anyway)
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat problem statistics data transprob transformed problem after presolve origprob original problem lp current LP data branchcand branching candidate storage eventqueue event queue var variable to branch on val value to branch on or SCIP_INVALID for branching on current LP/pseudo solution. A branching value is required for branching on continuous variables downchild pointer to return the left child with variable rounded down, or NULL eqchild pointer to return the middle child with variable fixed, or NULL upchild pointer to return the right child with variable rounded up, or NULL
Definition at line 5417 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, MAX, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPnodeGetLowerbound(), SCIPrelDiff(), SCIPsetCeil(), SCIPsetDebugMsg, SCIPsetEpsilon(), SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPsetIsEQ(), SCIPsetIsFeasEQ(), SCIPsetIsFeasGE(), SCIPsetIsFeasIntegral(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetIsRelEQ(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPtreeGetCurrentNode(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetProbvar(), SCIPvarGetProbvarSum(), SCIPvarGetRootSol(), SCIPvarGetSol(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarGetWorstBoundLocal(), SCIPvarIsActive(), SCIPvisualUpdateChild(), and SCIP_Stat::visual.
Referenced by SCIPbranchExecExtern(), SCIPbranchExecLP(), SCIPbranchExecPseudo(), SCIPbranchVar(), SCIPbranchVarVal(), and SCIPtreeBranchVarNary().
◆ SCIPtreeBranchVarHole()
SCIP_RETCODE SCIPtreeBranchVarHole | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | left, | ||
SCIP_Real | right, | ||
SCIP_NODE ** | downchild, | ||
SCIP_NODE ** | upchild | ||
) |
branches a variable x using the given domain hole; two child nodes will be created (x <= left, x >= right)
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat problem statistics data transprob transformed problem after presolve origprob original problem lp current LP data branchcand branching candidate storage eventqueue event queue var variable to branch on left left side of the domain hole right right side of the domain hole downchild pointer to return the left child with variable rounded down, or NULL upchild pointer to return the right child with variable rounded up, or NULL
Definition at line 5748 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPsetDebugMsg, SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPsetIsFeasGE(), SCIPsetIsFeasIntegral(), SCIPsetIsFeasLE(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetProbvarHole(), SCIPvarGetSol(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarIsActive(), SCIPvarIsIntegral(), SCIPvisualUpdateChild(), and SCIP_Stat::visual.
Referenced by SCIPbranchVarHole().
◆ SCIPtreeBranchVarNary()
SCIP_RETCODE SCIPtreeBranchVarNary | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_VAR * | var, | ||
SCIP_Real | val, | ||
int | n, | ||
SCIP_Real | minwidth, | ||
SCIP_Real | widthfactor, | ||
int * | nchildren | ||
) |
n-ary branching on a variable x Branches on variable x such that up to n/2 children are created on each side of the usual branching value. The branching value is selected as in SCIPtreeBranchVar(). If n is 2 or the variables local domain is too small for a branching into n pieces, SCIPtreeBranchVar() is called. The parameters minwidth and widthfactor determine the domain width of the branching variable in the child nodes. If n is odd, one child with domain width 'width' and having the branching value in the middle is created. Otherwise, two children with domain width 'width' and being left and right of the branching value are created. Next further nodes to the left and right are created, where width is multiplied by widthfactor with increasing distance from the first nodes. The initial width is calculated such that n/2 nodes are created to the left and to the right of the branching value. If this value is below minwidth, the initial width is set to minwidth, which may result in creating less than n nodes.
Giving a large value for widthfactor results in creating children with small domain when close to the branching value and large domain when closer to the current variable bounds. That is, setting widthfactor to a very large value and n to 3 results in a ternary branching where the branching variable is mostly fixed in the middle child. Setting widthfactor to 1.0 results in children where the branching variable always has the same domain width (except for one child if the branching value is not in the middle).
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory set global SCIP settings stat problem statistics data transprob transformed problem after presolve origprob original problem lp current LP data branchcand branching candidate storage eventqueue event queue var variable to branch on val value to branch on or SCIP_INVALID for branching on current LP/pseudo solution. A branching value is required for branching on continuous variables n attempted number of children to be created, must be >= 2 minwidth minimal domain width in children widthfactor multiplier for children domain width with increasing distance from val, must be >= 1.0 nchildren buffer to store number of created children, or NULL
Definition at line 5890 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, MAX, NULL, pow(), SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPrelDiff(), SCIPsetCeil(), SCIPsetDebugMsg, SCIPsetEpsilon(), SCIPsetFloor(), SCIPsetIsFeasGE(), SCIPsetIsFeasIntegral(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetIsPositive(), SCIPsetIsRelEQ(), SCIPsetIsRelGT(), SCIPsetIsRelLT(), SCIPsetIsZero(), SCIPtreeBranchVar(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetProbvar(), SCIPvarGetProbvarSum(), SCIPvarGetSol(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarGetWorstBoundLocal(), SCIPvarIsActive(), SCIPvisualUpdateChild(), and SCIP_Stat::visual.
Referenced by SCIPbranchVarValNary().
◆ SCIPtreeAddDiveBoundChange()
SCIP_RETCODE SCIPtreeAddDiveBoundChange | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_VAR * | var, | ||
SCIP_BRANCHDIR | dir, | ||
SCIP_Real | value, | ||
SCIP_Bool | preferred | ||
) |
adds a diving bound change to the tree together with the information if this is a bound change for the preferred direction or not
- Parameters
-
tree branch and bound tree blkmem block memory buffers var variable to apply the bound change to dir direction of the bound change value value to adjust this variable bound to preferred is this a bound change for the preferred child?
Definition at line 6261 of file tree.c.
References ARRAYGROWTH, BMSreallocBlockMemoryArray, SCIP_Tree::divebdchgdirs, SCIP_Tree::divebdchgsize, SCIP_Tree::divebdchgvals, SCIP_Tree::divebdchgvars, SCIP_Tree::ndivebdchanges, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPaddDiveBoundChange().
◆ SCIPtreeGetDiveBoundChangeData()
void SCIPtreeGetDiveBoundChangeData | ( | SCIP_TREE * | tree, |
SCIP_VAR *** | variables, | ||
SCIP_BRANCHDIR ** | directions, | ||
SCIP_Real ** | values, | ||
int * | ndivebdchgs, | ||
SCIP_Bool | preferred | ||
) |
get the dive bound change data for the preferred or the alternative direction
- Parameters
-
tree branch and bound tree variables pointer to store variables for the specified direction directions pointer to store the branching directions values pointer to store bound change values ndivebdchgs pointer to store the number of dive bound changes preferred should the dive bound changes for the preferred child be output?
Definition at line 6293 of file tree.c.
References SCIP_Tree::divebdchgdirs, SCIP_Tree::divebdchgvals, SCIP_Tree::divebdchgvars, SCIP_Tree::ndivebdchanges, and NULL.
Referenced by SCIPgetDiveBoundChangeData(), and SCIPgetDiveBoundChanges().
◆ SCIPtreeClearDiveBoundChanges()
void SCIPtreeClearDiveBoundChanges | ( | SCIP_TREE * | tree | ) |
clear the tree dive bound change data structure
clear the tree bound change data structure
- Parameters
-
tree branch and bound tree
Definition at line 6316 of file tree.c.
References SCIP_Tree::ndivebdchanges.
Referenced by SCIPclearDiveBoundChanges().
◆ SCIPtreeStartProbing()
SCIP_RETCODE SCIPtreeStartProbing | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_LP * | lp, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PROB * | transprob, | ||
SCIP_Bool | strongbranching | ||
) |
switches to probing mode and creates a probing root
- Parameters
-
tree branch and bound tree blkmem block memory set global SCIP settings lp current LP data relaxation global relaxation data transprob transformed problem after presolve strongbranching is the probing mode used for strongbranching?
Definition at line 6421 of file tree.c.
References SCIP_Lp::divingobjchg, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Lp::isrelax, NULL, SCIP_Tree::pathlen, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpinorms, SCIP_Tree::probinglpistate, SCIP_Tree::probinglpwasdualchecked, SCIP_Tree::probinglpwasdualfeas, SCIP_Tree::probinglpwasflushed, SCIP_Tree::probinglpwasprimchecked, SCIP_Tree::probinglpwasprimfeas, SCIP_Tree::probinglpwasrelax, SCIP_Tree::probinglpwassolved, SCIP_Tree::probingobjchanged, SCIP_Tree::probingsolvedlp, SCIP_Tree::probingsumchgdobjs, SCIP_Tree::sbprobing, SCIP_CALL, SCIP_OKAY, SCIPconshdlrsStorePropagationStatus(), SCIPlpGetNorms(), SCIPlpGetSolstat(), SCIPlpGetState(), SCIPlpStartProbing(), SCIPrelaxationIsSolValid(), SCIPsetDebugMsg, SCIPtreeProbing(), SCIPtreeStoreRelaxSol(), SCIP_Lp::solved, treeCreateProbingNode(), and TRUE.
Referenced by SCIPstartProbing(), and SCIPstartStrongbranch().
◆ SCIPtreeCreateProbingNode()
SCIP_RETCODE SCIPtreeCreateProbingNode | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_LP * | lp | ||
) |
creates a new probing child node in the probing path
- Parameters
-
tree branch and bound tree blkmem block memory set global SCIP settings lp current LP data
Definition at line 6486 of file tree.c.
References SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_CALL, SCIP_OKAY, SCIPnodeGetDepth(), SCIPsetDebugMsg, SCIPtreeProbing(), and treeCreateProbingNode().
Referenced by SCIPnewProbingNode().
◆ SCIPtreeSetProbingLPState()
SCIP_RETCODE SCIPtreeSetProbingLPState | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LP * | lp, | ||
SCIP_LPISTATE ** | lpistate, | ||
SCIP_LPINORMS ** | lpinorms, | ||
SCIP_Bool | primalfeas, | ||
SCIP_Bool | dualfeas | ||
) |
sets the LP state for the current probing node
- Note
- state and norms are stored at the node and later released by SCIP; therefore, the pointers are set to NULL by the method
- the pointers to state and norms must not be NULL; however, they may point to a NULL pointer if the respective information should not be set
- Parameters
-
tree branch and bound tree blkmem block memory lp current LP data lpistate pointer to LP state information (like basis information) lpinorms pointer to LP pricing norms information primalfeas primal feasibility when LP state information was stored dualfeas dual feasibility when LP state information was stored
Definition at line 6511 of file tree.c.
References SCIP_Node::data, SCIP_Probingnode::lpinorms, SCIP_Probingnode::lpistate, SCIP_Probingnode::lpwasdualfeas, SCIP_Probingnode::lpwasprimfeas, NULL, SCIP_Tree::probingloadlpistate, SCIP_Node::probingnode, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPlpFreeNorms(), SCIPlpFreeState(), SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), and TRUE.
Referenced by SCIPsetProbingLPState().
◆ SCIPtreeLoadProbingLPState()
SCIP_RETCODE SCIPtreeLoadProbingLPState | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
loads the LP state for the current probing node
- Parameters
-
tree branch and bound tree blkmem block memory buffers set global SCIP settings eventqueue event queue lp current LP data
Definition at line 6565 of file tree.c.
References SCIP_Node::data, FALSE, SCIP_Probingnode::lpinorms, SCIP_Probingnode::lpistate, SCIP_Probingnode::lpwasdualchecked, SCIP_Probingnode::lpwasdualfeas, SCIP_Probingnode::lpwasprimchecked, SCIP_Probingnode::lpwasprimfeas, NULL, SCIP_Node::parent, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpinorms, SCIP_Tree::probinglpistate, SCIP_Tree::probinglpwasdualchecked, SCIP_Tree::probinglpwasdualfeas, SCIP_Tree::probinglpwasprimchecked, SCIP_Tree::probinglpwasprimfeas, SCIP_Node::probingnode, SCIP_Bool, SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPlpSetNorms(), SCIPlpSetState(), SCIPnodeGetType(), SCIPtreeGetCurrentNode(), and SCIPtreeProbing().
Referenced by solveProbingLP().
◆ SCIPtreeMarkProbingNodeHasLP()
SCIP_RETCODE SCIPtreeMarkProbingNodeHasLP | ( | SCIP_TREE * | tree, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LP * | lp | ||
) |
marks the probing node to have a solved LP relaxation
- Parameters
-
tree branch and bound tree blkmem block memory lp current LP data
Definition at line 6646 of file tree.c.
References SCIP_Node::data, NULL, SCIP_Node::probingnode, SCIP_Tree::probingnodehaslp, probingnodeUpdate(), SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), and TRUE.
Referenced by solveProbingLP().
◆ SCIPtreeBacktrackProbing()
SCIP_RETCODE SCIPtreeBacktrackProbing | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
int | probingdepth | ||
) |
undoes all changes to the problem applied in probing up to the given probing depth; the changes of the probing node of the given probing depth are the last ones that remain active; changes that were applied before calling SCIPtreeCreateProbingNode() cannot be undone
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory buffers set global SCIP settings stat problem statistics transprob transformed problem origprob original problem lp current LP data primal primal data structure branchcand branching candidate storage eventqueue event queue eventfilter global event filter cliquetable clique table data structure probingdepth probing depth of the node in the probing path that should be reactivated
Definition at line 6820 of file tree.c.
References NULL, SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeGetProbingDepth(), SCIPtreeProbing(), and treeBacktrackProbing().
Referenced by SCIPbacktrackProbing().
◆ SCIPtreeEndProbing()
SCIP_RETCODE SCIPtreeEndProbing | ( | SCIP_TREE * | tree, |
SCIP_REOPT * | reopt, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_LP * | lp, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PRIMAL * | primal, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_CLIQUETABLE * | cliquetable | ||
) |
switches back from probing to normal operation mode, frees all nodes on the probing path, restores bounds of all variables and restores active constraints arrays of focus node
- Parameters
-
tree branch and bound tree reopt reoptimization data structure blkmem block memory buffers set global SCIP settings messagehdlr message handler stat problem statistics transprob transformed problem after presolve origprob original problem lp current LP data relaxation global relaxation data primal Primal LP data branchcand branching candidate storage eventqueue event queue eventfilter global event filter cliquetable clique table data structure
Definition at line 6854 of file tree.c.
References SCIP_Primal::cutoffbound, SCIP_Lp::cutoffbound, SCIP_Lp::divingobjchg, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Tree::focuslpconstructed, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, SCIP_Lp::lpi, SCIP_Lp::lpsolstat, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Stat::nlps, SCIP_Stat::nnodes, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Tree::probdiverelaxstored, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpinorms, SCIP_Tree::probinglpistate, SCIP_Tree::probinglpwasdualchecked, SCIP_Tree::probinglpwasdualfeas, SCIP_Tree::probinglpwasflushed, SCIP_Tree::probinglpwasprimchecked, SCIP_Tree::probinglpwasprimfeas, SCIP_Tree::probinglpwasrelax, SCIP_Tree::probinglpwassolved, SCIP_Tree::probingobjchanged, SCIP_Tree::probingroot, SCIP_Tree::probingsolvedlp, SCIP_Tree::probingsumchgdobjs, SCIP_Lp::resolvelperror, SCIP_Tree::sbprobing, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPconshdlrsResetPropagationStatus(), SCIPlpDivingObjChanged(), SCIPlpEndProbing(), SCIPlpFlush(), SCIPlpFreeNorms(), SCIPlpFreeState(), SCIPlpGetSolstat(), SCIPlpiClearState(), SCIPlpIsRelax(), SCIPlpSetIsRelax(), SCIPlpSetNorms(), SCIPlpSetState(), SCIPlpSolveAndEval(), SCIPmessagePrintVerbInfo(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodeUpdateLowerboundLP(), SCIPprobAllColsInLP(), SCIPsetDebugMsg, SCIPtreeGetCurrentNode(), SCIPtreeProbing(), SCIPtreeRestoreRelaxSol(), SCIP_Lp::solisbasic, SCIP_Lp::solved, treeBacktrackProbing(), and TRUE.
Referenced by SCIPendProbing(), and SCIPendStrongbranch().
◆ SCIPtreeStoreRelaxSol()
SCIP_RETCODE SCIPtreeStoreRelaxSol | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PROB * | transprob | ||
) |
stores relaxation solution before diving or probing
- Parameters
-
tree branch and bound tree set global SCIP settings relaxation global relaxation data transprob transformed problem after presolve
Definition at line 7015 of file tree.c.
References BMSallocMemoryArray, BMSreallocMemoryArray, SCIP_Tree::nprobdiverelaxsol, NULL, SCIP_Prob::nvars, SCIP_Tree::probdiverelaxincludeslp, SCIP_Tree::probdiverelaxsol, SCIP_Tree::probdiverelaxstored, SCIP_ALLOC, SCIP_OKAY, SCIPrelaxationIsLpIncludedForSol(), SCIPrelaxationIsSolValid(), SCIPvarGetRelaxSol(), TRUE, and SCIP_Prob::vars.
Referenced by SCIPstartDive(), and SCIPtreeStartProbing().
◆ SCIPtreeRestoreRelaxSol()
SCIP_RETCODE SCIPtreeRestoreRelaxSol | ( | SCIP_TREE * | tree, |
SCIP_SET * | set, | ||
SCIP_RELAXATION * | relaxation, | ||
SCIP_PROB * | transprob | ||
) |
restores relaxation solution after diving or probing
- Parameters
-
tree branch and bound tree set global SCIP settings relaxation global relaxation data transprob transformed problem after presolve
Definition at line 7059 of file tree.c.
References FALSE, NULL, SCIP_Prob::nvars, SCIP_Tree::probdiverelaxincludeslp, SCIP_Tree::probdiverelaxsol, SCIP_Tree::probdiverelaxstored, SCIP_CALL, SCIP_OKAY, SCIPrelaxationSetSolValid(), SCIPvarSetRelaxSol(), TRUE, and SCIP_Prob::vars.
Referenced by SCIPendDive(), and SCIPtreeEndProbing().
◆ SCIPtreeGetNChildren()
int SCIPtreeGetNChildren | ( | SCIP_TREE * | tree | ) |
gets number of children of the focus node
- Parameters
-
tree branch and bound tree
Definition at line 8214 of file tree.c.
References SCIP_Tree::nchildren, and NULL.
Referenced by SCIPgetOpenNodesData().
◆ SCIPtreeGetNSiblings()
int SCIPtreeGetNSiblings | ( | SCIP_TREE * | tree | ) |
gets number of siblings of the focus node
- Parameters
-
tree branch and bound tree
Definition at line 8224 of file tree.c.
References SCIP_Tree::nsiblings, and NULL.
Referenced by SCIPgetOpenNodesData().
◆ SCIPtreeGetNLeaves()
int SCIPtreeGetNLeaves | ( | SCIP_TREE * | tree | ) |
gets number of leaves in the tree (excluding children and siblings of focus nodes)
- Parameters
-
tree branch and bound tree
Definition at line 8234 of file tree.c.
References SCIP_Tree::leaves, NULL, and SCIPnodepqLen().
Referenced by SCIPsolveCIP(), SCIPtreeGetAvgLowerbound(), SCIPtreeGetBestNode(), and SCIPtreeGetNNodes().
◆ SCIPtreeGetNNodes()
int SCIPtreeGetNNodes | ( | SCIP_TREE * | tree | ) |
gets number of open nodes in the tree (children + siblings + leaves)
- Parameters
-
tree branch and bound tree
Definition at line 8244 of file tree.c.
References SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, and SCIPtreeGetNLeaves().
Referenced by SCIPgetNNodesLeft(), SCIPprimalHeuristics(), SCIPprintTreeStatistics(), SCIPsolve(), SCIPsolveCIP(), and solveNode().
◆ SCIPtreeIsPathComplete()
returns whether the active path goes completely down to the focus node
- Parameters
-
tree branch and bound tree
Definition at line 8254 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by forkCreate(), forkFree(), junctionInit(), nodeAssignParent(), probingnodeUpdate(), pseudoforkCreate(), SCIPnodeCreateChild(), SCIPnodeFocus(), SCIPtreeHasCurrentNodeLP(), and treeCreateProbingNode().
◆ SCIPtreeProbing()
returns whether the current node is a temporary probing node
- Parameters
-
tree branch and bound tree
Definition at line 8271 of file tree.c.
References SCIP_Node::nodetype, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_NODETYPE_PROBINGNODE, and SCIPnodeGetDepth().
Referenced by focusnodeCleanupVars(), focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToLeaf(), focusnodeToPseudofork(), nodeActivate(), nodeDeactivate(), nodeReleaseParent(), propAndSolve(), SCIPaddRowProbing(), SCIPaggregateVars(), SCIPapplyCutsProbing(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(), SCIPchgVarObjProbing(), SCIPchgVarUbProbing(), SCIPconshdlrInitLP(), SCIPendProbing(), SCIPendStrongbranch(), SCIPfixVarProbing(), SCIPgetProbingDepth(), SCIPgetVarObjProbing(), SCIPgetVarStrongbranchFrac(), SCIPinProbing(), SCIPmultiaggregateVar(), SCIPnewProbingNode(), SCIPnodeFocus(), SCIPnodeFree(), SCIPpriceLoop(), SCIPprimalHeuristics(), SCIPpropagateProbing(), SCIPpropagateProbingImplications(), SCIPsetProbingLPState(), SCIPsolLinkLPSol(), SCIPsolveProbingRelax(), SCIPstartDive(), SCIPstartProbing(), SCIPstartStrongbranch(), SCIPtreeBacktrackProbing(), SCIPtreeClear(), SCIPtreeCreatePresolvingRoot(), SCIPtreeCreateProbingNode(), SCIPtreeCreateRoot(), SCIPtreeEndProbing(), SCIPtreeFree(), SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), SCIPtreeGetFocusDepth(), SCIPtreeGetFocusNode(), SCIPtreeGetProbingDepth(), SCIPtreeHasCurrentNodeLP(), SCIPtreeIsPathComplete(), SCIPtreeLoadLP(), SCIPtreeLoadLPState(), SCIPtreeLoadProbingLPState(), SCIPtreeMarkProbingNodeHasLP(), SCIPtreeMarkProbingObjChanged(), SCIPtreeProbingObjChanged(), SCIPtreeSetProbingLPState(), SCIPtreeStartProbing(), SCIPupdateVarPseudocost(), solveProbingLP(), treeBacktrackProbing(), treeCheckPath(), treeCreateProbingNode(), and treeUpdatePathLPSize().
◆ SCIPtreeGetProbingRoot()
returns the temporary probing root node, or NULL if the we are not in probing mode
- Parameters
-
tree branch and bound tree
Definition at line 8284 of file tree.c.
References SCIP_Node::nodetype, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_NODETYPE_PROBINGNODE, and SCIPnodeGetDepth().
◆ SCIPtreeGetProbingDepth()
int SCIPtreeGetProbingDepth | ( | SCIP_TREE * | tree | ) |
returns the current probing depth, i.e. the number of probing sub nodes existing in the probing path
- Parameters
-
tree branch and bound tree
Definition at line 8417 of file tree.c.
References NULL, SCIP_Tree::probingroot, SCIPnodeGetDepth(), SCIPtreeGetCurrentDepth(), and SCIPtreeProbing().
Referenced by performStrongbranchWithPropagation(), SCIPbacktrackProbing(), SCIPgetProbingDepth(), SCIPtreeBacktrackProbing(), and treeBacktrackProbing().
◆ SCIPtreeGetFocusNode()
gets focus node of the tree
- Parameters
-
tree branch and bound tree
Definition at line 8297 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by applyBounding(), enforceConstraints(), freeReoptSolve(), freeSolve(), priceAndCutLoop(), SCIPconflictstoreAddConflict(), SCIPconstructCurrentLP(), SCIPgetFocusNode(), SCIPnodepqBound(), SCIPpriceLoop(), SCIPprimalHeuristics(), SCIPsolveCIP(), solveNode(), solveNodeInitialLP(), solveNodeRelax(), updateEstimate(), updateLoopStatus(), and updatePseudocost().
◆ SCIPtreeGetFocusDepth()
int SCIPtreeGetFocusDepth | ( | SCIP_TREE * | tree | ) |
gets depth of focus node in the tree, or -1 if no focus node exists
gets depth of focus node in the tree
- Parameters
-
tree branch and bound tree
Definition at line 8314 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by conflictAddConflictCons(), conflictAddConflictset(), conflictAnalyze(), conflictAnalyzeDualProof(), conflictCreateReconvergenceConss(), createAndAddProofcons(), getDualProof(), getFarkasProof(), SCIPconflictFlushConss(), SCIPgetFocusDepth(), and SCIPprimalHeuristics().
◆ SCIPtreeHasFocusNodeLP()
returns, whether the LP was or is to be solved in the focus node
- Parameters
-
tree branch and bound tree
Definition at line 8331 of file tree.c.
References SCIP_Tree::focusnodehaslp, and NULL.
Referenced by addCurrentSolution(), enforceConstraints(), propAndSolve(), SCIPprimalHeuristics(), SCIPsolveCIP(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPtreeHasCurrentNodeLP(), solveNode(), solveNodeLP(), and updateEstimate().
◆ SCIPtreeSetFocusNodeLP()
sets mark to solve or to ignore the LP while processing the focus node
- Parameters
-
tree branch and bound tree solvelp should the LP be solved in focus node?
Definition at line 8341 of file tree.c.
References SCIP_Tree::focusnodehaslp, and NULL.
Referenced by enforceConstraints(), propAndSolve(), SCIPsetFocusnodeLP(), and solveNode().
◆ SCIPtreeIsFocusNodeLPConstructed()
returns whether the LP of the focus node is already constructed
- Parameters
-
tree branch and bound tree
Definition at line 8352 of file tree.c.
References SCIP_Tree::focuslpconstructed, and NULL.
Referenced by SCIPconstructCurrentLP(), SCIPendDive(), SCIPgetLPCols(), SCIPgetLPColsData(), SCIPgetLPRows(), SCIPgetLPRowsData(), SCIPgetLPSolstat(), SCIPgetNLPCols(), SCIPgetNLPRows(), SCIPisLPConstructed(), SCIPpricestoreApplyVars(), SCIPstartDive(), SCIPwriteLP(), and solveProbingLP().
◆ SCIPtreeInRepropagation()
returns whether the focus node is already solved and only propagated again
- Parameters
-
tree branch and bound tree
Definition at line 8362 of file tree.c.
References SCIP_Tree::focusnode, NULL, SCIP_NODETYPE_REFOCUSNODE, and SCIPnodeGetType().
Referenced by primalAddSol(), primalSetCutoffbound(), and SCIPinRepropagation().
◆ SCIPtreeGetCurrentNode()
gets current node of the tree, i.e. the last node in the active path, or NULL if no current node exists
- Parameters
-
tree branch and bound tree
Definition at line 8372 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by primalAddSol(), propagateDomains(), SCIPaddCons(), SCIPaddConsLocal(), SCIPaddRow(), SCIPaddRowDive(), SCIPaddRowProbing(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarLbProbing(), SCIPchgVarObjProbing(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPchgVarUbProbing(), SCIPdelConsLocal(), SCIPfixVarProbing(), SCIPgetCurrentNode(), SCIPgetLocalDualbound(), SCIPgetLocalLowerbound(), SCIPgetLocalOrigEstimate(), SCIPgetLocalTransEstimate(), SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPnodeAddBoundinfer(), SCIPpriceLoop(), SCIPpropagateProbingImplications(), SCIPrelaxExec(), SCIPseparateCutpool(), SCIPseparateSolCutpool(), SCIPsepastoreApplyCuts(), SCIPsolve(), SCIPsolveCIP(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeBacktrackProbing(), SCIPtreeBranchVar(), SCIPtreeEndProbing(), SCIPtreeLoadProbingLPState(), SCIPtreeMarkProbingNodeHasLP(), SCIPtreeSetProbingLPState(), SCIPupdateLocalDualbound(), SCIPupdateLocalLowerbound(), sepastoreApplyLb(), sepastoreApplyUb(), and treeCreateProbingNode().
◆ SCIPtreeGetCurrentDepth()
int SCIPtreeGetCurrentDepth | ( | SCIP_TREE * | tree | ) |
gets depth of current node in the tree, i.e. the length of the active path minus 1, or -1 if no current node exists
- Parameters
-
tree branch and bound tree
Definition at line 8389 of file tree.c.
References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().
Referenced by addBoundViolated(), analyzeStrongbranch(), conflictAddConflictCons(), conflictAddConflictset(), conflictAnalyze(), conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), conflictAnalyzeLP(), conflictCreateReconvergenceConss(), conflictsetCalcInsertDepth(), priceAndCutLoop(), primalSetUpperbound(), propagationRound(), propAndSolve(), runBoundHeuristic(), SCIPaddCons(), SCIPaddPricedVar(), SCIPaddRow(), SCIPaggregateVars(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPbranchruleExecPseudoSol(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPconflictAnalyze(), SCIPconflictAnalyzePseudo(), SCIPconflictAnalyzeStrongbranch(), SCIPconflictFlushConss(), SCIPconshdlrInitLP(), SCIPconstructCurrentLP(), SCIPfixVar(), SCIPgetDepth(), SCIPgetSepaMinEfficacy(), SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarFixCons(), SCIPinferVarFixProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPisCutEfficacious(), SCIPisEfficacious(), SCIPmultiaggregateVar(), SCIPpricestoreAddProbVars(), SCIPpricestoreApplyVars(), SCIPprimalHeuristics(), SCIPremoveInefficaciousCuts(), SCIPseparateCutpool(), SCIPseparateSol(), SCIPseparateSolCutpool(), SCIPsolveCIP(), SCIPsolveProbingRelax(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeCalcNodeselPriority(), SCIPtreeGetProbingDepth(), solStamp(), solveNodeLP(), and solveProbingLP().
◆ SCIPtreeHasCurrentNodeLP()
returns, whether the LP was or is to be solved in the current node
- Parameters
-
tree branch and bound tree
Definition at line 8406 of file tree.c.
References NULL, SCIP_Tree::probingnodehaslp, SCIPtreeHasFocusNodeLP(), SCIPtreeIsPathComplete(), and SCIPtreeProbing().
Referenced by SCIPbranchGetBranchingPoint(), SCIPcreateLPSol(), SCIPgetColFarkasCoef(), SCIPgetColRedcost(), SCIPgetRowActivity(), SCIPgetRowFeasibility(), SCIPgetRowSolActivity(), SCIPgetRowSolFeasibility(), SCIPgetSolOrigObj(), SCIPgetSolTransObj(), SCIPgetSolVal(), SCIPgetVarSol(), SCIPgetVarSols(), SCIPhasCurrentNodeLP(), SCIPnodeAddBoundinfer(), SCIPpricestoreAddProbVars(), SCIPrecalcRowActivity(), SCIPseparateCutpool(), SCIPseparateSolCutpool(), SCIPsolCreateCurrentSol(), SCIPsolLinkCurrentSol(), SCIPsolveCIP(), and SCIPstartDive().
◆ SCIPtreeGetEffectiveRootDepth()
int SCIPtreeGetEffectiveRootDepth | ( | SCIP_TREE * | tree | ) |
returns the depth of the effective root node (i.e. the first depth level of a node with at least two children)
- Parameters
-
tree branch and bound tree
Definition at line 8428 of file tree.c.
References SCIP_Tree::effectiverootdepth, and NULL.
Referenced by conflictAnalyzeLP(), createAndAddProofcons(), runBoundHeuristic(), SCIPaddCons(), SCIPaddConsNode(), SCIPdelConsLocal(), SCIPdelConsNode(), SCIPgetEffectiveRootDepth(), SCIPnodepqBound(), and tightenSingleVar().
◆ SCIPtreeGetRootNode()
gets the root node of the tree
- Parameters
-
tree branch and bound tree
Definition at line 8439 of file tree.c.
References NULL, and SCIP_Tree::root.
Referenced by applyImplic(), initSolve(), SCIPgetRootNode(), SCIPreoptSplitRoot(), SCIPvarAddVlb(), SCIPvarAddVub(), SCIPvarFixBinary(), sepastoreApplyLb(), sepastoreApplyUb(), and varAddImplic().
◆ SCIPtreeProbingObjChanged()
returns whether we are in probing and the objective value of at least one column was changed
- Parameters
-
tree branch and bound tree
Definition at line 8450 of file tree.c.
References NULL, SCIP_Tree::probingobjchanged, and SCIPtreeProbing().
Referenced by SCIPchgVarObjProbing(), and SCIPisObjChangedProbing().
◆ SCIPtreeMarkProbingObjChanged()
void SCIPtreeMarkProbingObjChanged | ( | SCIP_TREE * | tree | ) |
marks the current probing node to have a changed objective function
- Parameters
-
tree branch and bound tree
Definition at line 8461 of file tree.c.
References NULL, SCIP_Tree::probingobjchanged, SCIPtreeProbing(), and TRUE.
Referenced by SCIPchgVarObjProbing().
◆ SCIPtreeGetPrioChild()
gets the best child of the focus node w.r.t. the node selection priority assigned by the branching rule
- Parameters
-
tree branch and bound tree
Definition at line 7092 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::nchildren, NULL, SCIP_Real, and SCIP_REAL_MIN.
Referenced by SCIPgetPrioChild().
◆ SCIPtreeGetPrioSibling()
gets the best sibling of the focus node w.r.t. the node selection priority assigned by the branching rule
- Parameters
-
tree branch and bound tree
Definition at line 7118 of file tree.c.
References SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIP_REAL_MIN, SCIP_Tree::siblings, and SCIP_Tree::siblingsprio.
Referenced by SCIPgetPrioSibling().
◆ SCIPtreeGetBestChild()
gets the best child of the focus node w.r.t. the node selection strategy
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7144 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::leaves, SCIP_Tree::nchildren, NULL, SCIPnodepqGetNodesel(), and SCIPnodeselCompare().
Referenced by SCIPgetBestChild(), and SCIPtreeGetBestNode().
◆ SCIPtreeGetBestSibling()
gets the best sibling of the focus node w.r.t. the node selection strategy
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7171 of file tree.c.
References SCIP_Tree::leaves, SCIP_Tree::nsiblings, NULL, SCIPnodepqGetNodesel(), SCIPnodeselCompare(), and SCIP_Tree::siblings.
Referenced by SCIPgetBestSibling(), and SCIPtreeGetBestNode().
◆ SCIPtreeGetBestLeaf()
gets the best leaf from the node queue w.r.t. the node selection strategy
- Parameters
-
tree branch and bound tree
Definition at line 7198 of file tree.c.
References SCIP_Tree::leaves, NULL, and SCIPnodepqFirst().
Referenced by SCIPgetBestLeaf(), SCIPnodeFocus(), and SCIPtreeGetBestNode().
◆ SCIPtreeGetBestNode()
gets the best node from the tree (child, sibling, or leaf) w.r.t. the node selection strategy
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7208 of file tree.c.
References SCIP_Tree::leaves, NULL, SCIPnodepqGetNodesel(), SCIPnodeselCompare(), SCIPtreeGetBestChild(), SCIPtreeGetBestLeaf(), SCIPtreeGetBestSibling(), and SCIPtreeGetNLeaves().
Referenced by SCIPgetBestNode().
◆ SCIPtreeGetLowerbound()
gets the minimal lower bound of all nodes in the tree
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7242 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::focusnode, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIPnodepqGetLowerbound(), and SCIP_Tree::siblings.
Referenced by priceAndCutLoop(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPbranchruleExecPseudoSol(), SCIPgetLowerbound(), SCIPnodeCutoff(), and SCIPnodeUpdateLowerbound().
◆ SCIPtreeGetLowerboundNode()
gets the node with minimal lower bound of all nodes in the tree (child, sibling, or leaf)
- Parameters
-
tree branch and bound tree set global SCIP settings
Definition at line 7280 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIPnodepqGetLowerboundNode(), SCIPsetInfinity(), SCIPsetIsLE(), SCIPsetIsLT(), SCIP_Tree::siblings, and SCIP_Tree::siblingsprio.
Referenced by SCIPgetBestboundNode().
◆ SCIPtreeGetAvgLowerbound()
gets the average lower bound of all nodes in the tree
- Parameters
-
tree branch and bound tree cutoffbound global cutoff bound
Definition at line 7332 of file tree.c.
References SCIP_Tree::children, SCIP_Tree::focusnode, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, nnodes, SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIPnodepqGetLowerboundSum(), SCIPtreeGetNLeaves(), and SCIP_Tree::siblings.
Referenced by SCIPgetAvgDualbound(), and SCIPgetAvgLowerbound().
◆ SCIPtreeWasNodeLastBranchParent()
query if focus node was already branched on
- Parameters
-
tree branch and bound tree node tree node, or NULL to check focus node
Definition at line 1033 of file tree.c.
References FALSE, SCIP_Tree::focusnode, SCIP_Tree::lastbranchparentid, NULL, SCIP_Node::number, and TRUE.
Referenced by SCIPwasNodeLastBranchParent().