branch.c
Go to the documentation of this file.
26 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 203 assert(SCIPlpGetSolstat(lp) == SCIP_LPSOLSTAT_OPTIMAL || SCIPlpGetSolstat(lp) == SCIP_LPSOLSTAT_UNBOUNDEDRAY); 205 SCIPdebugMessage("calculating LP branching candidates: validlp=%" SCIP_LONGINT_FORMAT ", lpcount=%" SCIP_LONGINT_FORMAT "\n", 240 /* construct the LP branching candidate set, moving the candidates with maximal priority to the front */ 265 /* LP branching candidates are fractional binary and integer variables; implicit variables are kept at the end 272 /* ignore fixed variables (due to numerics, it is possible, that the LP solution of a fixed integer variable 359 branchcand->nlpcands, SCIPvarGetName(var), primsol, frac, branchpriority, branchcand->lpmaxpriority, 364 /* in debug mode we assert that the variables are positioned correctly (binaries and integers first, 369 assert(c >= branchcand->nlpcands || SCIPvarGetType(branchcand->lpcands[c]) != SCIP_VARTYPE_IMPLINT); 370 assert(c < branchcand->nlpcands || SCIPvarGetType(branchcand->lpcands[c]) == SCIP_VARTYPE_IMPLINT); 378 SCIPdebugMessage(" -> %d fractional variables (%d of maximal priority)\n", branchcand->nlpcands, branchcand->npriolpcands); 390 SCIP_Real** lpcandssol, /**< pointer to store the array of LP candidate solution values, or NULL */ 391 SCIP_Real** lpcandsfrac, /**< pointer to store the array of LP candidate fractionalities, or NULL */ 393 int* npriolpcands, /**< pointer to store the number of candidates with maximal priority, or NULL */ 394 int* nfracimplvars /**< pointer to store the number of implicit fractional variables, or NULL */ 410 *npriolpcands = (set->branch_preferbinary && branchcand->npriolpbins > 0 ? branchcand->npriolpbins 421 SCIP_VAR*** externcands, /**< pointer to store the array of external branching candidates, or NULL */ 422 SCIP_Real** externcandssol, /**< pointer to store the array of external candidate solution values, or NULL */ 423 SCIP_Real** externcandsscore, /**< pointer to store the array of external candidate scores, or NULL */ 424 int* nexterncands, /**< pointer to store the number of external branching candidates, or NULL */ 425 int* nprioexterncands, /**< pointer to store the number of candidates with maximal priority, or NULL */ 426 int* nprioexternbins, /**< pointer to store the number of binary candidates with maximal priority, or NULL */ 427 int* nprioexternints, /**< pointer to store the number of integer candidates with maximal priority, or NULL */ 428 int* nprioexternimpls /**< pointer to store the number of implicit integer candidates with maximal priority, 496 /** gets number of implicit integer external branching candidates with maximal branch priority */ 513 return branchcand->nprioexterncands - branchcand->nprioexternbins - branchcand->nprioexternints - branchcand->nprioexternimpls; 516 /** insert variable, its score and its solution value into the external branching candidate storage 517 * the absolute difference of the current lower and upper bounds of the variable must be at least epsilon 533 assert(!SCIPsetIsEQ(set, SCIPvarGetLbLocal(var), SCIPvarGetUbLocal(var))); /* the variable should not be fixed yet */ 534 assert(SCIPvarGetType(var) == SCIP_VARTYPE_CONTINUOUS || !SCIPsetIsEQ(set, SCIPsetCeil(set, SCIPvarGetLbLocal(var)), SCIPsetFloor(set, SCIPvarGetUbLocal(var)))); /* a discrete variable should also not be fixed, even after rounding bounds to integral values */ 535 assert(SCIPvarGetStatus(var) != SCIP_VARSTATUS_MULTAGGR || !SCIPsetIsEQ(set, SCIPvarGetMultaggrLbLocal(var, set), SCIPvarGetMultaggrUbLocal(var, set))); /* also the current bounds of a multi-aggregated variable should not be fixed yet */ 545 SCIPdebugMessage("inserting external candidate <%s> of type %d and priority %d into candidate set (maxprio: %d), score = %g, solval = %g\n", 548 /* insert the variable into externcands, making sure, that the highest priority candidates are at the front 572 * slot (binaries first, integers next, implicit integers next, continuous last) and increase the number 578 branchcand->externcandsscore[insertpos] = branchcand->externcandsscore[branchcand->nprioexterncands]; 579 branchcand->externcandssol[insertpos] = branchcand->externcandssol[branchcand->nprioexterncands]; 584 if( vartype == SCIP_VARTYPE_BINARY || vartype == SCIP_VARTYPE_INTEGER || vartype == SCIP_VARTYPE_IMPLINT ) 586 if( insertpos != branchcand->nprioexternbins + branchcand->nprioexternints + branchcand->nprioexternimpls ) 589 branchcand->externcands[branchcand->nprioexternbins + branchcand->nprioexternints + branchcand->nprioexternimpls]; 591 branchcand->externcandsscore[branchcand->nprioexternbins + branchcand->nprioexternints + branchcand->nprioexternimpls]; 593 branchcand->externcandssol[branchcand->nprioexternbins + branchcand->nprioexternints + branchcand->nprioexternimpls]; 595 insertpos = branchcand->nprioexternbins + branchcand->nprioexternints + branchcand->nprioexternimpls; 622 branchcand->externcandsscore[insertpos] = branchcand->externcandsscore[branchcand->nprioexternbins]; 623 branchcand->externcandssol[insertpos] = branchcand->externcandssol[branchcand->nprioexternbins]; 638 SCIPdebugMessage(" -> inserted at position %d (nprioexterncands=%d)\n", insertpos, branchcand->nprioexterncands); 640 assert(0 <= branchcand->nprioexterncands && branchcand->nprioexterncands <= branchcand->nexterncands); 641 assert(0 <= branchcand->nprioexternbins && branchcand->nprioexternbins <= branchcand->nprioexterncands); 642 assert(0 <= branchcand->nprioexternints && branchcand->nprioexternints <= branchcand->nprioexterncands); 643 assert(0 <= branchcand->nprioexternimpls && branchcand->nprioexternimpls <= branchcand->nprioexterncands); 663 /** checks whether the given variable is contained in the candidate storage for external branching */ 679 /* look for the variable in the externcands, using the fact, that the highest priority candidates are at the front 684 /* the branching priority of the variable is higher than the maximal priority contained in the array; 695 * look for it in the correct slot (binaries first, integers next, implicit integers next, continuous last) 717 if( branchcand->externcands[branchcand->nprioexternbins + branchcand->nprioexternints + i] == var ) 723 for( i = branchcand->nprioexternbins + branchcand->nprioexternints + branchcand->nprioexternimpls; 729 /* the branching priority of the variable is lower than the maximal priority contained in the array; 744 SCIP_VAR*** pseudocands, /**< pointer to store the array of pseudo branching candidates, or NULL */ 746 int* npriopseudocands /**< pointer to store the number of candidates with maximal priority, or NULL */ 766 assert(SCIPvarGetStatus(var) == SCIP_VARSTATUS_LOOSE || SCIPvarGetStatus(var) == SCIP_VARSTATUS_COLUMN); 795 *npriopseudocands = (set->branch_preferbinary && branchcand->npriopseudobins > 0 ? branchcand->npriopseudobins 811 /** gets number of branching candidates with maximal branch priority for pseudo solution branching */ 821 /** gets number of binary branching candidates with maximal branch priority for pseudo solution branching */ 831 /** gets number of integer branching candidates with maximal branch priority for pseudo solution branching */ 841 /** gets number of implicit integer branching candidates with maximal branch priority for pseudo solution branching */ 848 return branchcand->npriopseudocands - branchcand->npriopseudobins - branchcand->npriopseudoints; 851 /** insert pseudocand at given position, or to the first positions of the maximal priority candidates, using the 872 SCIPdebugMessage("inserting pseudo candidate <%s> of type %d and priority %d into candidate set at position %d (maxprio: %d)\n", 875 /* insert the variable into pseudocands, making sure, that the highest priority candidates are at the front 898 * slot (binaries first, integers next, implicit integers last) and increase the number of maximal priority candidates 934 SCIPdebugMessage(" -> inserted at position %d (npriopseudocands=%d)\n", insertpos, branchcand->npriopseudocands); 936 assert(0 <= branchcand->npriopseudocands && branchcand->npriopseudocands <= branchcand->npseudocands); 937 assert(0 <= branchcand->npriopseudobins && branchcand->npriopseudobins <= branchcand->npriopseudocands); 938 assert(0 <= branchcand->npriopseudoints && branchcand->npriopseudoints <= branchcand->npriopseudocands); 941 /** sorts the pseudo branching candidates, such that the candidates of maximal priority are at the front, 953 assert(branchcand->npriopseudocands == 0); /* is only be called after removal of last maximal candidate */ 970 assert(0 <= branchcand->npriopseudocands && branchcand->npriopseudocands <= branchcand->npseudocands); 971 assert(0 <= branchcand->npriopseudobins && branchcand->npriopseudobins <= branchcand->npriopseudocands); 972 assert(0 <= branchcand->npriopseudoints && branchcand->npriopseudoints <= branchcand->npriopseudocands); 994 SCIPdebugMessage("removing pseudo candidate <%s> of type %d and priority %d at %d from candidate set (maxprio: %d)\n", 995 SCIPvarGetName(var), SCIPvarGetType(var), branchpriority, var->pseudocandindex, branchcand->pseudomaxpriority); 997 /* delete the variable from pseudocands, making sure, that the highest priority candidates are at the front 1021 assert(SCIPvarGetType(var) == SCIP_VARTYPE_BINARY || SCIPvarGetType(var) == SCIP_VARTYPE_INTEGER); 1051 assert(0 <= branchcand->npriopseudocands && branchcand->npriopseudocands <= branchcand->npseudocands); 1052 assert(0 <= branchcand->npriopseudobins && branchcand->npriopseudobins <= branchcand->npriopseudocands); 1053 assert(0 <= branchcand->npriopseudoints && branchcand->npriopseudoints <= branchcand->npriopseudocands); 1055 /* if all maximal priority candidates were removed, resort the array s.t. the new maximal priority candidates 1089 if( (SCIPvarGetStatus(var) == SCIP_VARSTATUS_LOOSE || SCIPvarGetStatus(var) == SCIP_VARSTATUS_COLUMN) 1093 /* variable is neither continuous nor fixed and has non-empty domain: make sure it is member of the pseudo branching candidate list */ 1112 /* variable is continuous or fixed or has empty domain: make sure it is not member of the pseudo branching candidate list */ 1119 /** updates branching priority of the given variable and update the pseude candidate array if needed */ 1139 /* if the variable currently belongs to priority set or the new branching priority is larger than the current one, 1151 /* of the variable is not part of the pseudo branching candidate array; check if it is a pseudo branching candidate 1174 return strcmp(SCIPbranchruleGetName((SCIP_BRANCHRULE*)elem1), SCIPbranchruleGetName((SCIP_BRANCHRULE*)elem2)); 1187 SCIP_CALL( SCIPsetBranchrulePriority(scip, (SCIP_BRANCHRULE*)paramdata, SCIPparamGetInt(param)) ); /*lint !e740*/ 1204 SCIPdebugMessage("including branching rule %s in subscip %p\n", SCIPbranchruleGetName(branchrule), (void*)set->scip); 1220 int maxdepth, /**< maximal depth level, up to which this branching rule should be used (or -1) */ 1221 SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound 1228 SCIP_DECL_BRANCHINITSOL((*branchinitsol)),/**< solving process initialization method of branching rule */ 1229 SCIP_DECL_BRANCHEXITSOL((*branchexitsol)),/**< solving process deinitialization method of branching rule */ 1230 SCIP_DECL_BRANCHEXECLP((*branchexeclp)), /**< branching execution method for fractional LP solutions */ 1231 SCIP_DECL_BRANCHEXECEXT((*branchexecext)),/**< branching execution method for external solutions */ 1232 SCIP_DECL_BRANCHEXECPS((*branchexecps)), /**< branching execution method for not completely fixed pseudo solutions */ 1278 (void) SCIPsnprintf(paramdesc, SCIP_MAXSTRLEN, "maximal depth level, up to which branching rule <%s> should be used (-1 for no limit)", name); 1283 (void) SCIPsnprintf(paramdesc, SCIP_MAXSTRLEN, "maximal 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)"); 1469 /* we distinguish between finite and infinite global lower bounds to avoid comparisons between different values > SCIPinfinity() */ 1471 runbranchrule = SCIPsetIsInfinity(set, -loclowerbound) || SCIPsetIsGE(set, branchrule->maxbounddist, 1.0); 1475 runbranchrule = SCIPsetIsLE(set, loclowerbound - glblowerbound, branchrule->maxbounddist * (cutoffbound - glblowerbound)); 1510 SCIPerrorMessage("branching rule <%s> returned invalid result code <%d> from LP solution branching\n", 1516 SCIPerrorMessage("branching rule <%s> added a constraint in LP solution branching without permission\n", 1577 /* we distinguish between finite and infinite global lower bounds to avoid comparisons between different values > SCIPinfinity() */ 1579 runbranchrule = SCIPsetIsInfinity(set, -loclowerbound) || SCIPsetIsGE(set, branchrule->maxbounddist, 1.0); 1583 runbranchrule = SCIPsetIsLE(set, loclowerbound - glblowerbound, branchrule->maxbounddist * (cutoffbound - glblowerbound)); 1618 SCIPerrorMessage("branching rule <%s> returned invalid result code <%d> from external solution branching\n", 1624 SCIPerrorMessage("branching rule <%s> added a constraint in external solution branching without permission\n", 1681 /* we distinguish between finite and infinite global lower bounds to avoid comparisons between different values > SCIPinfinity() */ 1683 runbranchrule = SCIPsetIsInfinity(set, -loclowerbound) || SCIPsetIsGE(set, branchrule->maxbounddist, 1.0); 1687 runbranchrule = SCIPsetIsLE(set, loclowerbound - glblowerbound, branchrule->maxbounddist * (cutoffbound - glblowerbound)); 1719 SCIPerrorMessage("branching rule <%s> returned invalid result code <%d> from pseudo solution branching\n", 1725 SCIPerrorMessage("branching rule <%s> added a constraint in pseudo solution branching without permission\n", 1778 SCIP_DECL_BRANCHCOPY ((*branchcopy)) /**< copy method of branching rule or NULL if you don't want to copy your plugin into sub-SCIPs */ 1822 SCIP_DECL_BRANCHINITSOL((*branchinitsol)) /**< solving process initialization method of branching rule */ 1833 SCIP_DECL_BRANCHEXITSOL((*branchexitsol)) /**< solving process deinitialization method of branching rule */ 1846 SCIP_DECL_BRANCHEXECLP((*branchexeclp)) /**< branching execution method for fractional LP solutions */ 1857 SCIP_DECL_BRANCHEXECEXT((*branchexecext)) /**< branching execution method for external candidates */ 1868 SCIP_DECL_BRANCHEXECPS((*branchexecps)) /**< branching execution method for not completely fixed pseudo solutions */ 1920 /** gets maximal depth level, up to which this branching rule should be used (-1 for no limit) */ 1930 /** sets maximal depth level, up to which this branching rule should be used (-1 for no limit) */ 1942 /** gets maximal relative distance from current node's dual bound to primal bound for applying branching rule */ 1952 /** sets maximal relative distance from current node's dual bound to primal bound for applying branching rule */ 1966 SCIP_BRANCHRULE* branchrule, /**< the branching rule for which all clocks should be enabled or disabled */ 2046 /** gets the total number of constraints, the branching rule added to the respective local nodes (not counting constraints 2145 /** calculates the branching score out of the gain predictions for a branching with arbitrary many children */ 2159 /* search for the two minimal gains in the child list and use these to calculate the branching score */ 2179 * if this value is at infinity, then 0.0 projected onto the bounds and then moved inside the interval is used 2181 * for a continuous variable, the parameter branching/clamp defines how far a branching point need to be from the bounds of a variable 2182 * the latter is only applied if no point has been suggested, or the suggested point is not inside the variable's interval 2235 /* if no point is suggested and the value in LP solution is not too big, try the LP or pseudo LP solution 2276 /* if one bound is missing, we are temporarily guessing the other one, so we can apply the clamp below */ 2323 /* if selected branching point is close to 0.0 and bounds are away from 0.0, it often makes sense to branch exactly on 0.0 */ 2324 if( SCIPsetIsFeasZero(set, branchpoint) && SCIPsetIsFeasNegative(set, lb) && SCIPsetIsFeasPositive(set, ub) ) 2335 /* if branchpoint is integral but not on bounds, then it should be one of the value {lb+1, ..., ub-1} */ 2339 * @todo could in the same way be x <= x' and x >= x'+1; is there some easy way to know which is better? 2361 /* if branchpoint is integral but not on bounds, then it should be one of the value {lb+1, ..., ub-1} */ 2365 * @todo could in the same way be x <= x' and x >= x'+1; is there some easy way to know which is better? */ 2380 /** calls branching rules to branch on an LP solution; if no fractional variables exist, the result is SCIP_DIDNOTRUN; 2381 * if the branch priority of an unfixed variable is larger than the maximal branch priority of the fractional 2382 * variables, pseudo solution branching is applied on the unfixed variables with maximal branch priority 2414 SCIPdebugMessage("branching on LP solution with %d (+%d) fractional (+implicit fractional) variables (%d of maximal priority)\n", 2422 /* if there is a non-fixed variable with higher priority than the maximal priority of the fractional candidates, 2427 SCIP_CALL( SCIPbranchExecPseudo(blkmem, set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue, cutoffbound, 2437 for( i = 0; i < set->nbranchrules && (*result == SCIP_DIDNOTRUN || *result == SCIP_DIDNOTFIND); ++i ) 2439 SCIP_CALL( SCIPbranchruleExecLPSol(set->branchrules[i], set, stat, tree, sepastore, cutoffbound, allowaddcons, result) ); 2451 /* no branching method succeeded in choosing a branching: just branch on the first fractional variable with maximal 2476 SCIP_CALL( SCIPtreeBranchVar(tree, reopt, blkmem, set, stat, transprob, origprob, lp, branchcand, eventqueue, var, SCIP_INVALID, 2485 /** calls branching rules to branch on an external solution; if no external branching candidates exist, the result is SCIP_DIDNOTRUN */ 2507 assert(0 <= branchcand->nprioexterncands && branchcand->nprioexterncands <= branchcand->nexterncands); 2512 SCIPdebugMessage("branching on external solution with %d branching candidates (%d of maximal priority)\n", 2519 /* if there is a non-fixed variable with higher priority than the maximal priority of the external candidates, 2524 /* @todo: adjust this, that also LP branching might be called, if lpmaxpriority != externmaxpriority. 2527 SCIP_CALL( SCIPbranchExecPseudo(blkmem, set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue, cutoffbound, 2537 for( i = 0; i < set->nbranchrules && (*result == SCIP_DIDNOTRUN || *result == SCIP_DIDNOTFIND); ++i ) 2539 SCIP_CALL( SCIPbranchruleExecExternSol(set->branchrules[i], set, stat, tree, sepastore, cutoffbound, allowaddcons, result) ); 2551 /* if all branching rules did nothing, then they should also not have cleared all branching candidates */ 2554 /* no branching method succeeded in choosing a branching: just branch on the first branching candidates with maximal 2555 * priority, and out of these on the one with maximal branch factor, and out of these on the one with largest domain 2573 if( SCIPsetIsInfinity(set, -SCIPvarGetLbLocal(cand)) || SCIPsetIsInfinity(set, SCIPvarGetUbLocal(cand)) ) 2579 if( priority > bestpriority || (priority == bestpriority && factor > bestfactor) || (priority == bestpriority && factor == bestfactor && domain > bestdomain) ) /*lint !e777*/ 2595 SCIPdebugMessage("no branching method succeeded; fallback selected to branch on variable <%s> with bounds [%g, %g] on value %g\n", 2598 SCIP_CALL( SCIPtreeBranchVar(tree, reopt, blkmem, set, stat, transprob, origprob, lp, branchcand, eventqueue, var, val, 2607 /** calls branching rules to branch on a pseudo solution; if no unfixed variables exist, the result is SCIP_DIDNOTRUN */ 2629 SCIPdebugMessage("branching on pseudo solution with %d unfixed variables\n", branchcand->npseudocands); 2641 for( i = 0; i < set->nbranchrules && (*result == SCIP_DIDNOTRUN || *result == SCIP_DIDNOTFIND); ++i ) 2643 SCIP_CALL( SCIPbranchruleExecPseudoSol(set->branchrules[i], set, stat, tree, cutoffbound, allowaddcons, result) ); 2655 /* no branching method succeeded in choosing a branching: just branch on the first unfixed variable with maximal 2678 SCIP_CALL( SCIPtreeBranchVar(tree, reopt, blkmem, set, stat, transprob, origprob, lp, branchcand, eventqueue, var, SCIP_INVALID,
int SCIPbranchcandGetNPrioExternBins(SCIP_BRANCHCAND *branchcand) Definition: branch.c:477 Definition: type_result.h:33 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) Definition: branch.c:1212 SCIP_Longint SCIPbranchruleGetNDomredsFound(SCIP_BRANCHRULE *branchrule) Definition: branch.c:2059 internal methods for managing events SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:5238 SCIP_RETCODE SCIPtreeBranchVar(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var, SCIP_Real val, SCIP_NODE **downchild, SCIP_NODE **eqchild, SCIP_NODE **upchild) Definition: tree.c:5185 void SCIPbranchruleSetCopy(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHCOPY((*branchcopy))) Definition: branch.c:1776 internal methods for branch and bound tree Definition: type_var.h:40 SCIP_Real SCIPbranchruleGetMaxbounddist(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1943 SCIP_RETCODE SCIPbranchruleExitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set) Definition: branch.c:1416 internal methods for clocks and timing issues int SCIPbranchcandGetNPseudoCands(SCIP_BRANCHCAND *branchcand) Definition: branch.c:802 void SCIPbranchruleSetFree(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHFREE((*branchfree))) Definition: branch.c:1787 SCIP_RETCODE SCIPbranchcandCreate(SCIP_BRANCHCAND **branchcand) Definition: branch.c:132 Definition: struct_var.h:196 SCIP_Longint SCIPbranchruleGetNLPCalls(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1997 int SCIPbranchcandGetNPrioExternCands(SCIP_BRANCHCAND *branchcand) Definition: branch.c:467 SCIP_Real SCIPbranchGetScore(SCIP_SET *set, SCIP_VAR *var, SCIP_Real downgain, SCIP_Real upgain) Definition: branch.c:2096 Definition: struct_sepastore.h:37 SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val) Definition: set.c:5721 SCIP_RETCODE SCIPbranchExecPseudo(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result) Definition: branch.c:2608 SCIP_Longint SCIPbranchruleGetNCutsFound(SCIP_BRANCHRULE *branchrule) Definition: branch.c:2037 int SCIPbranchcandGetNPrioPseudoImpls(SCIP_BRANCHCAND *branchcand) Definition: branch.c:842 Definition: struct_message.h:35 Definition: type_var.h:53 const char * SCIPbranchruleGetName(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1877 internal methods for branching rules and branching candidate storage void SCIPbranchcandClearExternCands(SCIP_BRANCHCAND *branchcand) Definition: branch.c:649 SCIP_Longint SCIPbranchruleGetNConssFound(SCIP_BRANCHRULE *branchrule) Definition: branch.c:2049 Definition: struct_prob.h:38 SCIP_Real SCIPbranchruleGetSetupTime(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1977 SCIP_RETCODE SCIPbranchruleInitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set) Definition: branch.c:1392 Definition: type_result.h:40 static SCIP_RETCODE ensureLpcandsSize(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num) Definition: branch.c:54 internal methods for handling parameter settings void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable) Definition: clock.c:250 static SCIP_RETCODE ensureExterncandsSize(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num) Definition: branch.c:102 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) Definition: branch.c:1440 int SCIPbranchcandGetNPrioExternInts(SCIP_BRANCHCAND *branchcand) Definition: branch.c:487 internal methods for LP management SCIP_Bool SCIPsetIsFeasFracIntegral(SCIP_SET *set, SCIP_Real val) Definition: set.c:5732 int SCIPbranchcandGetNPrioPseudoCands(SCIP_BRANCHCAND *branchcand) Definition: branch.c:812 Definition: type_retcode.h:44 SCIP_RETCODE SCIPbranchruleExecPseudoSol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result) Definition: branch.c:1654 Definition: struct_lp.h:123 SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:5274 Definition: struct_set.h:56 SCIP_RETCODE SCIPbranchExecLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result) Definition: branch.c:2384 int SCIPbranchcandGetNExternCands(SCIP_BRANCHCAND *branchcand) Definition: branch.c:457 SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:5220 SCIP_RETCODE SCIPbranchcandAddExternCand(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, SCIP_Real score, SCIP_Real solval) Definition: branch.c:519 SCIP_Bool SCIPbranchruleIsInitialized(SCIP_BRANCHRULE *branchrule) Definition: branch.c:2079 SCIP_RETCODE SCIPvarChgBranchPriority(SCIP_VAR *var, int branchpriority) Definition: var.c:10953 Definition: type_clock.h:34 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) Definition: branch.c:419 Definition: type_result.h:35 internal methods for storing and manipulating the main problem SCIP_Real SCIPbranchGetBranchingPoint(SCIP_SET *set, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real suggestion) Definition: branch.c:2184 Definition: type_retcode.h:42 void SCIPbranchruleSetData(SCIP_BRANCHRULE *branchrule, SCIP_BRANCHRULEDATA *branchruledata) Definition: branch.c:1765 SCIP_RETCODE SCIPbranchruleExit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set) Definition: branch.c:1362 int SCIPsepastoreGetNCuts(SCIP_SEPASTORE *sepastore) Definition: sepastore.c:1357 SCIP_RETCODE SCIPbranchcandGetPseudoCands(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR ***pseudocands, int *npseudocands, int *npriopseudocands) Definition: branch.c:740 Definition: type_var.h:42 void SCIPbranchruleSetInit(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINIT((*branchinit))) Definition: branch.c:1798 Definition: type_var.h:44 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) Definition: branch.c:384 int SCIPbranchruleGetMaxdepth(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1921 SCIP_Bool SCIPsetIsRelGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:6123 Definition: type_retcode.h:33 static SCIP_RETCODE branchcandCalcLPCands(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp) Definition: branch.c:191 internal methods for global SCIP settings SCIP_Longint SCIPbranchruleGetNExternCalls(SCIP_BRANCHRULE *branchrule) Definition: branch.c:2007 SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:5666 Definition: type_result.h:42 SCIP_RETCODE SCIPsetAddIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata) Definition: set.c:2455 SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:5202 SCIP_Bool SCIPbranchcandContainsExternCand(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var) Definition: branch.c:664 internal methods for storing separated cuts Definition: struct_branch.h:68 SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:5622 Definition: type_lp.h:34 SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype) Definition: clock.c:160 void SCIPbranchruleSetMaxdepth(SCIP_BRANCHRULE *branchrule, int maxdepth) Definition: branch.c:1931 const char * SCIPbranchruleGetDesc(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1887 internal methods for problem variables void SCIPbranchruleSetExecLp(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECLP((*branchexeclp))) Definition: branch.c:1844 void SCIPbranchruleSetPriority(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, int priority) Definition: branch.c:1907 SCIP_Real SCIPbranchruleGetTime(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1987 int SCIPbranchcandGetNPrioExternConts(SCIP_BRANCHCAND *branchcand) Definition: branch.c:507 Definition: type_var.h:55 Definition: type_var.h:54 Definition: type_var.h:46 void SCIPbranchruleEnableOrDisableClocks(SCIP_BRANCHRULE *branchrule, SCIP_Bool enable) Definition: branch.c:1965 SCIP_Longint SCIPbranchruleGetNChildren(SCIP_BRANCHRULE *branchrule) Definition: branch.c:2069 SCIP_Bool SCIPsetIsRelLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2) Definition: set.c:6079 SCIP_RETCODE SCIPsetBranchrulePriority(SCIP *scip, SCIP_BRANCHRULE *branchrule, int priority) Definition: scip.c:8473 Definition: struct_reopt.h:113 Definition: type_var.h:41 Definition: type_var.h:45 SCIP_Real SCIPbranchGetScoreMultiple(SCIP_SET *set, SCIP_VAR *var, int nchildren, SCIP_Real *gains) Definition: branch.c:2146 SCIP_RETCODE SCIPbranchcandUpdateVar(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var) Definition: branch.c:1080 void SCIPbranchruleSetExecPs(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECPS((*branchexecps))) Definition: branch.c:1866 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) Definition: branch.c:1547 SCIP_RETCODE SCIPbranchcandFree(SCIP_BRANCHCAND **branchcand) Definition: branch.c:171 void SCIPbranchruleSetInitsol(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINITSOL((*branchinitsol))) Definition: branch.c:1820 Definition: type_lp.h:36 void SCIPbranchruleSetExecExt(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECEXT((*branchexecext))) Definition: branch.c:1855 SCIP_BRANCHRULEDATA * SCIPbranchruleGetData(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1755 Definition: struct_lp.h:255 void SCIPbranchruleSetExitsol(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXITSOL((*branchexitsol))) Definition: branch.c:1831 SCIP_RETCODE SCIPbranchruleInit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set) Definition: branch.c:1318 SCIP_RETCODE SCIPbranchruleCopyInclude(SCIP_BRANCHRULE *branchrule, SCIP_SET *set) Definition: branch.c:1193 int SCIPbranchcandGetNPrioPseudoBins(SCIP_BRANCHCAND *branchcand) Definition: branch.c:822 Definition: type_result.h:43 int SCIPbranchruleGetPriority(SCIP_BRANCHRULE *branchrule) Definition: branch.c:1897 static void branchcandSortPseudoCands(SCIP_BRANCHCAND *branchcand) Definition: branch.c:945 internal methods for problem statistics datastructures for branching rules and branching candidate storage SCIP_RETCODE SCIPbranchruleFree(SCIP_BRANCHRULE **branchrule, SCIP_SET *set) Definition: branch.c:1292 SCIP_Bool SCIPsetIsFeasPositive(SCIP_SET *set, SCIP_Real val) Definition: set.c:5699 void SCIPbranchruleSetMaxbounddist(SCIP_BRANCHRULE *branchrule, SCIP_Real maxbounddist) Definition: branch.c:1953 void SCIPbranchruleSetExit(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXIT((*branchexit))) Definition: branch.c:1809 static void branchcandRemovePseudoCand(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var) Definition: branch.c:978 static void branchcandInsertPseudoCand(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var, int insertpos) Definition: branch.c:855 SCIP_RETCODE SCIPbranchcandRemoveVar(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var) Definition: branch.c:1063 SCIP_Real SCIPvarGetMultaggrUbLocal(SCIP_VAR *var, SCIP_SET *set) Definition: var.c:7983 SCIP_Longint SCIPbranchruleGetNCutoffs(SCIP_BRANCHRULE *branchrule) Definition: branch.c:2027 Definition: type_result.h:45 int SCIPbranchcandGetNPrioPseudoInts(SCIP_BRANCHCAND *branchcand) Definition: branch.c:832 SCIP_Real SCIPtreeGetLowerbound(SCIP_TREE *tree, SCIP_SET *set) Definition: tree.c:6829 Definition: struct_stat.h:44 Definition: struct_tree.h:165 common defines and data types used in all packages of SCIP Definition: struct_event.h:204 SCIP_RETCODE SCIPsetAddRealParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata) Definition: set.c:2503 Definition: objbranchrule.h:33 SCIP_RETCODE SCIPbranchExecExtern(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result) Definition: branch.c:2486 Definition: type_var.h:43 Definition: struct_branch.h:36 SCIP_Real SCIPvarGetMultaggrLbLocal(SCIP_VAR *var, SCIP_SET *set) Definition: var.c:7917 Definition: type_result.h:39 SCIP callable library. SCIP_Longint SCIPbranchruleGetNPseudoCalls(SCIP_BRANCHRULE *branchrule) Definition: branch.c:2017 SCIP_Bool SCIPsetIsFeasNegative(SCIP_SET *set, SCIP_Real val) Definition: set.c:5710 SCIP_RETCODE SCIPbranchcandUpdateVarBranchPriority(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, int branchpriority) Definition: branch.c:1120 int SCIPbranchcandGetNPrioExternImpls(SCIP_BRANCHCAND *branchcand) Definition: branch.c:497 static SCIP_RETCODE ensurePseudocandsSize(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num) Definition: branch.c:79 memory allocation routines Definition: type_var.h:56 |