Scippy

SCIP

Solving Constraint Integer Programs

branch.c File Reference

Detailed Description

methods for branching rules and branching candidate storage

Author
Tobias Achterberg
Timo Berthold
Gerald Gamrath
Stefan Heinz
Michael Winkler
Stefan Vigerske

Definition in file branch.c.

#include <assert.h>
#include <string.h>
#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/clock.h"
#include "scip/paramset.h"
#include "scip/event.h"
#include "scip/lp.h"
#include "scip/var.h"
#include "scip/prob.h"
#include "scip/tree.h"
#include "scip/sepastore.h"
#include "scip/scip.h"
#include "scip/branch.h"
#include "scip/solve.h"
#include "scip/struct_branch.h"

Go to the source code of this file.

Functions

static SCIP_RETCODE ensureLpcandsSize (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensurePseudocandsSize (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensureExterncandsSize (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num)
 
SCIP_RETCODE SCIPbranchcandCreate (SCIP_BRANCHCAND **branchcand)
 
SCIP_RETCODE SCIPbranchcandFree (SCIP_BRANCHCAND **branchcand)
 
void SCIPbranchcandInvalidate (SCIP_BRANCHCAND *branchcand)
 
static SCIP_RETCODE branchcandCalcLPCands (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_RETCODE SCIPbranchcandGetLPCands (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_VAR ***lpcands, SCIP_Real **lpcandssol, SCIP_Real **lpcandsfrac, int *nlpcands, int *npriolpcands, int *nfracimplvars)
 
SCIP_RETCODE SCIPbranchcandGetExternCands (SCIP_BRANCHCAND *branchcand, SCIP_VAR ***externcands, SCIP_Real **externcandssol, SCIP_Real **externcandsscore, int *nexterncands, int *nprioexterncands, int *nprioexternbins, int *nprioexternints, int *nprioexternimpls)
 
int SCIPbranchcandGetLPMaxPrio (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioLPCands (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetExternMaxPrio (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNExternCands (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioExternCands (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioExternBins (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioExternInts (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioExternImpls (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioExternConts (SCIP_BRANCHCAND *branchcand)
 
SCIP_RETCODE SCIPbranchcandAddExternCand (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, SCIP_Real score, SCIP_Real solval)
 
void SCIPbranchcandClearExternCands (SCIP_BRANCHCAND *branchcand)
 
SCIP_Bool SCIPbranchcandContainsExternCand (SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
 
SCIP_RETCODE SCIPbranchcandGetPseudoCands (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR ***pseudocands, int *npseudocands, int *npriopseudocands)
 
int SCIPbranchcandGetNPseudoCands (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioPseudoCands (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioPseudoBins (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioPseudoInts (SCIP_BRANCHCAND *branchcand)
 
int SCIPbranchcandGetNPrioPseudoImpls (SCIP_BRANCHCAND *branchcand)
 
static void branchcandInsertPseudoCand (SCIP_BRANCHCAND *branchcand, SCIP_VAR *var, int insertpos)
 
static void branchcandSortPseudoCands (SCIP_BRANCHCAND *branchcand)
 
static void branchcandRemovePseudoCand (SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
 
SCIP_RETCODE SCIPbranchcandRemoveVar (SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
 
SCIP_RETCODE SCIPbranchcandUpdateVar (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var)
 
SCIP_RETCODE SCIPbranchcandUpdateVarBranchPriority (SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, int branchpriority)
 
 SCIP_DECL_SORTPTRCOMP (SCIPbranchruleComp)
 
 SCIP_DECL_SORTPTRCOMP (SCIPbranchruleCompName)
 
static SCIP_DECL_PARAMCHGD (paramChgdBranchrulePriority)
 
SCIP_RETCODE SCIPbranchruleCopyInclude (SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
 
static SCIP_RETCODE doBranchruleCreate (SCIP_BRANCHRULE **branchrule, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, int maxdepth, SCIP_Real maxbounddist, SCIP_DECL_BRANCHCOPY((*branchcopy)), SCIP_DECL_BRANCHFREE((*branchfree)), SCIP_DECL_BRANCHINIT((*branchinit)), SCIP_DECL_BRANCHEXIT((*branchexit)), SCIP_DECL_BRANCHINITSOL((*branchinitsol)), SCIP_DECL_BRANCHEXITSOL((*branchexitsol)), SCIP_DECL_BRANCHEXECLP((*branchexeclp)), SCIP_DECL_BRANCHEXECEXT((*branchexecext)), SCIP_DECL_BRANCHEXECPS((*branchexecps)), SCIP_BRANCHRULEDATA *branchruledata)
 
SCIP_RETCODE SCIPbranchruleCreate (SCIP_BRANCHRULE **branchrule, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, int maxdepth, SCIP_Real maxbounddist, SCIP_DECL_BRANCHCOPY((*branchcopy)), SCIP_DECL_BRANCHFREE((*branchfree)), SCIP_DECL_BRANCHINIT((*branchinit)), SCIP_DECL_BRANCHEXIT((*branchexit)), SCIP_DECL_BRANCHINITSOL((*branchinitsol)), SCIP_DECL_BRANCHEXITSOL((*branchexitsol)), SCIP_DECL_BRANCHEXECLP((*branchexeclp)), SCIP_DECL_BRANCHEXECEXT((*branchexecext)), SCIP_DECL_BRANCHEXECPS((*branchexecps)), SCIP_BRANCHRULEDATA *branchruledata)
 
SCIP_RETCODE SCIPbranchruleFree (SCIP_BRANCHRULE **branchrule, SCIP_SET *set)
 
SCIP_RETCODE SCIPbranchruleInit (SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
 
SCIP_RETCODE SCIPbranchruleExit (SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
 
SCIP_RETCODE SCIPbranchruleInitsol (SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
 
SCIP_RETCODE SCIPbranchruleExitsol (SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
 
SCIP_RETCODE SCIPbranchruleExecLPSol (SCIP_BRANCHRULE *branchrule, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
 
SCIP_RETCODE SCIPbranchruleExecExternSol (SCIP_BRANCHRULE *branchrule, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
 
SCIP_RETCODE SCIPbranchruleExecPseudoSol (SCIP_BRANCHRULE *branchrule, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
 
SCIP_BRANCHRULEDATASCIPbranchruleGetData (SCIP_BRANCHRULE *branchrule)
 
void SCIPbranchruleSetData (SCIP_BRANCHRULE *branchrule, SCIP_BRANCHRULEDATA *branchruledata)
 
void SCIPbranchruleSetCopy (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHCOPY((*branchcopy)))
 
void SCIPbranchruleSetFree (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHFREE((*branchfree)))
 
void SCIPbranchruleSetInit (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINIT((*branchinit)))
 
void SCIPbranchruleSetExit (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXIT((*branchexit)))
 
void SCIPbranchruleSetInitsol (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINITSOL((*branchinitsol)))
 
void SCIPbranchruleSetExitsol (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXITSOL((*branchexitsol)))
 
void SCIPbranchruleSetExecLp (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECLP((*branchexeclp)))
 
void SCIPbranchruleSetExecExt (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECEXT((*branchexecext)))
 
void SCIPbranchruleSetExecPs (SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECPS((*branchexecps)))
 
const char * SCIPbranchruleGetName (SCIP_BRANCHRULE *branchrule)
 
const char * SCIPbranchruleGetDesc (SCIP_BRANCHRULE *branchrule)
 
int SCIPbranchruleGetPriority (SCIP_BRANCHRULE *branchrule)
 
void SCIPbranchruleSetPriority (SCIP_BRANCHRULE *branchrule, SCIP_SET *set, int priority)
 
int SCIPbranchruleGetMaxdepth (SCIP_BRANCHRULE *branchrule)
 
void SCIPbranchruleSetMaxdepth (SCIP_BRANCHRULE *branchrule, int maxdepth)
 
SCIP_Real SCIPbranchruleGetMaxbounddist (SCIP_BRANCHRULE *branchrule)
 
void SCIPbranchruleSetMaxbounddist (SCIP_BRANCHRULE *branchrule, SCIP_Real maxbounddist)
 
void SCIPbranchruleEnableOrDisableClocks (SCIP_BRANCHRULE *branchrule, SCIP_Bool enable)
 
SCIP_Real SCIPbranchruleGetSetupTime (SCIP_BRANCHRULE *branchrule)
 
SCIP_Real SCIPbranchruleGetTime (SCIP_BRANCHRULE *branchrule)
 
SCIP_Longint SCIPbranchruleGetNLPCalls (SCIP_BRANCHRULE *branchrule)
 
SCIP_Longint SCIPbranchruleGetNExternCalls (SCIP_BRANCHRULE *branchrule)
 
SCIP_Longint SCIPbranchruleGetNPseudoCalls (SCIP_BRANCHRULE *branchrule)
 
SCIP_Longint SCIPbranchruleGetNCutoffs (SCIP_BRANCHRULE *branchrule)
 
SCIP_Longint SCIPbranchruleGetNCutsFound (SCIP_BRANCHRULE *branchrule)
 
SCIP_Longint SCIPbranchruleGetNConssFound (SCIP_BRANCHRULE *branchrule)
 
SCIP_Longint SCIPbranchruleGetNDomredsFound (SCIP_BRANCHRULE *branchrule)
 
SCIP_Longint SCIPbranchruleGetNChildren (SCIP_BRANCHRULE *branchrule)
 
SCIP_Bool SCIPbranchruleIsInitialized (SCIP_BRANCHRULE *branchrule)
 
SCIP_Real SCIPbranchGetScore (SCIP_SET *set, SCIP_VAR *var, SCIP_Real downgain, SCIP_Real upgain)
 
SCIP_Real SCIPbranchGetScoreMultiple (SCIP_SET *set, SCIP_VAR *var, int nchildren, SCIP_Real *gains)
 
SCIP_Real SCIPbranchGetBranchingPoint (SCIP_SET *set, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real suggestion)
 
SCIP_RETCODE SCIPbranchExecLP (BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
 
SCIP_RETCODE SCIPbranchExecExtern (BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
 
SCIP_RETCODE SCIPbranchExecPseudo (BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
 

Function Documentation

◆ ensureLpcandsSize()

static SCIP_RETCODE ensureLpcandsSize ( SCIP_BRANCHCAND branchcand,
SCIP_SET set,
int  num 
)
static

ensures, that lpcands array can store at least num entries

Parameters
branchcandbranching candidate storage
setglobal SCIP settings
numminimum number of entries to store

Definition at line 55 of file branch.c.

References BMSreallocMemoryArray, SCIP_BranchCand::lpcands, SCIP_BranchCand::lpcandsfrac, SCIP_BranchCand::lpcandssize, SCIP_BranchCand::lpcandssol, SCIP_BranchCand::nlpcands, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by branchcandCalcLPCands().

◆ ensurePseudocandsSize()

static SCIP_RETCODE ensurePseudocandsSize ( SCIP_BRANCHCAND branchcand,
SCIP_SET set,
int  num 
)
static

ensures, that pseudocands array can store at least num entries

Parameters
branchcandbranching candidate storage
setglobal SCIP settings
numminimum number of entries to store

Definition at line 80 of file branch.c.

References BMSreallocMemoryArray, SCIP_BranchCand::npseudocands, SCIP_BranchCand::pseudocands, SCIP_BranchCand::pseudocandssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by SCIPbranchcandUpdateVar().

◆ ensureExterncandsSize()

static SCIP_RETCODE ensureExterncandsSize ( SCIP_BRANCHCAND branchcand,
SCIP_SET set,
int  num 
)
static

ensures, that externcands array can store at least num entries

Parameters
branchcandbranching candidate storage
setglobal SCIP settings
numminimum number of entries to store

Definition at line 103 of file branch.c.

References BMSreallocMemoryArray, SCIP_BranchCand::externcands, SCIP_BranchCand::externcandsscore, SCIP_BranchCand::externcandssize, SCIP_BranchCand::externcandssol, SCIP_BranchCand::nexterncands, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by SCIPbranchcandAddExternCand().

◆ SCIPbranchcandCreate()

SCIP_RETCODE SCIPbranchcandCreate ( SCIP_BRANCHCAND **  branchcand)

creates a branching candidate storage

Parameters
branchcandpointer to store branching candidate storage

Definition at line 133 of file branch.c.

References BMSallocMemory, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPbranchcandInvalidate().

Referenced by SCIPtransformProb().

◆ SCIPbranchcandFree()

SCIP_RETCODE SCIPbranchcandFree ( SCIP_BRANCHCAND **  branchcand)

frees branching candidate storage

Parameters
branchcandpointer to store branching candidate storage

Definition at line 173 of file branch.c.

References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, and SCIP_OKAY.

Referenced by freeTransform().

◆ SCIPbranchcandInvalidate()

void SCIPbranchcandInvalidate ( SCIP_BRANCHCAND branchcand)

resets branching candidates storage

Parameters
branchcandpointer to store branching candidate storage

Definition at line 192 of file branch.c.

References NULL, and SCIP_BranchCand::validlpcandslp.

Referenced by prepareReoptimization(), and SCIPbranchcandCreate().

◆ branchcandCalcLPCands()

◆ SCIPbranchcandGetLPCands()

SCIP_RETCODE SCIPbranchcandGetLPCands ( SCIP_BRANCHCAND branchcand,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp,
SCIP_VAR ***  lpcands,
SCIP_Real **  lpcandssol,
SCIP_Real **  lpcandsfrac,
int *  nlpcands,
int *  npriolpcands,
int *  nfracimplvars 
)

gets branching candidates for LP solution branching (fractional variables)

Parameters
branchcandbranching candidate storage
setglobal SCIP settings
statproblem statistics
lpcurrent LP data
lpcandspointer to store the array of LP branching candidates, or NULL
lpcandssolpointer to store the array of LP candidate solution values, or NULL
lpcandsfracpointer to store the array of LP candidate fractionalities, or NULL
nlpcandspointer to store the number of LP branching candidates, or NULL
npriolpcandspointer to store the number of candidates with maximal priority, or NULL
nfracimplvarspointer to store the number of implicit fractional variables, or NULL

Definition at line 404 of file branch.c.

References branchcandCalcLPCands(), SCIP_BranchCand::lpcands, SCIP_BranchCand::lpcandsfrac, SCIP_BranchCand::lpcandssol, SCIP_BranchCand::nimpllpfracs, SCIP_BranchCand::nlpcands, SCIP_BranchCand::npriolpbins, SCIP_BranchCand::npriolpcands, NULL, SCIP_CALL, and SCIP_OKAY.

Referenced by priceAndCutLoop(), SCIPgetLPBranchCands(), SCIPgetNLPBranchCands(), SCIPgetNPrioLPBranchCands(), solveNode(), and updateEstimate().

◆ SCIPbranchcandGetExternCands()

SCIP_RETCODE SCIPbranchcandGetExternCands ( SCIP_BRANCHCAND branchcand,
SCIP_VAR ***  externcands,
SCIP_Real **  externcandssol,
SCIP_Real **  externcandsscore,
int *  nexterncands,
int *  nprioexterncands,
int *  nprioexternbins,
int *  nprioexternints,
int *  nprioexternimpls 
)

gets external branching candidates

Parameters
branchcandbranching candidate storage
externcandspointer to store the array of external branching candidates, or NULL
externcandssolpointer to store the array of external candidate solution values, or NULL
externcandsscorepointer to store the array of external candidate scores, or NULL
nexterncandspointer to store the number of external branching candidates, or NULL
nprioexterncandspointer to store the number of candidates with maximal priority, or NULL
nprioexternbinspointer to store the number of binary candidates with maximal priority, or NULL
nprioexternintspointer to store the number of integer candidates with maximal priority, or NULL
nprioexternimplspointer to store the number of implicit integer candidates with maximal priority, or NULL

Definition at line 439 of file branch.c.

References SCIP_BranchCand::externcands, SCIP_BranchCand::externcandsscore, SCIP_BranchCand::externcandssol, SCIP_BranchCand::nexterncands, SCIP_BranchCand::nprioexternbins, SCIP_BranchCand::nprioexterncands, SCIP_BranchCand::nprioexternimpls, SCIP_BranchCand::nprioexternints, NULL, and SCIP_OKAY.

Referenced by SCIPgetExternBranchCands().

◆ SCIPbranchcandGetLPMaxPrio()

int SCIPbranchcandGetLPMaxPrio ( SCIP_BRANCHCAND branchcand)

gets maximal branching priority of LP branching candidates

Parameters
branchcandbranching candidate storage

Definition at line 476 of file branch.c.

References SCIP_BranchCand::lpmaxpriority, and NULL.

Referenced by solveNode().

◆ SCIPbranchcandGetNPrioLPCands()

int SCIPbranchcandGetNPrioLPCands ( SCIP_BRANCHCAND branchcand)

gets number of LP branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 486 of file branch.c.

References SCIP_BranchCand::npriolpcands, and NULL.

Referenced by solveNode().

◆ SCIPbranchcandGetExternMaxPrio()

int SCIPbranchcandGetExternMaxPrio ( SCIP_BRANCHCAND branchcand)

gets maximal branching priority of external branching candidates

Parameters
branchcandbranching candidate storage

Definition at line 496 of file branch.c.

References SCIP_BranchCand::externmaxpriority, and NULL.

Referenced by solveNode().

◆ SCIPbranchcandGetNExternCands()

int SCIPbranchcandGetNExternCands ( SCIP_BRANCHCAND branchcand)

gets number of external branching candidates

Parameters
branchcandbranching candidate storage

Definition at line 506 of file branch.c.

References SCIP_BranchCand::nexterncands, and NULL.

Referenced by SCIPgetNExternBranchCands(), and solveNode().

◆ SCIPbranchcandGetNPrioExternCands()

int SCIPbranchcandGetNPrioExternCands ( SCIP_BRANCHCAND branchcand)

gets number of external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 516 of file branch.c.

References SCIP_BranchCand::nprioexterncands, and NULL.

Referenced by SCIPgetNPrioExternBranchCands(), and solveNode().

◆ SCIPbranchcandGetNPrioExternBins()

int SCIPbranchcandGetNPrioExternBins ( SCIP_BRANCHCAND branchcand)

gets number of binary external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 526 of file branch.c.

References SCIP_BranchCand::nprioexternbins, and NULL.

Referenced by SCIPgetNPrioExternBranchBins().

◆ SCIPbranchcandGetNPrioExternInts()

int SCIPbranchcandGetNPrioExternInts ( SCIP_BRANCHCAND branchcand)

gets number of integer external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 536 of file branch.c.

References SCIP_BranchCand::nprioexternints, and NULL.

Referenced by SCIPgetNPrioExternBranchInts().

◆ SCIPbranchcandGetNPrioExternImpls()

int SCIPbranchcandGetNPrioExternImpls ( SCIP_BRANCHCAND branchcand)

gets number of implicit integer external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 546 of file branch.c.

References SCIP_BranchCand::nprioexternimpls, and NULL.

Referenced by SCIPgetNPrioExternBranchImpls().

◆ SCIPbranchcandGetNPrioExternConts()

int SCIPbranchcandGetNPrioExternConts ( SCIP_BRANCHCAND branchcand)

gets number of continuous external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 556 of file branch.c.

References SCIP_BranchCand::nprioexternbins, SCIP_BranchCand::nprioexterncands, SCIP_BranchCand::nprioexternimpls, SCIP_BranchCand::nprioexternints, and NULL.

Referenced by SCIPgetNPrioExternBranchConts().

◆ SCIPbranchcandAddExternCand()

SCIP_RETCODE SCIPbranchcandAddExternCand ( SCIP_BRANCHCAND branchcand,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  score,
SCIP_Real  solval 
)

insert variable, its score and its solution value into the external branching candidate storage the absolute difference of the current lower and upper bounds of the variable must be at least epsilon

Parameters
branchcandbranching candidate storage
setglobal SCIP settings
varvariable to insert
scorescore of external candidate, e.g. infeasibility
solvalvalue of the variable in the current solution

Definition at line 568 of file branch.c.

References ensureExterncandsSize(), SCIP_BranchCand::externcands, SCIP_BranchCand::externcandsscore, SCIP_BranchCand::externcandssize, SCIP_BranchCand::externcandssol, SCIP_BranchCand::externmaxpriority, SCIP_BranchCand::nexterncands, SCIP_BranchCand::nprioexternbins, SCIP_BranchCand::nprioexterncands, SCIP_BranchCand::nprioexternimpls, SCIP_BranchCand::nprioexternints, NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPsetCeil(), SCIPsetDebugMsg, SCIPsetFloor(), SCIPsetIsEQ(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetMultaggrLbLocal(), SCIPvarGetMultaggrUbLocal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), and SCIPvarGetUbLocal().

Referenced by SCIPaddExternBranchCand().

◆ SCIPbranchcandClearExternCands()

void SCIPbranchcandClearExternCands ( SCIP_BRANCHCAND branchcand)

removes all external candidates from the storage for external branching

Parameters
branchcandbranching candidate storage

Definition at line 696 of file branch.c.

References SCIP_BranchCand::externmaxpriority, SCIP_BranchCand::nexterncands, SCIP_BranchCand::nprioexternbins, SCIP_BranchCand::nprioexterncands, SCIP_BranchCand::nprioexternimpls, SCIP_BranchCand::nprioexternints, and NULL.

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

◆ SCIPbranchcandContainsExternCand()

SCIP_Bool SCIPbranchcandContainsExternCand ( SCIP_BRANCHCAND branchcand,
SCIP_VAR var 
)

◆ SCIPbranchcandGetPseudoCands()

SCIP_RETCODE SCIPbranchcandGetPseudoCands ( SCIP_BRANCHCAND branchcand,
SCIP_SET set,
SCIP_PROB prob,
SCIP_VAR ***  pseudocands,
int *  npseudocands,
int *  npriopseudocands 
)

gets branching candidates for pseudo solution branching (non-fixed variables)

Parameters
branchcandbranching candidate storage
setglobal SCIP settings
probproblem data
pseudocandspointer to store the array of pseudo branching candidates, or NULL
npseudocandspointer to store the number of pseudo branching candidates, or NULL
npriopseudocandspointer to store the number of candidates with maximal priority, or NULL

Definition at line 787 of file branch.c.

References SCIP_Var::branchpriority, SCIP_Prob::nbinvars, SCIP_Prob::nimplvars, SCIP_Prob::nintvars, SCIP_BranchCand::npriopseudobins, SCIP_BranchCand::npriopseudocands, SCIP_BranchCand::npseudocands, NULL, SCIP_Var::pseudocandindex, SCIP_BranchCand::pseudocands, SCIP_BranchCand::pseudomaxpriority, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPsetIsFeasIntegral(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPvarGetLbLocal(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), and SCIP_Prob::vars.

Referenced by SCIPgetPseudoBranchCands().

◆ SCIPbranchcandGetNPseudoCands()

int SCIPbranchcandGetNPseudoCands ( SCIP_BRANCHCAND branchcand)

gets number of branching candidates for pseudo solution branching (non-fixed variables)

Parameters
branchcandbranching candidate storage

Definition at line 851 of file branch.c.

References SCIP_BranchCand::npseudocands, and NULL.

Referenced by propAndSolve(), SCIPconshdlrEnforcePseudoSol(), SCIPgetNPseudoBranchCands(), SCIPsolveCIP(), and solveNode().

◆ SCIPbranchcandGetNPrioPseudoCands()

int SCIPbranchcandGetNPrioPseudoCands ( SCIP_BRANCHCAND branchcand)

gets number of branching candidates with maximal branch priority for pseudo solution branching

Parameters
branchcandbranching candidate storage

Definition at line 861 of file branch.c.

References SCIP_BranchCand::npriopseudocands, and NULL.

Referenced by SCIPgetNPrioPseudoBranchCands().

◆ SCIPbranchcandGetNPrioPseudoBins()

int SCIPbranchcandGetNPrioPseudoBins ( SCIP_BRANCHCAND branchcand)

gets number of binary branching candidates with maximal branch priority for pseudo solution branching

Parameters
branchcandbranching candidate storage

Definition at line 871 of file branch.c.

References SCIP_BranchCand::npriopseudobins, and NULL.

Referenced by SCIPgetNPrioPseudoBranchBins().

◆ SCIPbranchcandGetNPrioPseudoInts()

int SCIPbranchcandGetNPrioPseudoInts ( SCIP_BRANCHCAND branchcand)

gets number of integer branching candidates with maximal branch priority for pseudo solution branching

Parameters
branchcandbranching candidate storage

Definition at line 881 of file branch.c.

References SCIP_BranchCand::npriopseudoints, and NULL.

Referenced by SCIPgetNPrioPseudoBranchInts().

◆ SCIPbranchcandGetNPrioPseudoImpls()

int SCIPbranchcandGetNPrioPseudoImpls ( SCIP_BRANCHCAND branchcand)

gets number of implicit integer branching candidates with maximal branch priority for pseudo solution branching

Parameters
branchcandbranching candidate storage

Definition at line 891 of file branch.c.

References SCIP_BranchCand::npriopseudobins, SCIP_BranchCand::npriopseudocands, SCIP_BranchCand::npriopseudoints, and NULL.

Referenced by SCIPgetNPrioPseudoBranchImpls().

◆ branchcandInsertPseudoCand()

static void branchcandInsertPseudoCand ( SCIP_BRANCHCAND branchcand,
SCIP_VAR var,
int  insertpos 
)
static

insert pseudocand at given position, or to the first positions of the maximal priority candidates, using the given position as free slot for the other candidates

Parameters
branchcandbranching candidate storage
varvariable to insert
insertposfree position to insert the variable

Definition at line 904 of file branch.c.

References SCIP_BranchCand::npriopseudobins, SCIP_BranchCand::npriopseudocands, SCIP_BranchCand::npriopseudoints, SCIP_BranchCand::npseudocands, NULL, SCIP_Var::pseudocandindex, SCIP_BranchCand::pseudocands, SCIP_BranchCand::pseudocandssize, SCIP_BranchCand::pseudomaxpriority, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPdebugMessage, SCIPvarGetBranchPriority(), SCIPvarGetName(), and SCIPvarGetType().

Referenced by branchcandSortPseudoCands(), and SCIPbranchcandUpdateVar().

◆ branchcandSortPseudoCands()

static void branchcandSortPseudoCands ( SCIP_BRANCHCAND branchcand)
static

sorts the pseudo branching candidates, such that the candidates of maximal priority are at the front, ordered by binaries, integers, implicit integers

Parameters
branchcandbranching candidate storage

Definition at line 994 of file branch.c.

References branchcandInsertPseudoCand(), SCIP_Var::branchpriority, SCIP_BranchCand::npriopseudobins, SCIP_BranchCand::npriopseudocands, SCIP_BranchCand::npriopseudoints, SCIP_BranchCand::npseudocands, NULL, SCIP_Var::pseudocandindex, SCIP_BranchCand::pseudocands, SCIP_BranchCand::pseudomaxpriority, SCIPdebugMessage, and SCIPvarGetBranchPriority().

Referenced by branchcandRemovePseudoCand().

◆ branchcandRemovePseudoCand()

static void branchcandRemovePseudoCand ( SCIP_BRANCHCAND branchcand,
SCIP_VAR var 
)
static

◆ SCIPbranchcandRemoveVar()

SCIP_RETCODE SCIPbranchcandRemoveVar ( SCIP_BRANCHCAND branchcand,
SCIP_VAR var 
)

removes variable from branching candidate list

Parameters
branchcandbranching candidate storage
varvariable that changed its bounds

Definition at line 1118 of file branch.c.

References branchcandRemovePseudoCand(), NULL, SCIP_Var::pseudocandindex, and SCIP_OKAY.

Referenced by SCIPbranchcandUpdateVar(), SCIPbranchcandUpdateVarBranchPriority(), SCIPprobChgVarType(), and SCIPprobPerformVarDeletions().

◆ SCIPbranchcandUpdateVar()

◆ SCIPbranchcandUpdateVarBranchPriority()

SCIP_RETCODE SCIPbranchcandUpdateVarBranchPriority ( SCIP_BRANCHCAND branchcand,
SCIP_SET set,
SCIP_VAR var,
int  branchpriority 
)

updates branching priority of the given variable and update the pseudo candidate array if needed

Parameters
branchcandbranching candidate storage
setglobal SCIP settings
varvariable that changed its bounds
branchprioritybranch priority of the variable

Definition at line 1175 of file branch.c.

References NULL, SCIP_Var::pseudocandindex, SCIP_BranchCand::pseudomaxpriority, SCIP_CALL, SCIP_OKAY, SCIPbranchcandRemoveVar(), SCIPbranchcandUpdateVar(), SCIPvarChgBranchPriority(), and SCIPvarGetBranchPriority().

Referenced by SCIPchgVarBranchPriority().

◆ SCIP_DECL_PARAMCHGD()

static SCIP_DECL_PARAMCHGD ( paramChgdBranchrulePriority  )
static

method to call, when the priority of a branching rule was changed

Definition at line 1232 of file branch.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetBranchrulePriority().

◆ SCIPbranchruleCopyInclude()

SCIP_RETCODE SCIPbranchruleCopyInclude ( SCIP_BRANCHRULE branchrule,
SCIP_SET set 
)

copies the given branchrule to a new scip

Parameters
branchrulebranchrule
setSCIP_SET of SCIP to copy to

Definition at line 1246 of file branch.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPbranchruleGetName(), and SCIPsetDebugMsg.

◆ doBranchruleCreate()

static SCIP_RETCODE doBranchruleCreate ( SCIP_BRANCHRULE **  branchrule,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
BMS_BLKMEM blkmem,
const char *  name,
const char *  desc,
int  priority,
int  maxdepth,
SCIP_Real  maxbounddist,
SCIP_DECL_BRANCHCOPY((*branchcopy))  ,
SCIP_DECL_BRANCHFREE((*branchfree))  ,
SCIP_DECL_BRANCHINIT((*branchinit))  ,
SCIP_DECL_BRANCHEXIT((*branchexit))  ,
SCIP_DECL_BRANCHINITSOL((*branchinitsol))  ,
SCIP_DECL_BRANCHEXITSOL((*branchexitsol))  ,
SCIP_DECL_BRANCHEXECLP((*branchexeclp))  ,
SCIP_DECL_BRANCHEXECEXT((*branchexecext))  ,
SCIP_DECL_BRANCHEXECPS((*branchexecps))  ,
SCIP_BRANCHRULEDATA branchruledata 
)
static

internal method for creating a branching rule

Parameters
branchrulepointer to store branching rule
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of branching rule
descdescription of branching rule
prioritypriority of the branching rule
maxdepthmaximal depth level, up to which this branching rule should be used (or -1)
maxbounddistmaximal relative distance from current node's dual bound to primal bound compared to best node's dual bound for applying branching rule (0.0: only on current best node, 1.0: on all nodes)
branchruledatabranching rule data

Definition at line 1266 of file branch.c.

References BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddIntParam(), SCIPsetAddRealParam(), and SCIPsnprintf().

Referenced by SCIPbranchruleCreate().

◆ SCIPbranchruleCreate()

SCIP_RETCODE SCIPbranchruleCreate ( SCIP_BRANCHRULE **  branchrule,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
BMS_BLKMEM blkmem,
const char *  name,
const char *  desc,
int  priority,
int  maxdepth,
SCIP_Real  maxbounddist,
SCIP_DECL_BRANCHCOPY((*branchcopy))  ,
SCIP_DECL_BRANCHFREE((*branchfree))  ,
SCIP_DECL_BRANCHINIT((*branchinit))  ,
SCIP_DECL_BRANCHEXIT((*branchexit))  ,
SCIP_DECL_BRANCHINITSOL((*branchinitsol))  ,
SCIP_DECL_BRANCHEXITSOL((*branchexitsol))  ,
SCIP_DECL_BRANCHEXECLP((*branchexeclp))  ,
SCIP_DECL_BRANCHEXECEXT((*branchexecext))  ,
SCIP_DECL_BRANCHEXECPS((*branchexecps))  ,
SCIP_BRANCHRULEDATA branchruledata 
)

creates a branching rule

Parameters
branchrulepointer to store branching rule
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of branching rule
descdescription of branching rule
prioritypriority of the branching rule
maxdepthmaximal depth level, up to which this branching rule should be used (or -1)
maxbounddistmaximal relative distance from current node's dual bound to primal bound compared to best node's dual bound for applying branching rule (0.0: only on current best node, 1.0: on all nodes)
branchruledatabranching rule data

Definition at line 1348 of file branch.c.

References doBranchruleCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPbranchruleFree().

Referenced by SCIPincludeBranchrule(), and SCIPincludeBranchruleBasic().

◆ SCIPbranchruleFree()

SCIP_RETCODE SCIPbranchruleFree ( SCIP_BRANCHRULE **  branchrule,
SCIP_SET set 
)

frees memory of branching rule

Parameters
branchrulepointer to branching rule data structure
setglobal SCIP settings

Definition at line 1384 of file branch.c.

References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().

Referenced by SCIPbranchruleCreate(), and SCIPsetFree().

◆ SCIPbranchruleInit()

◆ SCIPbranchruleExit()

SCIP_RETCODE SCIPbranchruleExit ( SCIP_BRANCHRULE branchrule,
SCIP_SET set 
)

deinitializes branching rule

Parameters
branchrulebranching rule
setglobal SCIP settings

Definition at line 1455 of file branch.c.

References FALSE, SCIP_Branchrule::initialized, SCIP_Branchrule::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Branchrule::setuptime.

Referenced by SCIPsetExitPlugins().

◆ SCIPbranchruleInitsol()

SCIP_RETCODE SCIPbranchruleInitsol ( SCIP_BRANCHRULE branchrule,
SCIP_SET set 
)

informs branching rule that the branch and bound process is being started

Parameters
branchrulebranching rule
setglobal SCIP settings

Definition at line 1485 of file branch.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Branchrule::setuptime.

Referenced by SCIPsetInitsolPlugins().

◆ SCIPbranchruleExitsol()

SCIP_RETCODE SCIPbranchruleExitsol ( SCIP_BRANCHRULE branchrule,
SCIP_SET set 
)

informs branching rule that the branch and bound process data is being freed

Parameters
branchrulebranching rule
setglobal SCIP settings

Definition at line 1509 of file branch.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Branchrule::setuptime.

◆ SCIPbranchruleExecLPSol()

SCIP_RETCODE SCIPbranchruleExecLPSol ( SCIP_BRANCHRULE branchrule,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_SEPASTORE sepastore,
SCIP_Real  cutoffbound,
SCIP_Bool  allowaddcons,
SCIP_RESULT result 
)

◆ SCIPbranchruleExecExternSol()

SCIP_RETCODE SCIPbranchruleExecExternSol ( SCIP_BRANCHRULE branchrule,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_SEPASTORE sepastore,
SCIP_Real  cutoffbound,
SCIP_Bool  allowaddcons,
SCIP_RESULT result 
)

◆ SCIPbranchruleExecPseudoSol()

SCIP_RETCODE SCIPbranchruleExecPseudoSol ( SCIP_BRANCHRULE branchrule,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
SCIP_Real  cutoffbound,
SCIP_Bool  allowaddcons,
SCIP_RESULT result 
)

◆ SCIPbranchruleSetCopy()

void SCIPbranchruleSetCopy ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHCOPY((*branchcopy))   
)

sets copy method of branching rule

Parameters
branchrulebranching rule

Definition at line 1869 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleCopy().

◆ SCIPbranchruleSetFree()

void SCIPbranchruleSetFree ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHFREE((*branchfree))   
)

sets destructor method of branching rule

Parameters
branchrulebranching rule

Definition at line 1880 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleFree().

◆ SCIPbranchruleSetInit()

void SCIPbranchruleSetInit ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHINIT((*branchinit))   
)

sets initialization method of branching rule

Parameters
branchrulebranching rule

Definition at line 1891 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleInit().

◆ SCIPbranchruleSetExit()

void SCIPbranchruleSetExit ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHEXIT((*branchexit))   
)

sets deinitialization method of branching rule

Parameters
branchrulebranching rule

Definition at line 1902 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExit().

◆ SCIPbranchruleSetInitsol()

void SCIPbranchruleSetInitsol ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHINITSOL((*branchinitsol))   
)

sets solving process initialization method of branching rule

Parameters
branchrulebranching rule

Definition at line 1913 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleInitsol().

◆ SCIPbranchruleSetExitsol()

void SCIPbranchruleSetExitsol ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHEXITSOL((*branchexitsol))   
)

sets solving process deinitialization method of branching rule

Parameters
branchrulebranching rule

Definition at line 1924 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExitsol().

◆ SCIPbranchruleSetExecLp()

void SCIPbranchruleSetExecLp ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHEXECLP((*branchexeclp))   
)

sets branching execution method for fractional LP solutions

Parameters
branchrulebranching rule

Definition at line 1937 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExecLp().

◆ SCIPbranchruleSetExecExt()

void SCIPbranchruleSetExecExt ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHEXECEXT((*branchexecext))   
)

sets branching execution method for external candidates

Parameters
branchrulebranching rule

Definition at line 1948 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExecExt().

◆ SCIPbranchruleSetExecPs()

void SCIPbranchruleSetExecPs ( SCIP_BRANCHRULE branchrule,
SCIP_DECL_BRANCHEXECPS((*branchexecps))   
)

sets branching execution method for not completely fixed pseudo solutions

Parameters
branchrulebranching rule

Definition at line 1959 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExecPs().

◆ SCIPbranchruleSetPriority()

void SCIPbranchruleSetPriority ( SCIP_BRANCHRULE branchrule,
SCIP_SET set,
int  priority 
)

sets priority of branching rule

Parameters
branchrulebranching rule
setglobal SCIP settings
prioritynew priority of the branching rule

Definition at line 2000 of file branch.c.

References FALSE, NULL, and SCIP_Branchrule::priority.

Referenced by SCIPsetBranchrulePriority().

◆ SCIPbranchruleSetMaxdepth()

void SCIPbranchruleSetMaxdepth ( SCIP_BRANCHRULE branchrule,
int  maxdepth 
)

sets maximal depth level, up to which this branching rule should be used (-1 for no limit)

Parameters
branchrulebranching rule
maxdepthnew maxdepth of the branching rule

Definition at line 2024 of file branch.c.

References SCIP_Branchrule::maxdepth, and NULL.

Referenced by SCIPsetBranchruleMaxdepth().

◆ SCIPbranchruleSetMaxbounddist()

void SCIPbranchruleSetMaxbounddist ( SCIP_BRANCHRULE branchrule,
SCIP_Real  maxbounddist 
)

sets maximal relative distance from current node's dual bound to primal bound for applying branching rule

Parameters
branchrulebranching rule
maxbounddistnew maxbounddist of the branching rule

Definition at line 2046 of file branch.c.

References SCIP_Branchrule::maxbounddist, and NULL.

Referenced by SCIPsetBranchruleMaxbounddist().

◆ SCIPbranchruleEnableOrDisableClocks()

void SCIPbranchruleEnableOrDisableClocks ( SCIP_BRANCHRULE branchrule,
SCIP_Bool  enable 
)

enables or disables all clocks of branchrule, depending on the value of the flag

Parameters
branchrulethe branching rule for which all clocks should be enabled or disabled
enableshould the clocks of the branching rule be enabled?

Definition at line 2058 of file branch.c.

References SCIP_Branchrule::branchclock, NULL, SCIPclockEnableOrDisable(), and SCIP_Branchrule::setuptime.

◆ SCIPbranchGetScore()

◆ SCIPbranchGetScoreMultiple()

SCIP_Real SCIPbranchGetScoreMultiple ( SCIP_SET set,
SCIP_VAR var,
int  nchildren,
SCIP_Real gains 
)

calculates the branching score out of the gain predictions for a branching with arbitrary many children

Parameters
setglobal SCIP settings
varvariable, of which the branching factor should be applied, or NULL
nchildrennumber of children that the branching will create
gainsprediction of objective gain for each child

Definition at line 2249 of file branch.c.

References NULL, SCIP_Real, SCIPbranchGetScore(), and SCIPsetInfinity().

Referenced by SCIPgetBranchScoreMultiple().

◆ SCIPbranchGetBranchingPoint()

SCIP_Real SCIPbranchGetBranchingPoint ( SCIP_SET set,
SCIP_TREE tree,
SCIP_VAR var,
SCIP_Real  suggestion 
)

computes a branching point for a (not necessarily discrete) variable a suggested branching point is first projected onto the box if no point is suggested, then the value in the current LP or pseudo solution is used if this value is at infinity, then 0.0 projected onto the bounds and then moved inside the interval is used for a discrete variable, it is ensured that the returned value is fractional for a continuous variable, the parameter branching/clamp defines how far a branching point need to be from the bounds of a variable the latter is only applied if no point has been suggested, or the suggested point is not inside the variable's interval

Parameters
setglobal SCIP settings
treebranch and bound tree
varvariable, of which the branching point should be computed
suggestionsuggestion for branching point, or SCIP_INVALID if no suggestion

Definition at line 2287 of file branch.c.

References MAX, MAX3, MIN, NULL, REALABS, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIPrelDiff(), SCIPsetEpsilon(), SCIPsetFloor(), SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIPsetIsFeasZero(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsIntegral(), SCIPsetIsLE(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsRelGT(), SCIPsetIsRelLT(), SCIPsetRound(), SCIPtreeHasCurrentNodeLP(), SCIPvarGetLbLocal(), SCIPvarGetSol(), SCIPvarGetType(), and SCIPvarGetUbLocal().

Referenced by SCIPbranchExecExtern(), and SCIPgetBranchingPoint().

◆ SCIPbranchExecLP()

SCIP_RETCODE SCIPbranchExecLP ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_SEPASTORE sepastore,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_Real  cutoffbound,
SCIP_Bool  allowaddcons,
SCIP_RESULT result 
)

calls branching rules to branch on an LP solution; if no fractional variables exist, the result is SCIP_DIDNOTRUN; if the branch priority of an unfixed variable is larger than the maximal branch priority of the fractional variables, pseudo solution branching is applied on the unfixed variables with maximal branch priority

Parameters
blkmemblock memory for parameter settings
setglobal SCIP settings
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
sepastoreseparation storage
branchcandbranching candidate storage
eventqueueevent queue
cutoffboundglobal upper cutoff bound
allowaddconsshould adding constraints be allowed to avoid a branching?
resultpointer to store the result of the branching (s. branch.h)

Definition at line 2483 of file branch.c.

References branchcandCalcLPCands(), SCIP_BranchCand::lpcands, SCIP_BranchCand::lpmaxpriority, SCIP_BranchCand::nimpllpfracs, SCIP_BranchCand::nlpcands, SCIP_BranchCand::npriolpcands, NULL, SCIP_BranchCand::pseudomaxpriority, SCIP_BRANCHED, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_REAL_MIN, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIPbranchExecPseudo(), SCIPbranchruleExecLPSol(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetSortBranchrules(), SCIPtreeBranchVar(), SCIPvarGetBranchFactor(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetType(), and SCIPvarGetUbLocal().

Referenced by SCIPbranchLP(), and solveNode().

◆ SCIPbranchExecExtern()

SCIP_RETCODE SCIPbranchExecExtern ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_SEPASTORE sepastore,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_Real  cutoffbound,
SCIP_Bool  allowaddcons,
SCIP_RESULT result 
)

calls branching rules to branch on an external solution; if no external branching candidates exist, the result is SCIP_DIDNOTRUN

Parameters
blkmemblock memory for parameter settings
setglobal SCIP settings
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
sepastoreseparation storage
branchcandbranching candidate storage
eventqueueevent queue
cutoffboundglobal upper cutoff bound
allowaddconsshould adding constraints be allowed to avoid a branching?
resultpointer to store the result of the branching (s. branch.h)

Definition at line 2585 of file branch.c.

References SCIP_BranchCand::externcands, SCIP_BranchCand::externcandssol, SCIP_BranchCand::externmaxpriority, SCIP_Tree::nchildren, SCIP_BranchCand::nexterncands, SCIP_BranchCand::nprioexterncands, NULL, SCIP_BranchCand::pseudomaxpriority, SCIP_BRANCHED, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_REAL_MIN, SCIP_REDUCEDDOM, SCIPbranchExecPseudo(), SCIPbranchGetBranchingPoint(), SCIPbranchruleExecExternSol(), SCIPrelDiff(), SCIPsetDebugMsg, SCIPsetEpsilon(), SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetSortBranchrules(), SCIPtreeBranchVar(), SCIPvarGetBranchFactor(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetName(), and SCIPvarGetUbLocal().

Referenced by SCIPbranchExtern(), and solveNode().

◆ SCIPbranchExecPseudo()

SCIP_RETCODE SCIPbranchExecPseudo ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_Real  cutoffbound,
SCIP_Bool  allowaddcons,
SCIP_RESULT result 
)

calls branching rules to branch on a pseudo solution; if no unfixed variables exist, the result is SCIP_DIDNOTRUN

Parameters
blkmemblock memory for parameter settings
setglobal SCIP settings
statproblem statistics
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
cutoffboundglobal upper cutoff bound
allowaddconsshould adding constraints be allowed to avoid a branching?
resultpointer to store the result of the branching (s. branch.h)

Definition at line 2716 of file branch.c.

References SCIP_BranchCand::npseudocands, NULL, SCIP_BranchCand::pseudocands, SCIP_BRANCHED, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_REAL_MIN, SCIP_VARTYPE_CONTINUOUS, SCIPbranchruleExecPseudoSol(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetSortBranchrules(), SCIPtreeBranchVar(), SCIPvarGetBranchFactor(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetType(), and SCIPvarGetUbLocal().

Referenced by SCIPbranchExecExtern(), SCIPbranchExecLP(), SCIPbranchPseudo(), SCIPsolveCIP(), and solveNode().