Scippy

SCIP

Solving Constraint Integer Programs

branch.h File Reference

Detailed Description

internal methods for branching rules and branching candidate storage

Author
Tobias Achterberg

Definition in file branch.h.

#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_retcode.h"
#include "scip/type_result.h"
#include "scip/type_set.h"
#include "scip/type_stat.h"
#include "scip/type_misc.h"
#include "scip/type_event.h"
#include "scip/type_lp.h"
#include "scip/type_var.h"
#include "scip/type_prob.h"
#include "scip/type_tree.h"
#include "scip/type_sepastore.h"
#include "scip/type_branch.h"
#include "scip/pub_branch.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPbranchcandCreate (SCIP_BRANCHCAND **branchcand)
 
SCIP_RETCODE SCIPbranchcandFree (SCIP_BRANCHCAND **branchcand)
 
void SCIPbranchcandInvalidate (SCIP_BRANCHCAND *branchcand)
 
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)
 
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_RETCODE SCIPbranchruleCopyInclude (SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
 
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)
 
void SCIPbranchruleSetPriority (SCIP_BRANCHRULE *branchrule, SCIP_SET *set, int priority)
 
void SCIPbranchruleSetMaxdepth (SCIP_BRANCHRULE *branchrule, int maxdepth)
 
void SCIPbranchruleSetMaxbounddist (SCIP_BRANCHRULE *branchrule, SCIP_Real maxbounddist)
 
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)))
 
void SCIPbranchruleEnableOrDisableClocks (SCIP_BRANCHRULE *branchrule, SCIP_Bool enable)
 
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

◆ 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, 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, and SCIP_OKAY.

Referenced by freeTransform().

◆ SCIPbranchcandInvalidate()

void SCIPbranchcandInvalidate ( SCIP_BRANCHCAND branchcand)

invalidates branching candidates storage

resets branching candidates storage

Parameters
branchcandpointer to store branching candidate storage

Definition at line 192 of file branch.c.

References SCIP_BranchCand::validlpcandslp.

Referenced by prepareReoptimization(), and SCIPbranchcandCreate().

◆ 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, 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, 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.

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.

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.

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.

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.

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.

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.

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.

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, and SCIP_BranchCand::nprioexternints.

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, 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 698 of file branch.c.

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

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 789 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, 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 853 of file branch.c.

References SCIP_BranchCand::npseudocands.

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 863 of file branch.c.

References SCIP_BranchCand::npriopseudocands.

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 873 of file branch.c.

References SCIP_BranchCand::npriopseudobins.

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 883 of file branch.c.

References SCIP_BranchCand::npriopseudoints.

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 893 of file branch.c.

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

Referenced by SCIPgetNPrioPseudoBranchImpls().

◆ 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 1120 of file branch.c.

References branchcandRemovePseudoCand(), 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 1177 of file branch.c.

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

Referenced by SCIPchgVarBranchPriority().

◆ 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 1248 of file branch.c.

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

◆ 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 1267 of file branch.c.

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

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 1347 of file branch.c.

References BMSfreeMemory, BMSfreeMemoryArray, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().

Referenced by SCIPsetFree().

◆ SCIPbranchruleInit()

◆ SCIPbranchruleExit()

SCIP_RETCODE SCIPbranchruleExit ( SCIP_BRANCHRULE branchrule,
SCIP_SET set 
)

deinitializes branching rule

Parameters
branchrulebranching rule
setglobal SCIP settings

Definition at line 1417 of file branch.c.

References FALSE, SCIP_Branchrule::initialized, SCIP_Branchrule::name, 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 1447 of file branch.c.

References 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 1471 of file branch.c.

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

Referenced by SCIPsetInitsolPlugins().

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

◆ 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 1962 of file branch.c.

References FALSE, 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 1986 of file branch.c.

References SCIP_Branchrule::maxdepth.

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 2008 of file branch.c.

References SCIP_Branchrule::maxbounddist.

Referenced by SCIPsetBranchruleMaxbounddist().

◆ SCIPbranchruleSetCopy()

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

sets copy method of branching rule

Parameters
branchrulebranching rule

Definition at line 1831 of file branch.c.

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 1842 of file branch.c.

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 1853 of file branch.c.

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 1864 of file branch.c.

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 1875 of file branch.c.

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 1886 of file branch.c.

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 1899 of file branch.c.

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 1910 of file branch.c.

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 1921 of file branch.c.

Referenced by SCIPsetBranchruleExecPs().

◆ 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 2020 of file branch.c.

References SCIP_Branchrule::branchclock, 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 2211 of file branch.c.

References 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 2249 of file branch.c.

References MAX, 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 2445 of file branch.c.

References branchcandCalcLPCands(), FALSE, SCIP_BranchCand::lpcands, SCIP_BranchCand::lpmaxpriority, SCIP_BranchCand::nimpllpfracs, SCIP_BranchCand::nlpcands, SCIP_BranchCand::npriolpcands, 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(), SCIPsolveIsStopped(), 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 2547 of file branch.c.

References SCIP_BranchCand::externcands, SCIP_BranchCand::externcandssol, SCIP_BranchCand::externmaxpriority, SCIP_Tree::nchildren, SCIP_BranchCand::nexterncands, SCIP_BranchCand::nprioexterncands, 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 2678 of file branch.c.

References SCIP_BranchCand::npseudocands, 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().