branch_orig.c
Go to the documentation of this file.
37 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
115 * iter = 0 and branchcand is an integer variable belonging to a unique block with fractional value, or
116 * iter = 1 and branchcand is an integer variable that belongs to no block but was directly transferred to the
135 if (!GCGoriginalVarIsLinking(branchcand) && GCGgetNIdenticalBlocks(scip, GCGvarGetBlock(branchcand)) != 1)
178 * if solution value is integral, the bounds of x are finite, then two child nodes will be created
182 * if solution value is equal to one of the bounds and the other bound is infinite, only two child nodes
230 /* if there was no explicit value given for branching, the variable has a finite domain and the current LP/pseudo
267 SCIPdebugMessage("integral branch on variable <%s> with value %g, priority %d (current lower bound: %g)\n",
338 GCGconsMasterbranchGetActiveCons(masterscip), branchrule, branchdata, origbranchconss, norigbranchconss,
400 GCGconsMasterbranchGetActiveCons(masterscip), branchrule, branchdata, origbranchconss, norigbranchconss,
461 GCGconsMasterbranchGetActiveCons(masterscip), branchrule, branchdata, origbranchconss, norigbranchconss,
469 /* Evaluates the given variable based on a score function of choice. Higher scores are given to better
484 /* define score functions and calculate score for all variables for sorting dependent on used heuristic */
560 * iter = 1: we did not find enough variables to branch on so far, so we look for integer variables that
562 * but were directly transferred to the master problem and which have a fractional value in the current
609 SCIP_CALL( GCGbranchSelectCandidateStrongBranchingOrig(scip, branchrule, &branchvar, &upinf, &downinf, result,
650 /* branching restrictions are enforced by variable bounds, this is done automatically, so we can abort here */
670 /* constraint was added locally to the node where it is needed, so we do not need to care about this
691 if( !SCIPisInfinity(scip, newlowerbound) && SCIPgetStage(GCGgetMasterprob(scip)) == SCIP_STAGE_SOLVING
766 /* if the transferred master solution is feasible, the current node is solved to optimality and can be pruned */
801 /* if the transferred master solution is feasible, the current node is solved to optimality and can be pruned */
825 branchDeactiveMasterOrig, branchPropMasterOrig, branchMasterSolvedOrig, branchDataDeleteOrig) );
873 SCIP_CALL( SCIPgetPseudoBranchCands(origscip, &branchcands, &nbranchcands, &npriobranchcands) );
911 /* we did not find a variable to branch on so far, so we look for an unfixed linking variable or an integer variable
1011 SCIP_CALL( SCIPincludeBranchruleBasic(scip, &branchrule, BRANCHRULE_NAME, BRANCHRULE_DESC, BRANCHRULE_PRIORITY,
1033 "should branching be performed on the most fractional variable? (only if usepseudocosts = FALSE)",
1037 "should the variable on which the branching is performed be selected randomly? (only if usepseudocosts = mostfrac = FALSE)",
1041 "should strong branching with propagation be used to determine the variable on which the branching is performed? (only if usepseudocosts = mostfrac = random = FALSE)",
1045 "should strong branching be used to determine the variable on which the branching is performed?",
1058 "maximum number of output candidates from phase 0 as fraction of total cands during strong branching",
1062 "how much impact should the node gap have on the number of precisely evaluated candidates in phase 1 during strong branching?",
1074 "maximum number of output candidates from phase 1 as fraction of phase 1 cands during strong branching",
type definitions for branching rules in GCG projects
GCG interface methods.
SCIP_Bool GCGrelaxIsOrigSolFeasible(SCIP *scip)
Definition: relax_gcg.c:4202
SCIP_VAR * GCGbranchOrigGetOrigvar(GCG_BRANCHDATA *branchdata)
Definition: branch_orig.c:1088
SCIP_RETCODE GCGcreateConsMasterbranch(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_NODE *node, SCIP_CONS *parentcons, SCIP_BRANCHRULE *branchrule, GCG_BRANCHDATA *branchdata, SCIP_CONS **origbranchconss, int norigbranchconss, int maxorigbranchconss)
Definition: cons_masterbranch.c:2278
static SCIP_Bool getUniqueBlockFlagForIter(SCIP *scip, SCIP_VAR *branchcand, int iter)
Definition: branch_orig.c:120
SCIP_RETCODE GCGrelaxTransOrigToMasterCons(SCIP *scip, SCIP_CONS *cons, SCIP_CONS **transcons)
Definition: relax_gcg.c:3789
static GCG_DECL_BRANCHMASTERSOLVED(branchMasterSolvedOrig)
Definition: branch_orig.c:680
branching rule for original problem in GCG
static SCIP_Real score_function(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_VAR *var, SCIP_Real solval, SCIP_Real *score)
Definition: branch_orig.c:472
GCG variable pricer.
Definition: branch_bpstrong.c:127
SCIP_RETCODE SCIPgetRelpsprobBranchVar(SCIP *scip, SCIP_VAR **branchcands, SCIP_Real *branchcandssol, int nbranchcands, int nvars, SCIP_RESULT *result, SCIP_VAR **branchvar)
Definition: branch_relpsprob.c:1545
constraint handler for the integrality constraint
constraint handler for storing the branching decisions at each node of the tree
static GCG_DECL_BRANCHACTIVEMASTER(branchActiveMasterOrig)
Definition: branch_orig.c:642
SCIP_Bool GCGcurrentNodeIsGeneric(SCIP *scip)
Definition: cons_masterbranch.c:2722
constraint handler for storing the branching decisions at each node of the tree
static SCIP_DECL_BRANCHEXECEXT(branchExecextOrig)
Definition: branch_orig.c:784
int GCGgetNIdenticalBlocks(SCIP *scip, int pricingprobnr)
Definition: relax_gcg.c:4053
SCIP_Real GCGbranchOrigGetNewbound(GCG_BRANCHDATA *branchdata)
Definition: branch_orig.c:1108
GCG_BOUNDTYPE GCGbranchOrigGetBoundtype(GCG_BRANCHDATA *branchdata)
Definition: branch_orig.c:1098
SCIP_RETCODE SCIPincludeBranchruleOrig(SCIP *scip)
Definition: branch_orig.c:993
GCG relaxator.
SCIP_CONS * GCGconsMasterbranchGetActiveCons(SCIP *scip)
Definition: cons_masterbranch.c:2628
Definition: branch_bpstrong.c:109
static SCIP_RETCODE branchVar(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_VAR *branchvar, SCIP_Real solval, SCIP_Bool upinf, SCIP_Bool downinf)
Definition: branch_orig.c:186
SCIP_RETCODE GCGbranchOrigUpdateExternBranchcands(SCIP *scip)
Definition: branch_orig.c:1118
generic branch and price strong branching as described in Pecin, D., Pessoa, A., Poggi,...
static GCG_DECL_BRANCHDATADELETE(branchDataDeleteOrig)
Definition: branch_orig.c:704
static SCIP_RETCODE branchExtern(SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_RESULT *result)
Definition: branch_orig.c:503
SCIP_RETCODE GCGbranchSelectCandidateStrongBranchingOrig(SCIP *scip, SCIP_BRANCHRULE *origbranchrule, SCIP_VAR **branchvar, SCIP_Bool *upinf, SCIP_Bool *downinf, SCIP_RESULT *result, SCIP_Bool *stillusestrong)
Definition: branch_bpstrong.c:1757
reliable pseudo costs branching rule
SCIP_RETCODE GCGrelaxIncludeBranchrule(SCIP *scip, SCIP_BRANCHRULE *branchrule, GCG_DECL_BRANCHACTIVEMASTER((*branchactivemaster)), GCG_DECL_BRANCHDEACTIVEMASTER((*branchdeactivemaster)), GCG_DECL_BRANCHPROPMASTER((*branchpropmaster)), GCG_DECL_BRANCHMASTERSOLVED((*branchmastersolved)), GCG_DECL_BRANCHDATADELETE((*branchdatadelete)))
Definition: relax_gcg.c:3545
SCIP_RETCODE GCGlinkingVarGetBlocks(SCIP_VAR *var, int nblocks, int *blocks)
Definition: gcgvar.c:450
SCIP_RETCODE GCGconsIntegralorigAddBranchrule(SCIP *scip, SCIP_BRANCHRULE *branchrule)
Definition: cons_integralorig.c:67