Scippy

SCIP

Solving Constraint Integer Programs

tree.c File Reference

Detailed Description

methods for branch and bound tree

Author
Tobias Achterberg
Timo Berthold
Gerald Gamrath

Definition in file tree.c.

#include <assert.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/clock.h"
#include "scip/vbc.h"
#include "scip/event.h"
#include "scip/lp.h"
#include "scip/var.h"
#include "scip/implics.h"
#include "scip/primal.h"
#include "scip/tree.h"
#include "scip/solve.h"
#include "scip/cons.h"
#include "scip/nodesel.h"
#include "scip/prop.h"
#include "scip/debug.h"
#include "scip/prob.h"
#include "scip/scip.h"
#include "scip/pub_message.h"
#include "lpi/lpi.h"

Go to the source code of this file.

Macros

#define MAXDEPTH   65535
 
#define MAXREPROPMARK   511
 

Functions

static SCIP_RETCODE treeEnsureChildrenMem (SCIP_TREE *tree, SCIP_SET *set, int num)
 
static SCIP_RETCODE treeEnsurePathMem (SCIP_TREE *tree, SCIP_SET *set, int num)
 
static SCIP_RETCODE treeEnsurePendingbdchgsMem (SCIP_TREE *tree, SCIP_SET *set, int num)
 
 SCIP_DECL_SORTPTRCOMP (SCIPnodeCompLowerbound)
 
static void forkCaptureLPIState (SCIP_FORK *fork, int nuses)
 
static SCIP_RETCODE forkReleaseLPIState (SCIP_FORK *fork, BMS_BLKMEM *blkmem, SCIP_LP *lp)
 
static void subrootCaptureLPIState (SCIP_SUBROOT *subroot, int nuses)
 
static SCIP_RETCODE subrootReleaseLPIState (SCIP_SUBROOT *subroot, BMS_BLKMEM *blkmem, SCIP_LP *lp)
 
SCIP_RETCODE SCIPnodeCaptureLPIState (SCIP_NODE *node, int nuses)
 
SCIP_RETCODE SCIPnodeReleaseLPIState (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_LP *lp)
 
static SCIP_RETCODE probingnodeCreate (SCIP_PROBINGNODE **probingnode, BMS_BLKMEM *blkmem, SCIP_LP *lp)
 
static SCIP_RETCODE probingnodeUpdate (SCIP_PROBINGNODE *probingnode, BMS_BLKMEM *blkmem, SCIP_TREE *tree, SCIP_LP *lp)
 
static SCIP_RETCODE probingnodeFree (SCIP_PROBINGNODE **probingnode, BMS_BLKMEM *blkmem, SCIP_LP *lp)
 
static SCIP_RETCODE junctionInit (SCIP_JUNCTION *junction, SCIP_TREE *tree)
 
static SCIP_RETCODE pseudoforkCreate (SCIP_PSEUDOFORK **pseudofork, BMS_BLKMEM *blkmem, SCIP_TREE *tree, SCIP_LP *lp)
 
static SCIP_RETCODE pseudoforkFree (SCIP_PSEUDOFORK **pseudofork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
 
static SCIP_RETCODE forkCreate (SCIP_FORK **fork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)
 
static SCIP_RETCODE forkFree (SCIP_FORK **fork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
 
static SCIP_RETCODE subrootFree (SCIP_SUBROOT **subroot, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
 
static void treeRemoveSibling (SCIP_TREE *tree, SCIP_NODE *sibling)
 
static SCIP_RETCODE treeAddChild (SCIP_TREE *tree, SCIP_SET *set, SCIP_NODE *child, SCIP_Real nodeselprio)
 
static void treeRemoveChild (SCIP_TREE *tree, SCIP_NODE *child)
 
static SCIP_RETCODE nodeAssignParent (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_TREE *tree, SCIP_NODE *parent, SCIP_Real nodeselprio)
 
static SCIP_RETCODE nodeReleaseParent (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp)
 
static SCIP_RETCODE nodeCreate (SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set)
 
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_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp)
 
void SCIPnodeCutoff (SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree)
 
void SCIPnodePropagateAgain (SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree)
 
void SCIPnodeMarkPropagated (SCIP_NODE *node, SCIP_TREE *tree)
 
static void treeNextRepropsubtreecount (SCIP_TREE *tree)
 
static SCIP_RETCODE nodeRepropagate (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_Bool *cutoff)
 
static SCIP_RETCODE nodeActivate (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_Bool *cutoff)
 
static SCIP_RETCODE nodeDeactivate (SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
 
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)
 
static SCIP_RETCODE treeAddPendingBdchg (SCIP_TREE *tree, SCIP_SET *set, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool probingchange)
 
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_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, 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_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, 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)
 
static SCIP_RETCODE treeApplyPendingBdchgs (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
 
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_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Bool *cutoff)
 
static SCIP_RETCODE treeUpdatePathLPSize (SCIP_TREE *tree, int startdepth)
 
static void treeFindSwitchForks (SCIP_TREE *tree, SCIP_NODE *node, SCIP_NODE **commonfork, SCIP_NODE **newlpfork, SCIP_NODE **newlpstatefork, SCIP_NODE **newsubroot, SCIP_Bool *cutoff)
 
static SCIP_RETCODE treeSwitchPath (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_NODE *fork, SCIP_NODE *focusnode, SCIP_Bool *cutoff)
 
static SCIP_RETCODE subrootConstructLP (SCIP_NODE *subroot, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
 
static SCIP_RETCODE forkAddLP (SCIP_NODE *fork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
 
static SCIP_RETCODE pseudoforkAddLP (SCIP_NODE *pseudofork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
 
static void treeCheckPath (SCIP_TREE *tree)
 
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_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
static SCIP_RETCODE nodeToLeaf (SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp, SCIP_NODE *lpstatefork, SCIP_Real cutoffbound)
 
static SCIP_RETCODE focusnodeCleanupVars (BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_Bool inlp)
 
static SCIP_RETCODE focusnodeToDeadend (BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand)
 
static SCIP_RETCODE focusnodeToJunction (BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand)
 
static SCIP_RETCODE focusnodeToPseudofork (BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand)
 
static SCIP_RETCODE focusnodeToFork (BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand)
 
static SCIP_RETCODE treeNodesToQueue (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_NODE **nodes, int *nnodes, SCIP_NODE *lpstatefork, SCIP_Real cutoffbound)
 
static void treeChildrenToSiblings (SCIP_TREE *tree)
 
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_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_Bool *cutoff, SCIP_Bool exitsolve)
 
SCIP_RETCODE SCIPtreeCreate (SCIP_TREE **tree, SCIP_SET *set, SCIP_NODESEL *nodesel)
 
SCIP_RETCODE SCIPtreeFree (SCIP_TREE **tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeClear (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeCreateRoot (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeCreatePresolvingRoot (SCIP_TREE *tree, 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_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue)
 
SCIP_RETCODE SCIPtreeFreePresolvingRoot (SCIP_TREE *tree, 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_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue)
 
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, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real cutoffbound)
 
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, 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, 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, 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)
 
static SCIP_RETCODE treeCreateProbingNode (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeStartProbing (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_Bool strongbranching)
 
SCIP_RETCODE SCIPtreeCreateProbingNode (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeLoadProbingLPState (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
SCIP_RETCODE SCIPtreeMarkProbingNodeHasLP (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_LP *lp)
 
static SCIP_RETCODE treeBacktrackProbing (SCIP_TREE *tree, 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_EVENTFILTER *eventfilter, int probingdepth)
 
SCIP_RETCODE SCIPtreeBacktrackProbing (SCIP_TREE *tree, 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_EVENTFILTER *eventfilter, int probingdepth)
 
SCIP_RETCODE SCIPtreeEndProbing (SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
 
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_NODETYPE SCIPnodeGetType (SCIP_NODE *node)
 
SCIP_Longint SCIPnodeGetNumber (SCIP_NODE *node)
 
int SCIPnodeGetDepth (SCIP_NODE *node)
 
SCIP_Real SCIPnodeGetLowerbound (SCIP_NODE *node)
 
SCIP_Real SCIPnodeGetEstimate (SCIP_NODE *node)
 
SCIP_DOMCHGSCIPnodeGetDomchg (SCIP_NODE *node)
 
SCIP_NODESCIPnodeGetParent (SCIP_NODE *node)
 
void SCIPnodeGetParentBranchings (SCIP_NODE *node, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize)
 
void SCIPnodeGetAncestorBranchings (SCIP_NODE *node, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize)
 
SCIP_RETCODE SCIPnodePrintAncestorBranchings (SCIP_NODE *node, FILE *file)
 
void SCIPnodeGetAncestorBranchingPath (SCIP_NODE *node, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize, int *nodeswitches, int *nnodes, int nodeswitchsize)
 
SCIP_Bool SCIPnodesSharePath (SCIP_NODE *node1, SCIP_NODE *node2)
 
SCIP_NODESCIPnodesGetCommonAncestor (SCIP_NODE *node1, SCIP_NODE *node2)
 
SCIP_Bool SCIPnodeIsActive (SCIP_NODE *node)
 
SCIP_Bool SCIPnodeIsPropagatedAgain (SCIP_NODE *node)
 
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)
 
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 SCIPtreeGetProbingDepth (SCIP_TREE *tree)
 
int SCIPtreeGetEffectiveRootDepth (SCIP_TREE *tree)
 
SCIP_NODESCIPtreeGetRootNode (SCIP_TREE *tree)
 

Macro Definition Documentation

#define MAXDEPTH   65535

maximal depth level for nodes; must correspond to node data structure

Definition at line 49 of file tree.c.

Referenced by nodeAssignParent(), and SCIPtreeCreateRoot().

#define MAXREPROPMARK   511

maximal subtree repropagation marker; must correspond to node data structure

Definition at line 50 of file tree.c.

Referenced by SCIPtreeCreateRoot(), and treeNextRepropsubtreecount().

Function Documentation

static SCIP_RETCODE treeEnsureChildrenMem ( SCIP_TREE tree,
SCIP_SET set,
int  num 
)
static

resizes children arrays to be able to store at least num nodes

Parameters
treebranch and bound tree
setglobal SCIP settings
numminimal number of node slots in array

Definition at line 59 of file tree.c.

References BMSreallocMemoryArray, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::childrensize, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by treeAddChild().

static SCIP_RETCODE treeEnsurePathMem ( SCIP_TREE tree,
SCIP_SET set,
int  num 
)
static

resizes path array to be able to store at least num nodes

Parameters
treebranch and bound tree
setglobal SCIP settings
numminimal number of node slots in path

Definition at line 84 of file tree.c.

References BMSreallocMemoryArray, NULL, SCIP_Tree::path, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Tree::pathsize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcPathGrowSize().

Referenced by treeCreateProbingNode(), and treeSwitchPath().

static SCIP_RETCODE treeEnsurePendingbdchgsMem ( SCIP_TREE tree,
SCIP_SET set,
int  num 
)
static

resizes pendingbdchgs array to be able to store at least num nodes

Parameters
treebranch and bound tree
setglobal SCIP settings
numminimal number of node slots in path

Definition at line 110 of file tree.c.

References BMSreallocMemoryArray, NULL, SCIP_Tree::pendingbdchgs, SCIP_Tree::pendingbdchgssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by treeAddPendingBdchg().

SCIP_DECL_SORTPTRCOMP ( SCIPnodeCompLowerbound  )

node comparator for best lower bound

Definition at line 140 of file tree.c.

References NULL.

static void forkCaptureLPIState ( SCIP_FORK fork,
int  nuses 
)
static

increases the reference counter of the LP state in the fork

Parameters
forkfork data
nusesnumber to add to the usage counter

Definition at line 155 of file tree.c.

References SCIP_Fork::nlpistateref, NULL, and SCIPdebugMessage.

Referenced by focusnodeToFork(), forkCreate(), and SCIPnodeCaptureLPIState().

static SCIP_RETCODE forkReleaseLPIState ( SCIP_FORK fork,
BMS_BLKMEM blkmem,
SCIP_LP lp 
)
static

decreases the reference counter of the LP state in the fork

Parameters
forkfork data
blkmemblock memory buffers
lpcurrent LP data

Definition at line 170 of file tree.c.

References SCIP_Fork::lpistate, SCIP_Fork::nlpistateref, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPlpFreeState().

Referenced by SCIPnodeReleaseLPIState().

static void subrootCaptureLPIState ( SCIP_SUBROOT subroot,
int  nuses 
)
static

increases the reference counter of the LP state in the subroot

Parameters
subrootsubroot data
nusesnumber to add to the usage counter

Definition at line 194 of file tree.c.

References SCIP_Subroot::nlpistateref, NULL, and SCIPdebugMessage.

Referenced by SCIPnodeCaptureLPIState().

static SCIP_RETCODE subrootReleaseLPIState ( SCIP_SUBROOT subroot,
BMS_BLKMEM blkmem,
SCIP_LP lp 
)
static

decreases the reference counter of the LP state in the subroot

Parameters
subrootsubroot data
blkmemblock memory buffers
lpcurrent LP data

Definition at line 210 of file tree.c.

References SCIP_Subroot::lpistate, SCIP_Subroot::nlpistateref, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPlpFreeState().

Referenced by SCIPnodeReleaseLPIState().

SCIP_RETCODE SCIPnodeCaptureLPIState ( SCIP_NODE node,
int  nuses 
)

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

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

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

SCIP_RETCODE SCIPnodeReleaseLPIState ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_LP lp 
)
static SCIP_RETCODE probingnodeCreate ( SCIP_PROBINGNODE **  probingnode,
BMS_BLKMEM blkmem,
SCIP_LP lp 
)
static

creates probingnode data without LP information

Parameters
probingnodepointer to probingnode data
blkmemblock memory
lpcurrent LP data

Definition at line 286 of file tree.c.

References BMSallocBlockMemory, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPdebugMessage, SCIPlpGetNCols(), and SCIPlpGetNRows().

Referenced by treeCreateProbingNode().

static SCIP_RETCODE probingnodeUpdate ( SCIP_PROBINGNODE probingnode,
BMS_BLKMEM blkmem,
SCIP_TREE tree,
SCIP_LP lp 
)
static
static SCIP_RETCODE probingnodeFree ( SCIP_PROBINGNODE **  probingnode,
BMS_BLKMEM blkmem,
SCIP_LP lp 
)
static

frees probingnode data

Parameters
probingnodeprobingnode data
blkmemblock memory
lpcurrent LP data

Definition at line 346 of file tree.c.

References BMSfreeBlockMemory, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpFreeState().

Referenced by SCIPnodeFree(), and treeCreateProbingNode().

static SCIP_RETCODE junctionInit ( SCIP_JUNCTION junction,
SCIP_TREE tree 
)
static

initializes junction data

Parameters
junctionpointer to junction data
treebranch and bound tree

Definition at line 368 of file tree.c.

References SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Junction::nchildren, SCIP_Tree::nchildren, NULL, SCIP_CALL, SCIP_OKAY, SCIPnodeCaptureLPIState(), and SCIPtreeIsPathComplete().

Referenced by focusnodeToJunction().

static SCIP_RETCODE pseudoforkCreate ( SCIP_PSEUDOFORK **  pseudofork,
BMS_BLKMEM blkmem,
SCIP_TREE tree,
SCIP_LP lp 
)
static

creates pseudofork data

Parameters
pseudoforkpointer to pseudofork data
blkmemblock memory
treebranch and bound tree
lpcurrent LP data

Definition at line 392 of file tree.c.

References BMSallocBlockMemory, BMSduplicateBlockMemoryArray, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Tree::nchildren, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpGetNewcols(), SCIPlpGetNewrows(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPnodeCaptureLPIState(), SCIProwCapture(), and SCIPtreeIsPathComplete().

Referenced by focusnodeToPseudofork().

static SCIP_RETCODE pseudoforkFree ( SCIP_PSEUDOFORK **  pseudofork,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_LP lp 
)
static

frees pseudofork data

Parameters
pseudoforkpseudofork data
blkmemblock memory
setglobal SCIP settings
lpcurrent LP data

Definition at line 447 of file tree.c.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().

Referenced by SCIPnodeFree().

static SCIP_RETCODE forkCreate ( SCIP_FORK **  fork,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_LP lp 
)
static
static SCIP_RETCODE forkFree ( SCIP_FORK **  fork,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_LP lp 
)
static

frees fork data

Parameters
forkfork data
blkmemblock memory
setglobal SCIP settings
lpcurrent LP data

Definition at line 539 of file tree.c.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().

Referenced by SCIPnodeFree().

static SCIP_RETCODE subrootFree ( SCIP_SUBROOT **  subroot,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_LP lp 
)
static

frees subroot

Parameters
subrootsubroot data
blkmemblock memory
setglobal SCIP settings
lpcurrent LP data

Definition at line 631 of file tree.c.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().

Referenced by SCIPnodeFree().

static void treeRemoveSibling ( SCIP_TREE tree,
SCIP_NODE sibling 
)
static

removes given sibling node from the siblings array

Parameters
treebranch and bound tree
siblingsibling node to remove

Definition at line 664 of file tree.c.

References SCIP_Sibling::arraypos, SCIP_Node::data, SCIP_Tree::nsiblings, NULL, SCIP_NODETYPE_SIBLING, SCIPnodeGetType(), SCIP_Node::sibling, SCIP_Tree::siblings, and SCIP_Tree::siblingsprio.

Referenced by SCIPnodeFocus(), and SCIPnodeFree().

static SCIP_RETCODE treeAddChild ( SCIP_TREE tree,
SCIP_SET set,
SCIP_NODE child,
SCIP_Real  nodeselprio 
)
static

adds given child node to children array of focus node

Parameters
treebranch and bound tree
setglobal SCIP settings
childchild node to add
nodeselprionode selection priority of child node

Definition at line 690 of file tree.c.

References SCIP_Child::arraypos, SCIP_Node::child, SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Node::data, SCIP_Tree::nchildren, NULL, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_OKAY, SCIPnodeGetType(), and treeEnsureChildrenMem().

Referenced by nodeAssignParent().

static void treeRemoveChild ( SCIP_TREE tree,
SCIP_NODE child 
)
static

removes given child node from the children array

Parameters
treebranch and bound tree
childchild node to remove

Definition at line 713 of file tree.c.

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

Referenced by nodeReleaseParent(), and SCIPnodeFocus().

static SCIP_RETCODE nodeAssignParent ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_TREE tree,
SCIP_NODE parent,
SCIP_Real  nodeselprio 
)
static

makes node a child of the given parent node, which must be the focus node; if the child is a probing node, the parent node can also be a refocused node or a probing node

Parameters
nodechild node
blkmemblock memory buffers
setglobal SCIP settings
treebranch and bound tree
parentparent (= focus) node (or NULL, if node is root)
nodeselprionode selection priority of child node

Definition at line 741 of file tree.c.

References SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_Node::domchg, SCIP_Node::estimate, SCIP_Tree::focusnode, SCIP_Node::lowerbound, MAXDEPTH, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_CALL, SCIP_MAXDEPTHLEVEL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPsetIsInfinity(), SCIPtreeIsPathComplete(), and treeAddChild().

Referenced by SCIPnodeCreateChild(), and treeCreateProbingNode().

static SCIP_RETCODE nodeCreate ( SCIP_NODE **  node,
BMS_BLKMEM blkmem,
SCIP_SET set 
)
static

creates a node data structure

Parameters
nodepointer to node data structure
blkmemblock memory
setglobal SCIP settings

Definition at line 911 of file tree.c.

References BMSallocBlockMemory, FALSE, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetInfinity().

Referenced by SCIPnodeCreateChild(), and treeCreateProbingNode().

SCIP_RETCODE SCIPnodeCreateChild ( SCIP_NODE **  node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_Real  nodeselprio,
SCIP_Real  estimate 
)

creates a child node of the focus node

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 936 of file tree.c.

References SCIP_Tree::focusnode, 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, SCIPdebugMessage, SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeSetEstimate(), SCIPtreeIsPathComplete(), SCIPvbcNewChild(), and SCIP_Stat::vbc.

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

void SCIPnodeCutoff ( SCIP_NODE node,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree 
)
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 1129 of file tree.c.

References SCIP_Node::active, SCIP_Node::depth, MIN, NULL, SCIP_Node::reprop, SCIP_Tree::repropdepth, SCIPdebugMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPvbcMarkedRepropagateNode(), TRUE, and SCIP_Stat::vbc.

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

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 1155 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().

static void treeNextRepropsubtreecount ( SCIP_TREE tree)
static

moves the subtree repropagation counter to the next value

Parameters
treebranch and bound tree

Definition at line 1185 of file tree.c.

References MAXREPROPMARK, NULL, and SCIP_Tree::repropsubtreecount.

Referenced by nodeRepropagate().

static SCIP_RETCODE nodeRepropagate ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_PRIMAL primal,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_CONFLICT conflict,
SCIP_EVENTFILTER eventfilter,
SCIP_EVENTQUEUE eventqueue,
SCIP_Bool cutoff 
)
static

applies propagation on the node, that was marked to be propagated again

Parameters
nodenode to apply propagation on
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
transprobtransformed problem
origproboriginal problem
primalprimal data
treebranch and bound tree
lpcurrent LP data
branchcandbranching candidate storage
conflictconflict analysis data
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
cutoffpointer to store whether the node can be cut off

Definition at line 1197 of file tree.c.

References SCIP_Node::active, SCIP_Node::depth, SCIP_Node::domchg, FALSE, SCIP_Tree::focuslpfork, SCIP_Tree::focuslpstatefork, SCIP_Tree::focuslpstateforklpcount, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, SCIP_Tree::focussubroot, SCIP_Stat::nboundchgs, SCIP_Tree::nchildren, SCIP_Stat::nodeactivationtime, SCIP_Node::nodetype, SCIP_Stat::nrepropboundchgs, SCIP_Stat::nrepropcutoffs, SCIP_Stat::nreprops, SCIP_Tree::nsiblings, NULL, SCIP_Node::parent, SCIP_Node::reprop, SCIP_Tree::repropsubtreecount, SCIP_Node::repropsubtreemark, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_REFOCUSNODE, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIP_PROPTIMING_ALWAYS, SCIPclockIsRunning(), SCIPclockStart(), SCIPclockStop(), SCIPdebugMessage, SCIPdomchgMakeStatic(), SCIPeventqueueDelay(), SCIPeventqueueIsDelayed(), SCIPeventqueueProcess(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPpropagateDomains(), SCIPvbcRepropagatedNode(), treeNextRepropsubtreecount(), and SCIP_Stat::vbc.

Referenced by nodeActivate(), and treeSwitchPath().

static SCIP_RETCODE nodeActivate ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_PRIMAL primal,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_CONFLICT conflict,
SCIP_EVENTFILTER eventfilter,
SCIP_EVENTQUEUE eventqueue,
SCIP_Bool cutoff 
)
static

informs node, that it is now on the active path and applies any domain and constraint set changes

Parameters
nodenode to activate
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
transprobtransformed problem
origproboriginal problem
primalprimal data
treebranch and bound tree
lpcurrent LP data
branchcandbranching candidate storage
conflictconflict analysis data
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
cutoffpointer to store whether the node can be cut off

Definition at line 1345 of file tree.c.

References SCIP_Node::active, SCIP_Node::conssetchg, SCIP_Node::depth, SCIP_Node::domchg, SCIP_Stat::nactivatednodes, nodeRepropagate(), NULL, SCIP_Node::parent, SCIP_Node::reprop, SCIP_Node::repropsubtreemark, SCIP_Bool, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPconssetchgApply(), SCIPdebugMessage, SCIPdomchgApply(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPtreeProbing(), and TRUE.

Referenced by treeSwitchPath().

static SCIP_RETCODE nodeDeactivate ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue 
)
static
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 1484 of file tree.c.

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

Referenced by SCIPaddCons(), and SCIPaddConsNode().

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 1523 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(), SCIPdebugMessage, and SCIP_Cons::updatedisable.

Referenced by SCIPdelConsLocal(), and SCIPdelConsNode().

static SCIP_RETCODE treeAddPendingBdchg ( SCIP_TREE tree,
SCIP_SET set,
SCIP_NODE node,
SCIP_VAR var,
SCIP_Real  newbound,
SCIP_BOUNDTYPE  boundtype,
SCIP_CONS infercons,
SCIP_PROP inferprop,
int  inferinfo,
SCIP_Bool  probingchange 
)
static

adds the given bound change to the list of pending bound changes

Parameters
treebranch and bound tree
setglobal SCIP settings
nodenode to add bound change to
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 1554 of file tree.c.

References SCIP_PendingBdchg::boundtype, SCIP_Node::depth, SCIP_PendingBdchg::infercons, SCIP_PendingBdchg::inferinfo, SCIP_PendingBdchg::inferprop, SCIP_PendingBdchg::newbound, SCIP_PendingBdchg::node, SCIP_Tree::npendingbdchgs, NULL, SCIP_Tree::pendingbdchgs, SCIP_PendingBdchg::probingchange, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugCheckLbGlobal, SCIPdebugCheckUbGlobal, SCIPsetIsEQ(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPvarAdjustBd(), SCIPvarCapture(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), treeEnsurePendingbdchgsMem(), and SCIP_PendingBdchg::var.

Referenced by SCIPnodeAddBoundinfer().

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_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
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
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
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 1641 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, MIN, SCIP_Stat::nboundchgs, SCIP_DomChgDyn::nboundchgs, SCIP_BoundChg::newbound, SCIP_Node::nodetype, SCIP_Stat::nprobboundchgs, NULL, 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, SCIPdebugMessage, SCIPdomchgAddBoundchg(), SCIPerrorMessage, SCIPlpGetModifiedProvedPseudoObjval(), SCIPlpGetModifiedPseudoObjval(), SCIPnodeCutoff(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodePropagateAgain(), SCIPnodeUpdateLowerbound(), SCIPpropGetName(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsLT(), 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().

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_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
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
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
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 1892 of file tree.c.

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

Referenced by applyImplic(), conflictAddConflictCons(), 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(), and varAddImplic().

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

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

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 1919 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(), SCIPdebugMessage, SCIPerrorMessage, SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodePropagateAgain(), SCIPpropGetName(), SCIPsetIsEQ(), SCIPsetIsGE(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPvarAddHoleGlobal(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbvarHole(), SCIPvarGetStatus(), and SCIPvarGetUbLocal().

Referenced by SCIPnodeAddHolechg().

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

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

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 2042 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, SCIPdebugMessage, SCIPnodeAddHoleinfer(), and SCIPvarGetName().

static SCIP_RETCODE treeApplyPendingBdchgs ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue 
)
static
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 2168 of file tree.c.

References SCIP_Node::depth, SCIP_Node::estimate, SCIP_Stat::lastlowerbound, SCIP_Node::lowerbound, MAX, NULL, SCIP_Stat::rootlowerbound, SCIP_Real, SCIPsetInfinity(), SCIPsetIsEQ(), SCIPstatUpdatePrimalDualIntegral(), and SCIPtreeGetLowerbound().

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

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

updates lower bound of node using lower bound of LP

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 2208 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().

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 2242 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().

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 2260 of file tree.c.

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

Referenced by SCIPnodeCreateChild(), and updateEstimate().

SCIP_RETCODE SCIPnodePropagateImplics ( SCIP_NODE node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
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
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
cutoffpointer to store whether the node can be cut off

Definition at line 2274 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_MULTAGGR, SCIPboundchgGetBoundtype(), SCIPboundchgGetVar(), SCIPboundchgIsRedundant(), SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPdebugMessage, SCIPdomchgGetBoundchg(), SCIPdomchgGetNBoundchgs(), SCIPnodeAddBoundinfer(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeIsActive(), SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsFeasLT(), SCIPvarGetCliques(), SCIPvarGetImplBounds(), SCIPvarGetImplTypes(), SCIPvarGetImplVars(), SCIPvarGetLbLocal(), SCIPvarGetNCliques(), SCIPvarGetNImpls(), SCIPvarGetProbvar(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), and TRUE.

Referenced by SCIPpropagateProbingImplications().

static void treeFindSwitchForks ( SCIP_TREE tree,
SCIP_NODE node,
SCIP_NODE **  commonfork,
SCIP_NODE **  newlpfork,
SCIP_NODE **  newlpstatefork,
SCIP_NODE **  newsubroot,
SCIP_Bool cutoff 
)
static

finds the common fork node, the new LP state defining fork, and the new focus subroot, if the path is switched to the given node

Parameters
treebranch and bound tree
nodenew focus node, or NULL
commonforkpointer to store common fork node of old and new focus node
newlpforkpointer to store the new LP defining fork node
newlpstateforkpointer to store the new LP state defining fork node
newsubrootpointer to store the new subroot node
cutoffpointer to store whether the given node can be cut off and no path switching should be performed

Definition at line 2554 of file tree.c.

References SCIP_Node::active, SCIP_Node::cutoff, SCIP_Tree::cutoffdepth, SCIP_Node::depth, FALSE, SCIP_Tree::focuslpfork, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Tree::focussubroot, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Node::reprop, SCIP_Tree::repropdepth, SCIP_Tree::root, SCIP_NODETYPE_FORK, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SUBROOT, SCIPdebugMessage, SCIPnodeGetType(), and TRUE.

Referenced by SCIPnodeFocus().

static SCIP_RETCODE treeSwitchPath ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_PRIMAL primal,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_CONFLICT conflict,
SCIP_EVENTFILTER eventfilter,
SCIP_EVENTQUEUE eventqueue,
SCIP_NODE fork,
SCIP_NODE focusnode,
SCIP_Bool cutoff 
)
static

switches the active path to the new focus node, applies domain and constraint set changes

Parameters
treebranch and bound tree
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
primalprimal data
lpcurrent LP data
branchcandbranching candidate storage
conflictconflict analysis data
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
forkcommon fork node of old and new focus node, or NULL
focusnodenew focus node, or NULL
cutoffpointer to store whether the new focus node can be cut off

Definition at line 2850 of file tree.c.

References SCIP_Node::active, SCIP_Node::cutoff, SCIP_Node::depth, FALSE, nodeActivate(), nodeDeactivate(), nodeRepropagate(), NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Node::reprop, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPdebugMessage, SCIPeventqueueDelay(), SCIPeventqueueProcess(), SCIPnodeCutoff(), SCIPnodeGetType(), treeApplyPendingBdchgs(), treeEnsurePathMem(), and treeUpdatePathLPSize().

Referenced by SCIPnodeFocus().

static SCIP_RETCODE subrootConstructLP ( SCIP_NODE subroot,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_LP lp 
)
static

loads the subroot's LP data

Parameters
subrootsubroot node to construct LP for
blkmemblock memory buffers
setglobal SCIP settings
eventqueueevent queue
eventfilterglobal event filter
lpcurrent LP data

Definition at line 2961 of file tree.c.

References SCIP_Subroot::cols, SCIP_Node::data, SCIP_Node::depth, SCIP_Subroot::ncols, SCIP_Subroot::nrows, NULL, SCIP_Subroot::rows, SCIP_CALL, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIPlpAddCol(), SCIPlpAddRow(), SCIPnodeGetType(), and SCIP_Node::subroot.

Referenced by SCIPtreeLoadLP().

static SCIP_RETCODE forkAddLP ( SCIP_NODE fork,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_LP lp 
)
static

loads the fork's additional LP data

Parameters
forkfork node to construct additional LP for
blkmemblock memory buffers
setglobal SCIP settings
eventqueueevent queue
eventfilterglobal event filter
lpcurrent LP data

Definition at line 3006 of file tree.c.

References SCIP_Fork::addedcols, SCIP_Fork::addedrows, SCIP_Node::data, SCIP_Node::depth, SCIP_Node::fork, SCIP_Fork::naddedcols, SCIP_Fork::naddedrows, NULL, SCIP_CALL, SCIP_NODETYPE_FORK, SCIP_OKAY, SCIPlpAddCol(), SCIPlpAddRow(), and SCIPnodeGetType().

Referenced by SCIPtreeLoadLP().

static SCIP_RETCODE pseudoforkAddLP ( SCIP_NODE pseudofork,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_LP lp 
)
static

loads the pseudofork's additional LP data

Parameters
pseudoforkpseudofork node to construct additional LP for
blkmemblock memory buffers
setglobal SCIP settings
eventqueueevent queue
eventfilterglobal event filter
lpcurrent LP data

Definition at line 3051 of file tree.c.

References SCIP_Pseudofork::addedcols, SCIP_Pseudofork::addedrows, SCIP_Node::data, SCIP_Node::depth, SCIP_Pseudofork::naddedcols, SCIP_Pseudofork::naddedrows, NULL, SCIP_Node::pseudofork, SCIP_CALL, SCIP_NODETYPE_PSEUDOFORK, SCIP_OKAY, SCIPlpAddCol(), SCIPlpAddRow(), and SCIPnodeGetType().

Referenced by 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 
)
static SCIP_RETCODE nodeToLeaf ( SCIP_NODE **  node,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_NODE lpstatefork,
SCIP_Real  cutoffbound 
)
static

converts node into LEAF and moves it into the array of the node queue if node's lower bound is greater or equal than the given upper bound, the node is deleted; otherwise, it is moved to the node queue; anyways, the given pointer is NULL after the call

Parameters
nodepointer to child or sibling node to convert
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
eventqueueevent queue
treebranch and bound tree
lpcurrent LP data
lpstateforkLP state defining fork of the node
cutoffboundcutoff bound: all nodes with lowerbound >= cutoffbound are cut off

Definition at line 3409 of file tree.c.

References SCIP_Node::active, SCIP_Node::depth, SCIP_Tree::leaves, NULL, SCIP_Node::parent, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_NODETYPE_FORK, SCIP_NODETYPE_JUNCTION, SCIP_NODETYPE_LEAF, SCIP_NODETYPE_PSEUDOFORK, SCIP_NODETYPE_SIBLING, SCIP_NODETYPE_SUBROOT, SCIP_OKAY, SCIP_REAL_MIN, SCIPdebugMessage, SCIPdomchgMakeStatic(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodepqInsert(), SCIPsetIsGE(), SCIPsetIsLT(), SCIPvbcCutoffNode(), and SCIP_Stat::vbc.

Referenced by treeNodesToQueue().

static SCIP_RETCODE focusnodeCleanupVars ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_Bool  inlp 
)
static

removes variables from the problem, that are marked to be deletable, and were created at the focusnode; only removes variables that were created at the focusnode, unless inlp is TRUE (e.g., when the node is cut off, anyway)

Parameters
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
eventqueueevent queue
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
lpcurrent LP data
branchcandbranching candidate storage
inlpshould variables in the LP be deleted, too?

Definition at line 3480 of file tree.c.

References FALSE, SCIP_Tree::focusnode, SCIP_Stat::nnodes, NULL, SCIP_Prob::nvars, SCIP_Tree::root, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPdebugMessage, SCIPlpFlush(), SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpShrinkCols(), SCIPnodeAddBoundchg(), SCIPnodeGetType(), SCIPprobDelVar(), SCIPprobPerformVarDeletions(), SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIPsetIsFeasZero(), SCIPtreeProbing(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarIsDeletable(), SCIPvarIsInLP(), SCIPvarMarkNotDeletable(), and SCIP_Prob::vars.

Referenced by focusnodeToDeadend(), focusnodeToFork(), and focusnodeToPseudofork().

static SCIP_RETCODE focusnodeToDeadend ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand 
)
static

converts the focus node into a dead-end node

Parameters
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
eventqueueevent queue
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
lpcurrent LP data
branchcandbranching candidate storage

Definition at line 3579 of file tree.c.

References SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, focusnodeCleanupVars(), SCIP_Tree::nchildren, SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_NODETYPE_DEADEND, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPdebugMessage, SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), SCIPtreeProbing(), and TRUE.

Referenced by SCIPnodeFocus().

static SCIP_RETCODE focusnodeToJunction ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand 
)
static

converts the focus node into a junction node

Parameters
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
eventqueueevent queue
probtransformed problem after presolve
treebranch and bound tree
lpcurrent LP data
branchcandbranching candidate storage

Definition at line 3617 of file tree.c.

References SCIP_Node::active, SCIP_Node::data, SCIP_Node::domchg, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, SCIP_Node::junction, junctionInit(), SCIP_Node::nodetype, NULL, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_JUNCTION, SCIP_OKAY, SCIPdebugMessage, SCIPdomchgMakeStatic(), SCIPlpGetNNewcols(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), and SCIPtreeProbing().

Referenced by focusnodeToFork(), and SCIPnodeFocus().

static SCIP_RETCODE focusnodeToPseudofork ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand 
)
static

converts the focus node into a pseudofork node

Parameters
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
eventqueueevent queue
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
lpcurrent LP data
branchcandbranching candidate storage

Definition at line 3657 of file tree.c.

References SCIP_Node::active, SCIP_Node::data, SCIP_Node::domchg, FALSE, SCIP_Tree::focuslpstatefork, SCIP_Tree::focusnode, focusnodeCleanupVars(), SCIP_Tree::nchildren, SCIP_Node::nodetype, NULL, SCIP_Node::pseudofork, pseudoforkCreate(), SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PSEUDOFORK, SCIP_OKAY, SCIPdebugMessage, SCIPdomchgMakeStatic(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodeReleaseLPIState(), and SCIPtreeProbing().

Referenced by SCIPnodeFocus().

static SCIP_RETCODE focusnodeToFork ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand 
)
static
static SCIP_RETCODE treeNodesToQueue ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_NODE **  nodes,
int *  nnodes,
SCIP_NODE lpstatefork,
SCIP_Real  cutoffbound 
)
static

puts all nodes in the array on the node queue and makes them LEAFs

Parameters
treebranch and bound tree
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
eventqueueevent queue
lpcurrent LP data
nodesarray of nodes to put on the queue
nnodespointer to number of nodes in the array
lpstateforkLP state defining fork of the nodes
cutoffboundcutoff bound: all nodes with lowerbound >= cutoffbound are cut off

Definition at line 3941 of file tree.c.

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

Referenced by SCIPnodeFocus(), and SCIPtreeCreateRoot().

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_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_CONFLICT conflict,
SCIP_EVENTFILTER eventfilter,
SCIP_EVENTQUEUE eventqueue,
SCIP_Bool cutoff,
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
lpcurrent LP data
branchcandbranching candidate storage
conflictconflict analysis data
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue
cutoffpointer to store whether the given node can be cut off
exitsolveare we in exitsolve stage, so we only need to loose the children

Definition at line 4011 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(), focusnodeToPseudofork(), SCIP_Tree::focussubroot, SCIP_Lp::isrelax, SCIP_Tree::leaves, SCIP_Stat::lpcount, MIN, SCIP_Stat::nbacktracks, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Stat::plungedepth, SCIP_Lp::resolvelperror, SCIP_Bool, SCIP_CALL, 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, SCIP_REAL_MIN, SCIPconssetchgMakeGlobal(), SCIPdebugMessage, SCIPdomchgApplyGlobal(), SCIPerrorMessage, SCIPlpGetNCols(), SCIPlpGetNNewcols(), SCIPlpGetNNewrows(), SCIPlpGetNRows(), SCIPlpMarkSize(), SCIPnodeCutoff(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPnodepqCompare(), SCIPnodepqRemove(), SCIPtreeGetBestLeaf(), SCIPtreeIsPathComplete(), SCIPtreeProbing(), SCIP_Tree::siblings, treeChildrenToSiblings(), treeFindSwitchForks(), treeNodesToQueue(), treeRemoveChild(), treeRemoveSibling(), treeSwitchPath(), and TRUE.

Referenced by freeSolve(), SCIPsolveCIP(), SCIPtreeCreatePresolvingRoot(), and SCIPtreeFreePresolvingRoot().

SCIP_RETCODE SCIPtreeCreate ( SCIP_TREE **  tree,
SCIP_SET set,
SCIP_NODESEL nodesel 
)

creates an initialized tree data structure

Parameters
treepointer to tree data structure
setglobal SCIP settings
nodeselnode selector to use for sorting leaves in the priority queue

Definition at line 4411 of file tree.c.

References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPnodepqCreate(), and TRUE.

Referenced by SCIPtransformProb().

SCIP_RETCODE SCIPtreeFree ( SCIP_TREE **  tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp 
)

frees tree data structure

Parameters
treepointer to tree data structure
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
lpcurrent LP data

Definition at line 4473 of file tree.c.

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

Referenced by freeTransform().

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

creates the root node of the tree and puts it into the leaves queue

Parameters
treetree data structure
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
lpcurrent LP data

Definition at line 4570 of file tree.c.

References SCIP_Node::active, SCIP_Tree::children, SCIP_Node::cutoff, SCIP_Node::depth, SCIP_Tree::focusnode, MAXDEPTH, MAXREPROPMARK, SCIP_Tree::nchildren, SCIP_Node::nodetype, SCIP_Tree::nsiblings, NULL, SCIP_Node::reprop, SCIP_Node::repropsubtreemark, SCIP_Tree::root, SCIP_CALL, SCIP_NODETYPE_CHILD, SCIP_OKAY, SCIPnodeCreateChild(), SCIPsetInfinity(), SCIPtreeProbing(), and treeNodesToQueue().

Referenced by initSolve(), and SCIPtreeCreatePresolvingRoot().

SCIP_RETCODE SCIPtreeCreatePresolvingRoot ( SCIP_TREE tree,
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_EVENTFILTER eventfilter,
SCIP_EVENTQUEUE eventqueue 
)

creates a temporary presolving root node of the tree and installs it as focus node

Parameters
treetree 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
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue

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

SCIP_RETCODE SCIPtreeFreePresolvingRoot ( SCIP_TREE tree,
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_EVENTFILTER eventfilter,
SCIP_EVENTQUEUE eventqueue 
)

frees the temporary presolving root and resets tree data structure

Parameters
treetree 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
eventfilterevent filter for global (not variable dependent) events
eventqueueevent queue

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

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 4692 of file tree.c.

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

SCIP_RETCODE SCIPtreeSetNodesel ( SCIP_TREE tree,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_NODESEL nodesel 
)

sets the node selector used for sorting the nodes in the priority queue, and resorts the queue if necessary

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 4702 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().

SCIP_RETCODE SCIPtreeCutoff ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_Real  cutoffbound 
)

cuts off nodes with lower bound not better than given cutoff bound

Parameters
treebranch and bound tree
blkmemblock memory
setglobal SCIP settings
statdynamic problem statistics
eventqueueevent queue
lpcurrent LP data
cutoffboundcutoff bound: all nodes with lowerbound >= cutoffbound are cut off

Definition at line 4730 of file tree.c.

References SCIP_Tree::children, SCIP_Tree::cutoffdelayed, FALSE, SCIP_Tree::leaves, SCIP_Node::lowerbound, SCIP_Tree::nchildren, SCIP_Tree::nsiblings, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpDiving(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodepqBound(), SCIPsetIsGE(), SCIPvbcCutoffNode(), SCIP_Tree::siblings, TRUE, and SCIP_Stat::vbc.

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

SCIP_Real SCIPtreeCalcNodeselPriority ( SCIP_TREE tree,
SCIP_SET set,
SCIP_STAT stat,
SCIP_VAR var,
SCIP_BRANCHDIR  branchdir,
SCIP_Real  targetvalue 
)

calculates the node selection priority for moving the given variable's LP value to the given target value; this node selection priority can be given to the SCIPcreateChild() call

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 4794 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().

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 4944 of file tree.c.

References SCIP_Tree::focusnode, MIN, NULL, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPnodeGetEstimate(), SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPtreeHasFocusNodeLP(), SCIPvarGetPseudocost(), SCIPvarGetSol(), and SCIPvarGetType().

Referenced by SCIPcalcChildEstimate(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), and SCIPtreeBranchVarNary().

SCIP_RETCODE SCIPtreeBranchVar ( SCIP_TREE tree,
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
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 5003 of file tree.c.

References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, MAX, MIN, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPABORT, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPnodeGetLowerbound(), SCIPrelDiff(), 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(), SCIPvbcUpdateChild(), and SCIP_Stat::vbc.

Referenced by SCIPbranchExecExtern(), SCIPbranchExecLP(), SCIPbranchExecPseudo(), SCIPbranchVar(), SCIPbranchVarVal(), and SCIPtreeBranchVarNary().

SCIP_RETCODE SCIPtreeBranchVarHole ( SCIP_TREE tree,
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
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 5327 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, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPsetIsFeasGE(), SCIPsetIsFeasIntegral(), SCIPsetIsFeasLE(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetProbvarHole(), SCIPvarGetSol(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarIsActive(), SCIPvarIsIntegral(), SCIPvbcUpdateChild(), and SCIP_Stat::vbc.

Referenced by SCIPbranchVarHole().

SCIP_RETCODE SCIPtreeBranchVarNary ( SCIP_TREE tree,
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
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 5468 of file tree.c.

References FALSE, SCIP_Tree::focusnode, SCIP_Tree::focusnodehaslp, MAX, MIN, 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, SCIPdebugMessage, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeCreateChild(), SCIPnodeGetEstimate(), SCIPrelDiff(), SCIPsetCeil(), 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(), SCIPvbcUpdateChild(), and SCIP_Stat::vbc.

Referenced by SCIPbranchVarValNary().

static SCIP_RETCODE treeCreateProbingNode ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_LP lp 
)
static

creates a probing child node of the current node, which must be the focus node, the current refocused node, or another probing node; if the current node is the focus or a refocused node, the created probing node is installed as probing root node

Parameters
treebranch and bound tree
blkmemblock memory
setglobal SCIP settings
lpcurrent LP data

Definition at line 5833 of file tree.c.

References SCIP_Node::active, BMSfreeBlockMemory, SCIP_Node::data, FALSE, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, nodeAssignParent(), nodeCreate(), SCIP_Node::nodetype, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Node::probingnode, probingnodeCreate(), probingnodeFree(), SCIP_Tree::probingnodehaslp, SCIP_Tree::probingroot, SCIP_CALL, SCIP_MAXDEPTHLEVEL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIPdebugMessage, SCIPlpMarkSize(), SCIPnodeGetDepth(), SCIPnodeGetNumber(), SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeIsPathComplete(), SCIPtreeProbing(), treeEnsurePathMem(), treeUpdatePathLPSize(), and TRUE.

Referenced by SCIPtreeCreateProbingNode(), and SCIPtreeStartProbing().

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 5966 of file tree.c.

References SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPnodeGetDepth(), SCIPtreeProbing(), and treeCreateProbingNode().

Referenced by SCIPnewProbingNode().

SCIP_RETCODE SCIPtreeLoadProbingLPState ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp 
)
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 6058 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().

static SCIP_RETCODE treeBacktrackProbing ( SCIP_TREE tree,
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_EVENTFILTER eventfilter,
int  probingdepth 
)
static

undoes all changes to the problem applied in probing up to the given probing depth

Parameters
treebranch and bound tree
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
eventfilterglobal event filter
probingdepthprobing depth of the node in the probing path that should be reactivated, -1 to even deactivate the probing root, thus exiting probing mode

Definition at line 6085 of file tree.c.

References SCIP_Tree::cutoffdepth, SCIP_Node::data, SCIP_Tree::focuslpconstructed, SCIP_Tree::focusnode, SCIP_Lp::ncols, SCIP_Probingnode::ninitialcols, SCIP_Probingnode::ninitialrows, nodeDeactivate(), SCIP_Lp::nrows, NULL, SCIP_Node::parent, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::pathnlpcols, SCIP_Tree::pathnlprows, SCIP_Tree::probingloadlpistate, SCIP_Node::probingnode, SCIP_Tree::probingroot, SCIP_Tree::repropdepth, SCIP_CALL, SCIP_NODETYPE_FOCUSNODE, SCIP_NODETYPE_PROBINGNODE, SCIP_NODETYPE_REFOCUSNODE, SCIP_OKAY, SCIPdebugMessage, SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpSetSizeMark(), SCIPlpShrinkCols(), SCIPlpShrinkRows(), SCIPnodeFree(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPtreeGetProbingDepth(), SCIPtreeProbing(), treeApplyPendingBdchgs(), treeCheckPath(), and TRUE.

Referenced by SCIPtreeBacktrackProbing(), and SCIPtreeEndProbing().

SCIP_RETCODE SCIPtreeBacktrackProbing ( SCIP_TREE tree,
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_EVENTFILTER eventfilter,
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
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
transprobtransformed problem
origproboriginal problem
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
eventfilterglobal event filter
probingdepthprobing depth of the node in the probing path that should be reactivated

Definition at line 6192 of file tree.c.

References NULL, SCIP_CALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeGetProbingDepth(), SCIPtreeProbing(), and treeBacktrackProbing().

Referenced by SCIPbacktrackProbing().

SCIP_RETCODE SCIPtreeEndProbing ( SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter 
)

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
blkmemblock memory buffers
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
eventfilterglobal event filter

Definition at line 6222 of file tree.c.

References 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::primalfeasible, SCIP_Tree::probingloadlpistate, SCIP_Tree::probinglpinorms, SCIP_Tree::probinglpistate, SCIP_Tree::probinglpwasdualfeas, SCIP_Tree::probinglpwasflushed, SCIP_Tree::probinglpwasprimfeas, SCIP_Tree::probinglpwasrelax, SCIP_Tree::probinglpwassolved, SCIP_Tree::probingroot, SCIP_Tree::probingsolvedlp, 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(), SCIPdebugMessage, SCIPlpEndProbing(), SCIPlpFlush(), SCIPlpFreeNorms(), SCIPlpFreeState(), SCIPlpGetSolstat(), SCIPlpiClearState(), SCIPlpIsRelax(), SCIPlpSetIsRelax(), SCIPlpSetNorms(), SCIPlpSetState(), SCIPlpSolveAndEval(), SCIPmessagePrintVerbInfo(), SCIPnodeGetDepth(), SCIPnodeGetType(), SCIPnodeUpdateLowerboundLP(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), SCIP_Lp::solisbasic, SCIP_Lp::solved, treeBacktrackProbing(), and TRUE.

Referenced by SCIPendProbing().

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 6364 of file tree.c.

References SCIP_Tree::children, SCIP_Tree::childrenprio, SCIP_Tree::nchildren, NULL, SCIP_Real, and SCIP_REAL_MIN.

Referenced by SCIPgetPrioChild().

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 6390 of file tree.c.

References SCIP_Tree::nsiblings, NULL, SCIP_Real, SCIP_REAL_MIN, SCIP_Tree::siblings, and SCIP_Tree::siblingsprio.

Referenced by SCIPgetPrioSibling().

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 6416 of file tree.c.

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

Referenced by SCIPgetBestChild(), and SCIPtreeGetBestNode().

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 6443 of file tree.c.

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

Referenced by SCIPgetBestSibling(), and SCIPtreeGetBestNode().

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 6470 of file tree.c.

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

Referenced by SCIPgetBestLeaf(), SCIPnodeFocus(), and 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 6480 of file tree.c.

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

Referenced by SCIPgetBestNode().

SCIP_Real SCIPtreeGetLowerbound ( SCIP_TREE tree,
SCIP_SET set 
)
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 6552 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().

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 6604 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, SCIPnodepqGetLowerboundSum(), SCIPtreeGetNLeaves(), and SCIP_Tree::siblings.

Referenced by SCIPgetAvgDualbound(), and SCIPgetAvgLowerbound().

SCIP_NODETYPE SCIPnodeGetType ( SCIP_NODE node)

gets the type of the node

Parameters
nodenode

Definition at line 6688 of file tree.c.

References SCIP_Node::nodetype, and NULL.

Referenced by focusnodeCleanupVars(), focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToPseudofork(), forkAddLP(), nodeActivate(), nodeAssignParent(), nodeDeactivate(), nodeReleaseParent(), nodeToLeaf(), priceAndCutLoop(), propagateDomains(), pseudoforkAddLP(), SCIP_DECL_NODESELCOMP(), SCIPchgChildPrio(), SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), SCIPchildChgNodeselPrio(), SCIPendStrongbranch(), SCIPfixVarProbing(), SCIPnodeAddBoundinfer(), SCIPnodeAddCons(), SCIPnodeAddHoleinfer(), SCIPnodeCaptureLPIState(), SCIPnodeCreateChild(), SCIPnodeFocus(), SCIPnodeFree(), SCIPnodepqBound(), SCIPnodepqClear(), SCIPnodePropagateImplics(), SCIPnodeReleaseLPIState(), SCIPprimalHeuristics(), SCIPstartDive(), SCIPtreeBacktrackProbing(), SCIPtreeEndProbing(), SCIPtreeInRepropagation(), SCIPtreeLoadLP(), SCIPtreeLoadLPState(), SCIPtreeLoadProbingLPState(), SCIPtreeMarkProbingNodeHasLP(), SCIPvbcCutoffNode(), SCIPvbcFoundConflict(), SCIPvbcFoundSolution(), SCIPvbcMarkedRepropagateNode(), SCIPvbcNewChild(), SCIPvbcRepropagatedNode(), SCIPvbcSolvedNode(), SCIPvbcUpdateChild(), solveNode(), solveNodeInitialLP(), solveNodeRelax(), subrootConstructLP(), treeAddChild(), treeBacktrackProbing(), treeCheckPath(), treeChildrenToSiblings(), treeCreateProbingNode(), treeFindSwitchForks(), treeRemoveChild(), treeRemoveSibling(), treeSwitchPath(), treeUpdatePathLPSize(), and updatePseudocost().

int SCIPnodeGetDepth ( SCIP_NODE node)

gets the depth of the node

Parameters
nodenode

Definition at line 6708 of file tree.c.

References SCIP_Node::depth, and NULL.

Referenced by applyProbing(), compareNodes(), focusnodeToDeadend(), focusnodeToFork(), focusnodeToJunction(), focusnodeToPseudofork(), generateCut(), generateSecantCut(), generateSecantCutNoCheck(), nodeActivate(), nodeAssignParent(), nodeDeactivate(), nodeReleaseParent(), nodeRepropagate(), nodeToLeaf(), priceAndCutLoop(), propagateDomains(), SCIP_DECL_BRANCHEXECEXT(), SCIP_DECL_NODESELCOMP(), SCIP_DECL_NODESELSELECT(), SCIPaddConsNode(), SCIPaddRowDive(), SCIPanalyzeDeductionsProbing(), SCIPconflicthdlrExec(), SCIPconstructCurrentLP(), SCIPdelConsLocal(), SCIPdelConsNode(), SCIPnodeAddBoundinfer(), SCIPnodeAddCons(), SCIPnodeAddHoleinfer(), SCIPnodeCaptureLPIState(), SCIPnodeCutoff(), SCIPnodeFocus(), SCIPnodeFree(), SCIPnodeGetAncestorBranchingPath(), SCIPnodeGetAncestorBranchings(), SCIPnodeGetParentBranchings(), SCIPnodepqBound(), SCIPnodePrintAncestorBranchings(), SCIPnodePropagateAgain(), SCIPnodePropagateImplics(), SCIPnodeReleaseLPIState(), SCIPnodesGetCommonAncestor(), SCIPnodesSharePath(), SCIPprimalHeuristics(), SCIPprintNodeRootPath(), SCIPsepastoreApplyCuts(), SCIPsolveCIP(), SCIPtreeCreateProbingNode(), SCIPtreeCutoff(), SCIPtreeEndProbing(), SCIPtreeGetProbingDepth(), SCIPtreeGetProbingRoot(), SCIPtreeLoadLP(), SCIPtreeLoadLPState(), SCIPtreeProbing(), SCIPvbcCutoffNode(), SCIPvbcNewChild(), SCIPvbcSolvedNode(), SCIPvbcUpdateChild(), solveNode(), solveNodeInitialLP(), solveNodeLP(), tightenBounds(), treeApplyPendingBdchgs(), treeBacktrackProbing(), treeCreateProbingNode(), updatePseudocost(), and updateVisits().

SCIP_Real SCIPnodeGetEstimate ( SCIP_NODE node)

gets the estimated value of the best feasible solution in subtree of the node

Parameters
nodenode

Definition at line 6728 of file tree.c.

References SCIP_Node::estimate, and NULL.

Referenced by getNodeselScore(), nodeGetUctScore(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_NODESELCOMP(), SCIP_DECL_NODESELSELECT(), SCIPgetLocalOrigEstimate(), SCIPgetLocalTransEstimate(), SCIPtreeBranchVar(), SCIPtreeBranchVarHole(), SCIPtreeBranchVarNary(), and SCIPtreeCalcChildEstimate().

SCIP_DOMCHG* SCIPnodeGetDomchg ( SCIP_NODE node)

gets the domain change information of the node, i.e., the information about the differences in the variables domains to the parent node

Parameters
nodenode

Definition at line 6740 of file tree.c.

References SCIP_Node::domchg, and NULL.

Referenced by SCIPendStrongbranch().

SCIP_NODE* SCIPnodeGetParent ( SCIP_NODE node)

gets the parent node of a node in the branch-and-bound tree, if any

Parameters
nodenode

Definition at line 6750 of file tree.c.

References NULL, and SCIP_Node::parent.

Referenced by compareNodes(), nodeGetUctScore(), and updateVisits().

void SCIPnodeGetParentBranchings ( SCIP_NODE node,
SCIP_VAR **  branchvars,
SCIP_Real branchbounds,
SCIP_BOUNDTYPE boundtypes,
int *  nbranchvars,
int  branchvarssize 
)

returns the set of variable branchings that were performed in the parent node to create this node

Parameters
nodenode data
branchvarsarray of variables on which the branching has been performed in the parent node
branchboundsarray of bounds which the branching in the parent node set
boundtypesarray of boundtypes which the branching in the parent node set
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 6760 of file tree.c.

References SCIP_DomChgBound::boundchgs, SCIP_Node::domchg, SCIP_DomChg::domchgbound, SCIP_DomChgBound::nboundchgs, SCIP_BoundChg::newbound, NULL, SCIP_BOUNDCHGTYPE_BRANCHING, SCIPnodeGetDepth(), and SCIP_BoundChg::var.

Referenced by SCIPnodeGetAncestorBranchingPath(), and SCIPnodeGetAncestorBranchings().

void SCIPnodeGetAncestorBranchings ( SCIP_NODE node,
SCIP_VAR **  branchvars,
SCIP_Real branchbounds,
SCIP_BOUNDTYPE boundtypes,
int *  nbranchvars,
int  branchvarssize 
)

returns the set of variable branchings that were performed in all ancestor nodes (nodes on the path to the root) to create this node

Parameters
nodenode data
branchvarsarray of variables on which the branchings has been performed in all ancestors
branchboundsarray of bounds which the branchings in all ancestors set
boundtypesarray of boundtypes which the branchings in all ancestors set
nbranchvarsnumber of variables on which branchings have been performed in all ancestors 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 6824 of file tree.c.

References NULL, SCIP_Node::parent, SCIPnodeGetDepth(), and SCIPnodeGetParentBranchings().

SCIP_RETCODE SCIPnodePrintAncestorBranchings ( SCIP_NODE node,
FILE *  file 
)
void SCIPnodeGetAncestorBranchingPath ( SCIP_NODE node,
SCIP_VAR **  branchvars,
SCIP_Real branchbounds,
SCIP_BOUNDTYPE boundtypes,
int *  nbranchvars,
int  branchvarssize,
int *  nodeswitches,
int *  nnodes,
int  nodeswitchsize 
)

returns the set of variable branchings that were performed in all ancestor nodes (nodes on the path to the root) to create this node sorted by the nodes, starting from the current node going up to the root

Parameters
nodenode data
branchvarsarray of variables on which the branchings has been performed in all ancestors
branchboundsarray of bounds which the branchings in all ancestors set
boundtypesarray of boundtypes which the branchings in all ancestors set
nbranchvarsnumber of variables on which branchings have been performed in all ancestors if this is larger than the array size, arrays should be reallocated and method should be called again
branchvarssizeavailable slots in arrays
nodeswitchesmarks, where in the arrays the branching decisions of the next node on the path start branchings performed at the parent of node always start at position 0. For single variable branching, nodeswitches[i] = i holds
nnodesnumber of nodes in the nodeswitch array
nodeswitchsizeavailable slots in node switch array

Definition at line 6913 of file tree.c.

References NULL, SCIP_Node::parent, SCIPnodeGetDepth(), and SCIPnodeGetParentBranchings().

Referenced by SCIPprintNodeRootPath().

SCIP_Bool SCIPnodesSharePath ( SCIP_NODE node1,
SCIP_NODE node2 
)

checks for two nodes whether they share the same root path, i.e., whether one is an ancestor of the other

Parameters
node1node data
node2node data

Definition at line 6962 of file tree.c.

References NULL, SCIP_Node::parent, and SCIPnodeGetDepth().

SCIP_NODE* SCIPnodesGetCommonAncestor ( SCIP_NODE node1,
SCIP_NODE node2 
)

finds the common ancestor node of two given nodes

Parameters
node1node data
node2node data

Definition at line 6986 of file tree.c.

References NULL, SCIP_Node::parent, and SCIPnodeGetDepth().

SCIP_Bool SCIPnodeIsActive ( SCIP_NODE node)

returns whether node is in the path to the current node

Parameters
nodenode

Definition at line 7017 of file tree.c.

References SCIP_Node::active, and NULL.

Referenced by propagateDomains(), SCIPnodePropagateImplics(), and updatePseudocost().

SCIP_Bool SCIPnodeIsPropagatedAgain ( SCIP_NODE node)

returns whether the node is marked to be propagated again

Parameters
nodenode data

Definition at line 7027 of file tree.c.

References NULL, and SCIP_Node::reprop.

Referenced by updateLoopStatus().

int SCIPtreeGetNChildren ( SCIP_TREE tree)

gets number of children of the focus node

Parameters
treebranch and bound tree

Definition at line 7037 of file tree.c.

References SCIP_Tree::nchildren, and NULL.

Referenced by SCIPgetOpenNodesData().

int SCIPtreeGetNSiblings ( SCIP_TREE tree)

gets number of siblings of the focus node

Parameters
treebranch and bound tree

Definition at line 7047 of file tree.c.

References SCIP_Tree::nsiblings, and NULL.

Referenced by SCIPgetOpenNodesData().

int SCIPtreeGetNLeaves ( SCIP_TREE tree)

gets number of leaves in the tree (excluding children and siblings of focus nodes)

Parameters
treebranch and bound tree

Definition at line 7057 of file tree.c.

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

Referenced by SCIPsolveCIP(), SCIPtreeGetAvgLowerbound(), SCIPtreeGetBestNode(), and SCIPtreeGetNNodes().

int SCIPtreeGetNNodes ( SCIP_TREE tree)

gets number of open nodes in the tree (children + siblings + leaves)

Parameters
treebranch and bound tree

Definition at line 7067 of file tree.c.

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

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

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 7077 of file tree.c.

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

Referenced by forkCreate(), junctionInit(), nodeAssignParent(), probingnodeUpdate(), pseudoforkCreate(), SCIPnodeCreateChild(), SCIPnodeFocus(), SCIPtreeHasCurrentNodeLP(), and treeCreateProbingNode().

SCIP_Bool SCIPtreeProbing ( SCIP_TREE tree)

returns whether the current node is a temporary probing node

Parameters
treebranch and bound tree

Definition at line 7094 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(), focusnodeToPseudofork(), nodeActivate(), nodeDeactivate(), nodeReleaseParent(), propAndSolve(), SCIPaggregateVars(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), SCIPconshdlrInitLP(), SCIPendProbing(), SCIPendStrongbranch(), SCIPfixVarProbing(), SCIPgetProbingDepth(), SCIPgetVarStrongbranchFrac(), SCIPinProbing(), SCIPmultiaggregateVar(), SCIPnewProbingNode(), SCIPnodeFocus(), SCIPnodeFree(), SCIPprimalHeuristics(), SCIPpropagateProbing(), SCIPpropagateProbingImplications(), SCIPstartDive(), SCIPstartProbing(), SCIPstartStrongbranch(), SCIPtreeBacktrackProbing(), SCIPtreeClear(), SCIPtreeCreatePresolvingRoot(), SCIPtreeCreateProbingNode(), SCIPtreeCreateRoot(), SCIPtreeEndProbing(), SCIPtreeFree(), SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), SCIPtreeGetFocusDepth(), SCIPtreeGetFocusNode(), SCIPtreeGetProbingDepth(), SCIPtreeHasCurrentNodeLP(), SCIPtreeIsPathComplete(), SCIPtreeLoadLP(), SCIPtreeLoadLPState(), SCIPtreeLoadProbingLPState(), SCIPtreeMarkProbingNodeHasLP(), SCIPtreeStartProbing(), solveProbingLP(), treeBacktrackProbing(), treeCheckPath(), treeCreateProbingNode(), and treeUpdatePathLPSize().

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 7107 of file tree.c.

References SCIP_Node::nodetype, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_Tree::probingroot, SCIP_NODETYPE_PROBINGNODE, and SCIPnodeGetDepth().

int SCIPtreeGetFocusDepth ( SCIP_TREE tree)
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 7154 of file tree.c.

References SCIP_Tree::focusnodehaslp, and NULL.

Referenced by addCurrentSolution(), enforceConstraints(), propAndSolve(), SCIPprimalHeuristics(), SCIPsolveCIP(), SCIPtreeCalcChildEstimate(), SCIPtreeCalcNodeselPriority(), SCIPtreeHasCurrentNodeLP(), solveNode(), solveNodeLP(), and updateEstimate().

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 7164 of file tree.c.

References SCIP_Tree::focusnodehaslp, and NULL.

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

SCIP_Bool SCIPtreeIsFocusNodeLPConstructed ( SCIP_TREE tree)

returns whether the LP of the focus node is already constructed

Parameters
treebranch and bound tree

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

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 7185 of file tree.c.

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

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

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 7212 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(), SCIPaddCons(), SCIPaddCut(), SCIPaddPricedVar(), SCIPaggregateVars(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPbranchruleExecPseudoSol(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPconflictAnalyze(), SCIPconflictAnalyzePseudo(), SCIPconflictAnalyzeStrongbranch(), SCIPconflictFlushConss(), SCIPconshdlrInitLP(), SCIPfixVar(), SCIPgetDepth(), SCIPinferBinvarCons(), SCIPinferBinvarProp(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPisCutEfficacious(), SCIPisEfficacious(), SCIPmultiaggregateVar(), SCIPpricestoreAddProbVars(), SCIPpricestoreApplyVars(), SCIPprimalHeuristics(), SCIPremoveInefficaciousCuts(), SCIPseparateCutpool(), SCIPseparateSol(), SCIPseparateSolCutpool(), SCIPsolveCIP(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtreeCalcNodeselPriority(), SCIPtreeGetProbingDepth(), solStamp(), solveNodeLP(), and solveProbingLP().

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 7240 of file tree.c.

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

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

int SCIPtreeGetEffectiveRootDepth ( SCIP_TREE tree)

returns the depth of the effective root node (i.e. the first depth level of a node with at least two children)

Parameters
treebranch and bound tree

Definition at line 7251 of file tree.c.

References SCIP_Tree::effectiverootdepth, and NULL.

Referenced by SCIPaddCons(), SCIPaddConsNode(), SCIPdelConsLocal(), and SCIPdelConsNode().

SCIP_NODE* SCIPtreeGetRootNode ( SCIP_TREE tree)

gets the root node of the tree

Parameters
treebranch and bound tree

Definition at line 7262 of file tree.c.

References NULL, and SCIP_Tree::root.

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