all variables full strong LP branching rule
The all variables full strong branching rule applies strong branching to every non-fixed variable at the current node of the branch-and-bound search. The rule selects the candidate which will cause the highest gain of the dual bound in the created sub-tree among all branching variables.
For calculating the gain, a look-ahead is performed by solving the child node LPs which will result from branching on a variable.
For a more mathematical description and a comparison between the strong branching rule and other branching rules in SCIP, we refer to
Definition in file branch_allfullstrong.c.
Go to the source code of this file.
Macros | |
#define | BRANCHRULE_NAME "allfullstrong" |
#define | BRANCHRULE_DESC "all variables full strong branching" |
#define | BRANCHRULE_PRIORITY -1000 |
#define | BRANCHRULE_MAXDEPTH -1 |
#define | BRANCHRULE_MAXBOUNDDIST 1.0 |
Functions | |
static SCIP_RETCODE | branch (SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_RESULT *result) |
static | SCIP_DECL_BRANCHCOPY (branchCopyAllfullstrong) |
static | SCIP_DECL_BRANCHFREE (branchFreeAllfullstrong) |
static | SCIP_DECL_BRANCHINIT (branchInitAllfullstrong) |
static | SCIP_DECL_BRANCHEXECLP (branchExeclpAllfullstrong) |
static | SCIP_DECL_BRANCHEXECPS (branchExecpsAllfullstrong) |
SCIP_RETCODE | SCIPselectVarPseudoStrongBranching (SCIP *scip, SCIP_VAR **pseudocands, SCIP_Bool *skipdown, SCIP_Bool *skipup, int npseudocands, int npriopseudocands, int *bestpseudocand, SCIP_Real *bestdown, SCIP_Real *bestup, SCIP_Real *bestscore, SCIP_Bool *bestdownvalid, SCIP_Bool *bestupvalid, SCIP_Real *provedbound, SCIP_RESULT *result) |
SCIP_RETCODE | SCIPincludeBranchruleAllfullstrong (SCIP *scip) |
#define BRANCHRULE_NAME "allfullstrong" |
Definition at line 45 of file branch_allfullstrong.c.
Referenced by branch(), SCIP_DECL_BRANCHCOPY(), SCIPincludeBranchruleAllfullstrong(), and SCIPselectVarPseudoStrongBranching().
#define BRANCHRULE_DESC "all variables full strong branching" |
Definition at line 46 of file branch_allfullstrong.c.
Referenced by SCIPincludeBranchruleAllfullstrong().
#define BRANCHRULE_PRIORITY -1000 |
Definition at line 47 of file branch_allfullstrong.c.
Referenced by SCIPincludeBranchruleAllfullstrong().
#define BRANCHRULE_MAXDEPTH -1 |
Definition at line 48 of file branch_allfullstrong.c.
Referenced by SCIPincludeBranchruleAllfullstrong().
#define BRANCHRULE_MAXBOUNDDIST 1.0 |
Definition at line 49 of file branch_allfullstrong.c.
Referenced by SCIPincludeBranchruleAllfullstrong().
|
static |
performs the all fullstrong branching
scip | SCIP data structure |
branchrule | branching rule |
result | pointer to store the result of the callback method |
Definition at line 64 of file branch_allfullstrong.c.
References BMSclearMemoryArray, BRANCHRULE_NAME, MAX, SCIP_Bool, SCIP_BRANCHED, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIPallColsInLP(), SCIPallocBlockMemoryArray, SCIPbranchruleGetData(), SCIPbranchruleGetName(), SCIPbranchVarVal(), SCIPdebugMsg, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetCutoffbound(), SCIPgetNVars(), SCIPgetPseudoBranchCands(), SCIPisExactSolve(), SCIPisLT(), SCIPnodeGetLowerbound(), SCIPselectVarPseudoStrongBranching(), SCIPupdateNodeLowerbound(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), and SCIPvarGetUbLocal().
Referenced by enforceConstraint(), enforceSolution(), SCIP_DECL_BRANCHEXECLP(), and SCIP_DECL_BRANCHEXECPS().
|
static |
copy method for branchrule plugins (called when SCIP copies plugins)
Definition at line 181 of file branch_allfullstrong.c.
References BRANCHRULE_NAME, SCIP_CALL, SCIP_OKAY, SCIPbranchruleGetName(), and SCIPincludeBranchruleAllfullstrong().
|
static |
destructor of branching rule to free user data (called when SCIP is exiting)
Definition at line 195 of file branch_allfullstrong.c.
References SCIP_OKAY, SCIPbranchruleGetData(), SCIPbranchruleSetData(), SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArrayNull.
|
static |
initialization method of branching rule (called after problem was transformed)
Definition at line 213 of file branch_allfullstrong.c.
References SCIP_OKAY, and SCIPbranchruleGetData().
|
static |
branching execution method for fractional LP solutions
Definition at line 227 of file branch_allfullstrong.c.
References branch(), SCIP_CALL, SCIP_DIDNOTRUN, SCIP_OKAY, and SCIPdebugMsg.
|
static |
branching execution method for not completely fixed pseudo solutions
Definition at line 243 of file branch_allfullstrong.c.
References branch(), SCIP_CALL, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPdebugMsg, and SCIPhasCurrentNodeLP().
SCIP_RETCODE SCIPselectVarPseudoStrongBranching | ( | SCIP * | scip, |
SCIP_VAR ** | pseudocands, | ||
SCIP_Bool * | skipdown, | ||
SCIP_Bool * | skipup, | ||
int | npseudocands, | ||
int | npriopseudocands, | ||
int * | bestpseudocand, | ||
SCIP_Real * | bestdown, | ||
SCIP_Real * | bestup, | ||
SCIP_Real * | bestscore, | ||
SCIP_Bool * | bestdownvalid, | ||
SCIP_Bool * | bestupvalid, | ||
SCIP_Real * | provedbound, | ||
SCIP_RESULT * | result | ||
) |
Selects a variable from a set of candidates by strong branching
scip | original SCIP data structure |
pseudocands | branching candidates |
skipdown | should down branchings be skipped? |
skipup | should up branchings be skipped? |
npseudocands | number of branching candidates |
npriopseudocands | number of priority branching candidates |
bestpseudocand | best candidate for branching |
bestdown | objective value of the down branch for bestcand |
bestup | objective value of the up branch for bestcand |
bestscore | score for bestcand |
bestdownvalid | is bestdown a valid dual bound for the down branch? |
bestupvalid | is bestup a valid dual bound for the up branch? |
provedbound | proved dual bound for current subtree |
result | result pointer |
Definition at line 271 of file branch_allfullstrong.c.
References BRANCHRULE_NAME, FALSE, MAX, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_VERBLEVEL_HIGH, SCIPallColsInLP(), SCIPbranchruleGetData(), SCIPchgVarLb(), SCIPchgVarUb(), SCIPdebug, SCIPdebugMsg, SCIPendStrongbranch(), SCIPfeasCeil(), SCIPfeasFloor(), SCIPfindBranchrule(), SCIPfixVar(), SCIPgetBranchScore(), SCIPgetBranchScoreMultiple(), SCIPgetCutoffbound(), SCIPgetDepth(), SCIPgetLPObjval(), SCIPgetLPSolstat(), SCIPgetNNodes(), SCIPgetVarStrongbranchFrac(), SCIPgetVarStrongbranchInt(), SCIPinfinity(), SCIPisExactSolve(), SCIPisFeasIntegral(), SCIPisGE(), SCIPprintDisplayLine(), SCIPstartStrongbranch(), SCIPupdateVarPseudocost(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPvarIsInLP(), SCIPverbMessage(), and TRUE.
Referenced by branch(), and SCIP_DECL_BRANCHEXECLP().
SCIP_RETCODE SCIPincludeBranchruleAllfullstrong | ( | SCIP * | scip | ) |
creates the all variables full strong LP branching rule and includes it in SCIP
scip | SCIP data structure |
Definition at line 566 of file branch_allfullstrong.c.
References BRANCHRULE_DESC, BRANCHRULE_MAXBOUNDDIST, BRANCHRULE_MAXDEPTH, BRANCHRULE_NAME, BRANCHRULE_PRIORITY, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPincludeBranchruleBasic(), SCIPsetBranchruleCopy(), SCIPsetBranchruleExecLp(), SCIPsetBranchruleExecPs(), SCIPsetBranchruleFree(), and SCIPsetBranchruleInit().
Referenced by SCIP_DECL_BRANCHCOPY(), and SCIPincludeDefaultPlugins().