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)
 
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 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)))
 
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_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_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_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
 

Function Documentation

SCIP_RETCODE SCIPbranchcandCreate ( SCIP_BRANCHCAND **  branchcand)

creates a branching candidate storage

Parameters
branchcandpointer to store branching candidate storage

Definition at line 132 of file branch.c.

References BMSallocMemory, NULL, SCIP_ALLOC, and SCIP_OKAY.

Referenced by SCIPtransformProb().

SCIP_RETCODE SCIPbranchcandFree ( SCIP_BRANCHCAND **  branchcand)

frees branching candidate storage

Parameters
branchcandpointer to store branching candidate storage

Definition at line 171 of file branch.c.

References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, and SCIP_OKAY.

Referenced by freeTransform().

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

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

int SCIPbranchcandGetNExternCands ( SCIP_BRANCHCAND branchcand)

gets number of external branching candidates

Parameters
branchcandbranching candidate storage

Definition at line 457 of file branch.c.

References SCIP_BranchCand::nexterncands, and NULL.

Referenced by SCIPgetNExternBranchCands(), and solveNode().

int SCIPbranchcandGetNPrioExternCands ( SCIP_BRANCHCAND branchcand)

gets number of external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 467 of file branch.c.

References SCIP_BranchCand::nprioexterncands, and NULL.

Referenced by SCIPgetNPrioExternBranchCands().

int SCIPbranchcandGetNPrioExternBins ( SCIP_BRANCHCAND branchcand)

gets number of binary external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 477 of file branch.c.

References SCIP_BranchCand::nprioexternbins, and NULL.

Referenced by SCIPgetNPrioExternBranchBins().

int SCIPbranchcandGetNPrioExternInts ( SCIP_BRANCHCAND branchcand)

gets number of integer external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 487 of file branch.c.

References SCIP_BranchCand::nprioexternints, and NULL.

Referenced by SCIPgetNPrioExternBranchInts().

int SCIPbranchcandGetNPrioExternImpls ( SCIP_BRANCHCAND branchcand)

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

Parameters
branchcandbranching candidate storage

Definition at line 497 of file branch.c.

References SCIP_BranchCand::nprioexternimpls, and NULL.

Referenced by SCIPgetNPrioExternBranchImpls().

int SCIPbranchcandGetNPrioExternConts ( SCIP_BRANCHCAND branchcand)

gets number of continuous external branching candidates with maximal branch priority

Parameters
branchcandbranching candidate storage

Definition at line 507 of file branch.c.

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

Referenced by SCIPgetNPrioExternBranchConts().

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 519 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, SCIPdebugMessage, SCIPsetCeil(), SCIPsetFloor(), SCIPsetIsEQ(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetMultaggrLbLocal(), SCIPvarGetMultaggrUbLocal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), and SCIPvarGetUbLocal().

Referenced by SCIPaddExternBranchCand().

void SCIPbranchcandClearExternCands ( SCIP_BRANCHCAND branchcand)

removes all external candidates from the storage for external branching

Parameters
branchcandbranching candidate storage

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

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 
)

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

References 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_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().

int SCIPbranchcandGetNPseudoCands ( SCIP_BRANCHCAND branchcand)

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

Parameters
branchcandbranching candidate storage

Definition at line 802 of file branch.c.

References SCIP_BranchCand::npseudocands, and NULL.

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

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

References SCIP_BranchCand::npriopseudocands, and NULL.

Referenced by SCIPgetNPrioPseudoBranchCands().

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

References SCIP_BranchCand::npriopseudobins, and NULL.

Referenced by SCIPgetNPrioPseudoBranchBins().

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

References SCIP_BranchCand::npriopseudoints, and NULL.

Referenced by SCIPgetNPrioPseudoBranchInts().

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

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

Referenced by SCIPgetNPrioPseudoBranchImpls().

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

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

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

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

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

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

Definition at line 1120 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_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 1193 of file branch.c.

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

Referenced by SCIPsetCopyPlugins().

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

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

Referenced by SCIPincludeBranchrule(), and SCIPincludeBranchruleBasic().

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

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

Referenced by SCIPsetFree().

SCIP_RETCODE SCIPbranchruleExit ( SCIP_BRANCHRULE branchrule,
SCIP_SET set 
)

deinitializes branching rule

Parameters
branchrulebranching rule
setglobal SCIP settings

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

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

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

Referenced by SCIPsetInitsolPlugins().

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

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

Referenced by SCIPsetExitsolPlugins().

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 
)

sets priority of branching rule

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

Definition at line 1873 of file branch.c.

References FALSE, NULL, and SCIP_Branchrule::priority.

Referenced by SCIPsetBranchrulePriority().

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

References SCIP_Branchrule::maxdepth, and NULL.

Referenced by SCIPsetBranchruleMaxdepth().

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

References SCIP_Branchrule::maxbounddist, and NULL.

Referenced by SCIPsetBranchruleMaxbounddist().

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

sets copy method of branching rule

Parameters
branchrulebranching rule

Definition at line 1742 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleCopy().

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

sets destructor method of branching rule

Parameters
branchrulebranching rule

Definition at line 1753 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleFree().

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

sets initialization method of branching rule

Parameters
branchrulebranching rule

Definition at line 1764 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleInit().

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

sets deinitialization method of branching rule

Parameters
branchrulebranching rule

Definition at line 1775 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExit().

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

sets solving process initialization method of branching rule

Parameters
branchrulebranching rule

Definition at line 1786 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleInitsol().

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

sets solving process deinitialization method of branching rule

Parameters
branchrulebranching rule

Definition at line 1797 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExitsol().

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

sets branching execution method for fractional LP solutions

Parameters
branchrulebranching rule

Definition at line 1810 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExecLp().

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

sets branching execution method for external candidates

Parameters
branchrulebranching rule

Definition at line 1821 of file branch.c.

References NULL.

Referenced by SCIPsetBranchruleExecExt().

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

References NULL.

Referenced by SCIPsetBranchruleExecPs().

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

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

Referenced by SCIPgetBranchScoreMultiple().

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

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

Referenced by SCIPbranchExecExtern(), and SCIPgetBranchingPoint().

SCIP_RETCODE SCIPbranchExecLP ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
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
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 2350 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(), SCIPdebugMessage, SCIPsetIsEQ(), SCIPsetSortBranchrules(), SCIPtreeBranchVar(), SCIPvarGetBranchFactor(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetType(), and SCIPvarGetUbLocal().

Referenced by SCIPbranchLP(), and solveNode().

SCIP_RETCODE SCIPbranchExecExtern ( BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_PROB origprob,
SCIP_TREE tree,
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
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 2451 of file branch.c.

References SCIP_BranchCand::externcands, SCIP_BranchCand::externcandssol, SCIP_BranchCand::externmaxpriority, 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, SCIPbranchExecPseudo(), SCIPbranchGetBranchingPoint(), SCIPbranchruleExecExternSol(), SCIPdebugMessage, SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetSortBranchrules(), SCIPtreeBranchVar(), SCIPvarGetBranchFactor(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetName(), and SCIPvarGetUbLocal().

Referenced by SCIPbranchExtern(), and solveNode().

SCIP_RETCODE SCIPbranchExecPseudo ( 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_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
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 2572 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(), SCIPdebugMessage, SCIPsetIsEQ(), SCIPsetSortBranchrules(), SCIPtreeBranchVar(), SCIPvarGetBranchFactor(), SCIPvarGetBranchPriority(), SCIPvarGetLbLocal(), SCIPvarGetType(), and SCIPvarGetUbLocal().

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