Scippy

SCIP

Solving Constraint Integer Programs

tree.h File Reference

Detailed Description

internal methods for branch and bound tree

Author
Tobias Achterberg
Timo Berthold

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.

Functions

SCIP_RETCODE SCIPnodeCreateChild (SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Real nodeselprio, SCIP_Real estimate)
 
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)
 
SCIP_RETCODE SCIPnodeCaptureLPIState (SCIP_NODE *node, int nuses)
 
SCIP_RETCODE SCIPnodeReleaseLPIState (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_LP *lp)
 
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)
 
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)
 
void SCIPnodePropagateAgain (SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree)
 
void SCIPnodeMarkPropagated (SCIP_NODE *node, SCIP_TREE *tree)
 
SCIP_RETCODE SCIPnodeAddCons (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPnodeDelCons (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_CONS *cons)
 
void SCIPnodeGetConsProps (SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int *nconspropvars, int conspropvarssize)
 
void SCIPnodeGetBdChgsAfterDual (SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int start, int *nbranchvars, int branchvarssize)
 
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)
 
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)
 
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)
 
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)
 
void SCIPnodeUpdateLowerbound (SCIP_NODE *node, SCIP_STAT *stat, SCIP_SET *set, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real newbound)
 
SCIP_RETCODE SCIPnodeUpdateLowerboundLP (SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_LP *lp)
 
void SCIPchildChgNodeselPrio (SCIP_TREE *tree, SCIP_NODE *child, SCIP_Real priority)
 
void SCIPnodeSetEstimate (SCIP_NODE *node, SCIP_SET *set, SCIP_Real newestimate)
 
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)
 
void SCIPnodeGetDualBoundchgs (SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_BOUNDTYPE *boundtypes, int *nvars, int varssize)
 
int SCIPnodeGetNDualBndchgs (SCIP_NODE *node)
 
SCIP_RETCODE SCIPtreeCreate (SCIP_TREE **tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_NODESEL *nodesel)
 
SCIP_RETCODE SCIPtreeFree (SCIP_TREE **tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeClear (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
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)
 
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)
 
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)
 
SCIP_NODESELSCIPtreeGetNodesel (SCIP_TREE *tree)
 
SCIP_RETCODE SCIPtreeSetNodesel (SCIP_TREE *tree, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_NODESEL *nodesel)
 
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)
 
SCIP_RETCODE SCIPtreeLoadLP (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_Bool *initroot)
 
SCIP_RETCODE SCIPtreeLoadLPState (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
SCIP_Real SCIPtreeCalcNodeselPriority (SCIP_TREE *tree, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_BRANCHDIR branchdir, SCIP_Real targetvalue)
 
SCIP_Real SCIPtreeCalcChildEstimate (SCIP_TREE *tree, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_Real targetvalue)
 
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)
 
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)
 
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)
 
SCIP_RETCODE SCIPtreeAddDiveBoundChange (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Bool preferred)
 
void SCIPtreeGetDiveBoundChangeData (SCIP_TREE *tree, SCIP_VAR ***variables, SCIP_BRANCHDIR **directions, SCIP_Real **values, int *ndivebdchgs, SCIP_Bool preferred)
 
void SCIPtreeClearDiveBoundChanges (SCIP_TREE *tree)
 
SCIP_RETCODE SCIPtreeStartProbing (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_PROB *transprob, SCIP_Bool strongbranching)
 
SCIP_RETCODE SCIPtreeCreateProbingNode (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeSetProbingLPState (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_LP *lp, SCIP_LPISTATE **lpistate, SCIP_LPINORMS **lpinorms, SCIP_Bool primalfeas, SCIP_Bool dualfeas)
 
SCIP_RETCODE SCIPtreeLoadProbingLPState (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeMarkProbingNodeHasLP (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_LP *lp)
 
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)
 
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)
 
SCIP_RETCODE SCIPtreeStoreRelaxSol (SCIP_TREE *tree, SCIP_SET *set, SCIP_RELAXATION *relaxation, SCIP_PROB *transprob)
 
SCIP_RETCODE SCIPtreeRestoreRelaxSol (SCIP_TREE *tree, SCIP_SET *set, SCIP_RELAXATION *relaxation, SCIP_PROB *transprob)
 
int SCIPtreeGetNChildren (SCIP_TREE *tree)
 
int SCIPtreeGetNSiblings (SCIP_TREE *tree)
 
int SCIPtreeGetNLeaves (SCIP_TREE *tree)
 
int SCIPtreeGetNNodes (SCIP_TREE *tree)
 
SCIP_Bool SCIPtreeIsPathComplete (SCIP_TREE *tree)
 
SCIP_Bool SCIPtreeProbing (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetProbingRoot (SCIP_TREE *tree)
 
int SCIPtreeGetProbingDepth (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetFocusNode (SCIP_TREE *tree)
 
int SCIPtreeGetFocusDepth (SCIP_TREE *tree)
 
SCIP_Bool SCIPtreeHasFocusNodeLP (SCIP_TREE *tree)
 
void SCIPtreeSetFocusNodeLP (SCIP_TREE *tree, SCIP_Bool solvelp)
 
SCIP_Bool SCIPtreeIsFocusNodeLPConstructed (SCIP_TREE *tree)
 
SCIP_Bool SCIPtreeInRepropagation (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetCurrentNode (SCIP_TREE *tree)
 
int SCIPtreeGetCurrentDepth (SCIP_TREE *tree)
 
SCIP_Bool SCIPtreeHasCurrentNodeLP (SCIP_TREE *tree)
 
int SCIPtreeGetEffectiveRootDepth (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetRootNode (SCIP_TREE *tree)
 
SCIP_Bool SCIPtreeProbingObjChanged (SCIP_TREE *tree)
 
void SCIPtreeMarkProbingObjChanged (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetPrioChild (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetPrioSibling (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetBestChild (SCIP_TREE *tree, SCIP_SET *set)
 
SCIP_NODESCIPtreeGetBestSibling (SCIP_TREE *tree, SCIP_SET *set)
 
SCIP_NODESCIPtreeGetBestLeaf (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetBestNode (SCIP_TREE *tree, SCIP_SET *set)
 
SCIP_Real SCIPtreeGetLowerbound (SCIP_TREE *tree, SCIP_SET *set)
 
SCIP_NODESCIPtreeGetLowerboundNode (SCIP_TREE *tree, SCIP_SET *set)
 
SCIP_Real SCIPtreeGetAvgLowerbound (SCIP_TREE *tree, SCIP_Real cutoffbound)
 
SCIP_Bool SCIPtreeWasNodeLastBranchParent (SCIP_TREE *tree, SCIP_NODE *node)
 

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
nodepointer to node data structure
blkmemblock memory
setglobal SCIP settings
statproblem statistics
treebranch and bound tree
nodeselprionode selection priority of new node
estimateestimate for (transformed) objective value of best feasible solution in subtree

Definition at line 993 of file tree.c.

References SCIP_Tree::focusnode, SCIP_Tree::lastbranchparentid, SCIP_Stat::ncreatednodes, SCIP_Stat::ncreatednodesrun, nodeAssignParent(), nodeCreate(), NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeSetEstimate(), SCIPsetDebugMsg, SCIPtreeIsPathComplete(), SCIPvisualNewChild(), and SCIP_Stat::visual.

Referenced by propAndSolve(), SCIPcreateChild(), SCIPreoptApply(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), SCIPtreeBranchVarNary(), SCIPtreeCreateRoot(), and solveNode().

◆ 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 
)

◆ SCIPnodeCaptureLPIState()

SCIP_RETCODE SCIPnodeCaptureLPIState ( SCIP_NODE node,
int  nuses 
)

increases the reference counter of the LP state in the fork or subroot node

Parameters
nodefork/subroot node
nusesnumber to add to the usage counter

Definition at line 247 of file tree.c.

References SCIP_Node::data, SCIP_Node::fork, forkCaptureLPIState(), SCIP_Fork::nlpistateref, SCIP_Subroot::nlpistateref, NULL, SCIP_INVALIDDATA, SCIP_NODETYPE_FORK, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPABORT, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIP_Node::subroot, and subrootCaptureLPIState().

Referenced by junctionInit(), and pseudoforkCreate().

◆ SCIPnodeReleaseLPIState()

SCIP_RETCODE SCIPnodeReleaseLPIState ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_LP lp 
)

◆ 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
nodepointer to node to focus (or NULL to remove focus); the node is freed, if it was cut off due to a cut off subtree
blkmemblock memory buffers
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
transprobtransformed problem
origproboriginal problem
primalprimal data
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
branchcandbranching candidate storage
conflictconflict analysis data
conflictstoreconflict store
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
cliquetableclique table data structure
cutoffpointer to store whether the given node can be cut off
postponedwas the current focus node postponed?
exitsolveare we in exitsolve stage, so we only need to loose the children

Definition at line 4309 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(), SCIPdebugCheckGlobalLowerbound, SCIPdebugCheckLocalLowerbound, 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()

◆ 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
nodenode that should be propagated again
setglobal SCIP settings
statproblem statistics
treebranch and bound tree

Definition at line 1248 of file tree.c.

References SCIP_Node::active, SCIP_Node::depth, NULL, SCIP_Node::reprop, SCIP_Tree::repropdepth, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPsetDebugMsg, SCIPvisualMarkedRepropagateNode(), TRUE, and SCIP_Stat::visual.

Referenced by SCIPconflictFlushConss(), SCIPnodeAddBoundinfer(), SCIPnodeAddHoleinfer(), SCIPrepropagateNode(), and tightenSingleVar().

◆ SCIPnodeMarkPropagated()

void SCIPnodeMarkPropagated ( SCIP_NODE node,
SCIP_TREE tree 
)

marks node, that it is completely propagated in the current repropagation subtree level

Parameters
nodenode that should be marked to be propagated
treebranch and bound tree

Definition at line 1274 of file tree.c.

References SCIP_Node::active, SCIP_Node::depth, FALSE, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Node::reprop, SCIP_Tree::repropdepth, and SCIP_Node::repropsubtreemark.

Referenced by propagateDomains().

◆ 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
nodenode to add constraint to
blkmemblock memory
setglobal SCIP settings
statproblem statistics
treebranch and bound tree
consconstraint to add

Definition at line 1608 of file tree.c.

References SCIP_Node::active, SCIP_ConsSetChg::addedconss, SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, SCIP_Stat::nactiveconssadded, NULL, SCIP_Tree::root, SCIP_Cons::scip, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPconsIsActive(), SCIPconsIsGlobal(), SCIPconssetchgAddAddedCons(), SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetType(), and SCIP_Cons::validdepth.

Referenced by createAndAddProofcons(), SCIPaddCons(), SCIPaddConsNode(), and tightenSingleVar().

◆ SCIPnodeDelCons()

SCIP_RETCODE SCIPnodeDelCons ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_CONS cons 
)

locally deletes constraint at the given node by disabling its separation, enforcing, and propagation capabilities at the node; captures constraint; disables constraint, if node is active

Parameters
nodenode to add constraint to
blkmemblock memory
setglobal SCIP settings
statproblem statistics
treebranch and bound tree
consconstraint to locally delete

Definition at line 1651 of file tree.c.

References SCIP_Node::active, SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_ConsSetChg::disabledconss, SCIP_Cons::enabled, SCIP_Cons::name, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsDisable(), SCIPconssetchgAddDisabledCons(), SCIPsetDebugMsg, and SCIP_Cons::updatedisable.

Referenced by SCIPdelConsLocal(), and SCIPdelConsNode().

◆ 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
nodenode
varsarray of variables on which constraint propagation triggers a bound change
varboundsarray of bounds set by constraint propagation
varboundtypesarray of boundtypes set by constraint propagation
nconspropvarsnumber 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
conspropvarssizeavailable slots in arrays

Definition at line 7875 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
nodenode
varsarray of variables on which the branching has been performed in the parent node
varboundsarray of bounds which the branching in the parent node set
varboundtypesarray of boundtypes which the branching in the parent node set
startfirst free slot in the arrays
nbranchvarsnumber 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
branchvarssizeavailable slots in arrays

Definition at line 7963 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
nodenode to add bound change to
blkmemblock memory
setglobal SCIP settings
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
varvariable to change the bounds for
newboundnew value for bound
boundtypetype of bound: lower or upper bound
inferconsconstraint that deduced the bound change, or NULL
inferproppropagator that deduced the bound change, or NULL
inferinfouser information for inference to help resolving the conflict
probingchangeis the bound change a temporary setting due to probing?

Definition at line 1812 of file tree.c.

References SCIP_Node::active, SCIP_DomChgDyn::boundchgs, SCIP_Node::depth, SCIP_Node::domchg, SCIP_DomChg::domchgdyn, SCIP_DomChgDyn::domchgtype, SCIP_Tree::effectiverootdepth, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Stat::lpcount, MAX, SCIP_DomChgDyn::nboundchgs, SCIP_BoundChg::newbound, SCIP_Node::nodetype, NULL, SCIP_Node::number, SCIP_Tree::path, SCIP_Tree::probingroot, SCIP_Tree::root, SCIP_Bool, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_DOMCHGTYPE_DYNAMIC, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPABORT, SCIPboundchgApply(), SCIPconsGetName(), SCIPdebugCheckInference, SCIPdomchgAddBoundchg(), SCIPerrorMessage, SCIPlpGetModifiedProvedPseudoObjval(), SCIPlpGetModifiedPseudoObjval(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodePropagateAgain(), SCIPnodeUpdateLowerbound(), SCIPpropGetName(), SCIPsetDebugMsg, SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPstatIncrement, SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarChgBdGlobal(), SCIPvarGetConflictingBdchgDepth(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbvarBound(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), treeAddPendingBdchg(), and SCIP_BoundChg::var.

Referenced by SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPnodeAddBoundchg(), SCIPnodePropagateImplics(), and treeApplyPendingBdchgs().

◆ SCIPnodeAddBoundchg()

SCIP_RETCODE SCIPnodeAddBoundchg ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_CLIQUETABLE cliquetable,
SCIP_VAR var,
SCIP_Real  newbound,
SCIP_BOUNDTYPE  boundtype,
SCIP_Bool  probingchange 
)

adds bound change to focus node, or child of focus node, or probing node; if possible, adjusts bound to integral value

Parameters
nodenode to add bound change to
blkmemblock memory
setglobal SCIP settings
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
varvariable to change the bounds for
newboundnew value for bound
boundtypetype of bound: lower or upper bound
probingchangeis the bound change a temporary setting due to probing?

Definition at line 2087 of file tree.c.

References NULL, SCIP_CALL, SCIP_OKAY, and SCIPnodeAddBoundinfer().

Referenced by addSplitcons(), applyImplic(), changeAncestorBranchings(), conflictAddConflictCons(), fixBounds(), fixInterdiction(), focusnodeCleanupVars(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarLbNode(), SCIPchgVarLbProbing(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPchgVarUbNode(), SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPshrinkDisjunctiveVarSet(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), SCIPtreeBranchVarNary(), SCIPvarAddVlb(), SCIPvarAddVub(), SCIPvarFixBinary(), sepastoreApplyLb(), sepastoreApplyUb(), tightenSingleVar(), and varAddImplic().

◆ SCIPnodeAddHoleinfer()

SCIP_RETCODE SCIPnodeAddHoleinfer ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_EVENTQUEUE eventqueue,
SCIP_VAR var,
SCIP_Real  left,
SCIP_Real  right,
SCIP_CONS infercons,
SCIP_PROP inferprop,
int  inferinfo,
SCIP_Bool  probingchange,
SCIP_Bool added 
)

adds hole with inference information to focus node, child of focus node, or probing node; if possible, adjusts bound to integral value; at most one of infercons and inferprop may be non-NULL

Parameters
nodenode to add bound change to
blkmemblock memory
setglobal SCIP settings
statproblem statistics
treebranch and bound tree
eventqueueevent queue
varvariable to change the bounds for
leftleft bound of open interval defining the hole (left,right)
rightright bound of open interval defining the hole (left,right)
inferconsconstraint that deduced the bound change, or NULL
inferproppropagator that deduced the bound change, or NULL
inferinfouser information for inference to help resolving the conflict
probingchangeis the bound change a temporary setting due to probing?
addedpointer to store whether the hole was added, or NULL

Definition at line 2116 of file tree.c.

References SCIP_Node::active, SCIP_Node::depth, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Stat::nholechgs, SCIP_Node::nodetype, SCIP_Stat::nprobholechgs, NULL, SCIP_Tree::probingroot, SCIP_Tree::root, SCIP_CALL, SCIP_INVALIDDATA, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPABORT, SCIPconsGetName(), SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodePropagateAgain(), SCIPpropGetName(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsGE(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPvarAddHoleGlobal(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbvarHole(), SCIPvarGetStatus(), and SCIPvarGetUbLocal().

Referenced by SCIPnodeAddHolechg().

◆ SCIPnodeAddHolechg()

SCIP_RETCODE SCIPnodeAddHolechg ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_EVENTQUEUE eventqueue,
SCIP_VAR var,
SCIP_Real  left,
SCIP_Real  right,
SCIP_Bool  probingchange,
SCIP_Bool added 
)

adds hole change to focus node, or child of focus node

Parameters
nodenode to add bound change to
blkmemblock memory
setglobal SCIP settings
statproblem statistics
treebranch and bound tree
eventqueueevent queue
varvariable to change the bounds for
leftleft bound of open interval defining the hole (left,right)
rightright bound of open interval defining the hole (left,right)
probingchangeis the bound change a temporary setting due to probing?
addedpointer to store whether the hole was added, or NULL

Definition at line 2237 of file tree.c.

References SCIP_Node::depth, SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeAddHoleinfer(), SCIPsetDebugMsg, and SCIPvarGetName().

◆ 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
nodenode to update lower bound for
statproblem statistics
setglobal SCIP settings
treebranch and bound tree
transprobtransformed problem after presolve
origproboriginal problem
newboundnew lower bound for the node (if it's larger than the old one)

Definition at line 2365 of file tree.c.

References SCIP_Node::depth, SCIP_Node::estimate, SCIP_Stat::lastlowerbound, SCIP_Node::lowerbound, MAX, NULL, SCIP_Stat::rootlowerbound, SCIP_NODETYPE_PROBINGNODE, SCIP_Real, SCIPnodeGetType(), SCIPsetInfinity(), SCIPsetIsEQ(), SCIPstatUpdatePrimalDualIntegrals(), SCIPtreeGetLowerbound(), SCIPvisualLowerbound(), and SCIP_Stat::visual.

Referenced by applyBounding(), initSolve(), priceAndCutLoop(), SCIPnodeAddBoundinfer(), SCIPnodeUpdateLowerboundLP(), SCIPpriceLoop(), SCIPupdateNodeLowerbound(), solveNode(), and solveNodeRelax().

◆ SCIPnodeUpdateLowerboundLP()

SCIP_RETCODE SCIPnodeUpdateLowerboundLP ( SCIP_NODE node,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_LP lp 
)

updates lower bound of node using lower bound of LP

Parameters
nodenode to set lower bound for
setglobal SCIP settings
statproblem statistics
treebranch and bound tree
transprobtransformed problem after presolve
origproboriginal problem
lpLP data

Definition at line 2409 of file tree.c.

References SCIP_Lp::flushed, SCIP_Lp::lpsolstat, NULL, SCIP_CALL, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_OKAY, SCIP_Real, SCIPlpGetObjval(), SCIPlpGetProvedLowerbound(), and SCIPnodeUpdateLowerbound().

Referenced by priceAndCutLoop(), propAndSolve(), SCIPendDive(), SCIPtreeEndProbing(), and solveNodeInitialLP().

◆ SCIPchildChgNodeselPrio()

void SCIPchildChgNodeselPrio ( SCIP_TREE tree,
SCIP_NODE child,
SCIP_Real  priority 
)

change the node selection priority of the given child

Parameters
treebranch and bound tree
childchild to update the node selection priority
prioritynode selection priority value

Definition at line 2443 of file tree.c.

References SCIP_Child::arraypos, SCIP_Node::child, SCIP_Tree::childrenprio, SCIP_Node::data, SCIP_NODETYPE_CHILD, and SCIPnodeGetType().

Referenced by SCIPchgChildPrio().

◆ SCIPnodeSetEstimate()

void SCIPnodeSetEstimate ( SCIP_NODE node,
SCIP_SET set,
SCIP_Real  newestimate 
)

sets the node's estimated bound to the new value

Parameters
nodenode to update lower bound for
setglobal SCIP settings
newestimatenew estimated bound for the node

Definition at line 2461 of file tree.c.

References SCIP_Node::estimate, SCIP_Node::lowerbound, NULL, and SCIPsetIsRelGE().

Referenced by SCIPnodeCreateChild(), SCIPreoptApply(), and updateEstimate().

◆ SCIPnodePropagateImplics()

SCIP_RETCODE SCIPnodePropagateImplics ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_CLIQUETABLE cliquetable,
SCIP_Bool cutoff 
)

propagates implications of binary fixings at the given node triggered by the implication graph and the clique table

Parameters
nodenode to propagate implications on
blkmemblock memory
setglobal SCIP settings
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
cutoffpointer to store whether the node can be cut off

Definition at line 2477 of file tree.c.

References SCIP_Node::domchg, FALSE, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPboundchgGetBoundtype(), SCIPboundchgGetVar(), SCIPboundchgIsRedundant(), SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPdomchgGetBoundchg(), SCIPdomchgGetNBoundchgs(), SCIPnodeAddBoundinfer(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeIsActive(), SCIPsetDebugMsg, SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsFeasLT(), SCIPvarGetCliques(), SCIPvarGetImplBounds(), SCIPvarGetImplTypes(), SCIPvarGetImplVars(), SCIPvarGetLbLocal(), SCIPvarGetNCliques(), SCIPvarGetNImpls(), SCIPvarGetProbvar(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), and TRUE.

Referenced by SCIPpropagateProbingImplications().

◆ 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
nodenode data
varsarray of variables on which the bound change is based on dual information
boundsarray of bounds which are based on dual information
boundtypesarray of boundtypes which are based on dual information
nvarsnumber 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
varssizeavailable slots in arrays

Definition at line 7645 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
nodenode

Definition at line 7600 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
treepointer to tree data structure
blkmemblock memory buffers
setglobal SCIP settings
nodeselnode selector to use for sorting leaves in the priority queue

Definition at line 4776 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
treepointer to tree data structure
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
lpcurrent LP data

Definition at line 4857 of file tree.c.

References BMSfreeBlockMemoryArray, BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, SCIPnodepqFree(), SCIPsetDebugMsg, and SCIPtreeProbing().

Referenced by freeTransform(), and freeTransforming().

◆ SCIPtreeClear()

◆ 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
treetree data structure
reoptreoptimization data structure
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
lpcurrent LP data

Definition at line 4967 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
treetree data structure
reoptreoptimization data structure
blkmemblock memory buffers
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
transprobtransformed problem
origproboriginal problem
primalprimal data
lpcurrent LP data
branchcandbranching candidate storage
conflictconflict analysis data
conflictstoreconflict store
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
cliquetableclique table data structure

Definition at line 5013 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
treetree data structure
reoptreoptimization data structure
blkmemblock memory buffers
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
transprobtransformed problem
origproboriginal problem
primalprimal data
lpcurrent LP data
branchcandbranching candidate storage
conflictconflict analysis data
conflictstoreconflict store
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
cliquetableclique table data structure

Definition at line 5054 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
treebranch and bound tree

Definition at line 5097 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
treebranch and bound tree
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
nodeselnode selector to use for sorting the nodes in the queue

Definition at line 5107 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
treebranch and bound tree
reoptreoptimization data structure
blkmemblock memory
setglobal SCIP settings
statdynamic problem statistics
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
lpcurrent LP data
cutoffboundcutoff bound: all nodes with lowerbound >= cutoffbound are cut off

Definition at line 5135 of file tree.c.

References SCIP_Tree::children, SCIP_Tree::cutoffdelayed, SCIP_Tree::effectiverootdepth, FALSE, SCIP_Tree::focusnode, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Tree::root, SCIP_CALL, SCIP_EVENTTYPE_NODEINFEASIBLE, SCIP_OKAY, SCIPlpDiving(), SCIPlpGetSolstat(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodepqBound(), SCIPreoptCheckCutoff(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPvisualCutoffNode(), SCIP_Tree::siblings, TRUE, and SCIP_Stat::visual.

Referenced by primalSetCutoffbound(), SCIPendDive(), SCIPpruneTree(), and SCIPsolveCIP().

◆ 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 
)

◆ SCIPtreeLoadLPState()

SCIP_RETCODE SCIPtreeLoadLPState ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_PROB prob,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp 
)

◆ 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
treebranch and bound tree
setglobal SCIP settings
statdynamic problem statistics
varvariable, of which the branching factor should be applied, or NULL
branchdirtype of branching that was performed: upwards, downwards, or fixed fixed should only be used, when both bounds changed
targetvaluenew value of the variable in the child node

Definition at line 5221 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
treebranch and bound tree
setglobal SCIP settings
statdynamic problem statistics
varvariable, of which the branching factor should be applied, or NULL
targetvaluenew value of the variable in the child node

Definition at line 5371 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
treebranch and bound tree
reoptreoptimization data structure
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
transprobtransformed problem after presolve
origproboriginal problem
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
varvariable to branch on
valvalue to branch on or SCIP_INVALID for branching on current LP/pseudo solution. A branching value is required for branching on continuous variables
downchildpointer to return the left child with variable rounded down, or NULL
eqchildpointer to return the middle child with variable fixed, or NULL
upchildpointer to return the right child with variable rounded up, or NULL

Definition at line 5430 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
treebranch and bound tree
reoptreoptimization data structure
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
transprobtransformed problem after presolve
origproboriginal problem
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
varvariable to branch on
leftleft side of the domain hole
rightright side of the domain hole
downchildpointer to return the left child with variable rounded down, or NULL
upchildpointer to return the right child with variable rounded up, or NULL

Definition at line 5761 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
treebranch and bound tree
reoptreoptimization data structure
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
transprobtransformed problem after presolve
origproboriginal problem
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
varvariable to branch on
valvalue to branch on or SCIP_INVALID for branching on current LP/pseudo solution. A branching value is required for branching on continuous variables
nattempted number of children to be created, must be >= 2
minwidthminimal domain width in children
widthfactormultiplier for children domain width with increasing distance from val, must be >= 1.0
nchildrenbuffer to store number of created children, or NULL

Definition at line 5903 of file tree.c.

References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, MAX, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPrelDiff(), SCIPsetCeil(), SCIPsetDebugMsg, SCIPsetEpsilon(), SCIPsetFloor(), SCIPsetIsFeasGE(), SCIPsetIsFeasIntegral(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetIsPositive(), SCIPsetIsRelEQ(), SCIPsetIsRelGT(), SCIPsetIsRelLT(), SCIPsetIsZero(), SCIPtreeBranchVar(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetProbvar(), SCIPvarGetProbvarSum(), SCIPvarGetSol(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarGetWorstBoundLocal(), SCIPvarIsActive(), SCIPvisualUpdateChild(), and SCIP_Stat::visual.

Referenced by SCIPbranchVarValNary().

◆ SCIPtreeAddDiveBoundChange()

SCIP_RETCODE SCIPtreeAddDiveBoundChange ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_VAR var,
SCIP_BRANCHDIR  dir,
SCIP_Real  value,
SCIP_Bool  preferred 
)

adds a diving bound change to the tree together with the information if this is a bound change for the preferred direction or not

Parameters
treebranch and bound tree
blkmemblock memory buffers
varvariable to apply the bound change to
dirdirection of the bound change
valuevalue to adjust this variable bound to
preferredis this a bound change for the preferred child?

Definition at line 6274 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
treebranch and bound tree
variablespointer to store variables for the specified direction
directionspointer to store the branching directions
valuespointer to store bound change values
ndivebdchgspointer to store the number of dive bound changes
preferredshould the dive bound changes for the preferred child be output?

Definition at line 6306 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
treebranch and bound tree

Definition at line 6329 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 
)

◆ 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
treebranch and bound tree
blkmemblock memory
setglobal SCIP settings
lpcurrent LP data

Definition at line 6499 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
treebranch and bound tree
blkmemblock memory
lpcurrent LP data
lpistatepointer to LP state information (like basis information)
lpinormspointer to LP pricing norms information
primalfeasprimal feasibility when LP state information was stored
dualfeasdual feasibility when LP state information was stored

Definition at line 6524 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()

◆ SCIPtreeMarkProbingNodeHasLP()

SCIP_RETCODE SCIPtreeMarkProbingNodeHasLP ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_LP lp 
)

marks the probing node to have a solved LP relaxation

Parameters
treebranch and bound tree
blkmemblock memory
lpcurrent LP data

Definition at line 6660 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
treebranch and bound tree
reoptreoptimization data structure
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
transprobtransformed problem
origproboriginal problem
lpcurrent LP data
primalprimal data structure
branchcandbranching candidate storage
eventqueueevent queue
eventfilterglobal event filter
cliquetableclique table data structure
probingdepthprobing depth of the node in the probing path that should be reactivated

Definition at line 6834 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
treebranch and bound tree
reoptreoptimization data structure
blkmemblock memory buffers
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
lpcurrent LP data
relaxationglobal relaxation data
primalPrimal LP data
branchcandbranching candidate storage
eventqueueevent queue
eventfilterglobal event filter
cliquetableclique table data structure

Definition at line 6868 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
treebranch and bound tree
setglobal SCIP settings
relaxationglobal relaxation data
transprobtransformed problem after presolve

Definition at line 7029 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
treebranch and bound tree
setglobal SCIP settings
relaxationglobal relaxation data
transprobtransformed problem after presolve

Definition at line 7073 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
treebranch and bound tree

Definition at line 8228 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
treebranch and bound tree

Definition at line 8238 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
treebranch and bound tree

Definition at line 8248 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
treebranch and bound tree

Definition at line 8258 of file tree.c.

References SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, and SCIPtreeGetNLeaves().

Referenced by SCIPgetNNodesLeft(), SCIPprimalHeuristics(), SCIPprintTreeStatistics(), SCIPsolve(), SCIPsolveCIP(), and solveNode().

◆ SCIPtreeIsPathComplete()

SCIP_Bool SCIPtreeIsPathComplete ( SCIP_TREE tree)

returns whether the active path goes completely down to the focus node

Parameters
treebranch and bound tree

Definition at line 8268 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()

SCIP_Bool SCIPtreeProbing ( SCIP_TREE tree)

returns whether the current node is a temporary probing node

Parameters
treebranch and bound tree

Definition at line 8285 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()

SCIP_NODE* SCIPtreeGetProbingRoot ( SCIP_TREE tree)

returns the temporary probing root node, or NULL if the we are not in probing mode

Parameters
treebranch and bound tree

Definition at line 8298 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
treebranch and bound tree

Definition at line 8431 of file tree.c.

References NULL, SCIP_Tree::probingroot, SCIPnodeGetDepth(), SCIPtreeGetCurrentDepth(), and SCIPtreeProbing().

Referenced by performStrongbranchWithPropagation(), SCIPbacktrackProbing(), SCIPgetProbingDepth(), SCIPtreeBacktrackProbing(), and treeBacktrackProbing().

◆ SCIPtreeGetFocusNode()

◆ 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
treebranch and bound tree

Definition at line 8328 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()

SCIP_Bool SCIPtreeHasFocusNodeLP ( SCIP_TREE tree)

returns, whether the LP was or is to be solved in the focus node

Parameters
treebranch and bound tree

Definition at line 8345 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()

void SCIPtreeSetFocusNodeLP ( SCIP_TREE tree,
SCIP_Bool  solvelp 
)

sets mark to solve or to ignore the LP while processing the focus node

Parameters
treebranch and bound tree
solvelpshould the LP be solved in focus node?

Definition at line 8355 of file tree.c.

References SCIP_Tree::focusnodehaslp, and NULL.

Referenced by enforceConstraints(), propAndSolve(), SCIPsetFocusnodeLP(), and solveNode().

◆ SCIPtreeIsFocusNodeLPConstructed()

SCIP_Bool SCIPtreeIsFocusNodeLPConstructed ( SCIP_TREE tree)

◆ SCIPtreeInRepropagation()

SCIP_Bool SCIPtreeInRepropagation ( SCIP_TREE tree)

returns whether the focus node is already solved and only propagated again

Parameters
treebranch and bound tree

Definition at line 8376 of file tree.c.

References SCIP_Tree::focusnode, NULL, SCIP_NODETYPE_REFOCUSNODE, and SCIPnodeGetType().

Referenced by primalAddSol(), primalSetCutoffbound(), and SCIPinRepropagation().

◆ SCIPtreeGetCurrentNode()

SCIP_NODE* SCIPtreeGetCurrentNode ( SCIP_TREE tree)

◆ 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
treebranch and bound tree

Definition at line 8403 of file tree.c.

References SCIP_Node::depth, SCIP_Tree::focusnode, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, and SCIPtreeProbing().

Referenced by addBoundViolated(), analyzeStrongbranch(), conflictAddConflictCons(), conflictAddConflictset(), conflictAnalyze(), conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), conflictAnalyzeLP(), conflictCreateReconvergenceConss(), conflictsetCalcInsertDepth(), priceAndCutLoop(), primalSetUpperbound(), propagationRound(), propAndSolve(), runBoundHeuristic(), SCIPaddCons(), SCIPaddPricedVar(), SCIPaddRow(), SCIPaggregateVars(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPbranchruleExecPseudoSol(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPconflictAnalyze(), SCIPconflictAnalyzePseudo(), SCIPconflictAnalyzeStrongbranch(), SCIPconflictFlushConss(), SCIPconshdlrInitLP(), SCIPconstructCurrentLP(), SCIPfixVar(), SCIPgetDepth(), SCIPgetSepaMinEfficacy(), SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarFixCons(), SCIPinferVarFixProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPisCutEfficacious(), SCIPisEfficacious(), SCIPmultiaggregateVar(), SCIPpricestoreAddProbVars(), SCIPpricestoreApplyVars(), SCIPprimalHeuristics(), SCIPremoveInefficaciousCuts(), SCIPseparateCutpool(), SCIPseparateSol(), SCIPsolveCIP(), SCIPsolveProbingRelax(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeCalcNodeselPriority(), SCIPtreeGetProbingDepth(), solStamp(), solveNodeLP(), and solveProbingLP().

◆ SCIPtreeHasCurrentNodeLP()

◆ 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
treebranch and bound tree

Definition at line 8442 of file tree.c.

References SCIP_Tree::effectiverootdepth, and NULL.

Referenced by conflictAnalyzeLP(), createAndAddProofcons(), runBoundHeuristic(), SCIPaddCons(), SCIPaddConsNode(), SCIPdelConsLocal(), SCIPdelConsNode(), SCIPgetEffectiveRootDepth(), SCIPnodepqBound(), and tightenSingleVar().

◆ SCIPtreeGetRootNode()

SCIP_NODE* SCIPtreeGetRootNode ( SCIP_TREE tree)

gets the root node of the tree

Parameters
treebranch and bound tree

Definition at line 8453 of file tree.c.

References NULL, and SCIP_Tree::root.

Referenced by applyImplic(), initSolve(), SCIPgetRootNode(), SCIPreoptSplitRoot(), SCIPvarAddVlb(), SCIPvarAddVub(), SCIPvarFixBinary(), sepastoreApplyLb(), sepastoreApplyUb(), and varAddImplic().

◆ SCIPtreeProbingObjChanged()

SCIP_Bool SCIPtreeProbingObjChanged ( SCIP_TREE tree)

returns whether we are in probing and the objective value of at least one column was changed

Parameters
treebranch and bound tree

Definition at line 8464 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
treebranch and bound tree

Definition at line 8475 of file tree.c.

References NULL, SCIP_Tree::probingobjchanged, SCIPtreeProbing(), and TRUE.

Referenced by SCIPchgVarObjProbing().

◆ SCIPtreeGetPrioChild()

SCIP_NODE* SCIPtreeGetPrioChild ( SCIP_TREE tree)

gets the best child of the focus node w.r.t. the node selection priority assigned by the branching rule

Parameters
treebranch and bound tree

Definition at line 7106 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()

SCIP_NODE* SCIPtreeGetPrioSibling ( SCIP_TREE tree)

gets the best sibling of the focus node w.r.t. the node selection priority assigned by the branching rule

Parameters
treebranch and bound tree

Definition at line 7132 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()

SCIP_NODE* SCIPtreeGetBestChild ( SCIP_TREE tree,
SCIP_SET set 
)

gets the best child of the focus node w.r.t. the node selection strategy

Parameters
treebranch and bound tree
setglobal SCIP settings

Definition at line 7158 of file tree.c.

References SCIP_Tree::children, SCIP_Tree::leaves, SCIP_Tree::nchildren, NULL, SCIPnodepqGetNodesel(), and SCIPnodeselCompare().

Referenced by SCIPgetBestChild(), and SCIPtreeGetBestNode().

◆ SCIPtreeGetBestSibling()

SCIP_NODE* SCIPtreeGetBestSibling ( SCIP_TREE tree,
SCIP_SET set 
)

gets the best sibling of the focus node w.r.t. the node selection strategy

Parameters
treebranch and bound tree
setglobal SCIP settings

Definition at line 7185 of file tree.c.

References SCIP_Tree::leaves, SCIP_Tree::nsiblings, NULL, SCIPnodepqGetNodesel(), SCIPnodeselCompare(), and SCIP_Tree::siblings.

Referenced by SCIPgetBestSibling(), and SCIPtreeGetBestNode().

◆ SCIPtreeGetBestLeaf()

SCIP_NODE* SCIPtreeGetBestLeaf ( SCIP_TREE tree)

gets the best leaf from the node queue w.r.t. the node selection strategy

Parameters
treebranch and bound tree

Definition at line 7212 of file tree.c.

References SCIP_Tree::leaves, NULL, and SCIPnodepqFirst().

Referenced by SCIPgetBestLeaf(), SCIPnodeFocus(), and SCIPtreeGetBestNode().

◆ SCIPtreeGetBestNode()

SCIP_NODE* SCIPtreeGetBestNode ( SCIP_TREE tree,
SCIP_SET set 
)

gets the best node from the tree (child, sibling, or leaf) w.r.t. the node selection strategy

Parameters
treebranch and bound tree
setglobal SCIP settings

Definition at line 7222 of file tree.c.

References SCIP_Tree::leaves, NULL, SCIPnodepqGetNodesel(), SCIPnodeselCompare(), SCIPtreeGetBestChild(), SCIPtreeGetBestLeaf(), SCIPtreeGetBestSibling(), and SCIPtreeGetNLeaves().

Referenced by SCIPgetBestNode().

◆ SCIPtreeGetLowerbound()

SCIP_Real SCIPtreeGetLowerbound ( SCIP_TREE tree,
SCIP_SET set 
)

◆ SCIPtreeGetLowerboundNode()

SCIP_NODE* SCIPtreeGetLowerboundNode ( SCIP_TREE tree,
SCIP_SET set 
)

gets the node with minimal lower bound of all nodes in the tree (child, sibling, or leaf)

Parameters
treebranch and bound tree
setglobal SCIP settings

Definition at line 7294 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()

SCIP_Real SCIPtreeGetAvgLowerbound ( SCIP_TREE tree,
SCIP_Real  cutoffbound 
)

gets the average lower bound of all nodes in the tree

Parameters
treebranch and bound tree
cutoffboundglobal cutoff bound

Definition at line 7346 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()

SCIP_Bool SCIPtreeWasNodeLastBranchParent ( SCIP_TREE tree,
SCIP_NODE node 
)

query if focus node was already branched on

Parameters
treebranch and bound tree
nodetree node, or NULL to check focus node

Definition at line 1042 of file tree.c.

References FALSE, SCIP_Tree::focusnode, SCIP_Tree::lastbranchparentid, NULL, SCIP_Node::number, and TRUE.

Referenced by SCIPwasNodeLastBranchParent().