fullstrong branching on fractional and multi-aggregated variables
This branching rule uses all fractional binary and integer variables as candidates, as well as fractional multiaggregated binary and integer variables. Although not directly contained in the presolved problem anymore, the multi-aggregation provides an affine linear sum of integer variables, on which branching can be performed.
For more details, see G.Gamrath, A.Melchiori, T.Berthold, A.M.Gleixner, D.Salvagnin: Branching on Multi-aggregated Variables (http://dx.doi.org/10.1007/978-3-319-18008-3_10)
Definition in file branch_multaggr.c.
#include "blockmemshell/memory.h"
#include "scip/branch_fullstrong.h"
#include "scip/branch_multaggr.h"
#include "scip/cons_linear.h"
#include "scip/pub_branch.h"
#include "scip/pub_cons.h"
#include "scip/pub_message.h"
#include "scip/pub_tree.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_cons.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_probing.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_timing.h"
#include "scip/scip_tree.h"
#include "scip/scip_var.h"
#include <string.h>
Go to the source code of this file.
Macros | |
#define | BRANCHRULE_NAME "multaggr" |
#define | BRANCHRULE_DESC "fullstrong branching on fractional and multi-aggregated variables" |
#define | BRANCHRULE_PRIORITY 0 |
#define | BRANCHRULE_MAXDEPTH -1 |
#define | BRANCHRULE_MAXBOUNDDIST 1.0 |
#define | DEFAULT_REEVALAGE 0LL |
#define | DEFAULT_MAXPROPROUNDS 0 |
#define | DEFAULT_PROBINGBOUNDS TRUE |
Functions | |
static SCIP_RETCODE | selectVarMultAggrBranching (SCIP *scip, SCIP_VAR **bestcand, SCIP_Real *bestscore, SCIP_Real *bestsol, SCIP_Real *bestdown, SCIP_Real *bestup, SCIP_Bool *bestdownvalid, SCIP_Bool *bestupvalid, SCIP_Real *provedbound, SCIP_Real *estimatedown, SCIP_Real *estimateup, SCIP_RESULT *result) |
static | SCIP_DECL_BRANCHCOPY (branchCopyMultAggr) |
static | SCIP_DECL_BRANCHFREE (branchFreeMultAggr) |
static | SCIP_DECL_BRANCHINIT (branchInitMultAggr) |
static | SCIP_DECL_BRANCHEXIT (branchExitMultAggr) |
static | SCIP_DECL_BRANCHEXECLP (branchExeclpMultAggr) |
SCIP_RETCODE | SCIPincludeBranchruleMultAggr (SCIP *scip) |
#define BRANCHRULE_NAME "multaggr" |
Definition at line 66 of file branch_multaggr.c.
#define BRANCHRULE_DESC "fullstrong branching on fractional and multi-aggregated variables" |
Definition at line 67 of file branch_multaggr.c.
#define BRANCHRULE_PRIORITY 0 |
Definition at line 68 of file branch_multaggr.c.
#define BRANCHRULE_MAXDEPTH -1 |
Definition at line 69 of file branch_multaggr.c.
#define BRANCHRULE_MAXBOUNDDIST 1.0 |
Definition at line 70 of file branch_multaggr.c.
#define DEFAULT_REEVALAGE 0LL |
number of intermediate LPs solved to trigger reevaluation of strong branching value for a variable that was already evaluated at the current node
Definition at line 73 of file branch_multaggr.c.
#define DEFAULT_MAXPROPROUNDS 0 |
maximum number of propagation rounds to be performed during multaggr branching before solving the LP (-1: no limit, -2: parameter settings)
Definition at line 75 of file branch_multaggr.c.
#define DEFAULT_PROBINGBOUNDS TRUE |
should valid bounds be identified in a probing-like fashion during multi-aggr branching (only with propagation)?
Definition at line 77 of file branch_multaggr.c.
|
static |
scip | original SCIP data structure |
bestcand | the best candidate variable selected by strong branching |
bestscore | score of the best branching candidate |
bestsol | solution value of the best branching candidate |
bestdown | objective value of the down node when branching on bestcand |
bestup | objective value of the up node when branching on 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 the current subtree |
estimatedown | pointer to store the down child nodes estimate |
estimateup | pointer to store the up child nodes estimate |
result | pointer to store results of branching |
Definition at line 164 of file branch_multaggr.c.
References assert(), bestcand, BRANCHRULE_NAME, FALSE, i, lperror, MAX, MIN, NULL, result, SCIP_Bool, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPaddConsNode(), SCIPallColsInLP(), SCIPallocBufferArray, SCIPbacktrackProbing(), SCIPbranchruleGetData(), SCIPconsGetName(), SCIPcreateConsLinear(), SCIPdebugMsg, SCIPendProbing(), SCIPfeasCeil(), SCIPfeasFloor(), SCIPfindBranchrule(), SCIPfreeBufferArray, SCIPgetBranchScore(), SCIPgetCurrentNode(), SCIPgetCutoffbound(), SCIPgetDepth(), SCIPgetFixedVars(), SCIPgetLPBranchCands(), SCIPgetLPObjval(), SCIPgetLPSolstat(), SCIPgetNFixedVars(), SCIPgetVarPseudocostVal(), SCIPinfinity(), SCIPinfoMessage(), SCIPisExactSolve(), SCIPisFeasIntegral(), SCIPisGE(), SCIPnewProbingNode(), SCIPnodeGetLowerbound(), SCIPprintCons(), SCIPreleaseCons(), SCIPsolveProbingLP(), SCIPstartProbing(), SCIPstatistic, SCIPvarGetLPSol(), SCIPvarGetMultaggrConstant(), SCIPvarGetMultaggrNVars(), SCIPvarGetMultaggrScalars(), SCIPvarGetMultaggrVars(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP().
|
static |
copy method for branchrule plugins (called when SCIP copies plugins)
Definition at line 571 of file branch_multaggr.c.
References assert(), BRANCHRULE_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPbranchruleGetName(), and SCIPincludeBranchruleMultAggr().
|
static |
destructor of branching rule to free user data (called when SCIP is exiting)
Definition at line 585 of file branch_multaggr.c.
References assert(), NULL, SCIP_OKAY, SCIPbranchruleGetData(), SCIPbranchruleSetData(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, and SCIPstatistic.
|
static |
initialization method of branching rule (called after problem was transformed)
Definition at line 605 of file branch_multaggr.c.
References assert(), BMSclearMemoryArray, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPbranchruleGetData(), SCIPcreateClock(), and SCIPstatistic.
|
static |
deinitialization method of branching rule (called before transformed problem is freed)
Definition at line 642 of file branch_multaggr.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_VERBLEVEL_NORMAL, SCIPbranchruleGetData(), SCIPfreeBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, SCIPfreeClock(), SCIPgetClockTime(), SCIPstatistic, and SCIPverbMessage().
|
static |
branching execution method for fractional LP solutions
Definition at line 739 of file branch_multaggr.c.
References assert(), bestcand, BMSclearMemoryArray, BRANCHRULE_NAME, FALSE, i, lpcands, lpcandsfrac, lpcandssol, MAX, nlpcands, NULL, reoptimize(), result, SCIP_Bool, SCIP_BRANCHED, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_Real, SCIP_REDUCEDDOM, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPaddConsNode(), SCIPallColsInLP(), SCIPallocBlockMemoryArray, SCIPbranchruleGetData(), SCIPbranchruleGetName(), SCIPbranchVarVal(), SCIPcreateChild(), SCIPcreateConsLinear(), SCIPdebugMsg, SCIPduplicateBufferArray, SCIPfeasCeil(), SCIPfeasFloor(), SCIPgetCurrentNode(), SCIPgetCutoffbound(), SCIPgetFixedVars(), SCIPgetLongintParam(), SCIPgetLPBranchCands(), SCIPgetLPObjval(), SCIPgetNFixedVars(), SCIPgetNLPBranchCands(), SCIPgetNRuns(), SCIPgetNVars(), SCIPgetVarStrongbranchLPAge(), SCIPinfinity(), SCIPinfoMessage(), SCIPisExactSolve(), SCIPisLT(), SCIPnodeGetEstimate(), SCIPnodeGetLowerbound(), SCIPnodeGetNumber(), SCIPprintCons(), SCIPreleaseCons(), SCIPselectVarStrongBranching(), SCIPsetLongintParam(), SCIPstartClock(), SCIPstatistic, SCIPstopClock(), SCIPupdateNodeLowerbound(), SCIPvarGetMultaggrConstant(), SCIPvarGetMultaggrNVars(), SCIPvarGetMultaggrScalars(), SCIPvarGetMultaggrVars(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), selectVarMultAggrBranching(), and TRUE.