reliable pseudo costs branching rule
Definition in file branch_relpscost.c.
#include "blockmemshell/memory.h"#include "scip/branch_relpscost.h"#include "scip/treemodel.h"#include "scip/cons_and.h"#include "scip/pub_branch.h"#include "scip/pub_cons.h"#include "scip/scip_exact.h"#include "scip/pub_message.h"#include "scip/pub_misc.h"#include "scip/pub_sol.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_nlp.h"#include "scip/scip_numerics.h"#include "scip/scip_param.h"#include "scip/scip_prob.h"#include "scip/scip_randnumgen.h"#include "scip/scip_sol.h"#include "scip/scip_solvingstats.h"#include "scip/scip_tree.h"#include "scip/scip_var.h"#include "scip/prop_symmetry.h"#include "scip/symmetry.h"#include <string.h>Go to the source code of this file.
Functions | |
| static SCIP_RETCODE | initOrbits (SCIP *scip, SCIP_BRANCHRULEDATA *branchruledata) |
| static SCIP_RETCODE | filterSymmetricVariables (SCIP *scip, SCIP_BRANCHRULEDATA *branchruledata, SCIP_VAR **origbranchcands, SCIP_Real *origbranchcandssol, SCIP_Real *origbranchcandsfrac, int norigbranchcands, SCIP_VAR **branchcands, SCIP_Real *branchcandssol, SCIP_Real *branchcandsfrac, int *branchorbitidx, int *nbranchcands) |
| static SCIP_RETCODE | SCIPupdateVarPseudocostSymmetric (SCIP *scip, SCIP_BRANCHRULEDATA *branchruledata, SCIP_VAR *branchvar, int *branchorbitidx, int branchvaridx, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight) |
| static SCIP_RETCODE | countNonlinearities (SCIP *scip, int *nlcount, int nlcountsize, int *nlcountmax) |
| static SCIP_RETCODE | branchruledataEnsureNlcount (SCIP *scip, SCIP_BRANCHRULEDATA *branchruledata) |
| static SCIP_Real | calcNlscore (SCIP *scip, int *nlcount, int nlcountmax, int probindex) |
| static SCIP_Real | calcScore (SCIP *scip, SCIP_BRANCHRULEDATA *branchruledata, SCIP_Real conflictscore, SCIP_Real avgconflictscore, SCIP_Real conflengthscore, SCIP_Real avgconflengthscore, SCIP_Real inferencescore, SCIP_Real avginferencescore, SCIP_Real cutoffscore, SCIP_Real avgcutoffscore, SCIP_Real gmieffscore, SCIP_Real lastgmieffscore, SCIP_Real pscostscore, SCIP_Real avgpscostscore, SCIP_Real nlscore, SCIP_Real frac, SCIP_Real degeneracyfactor) |
| static SCIP_RETCODE | addBdchg (SCIP *scip, int **bdchginds, SCIP_BOUNDTYPE **bdchgtypes, SCIP_Real **bdchgbounds, int *nbdchgs, int ind, SCIP_BOUNDTYPE type, SCIP_Real bound) |
| static void | freeBdchgs (SCIP *scip, int **bdchginds, SCIP_BOUNDTYPE **bdchgtypes, SCIP_Real **bdchgbounds, int *nbdchgs) |
| static SCIP_RETCODE | applyBdchgs (SCIP *scip, SCIP_VAR **vars, int *bdchginds, SCIP_BOUNDTYPE *bdchgtypes, SCIP_Real *bdchgbounds, int nbdchgs, SCIP_RESULT *result) |
| static SCIP_RETCODE | updateMinMaxMeanGain (SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_Real downgain, SCIP_Real upgain) |
| static SCIP_Real | strongBranchingDepth (SCIP_Real gap, SCIP_Real maxmeangain) |
| static SCIP_Real | strongBranchingTreeSize (SCIP_Real estimatedepth) |
| static SCIP_Real | cdfProbability (SCIP_Real rate, SCIP_Real zeroprob, SCIP_Real proposedgain, SCIP_Real mingain, SCIP_Real logmeangain, SCIP_Real logstdevgain, int distributioncdf) |
| static SCIP_Real | expectedTreeSize (SCIP *scip, SCIP_Real gap, SCIP_Real zeroprob, SCIP_Real currentdepth, SCIP_Real lambda, SCIP_Real mingain, SCIP_Real logmeangain, SCIP_Real logstdevgain, int distributioncdf) |
| static SCIP_Bool | continueStrongBranchingLookahead (SCIP *scip, int candidx, int ninitcands, SCIP_Real lookahead, SCIP_Real maxlookahead, int nbdchgs, int nbdconflicts, int maxbdchgs, SCIP_Longint maxnsblpiterations) |
| static SCIP_Bool | continueStrongBranchingTreeSizeEstimation (SCIP *scip, SCIP_BRANCHRULEDATA *branchruledata, SCIP_Real lookahead, SCIP_Real maxlookahead) |
| static SCIP_Bool | needsStrongBranching (SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_VAR *branchcand, SCIP_Real branchcandfrac, SCIP_VAR *bestpscand, SCIP_Real bestpscandfrac, SCIP_Real reliable, SCIP_Real relerrorthreshold, SCIP_CONFIDENCELEVEL clevel, SCIP_Bool useancpscost) |
| static SCIP_RETCODE | execRelpscost (SCIP *scip, SCIP_BRANCHRULE *branchrule, SCIP_VAR **branchcands, SCIP_Real *branchcandssol, SCIP_Real *branchcandsfrac, int *branchorbitidx, int nbranchcands, SCIP_Bool executebranch, SCIP_RESULT *result) |
| static | SCIP_DECL_BRANCHCOPY (branchCopyRelpscost) |
| static | SCIP_DECL_BRANCHFREE (branchFreeRelpscost) |
| static | SCIP_DECL_BRANCHINITSOL (branchInitsolRelpscost) |
| static | SCIP_DECL_BRANCHEXITSOL (branchExitsolRelpscost) |
| static | SCIP_DECL_BRANCHEXECLP (branchExeclpRelpscost) |
| SCIP_RETCODE | SCIPincludeBranchruleRelpscost (SCIP *scip) |
| SCIP_RETCODE | SCIPexecRelpscostBranching (SCIP *scip, SCIP_VAR **branchcands, SCIP_Real *branchcandssol, SCIP_Real *branchcandsfrac, int nbranchcands, SCIP_Bool executebranching, SCIP_RESULT *result) |
| #define BRANCHRULE_NAME "relpscost" |
Definition at line 69 of file branch_relpscost.c.
| #define BRANCHRULE_DESC "reliability branching on pseudo cost values" |
Definition at line 70 of file branch_relpscost.c.
| #define BRANCHRULE_PRIORITY 10000 |
Definition at line 71 of file branch_relpscost.c.
| #define BRANCHRULE_MAXDEPTH -1 |
Definition at line 72 of file branch_relpscost.c.
| #define BRANCHRULE_MAXBOUNDDIST 1.0 |
Definition at line 73 of file branch_relpscost.c.
| #define DEFAULT_CONFLICTWEIGHT 0.01 |
weight in score calculations for conflict score
Definition at line 75 of file branch_relpscost.c.
| #define DEFAULT_CONFLENGTHWEIGHT 0.0 |
weight in score calculations for conflict length score
Definition at line 76 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_INFERENCEWEIGHT 0.0001 |
weight in score calculations for inference score
Definition at line 77 of file branch_relpscost.c.
| #define DEFAULT_CUTOFFWEIGHT 0.0001 |
weight in score calculations for cutoff score
Definition at line 78 of file branch_relpscost.c.
| #define DEFAULT_GMIAVGEFFWEIGHT 0.0 |
weight in score calculations of average GMI cut normed efficacies
Definition at line 79 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_GMILASTEFFWEIGHT 0.00001 |
weight in score calculations of last GMI cut normed efficacy
Definition at line 80 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_PSCOSTWEIGHT 1.0 |
weight in score calculations for pseudo cost score
Definition at line 81 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost(), and SCIPincludeCutselEnsemble().
| #define DEFAULT_NLSCOREWEIGHT 0.1 |
weight in score calculations for nlcount score
Definition at line 82 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_MINRELIABLE 1.0 |
minimal value for minimum pseudo cost size to regard pseudo cost value as reliable
Definition at line 83 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_MAXRELIABLE 5.0 |
maximal value for minimum pseudo cost size to regard pseudo cost value as reliable
Definition at line 84 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_SBITERQUOT 0.5 |
maximal fraction of strong branching LP iterations compared to normal iterations
Definition at line 85 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_DYNAMICLOOKAHEADQUOT 0.6 |
apply dynamic lookahead after this fraction maxlookahead is reached
Definition at line 86 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_SBITEROFS 100000 |
additional number of allowed strong branching LP iterations
Definition at line 87 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_MAXLOOKAHEAD 9 |
maximal number of further variables evaluated without better score
Definition at line 88 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_INITCAND 100 |
maximal number of candidates initialized with strong branching per node
Definition at line 89 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_INITITER 0 |
iteration limit for strong branching initialization of pseudo cost entries (0: auto)
Definition at line 90 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_MAXBDCHGS 5 |
maximal number of bound tightenings before the node is reevaluated (-1: unlimited)
Definition at line 91 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_MAXPROPROUNDS -2 |
maximum number of propagation rounds to be performed during strong branching before solving the LP (-1: no limit, -2: parameter settings)
Definition at line 92 of file branch_relpscost.c.
| #define DEFAULT_PROBINGBOUNDS TRUE |
should valid bounds be identified in a probing-like fashion during strong branching (only with propagation)?
Definition at line 94 of file branch_relpscost.c.
| #define DEFAULT_USERELERRORFORRELIABILITY FALSE |
should reliability be based on relative errors?
Definition at line 96 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_LOWERRORTOL 0.05 |
lowest tolerance beneath which relative errors are reliable
Definition at line 97 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_HIGHERRORTOL 1.0 |
highest tolerance beneath which relative errors are reliable
Definition at line 98 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_USEHYPTESTFORRELIABILITY FALSE |
should the strong branching decision be based on a hypothesis test?
Definition at line 99 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_USEDYNAMICCONFIDENCE FALSE |
should the confidence level be adjusted dynamically?
Definition at line 100 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_STORESEMIINITCOSTS FALSE |
should strong branching result be considered for pseudo costs if the other direction was infeasible?
Definition at line 101 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_USESBLOCALINFO FALSE |
should the scoring function use only local cutoff and inference information obtained for strong branching candidates?
Definition at line 102 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_CONFIDENCELEVEL 2 |
The confidence level for statistical methods, between 0 (Min) and 4 (Max).
Definition at line 103 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_SKIPBADINITCANDS TRUE |
should branching rule skip candidates that have a low probability to be better than the best strong-branching or pseudo-candidate?
Definition at line 104 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_STARTRANDSEED 5 |
start random seed for random number generation
Definition at line 106 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_DYNAMICLOOKAHEAD FALSE |
should we use a dynamic lookahead based on a tree size estimation of further strong branchings?
Definition at line 107 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_MINSAMPLESIZE 10 |
minimum sample size to estimate the tree size for dynamic lookahead
Definition at line 108 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_DYNAMICLOOKDISTRIBUTION 1 |
which distribution should be used for dynamic lookahead? 0=exponential, 1=Pareto, 2=log-normal
Definition at line 109 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_RANDINITORDER FALSE |
should slight perturbation of scores be used to break ties in the prior scores?
Definition at line 110 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_USESMALLWEIGHTSITLIM FALSE |
should smaller weights be used for pseudo cost updates after hitting the LP iteration limit?
Definition at line 111 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_DYNAMICWEIGHTS TRUE |
should the weights of the branching rule be adjusted dynamically during solving based infeasible and objective leaf counters?
Definition at line 112 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_DEGENERACYAWARE 1 |
should degeneracy be taken into account to update weights and skip strong branching? (0: off, 1: after root, 2: always)
Definition at line 114 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_FILTERCANDSSYM FALSE |
Use symmetry to filter branching candidates?
Definition at line 117 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define DEFAULT_TRANSSYMPSCOST FALSE |
Transfer pscost information to symmetric variables if filtering is performed?
Definition at line 118 of file branch_relpscost.c.
Referenced by SCIPincludeBranchruleRelpscost().
| #define EXPONENTIALDISTRIBUTION 0 |
Definition at line 121 of file branch_relpscost.c.
Referenced by cdfProbability(), continueStrongBranchingTreeSizeEstimation(), and SCIPincludeBranchruleRelpscost().
| #define PARETODISTRIBUTION 1 |
Definition at line 122 of file branch_relpscost.c.
Referenced by cdfProbability(), and continueStrongBranchingTreeSizeEstimation().
| #define LOGNORMALDISTRIBUTION 2 |
Definition at line 123 of file branch_relpscost.c.
Referenced by cdfProbability(), continueStrongBranchingTreeSizeEstimation(), and SCIPincludeBranchruleRelpscost().
| #define GEOMMEANSHIFT 0.01 |
Definition at line 126 of file branch_relpscost.c.
Referenced by updateMinMaxMeanGain().
| #define MAXGAINTHRESHOLD 1e15 |
Definition at line 128 of file branch_relpscost.c.
Referenced by updateMinMaxMeanGain().
| #define MINGAINTHRESHOLD 1e-5 |
Definition at line 130 of file branch_relpscost.c.
Referenced by expectedTreeSize(), strongBranchingDepth(), and updateMinMaxMeanGain().
| #define BRANCHRULE_DISCOUNTFACTOR 0.2 |
default discount factor for discounted pseudo costs.
Definition at line 133 of file branch_relpscost.c.
|
static |
initialize orbits
Definition at line 217 of file branch_relpscost.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPcomputeOrbitsComponentsSym(), SCIPgetNVars(), SCIPgetSymmetry(), and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP().
|
static |
filter out symmetric variables from branching variables
| scip | SCIP data structure |
| branchruledata | branching rule data |
| origbranchcands | original branching candidates |
| origbranchcandssol | original solution value for the branching candidates |
| origbranchcandsfrac | original fractional part of the branching candidates |
| norigbranchcands | original number of branching candidates |
| branchcands | branching candidates |
| branchcandssol | solution value for the branching candidates |
| branchcandsfrac | fractional part of the branching candidates |
| branchorbitidx | array of indices of orbit of branching candidates |
| nbranchcands | pointer to store number of branching candidates |
Definition at line 276 of file branch_relpscost.c.
References assert(), i, NULL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPhashmapGetImageInt(), and varidx.
Referenced by SCIP_DECL_BRANCHEXECLP().
|
static |
updates the pseudo costs of the given variable and all its symmetric variables
| scip | SCIP data structure |
| branchruledata | branching rule data |
| branchvar | branching variable candidate |
| branchorbitidx | array of orbit indices |
| branchvaridx | index of variable in branchorbitidx |
| solvaldelta | difference of variable's new LP value - old LP value |
| objdelta | difference of new LP's objective value - old LP's objective value |
| weight | weight in (0,1] of this update in pseudo cost sum |
Definition at line 359 of file branch_relpscost.c.
References assert(), i, NULL, SCIP_Bool, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPboundchgGetBoundchgtype(), SCIPboundchgGetLPSolVal(), SCIPboundchgGetNewbound(), SCIPboundchgGetVar(), SCIPdomchgGetBoundchg(), SCIPdomchgGetNBoundchgs(), SCIPgetBoolParam(), SCIPgetFocusNode(), SCIPnodeGetDepth(), SCIPnodeGetDomchg(), SCIPupdateVarAncPseudocost(), SCIPupdateVarPseudocost(), SCIPvarIsActive(), SCIPvarIsIntegral(), and var.
Referenced by execRelpscost().
|
static |
! [SnippetCodeStyleDeclaration] counts number of nonlinear constraints in which each variable appears
! [SnippetCodeStyleDeclaration]
! [SnippetCodeStyleIfFor]
! [SnippetCodeStyleIfFor]
| scip | SCIP data structure |
| nlcount | pointer to array for storing count values |
| nlcountsize | buffer for storing length of nlcount array |
| nlcountmax | buffer for storing maximum value in nlcount array |
Definition at line 459 of file branch_relpscost.c.
References assert(), BMSclearMemoryArray, c, i, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetConss(), SCIPconshdlrGetNActiveConss(), SCIPfindConshdlr(), SCIPgetNLPVarsNonlinearity(), SCIPgetNNLPVars(), SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPgetVarsData(), SCIPisNLPConstructed(), SCIPvarGetProbindex(), SCIPvarGetProbvar(), and vars.
Referenced by branchruledataEnsureNlcount().
|
static |
Definition at line 545 of file branch_relpscost.c.
References assert(), BMSclearMemoryArray, countNonlinearities(), NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, SCIPgetNVars(), and SCIPreallocBlockMemoryArray.
Referenced by execRelpscost().
calculates nlscore value between 0 and 1
| scip | SCIP data structure |
| nlcount | array to store count values |
| nlcountmax | maximum value in nlcount array |
| probindex | index of branching candidate |
Definition at line 592 of file branch_relpscost.c.
References assert(), NULL, SCIP_Real, and SCIPgetNVars().
Referenced by execRelpscost().
|
static |
calculates an overall score value for the given individual score values
| scip | SCIP data structure |
| branchruledata | branching rule data |
| conflictscore | conflict score of current variable |
| avgconflictscore | average conflict score |
| conflengthscore | conflict length score of current variable |
| avgconflengthscore | average conflict length score |
| inferencescore | inference score of current variable |
| avginferencescore | average inference score |
| cutoffscore | cutoff score of current variable |
| avgcutoffscore | average cutoff score |
| gmieffscore | normalized-eff of avg GMI cuts from row when var was frac and basic |
| lastgmieffscore | last normalized gmieffscore when var was frac and basic |
| pscostscore | pscost score of current variable |
| avgpscostscore | average pscost score |
| nlscore | nonlinear score of current variable between 0 and 1 |
| frac | fractional value of variable in current solution |
| degeneracyfactor | factor to apply because of degeneracy |
Definition at line 619 of file branch_relpscost.c.
References assert(), frac, MIN, NULL, SCIP_Real, SCIPfeastol(), SCIPgetNInfeasibleLeaves(), and SCIPgetNObjlimLeaves().
Referenced by execRelpscost().
|
static |
adds given index and direction to bound change arrays
| scip | SCIP data structure |
| bdchginds | pointer to bound change index array |
| bdchgtypes | pointer to bound change types array |
| bdchgbounds | pointer to bound change new bounds array |
| nbdchgs | pointer to number of bound changes |
| ind | index to store in bound change index array |
| type | type of the bound change to store in bound change type array |
| bound | new bound to store in bound change new bounds array |
Definition at line 671 of file branch_relpscost.c.
References assert(), bound, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, and SCIPreallocBufferArray.
Referenced by execRelpscost().
|
static |
! [SnippetCodeStyleStaticAsserts] frees bound change arrays
! [SnippetCodeStyleStaticAsserts]
| scip | SCIP data structure |
| bdchginds | pointer to bound change index array |
| bdchgtypes | pointer to bound change types array |
| bdchgbounds | pointer to bound change new bounds array |
| nbdchgs | pointer to number of bound changes |
Definition at line 705 of file branch_relpscost.c.
References assert(), NULL, SCIP_Real, and SCIPfreeBufferArrayNull.
Referenced by execRelpscost().
|
static |
applies bound changes stored in bound change arrays
| scip | SCIP data structure |
| vars | problem variables |
| bdchginds | bound change index array |
| bdchgtypes | bound change types array |
| bdchgbounds | bound change new bound array |
| nbdchgs | number of bound changes |
| result | result pointer |
Definition at line 728 of file branch_relpscost.c.
References assert(), BRANCHRULE_NAME, i, NULL, result, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CUTOFF, SCIP_OKAY, SCIP_Real, SCIPbranchruleGetData(), SCIPdebugMsg, SCIPfindBranchrule(), SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), TRUE, and vars.
Referenced by execRelpscost().
|
static |
Update the min/max gain, and the mean of all gains computed so far.
This mean is used in the definition of the exponential distribution.
| scip | SCIP data structure |
| branchrule | branching rule |
| downgain | gain for branching downwards |
| upgain | gain for branching upwards |
Definition at line 808 of file branch_relpscost.c.
References assert(), GEOMMEANSHIFT, MAX, MAXGAINTHRESHOLD, MIN, MINGAINTHRESHOLD, NULL, SCIP_OKAY, SCIP_Real, SCIPbranchruleGetData(), SCIPdebugMsg, SCIPisGE(), and SCIPisRelGE().
Referenced by execRelpscost().
compute the depth of the tree with the assumption that left and right dual gains are equal
| gap | gap to be closed |
| maxmeangain | maximum mean gain of the branching candidates |
Definition at line 866 of file branch_relpscost.c.
References assert(), depth, MAX, MINGAINTHRESHOLD, and SCIP_Real.
Referenced by continueStrongBranchingTreeSizeEstimation().
compute the size of the tree with the assumption that left and right dual gains are equal
| estimatedepth | estimated depth of the tree |
Definition at line 880 of file branch_relpscost.c.
References SCIP_Real.
Referenced by continueStrongBranchingTreeSizeEstimation(), and expectedTreeSize().
|
static |
calculate the cumulative distribution function (CDF) value for a mixture of a Dirac at zero and a continuous distribution (depending on distributioncdf)
| rate | rate of the distribution |
| zeroprob | probability of zero gain |
| proposedgain | proposed gain |
| mingain | minimum gain |
| logmeangain | logarithm og mean gain |
| logstdevgain | logarithm of standard deviation of gain |
| distributioncdf | distribution type (PARETODISTRIBUTION, EXPONENTIALDISTRIBUTION, LOGNORMALDISTRIBUTION) |
Definition at line 889 of file branch_relpscost.c.
References assert(), EXPONENTIALDISTRIBUTION, LOGNORMALDISTRIBUTION, PARETODISTRIBUTION, and SCIP_Real.
Referenced by expectedTreeSize().
|
static |
calculate the expected size of a tree with one more iteration of strong branching
| scip | SCIP data structure |
| gap | gap to be closed |
| zeroprob | probability of zero gain |
| currentdepth | current depth of the tree |
| lambda | rate of the distribution |
| mingain | minimum gain |
| logmeangain | logarithm of mean gain |
| logstdevgain | logarithm of standard deviation of gain |
| distributioncdf | distribution type (PARETODISTRIBUTION, EXPONENTIALDISTRIBUTION, LOGNORMALDISTRIBUTION) |
Definition at line 920 of file branch_relpscost.c.
References cdfProbability(), depth, MINGAINTHRESHOLD, SCIP_Real, SCIPdebugMsg, SCIPinfinity(), and strongBranchingTreeSize().
Referenced by continueStrongBranchingTreeSizeEstimation().
|
static |
decide if we continue strong branching based based on lookahead
| scip | SCIP data structure |
| candidx | index of the branching candidate |
| ninitcands | number of initial candidates |
| lookahead | lookahead value |
| maxlookahead | maximum lookahead value |
| nbdchgs | number of bound changes found |
| nbdconflicts | number of bound conflicts found |
| maxbdchgs | maximal number of bound tightenings before the node is reevaluated |
| maxnsblpiterations | maximal number of strong branching LP iterations |
Definition at line 1001 of file branch_relpscost.c.
References SCIP_Bool, SCIP_Longint, SCIP_Real, and SCIPgetNStrongbranchLPIterations().
Referenced by execRelpscost().
|
static |
Decide if we continue strong branching based on the estimation of the tree size given the current gains.
| scip | SCIP data structure |
| branchruledata | branching rule data |
| lookahead | lookahead value |
| maxlookahead | maximum lookahead value |
Definition at line 1019 of file branch_relpscost.c.
References assert(), expectedTreeSize(), EXPONENTIALDISTRIBUTION, FALSE, LOGNORMALDISTRIBUTION, PARETODISTRIBUTION, SCIP_Bool, SCIP_Real, SCIPdebugMsg, SCIPgetCurrentNode(), SCIPgetNodeLowerbound(), SCIPgetUpperbound(), SCIPinfinity(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisZero(), strongBranchingDepth(), strongBranchingTreeSize(), and TRUE.
Referenced by execRelpscost().
|
static |
determine if strong branching is needed on the given candidate variable
| scip | SCIP data structure |
| branchrule | branching rule |
| branchcand | branching candidate |
| branchcandfrac | fractional part of the branching candidate |
| bestpscand | best candidate as per pscost score, must be present if usehyptestforreliability is used |
| bestpscandfrac | fractional part of the best candidate as per pscost score, must be present if usehyptestforreliability is used |
| reliable | size threshold for reliability |
| relerrorthreshold | relative error threshold for reliability |
| clevel | confidence level |
| useancpscost | check reliability for ancpscost as well |
Definition at line 1111 of file branch_relpscost.c.
References assert(), FALSE, MIN, NULL, SCIP_Bool, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_UPWARDS, SCIP_Real, SCIPbranchruleGetData(), SCIPgetVarAncPseudocostCountCurrentRun(), SCIPgetVarPseudocostCountCurrentRun(), SCIPisVarPscostRelerrorReliable(), SCIPsignificantVarPscostDifference(), and TRUE.
Referenced by execRelpscost().
|
static |
execute reliability pseudo cost branching
| scip | SCIP data structure |
| branchrule | branching rule |
| branchcands | branching candidates |
| branchcandssol | solution value for the branching candidates |
| branchcandsfrac | fractional part of the branching candidates |
| branchorbitidx | indices of orbit (or NULL) |
| nbranchcands | number of branching candidates |
| executebranch | execute a branching step or run probing only |
| result | pointer to the result of the execution |
Definition at line 1174 of file branch_relpscost.c.
References addBdchg(), applyBdchgs(), assert(), bestcand, branchruledataEnsureNlcount(), c, calcNlscore(), calcScore(), continueStrongBranchingLookahead(), continueStrongBranchingTreeSizeEstimation(), FALSE, freeBdchgs(), i, lperror, MAX, MIN, needsStrongBranching(), nlpiterations, nlps, NULL, nvars, propagate, result, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_UPWARDS, SCIP_BRANCHED, SCIP_CALL, SCIP_CONFIDENCELEVEL_HIGH, SCIP_CONFIDENCELEVEL_LOW, SCIP_CONFIDENCELEVEL_MAX, SCIP_CONFIDENCELEVEL_MEDIUM, SCIP_CONFIDENCELEVEL_MIN, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_INVALID, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_UNUSED, SCIP_VERBLEVEL_HIGH, SCIPallColsInLP(), SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPbranchruleGetData(), SCIPbranchVarVal(), SCIPdebug, SCIPdebugMsg, SCIPendStrongbranch(), SCIPfeasCeil(), SCIPfeasFloor(), SCIPfeasFrac(), SCIPfreeBlockMemoryArray, SCIPfreeBufferArray, SCIPgetAvgConflictlengthScore(), SCIPgetAvgConflictScore(), SCIPgetAvgCutoffScore(), SCIPgetAvgDPseudocostScore(), SCIPgetAvgInferenceScore(), SCIPgetAvgPseudocostScore(), SCIPgetBestSol(), SCIPgetBoolParam(), SCIPgetBranchScore(), SCIPgetCutoffbound(), SCIPgetDepth(), SCIPgetLastStrongbranchLPSolStat(), SCIPgetLocalLowerbound(), SCIPgetLPDualDegeneracy(), SCIPgetLPObjval(), SCIPgetLPSolstat(), SCIPgetNDualResolveLPIterations(), SCIPgetNDualResolveLPs(), SCIPgetNNodeInitLPIterations(), SCIPgetNNodeInitLPs(), SCIPgetNNodeLPIterations(), SCIPgetNNodes(), SCIPgetNodeLowerbound(), SCIPgetNRootStrongbranchLPIterations(), SCIPgetNStrongbranchLPIterations(), SCIPgetNVars(), SCIPgetRealParam(), SCIPgetVarAncPseudocostVal(), SCIPgetVarAvgCutoffScore(), SCIPgetVarAvgGMIScore(), SCIPgetVarAvgInferenceScore(), SCIPgetVarConflictlengthScore(), SCIPgetVarConflictScore(), SCIPgetVarDPseudocostScore(), SCIPgetVarLastGMIScore(), SCIPgetVarPseudocostCountCurrentRun(), SCIPgetVarPseudocostCurrentRun(), SCIPgetVarPseudocostScore(), SCIPgetVarPseudocostScoreCurrentRun(), SCIPgetVarPseudocostVal(), SCIPgetVars(), SCIPgetVarStrongbranchFrac(), SCIPgetVarStrongbranchLast(), SCIPgetVarStrongbranchNode(), SCIPgetVarStrongbranchWithPropagation(), SCIPhasCurrentNodeLP(), SCIPinfinity(), SCIPisExact(), SCIPisFeasIntegral(), SCIPisGE(), SCIPisGT(), SCIPisLPSolBasic(), SCIPisLT(), SCIPisStopped(), SCIPisSumGE(), SCIPisSumGT(), SCIPisZero(), SCIPnodeGetLowerbound(), SCIPpscostThresholdProbabilityTest(), SCIPrandomGetReal(), SCIPsignificantVarPscostDifference(), SCIPsolGetIndex(), SCIPstartStrongbranch(), SCIPtreemodelIsEnabled(), SCIPtreemodelSelectCandidate(), SCIPupdateLocalLowerbound(), SCIPupdateNodeLowerbound(), SCIPupdateVarPseudocostSymmetric(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetUbLocal(), SCIPverbMessage(), TRUE, updateMinMaxMeanGain(), var, and vars.
Referenced by SCIP_DECL_BRANCHEXECLP(), and SCIPexecRelpscostBranching().
|
static |
copy method for branchrule plugins (called when SCIP copies plugins)
Definition at line 2343 of file branch_relpscost.c.
References assert(), BRANCHRULE_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPbranchruleGetName(), and SCIPincludeBranchruleRelpscost().
|
static |
destructor of branching rule to free user data (called when SCIP is exiting)
Definition at line 2357 of file branch_relpscost.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPbranchruleGetData(), SCIPbranchruleSetData(), SCIPfreeBlockMemory, and SCIPtreemodelFree().
|
static |
solving process initialization method of branching rule (called when branch and bound process is about to begin)
Definition at line 2375 of file branch_relpscost.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPbranchruleGetData(), SCIPcreateRandom(), and TRUE.
|
static |
solving process deinitialization method of branching rule (called before branch and bound process data is freed)
Definition at line 2396 of file branch_relpscost.c.
References FALSE, NULL, SCIP_OKAY, SCIPbranchruleGetData(), SCIPfreeBlockMemoryArrayNull, and SCIPfreeRandom().
|
static |
branching execution method for fractional LP solutions
Definition at line 2423 of file branch_relpscost.c.
References assert(), BRANCHRULE_NAME, execRelpscost(), filterSymmetricVariables(), initOrbits(), lpcands, lpcandsfrac, lpcandssol, nlpcands, NULL, result, SCIP_Bool, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_LONGINT_FORMAT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPbranchruleGetData(), SCIPbranchruleGetName(), SCIPdebugMsg, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetCurrentNode(), SCIPgetLPBranchCands(), SCIPgetLPSolstat(), SCIPgetSubscipDepth(), SCIPinDive(), SCIPinfinity(), SCIPinProbing(), SCIPnodeGetNumber(), and TRUE.