assert(num <= branchcand->lpcandssize);
106assert(num <= branchcand->pseudocandssize);
131assert(num <= branchcand->externcandssize);
147assert(branchcand !=
NULL);
150(*branchcand)->lpcands =
NULL;
151(*branchcand)->lpcandssol =
NULL;
152(*branchcand)->lpcandsfrac =
NULL;
153(*branchcand)->externcands =
NULL;
154(*branchcand)->externcandssol =
NULL;
155(*branchcand)->externcandsscore =
NULL;
156(*branchcand)->pseudocands =
NULL;
157(*branchcand)->lpcandssize = 0;
158(*branchcand)->nlpcands = 0;
159(*branchcand)->nimpllpfracs = 0;
160(*branchcand)->npriolpcands = 0;
161(*branchcand)->npriolpbins = 0;
162(*branchcand)->lpmaxpriority = INT_MIN;
163(*branchcand)->externcandssize = 0;
164(*branchcand)->nexterncands = 0;
165(*branchcand)->nprioexterncands = 0;
166(*branchcand)->nprioexternbins = 0;
167(*branchcand)->nprioexternints = 0;
168(*branchcand)->nprioexternimpls = 0;
169(*branchcand)->externmaxpriority = INT_MIN;
170(*branchcand)->pseudocandssize = 0;
171(*branchcand)->npseudocands = 0;
172(*branchcand)->npriopseudocands = 0;
173(*branchcand)->npriopseudobins = 0;
174(*branchcand)->npriopseudoints = 0;
175(*branchcand)->pseudomaxpriority = INT_MIN;
187assert(branchcand !=
NULL);
206assert(branchcand !=
NULL);
220assert(branchcand !=
NULL);
221assert(stat !=
NULL);
257 for( c = 0; c < ncols; ++c )
260assert(col !=
NULL);
261assert(col->
lppos== c);
262assert(col->
lpipos>= 0);
274assert(var !=
NULL);
307assert(insertpos < branchcand->lpcandssize);
310branchpriority = INT_MIN;
331 if( insertpos != 0 )
369branchcand->
lpcands[insertpos] = var;
370branchcand->
lpcandssol[insertpos] = primsol;
379 SCIPsetDebugMsg(
set,
" -> candidate %d: var=<%s>, sol=%g, frac=%g, prio=%d (max: %d) -> pos %d\n",
422 if( lpcands !=
NULL)
423*lpcands = branchcand->
lpcands;
424 if( lpcandssol !=
NULL)
426 if( lpcandsfrac !=
NULL)
428 if( nlpcands !=
NULL)
430 if( npriolpcands !=
NULL)
433 if( nfracimplvars !=
NULL)
446 int* nprioexterncands,
447 int* nprioexternbins,
448 int* nprioexternints,
449 int* nprioexternimpls
453assert(branchcand !=
NULL);
456 if( externcands !=
NULL)
458 if( externcandssol !=
NULL)
460 if( externcandsscore !=
NULL)
462 if( nexterncands !=
NULL)
464 if( nprioexterncands !=
NULL)
466 if( nprioexternbins !=
NULL)
468 if( nprioexternints !=
NULL)
470 if( nprioexternimpls !=
NULL)
481assert(branchcand !=
NULL);
491assert(branchcand !=
NULL);
501assert(branchcand !=
NULL);
511assert(branchcand !=
NULL);
521assert(branchcand !=
NULL);
531assert(branchcand !=
NULL);
541assert(branchcand !=
NULL);
551assert(branchcand !=
NULL);
561assert(branchcand !=
NULL);
581assert(branchcand !=
NULL);
582assert(var !=
NULL);
595 SCIPsetDebugMsg(
set,
"inserting external candidate <%s> of type %d and priority %d into candidate set (maxprio: %d), score = %g, solval = %g\n",
701assert(branchcand !=
NULL);
720assert(branchcand !=
NULL);
721assert(var !=
NULL);
772i < branchcand->nprioexterncands; i++ )
779assert(branchpriority < branchcand->externmaxpriority);
781 for( i = branchcand->
nprioexterncands; i < branchcand->nexterncands; i++ )
794 int* npriopseudocands
797assert(branchcand !=
NULL);
806assert(prob !=
NULL);
813assert(var !=
NULL);
840 if( pseudocands !=
NULL)
842 if( npseudocands !=
NULL)
844 if( npriopseudocands !=
NULL)
856assert(branchcand !=
NULL);
866assert(branchcand !=
NULL);
876assert(branchcand !=
NULL);
886assert(branchcand !=
NULL);
896assert(branchcand !=
NULL);
914assert(branchcand !=
NULL);
915assert(var !=
NULL);
916assert(branchcand->
npriopseudocands<= insertpos && insertpos < branchcand->npseudocands);
922 SCIPdebugMessage(
"inserting pseudo candidate <%s> of type %d and priority %d into candidate set at position %d (maxprio: %d)\n",
933 if( insertpos != 0 )
1002assert(branchcand !=
NULL);
1041assert(branchcand !=
NULL);
1042assert(var !=
NULL);
1050 SCIPdebugMessage(
"removing pseudo candidate <%s> of type %d and priority %d at %d from candidate set (maxprio: %d)\n",
1059assert(0 <= freepos && freepos < branchcand->npseudocands);
1061 if( freepos < branchcand->npriopseudobins )
1075 if( freepos < branchcand->npriopseudobins + branchcand->
npriopseudoints)
1089 if( freepos < branchcand->npriopseudocands )
1124assert(var !=
NULL);
1142assert(branchcand !=
NULL);
1143assert(var !=
NULL);
1183 intoldbranchpriority;
1184 intpseudomaxpriority;
1186assert(branchcand !=
NULL);
1190 if( oldbranchpriority == branchpriority )
1197 if( oldbranchpriority == pseudomaxpriority || branchpriority > pseudomaxpriority )
1238assert(paramdata !=
NULL);
1252assert(branchrule !=
NULL);
1256 if( branchrule->branchcopy !=
NULL)
1259 SCIP_CALL( branchrule->branchcopy(
set->scip, branchrule) );
1294assert(branchrule !=
NULL);
1295assert(name !=
NULL);
1296assert(desc !=
NULL);
1303(*branchrule)->priority = priority;
1304(*branchrule)->maxdepth = maxdepth;
1305(*branchrule)->maxbounddist = maxbounddist;
1306(*branchrule)->branchcopy = branchcopy;
1307(*branchrule)->branchfree = branchfree;
1308(*branchrule)->branchinit = branchinit;
1309(*branchrule)->branchexit = branchexit;
1310(*branchrule)->branchinitsol = branchinitsol;
1311(*branchrule)->branchexitsol = branchexitsol;
1312(*branchrule)->branchexeclp = branchexeclp;
1313(*branchrule)->branchexecext = branchexecext;
1314(*branchrule)->branchexecps = branchexecps;
1315(*branchrule)->branchruledata = branchruledata;
1318(*branchrule)->nlpcalls = 0;
1319(*branchrule)->nexterncalls = 0;
1320(*branchrule)->npseudocalls = 0;
1321(*branchrule)->ncutoffs = 0;
1322(*branchrule)->ncutsfound = 0;
1323(*branchrule)->nconssfound = 0;
1324(*branchrule)->ndomredsfound = 0;
1325(*branchrule)->nchildren = 0;
1326(*branchrule)->initialized =
FALSE;
1332&(*branchrule)->priority,
FALSE, priority, INT_MIN/4, INT_MAX/4,
1333paramChgdBranchrulePriority, (
SCIP_PARAMDATA*)(*branchrule)) );
1335(void)
SCIPsnprintf(paramdesc,
SCIP_MAXSTRLEN,
"maximal depth level, up to which branching rule <%s> should be used (-1 for no limit)", name);
1340(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)");
1342&(*branchrule)->maxbounddist,
FALSE, maxbounddist, 0.0, 1.0,
1373assert(branchrule !=
NULL);
1374assert(name !=
NULL);
1375assert(desc !=
NULL);
1378maxbounddist, branchcopy, branchfree, branchinit, branchexit, branchinitsol, branchexitsol, branchexeclp,
1390assert(branchrule !=
NULL);
1391 if( *branchrule ==
NULL)
1393assert(!(*branchrule)->initialized);
1397 if( (*branchrule)->branchfree !=
NULL)
1399 SCIP_CALL( (*branchrule)->branchfree(
set->scip, *branchrule) );
1417assert(branchrule !=
NULL);
1426 if(
set->misc_resetstat )
1440 if( branchrule->branchinit !=
NULL)
1445 SCIP_CALL( branchrule->branchinit(
set->scip, branchrule) );
1461assert(branchrule !=
NULL);
1470 if( branchrule->branchexit !=
NULL)
1475 SCIP_CALL( branchrule->branchexit(
set->scip, branchrule) );
1491assert(branchrule !=
NULL);
1495 if( branchrule->branchinitsol !=
NULL)
1500 SCIP_CALL( branchrule->branchinitsol(
set->scip, branchrule) );
1515assert(branchrule !=
NULL);
1519 if( branchrule->branchexitsol !=
NULL)
1524 SCIP_CALL( branchrule->branchexitsol(
set->scip, branchrule) );
1545assert(branchrule !=
NULL);
1547assert(tree !=
NULL);
1550assert(result !=
NULL);
1553 if( branchrule->branchexeclp !=
NULL 1569runbranchrule =
SCIPsetIsLE(
set, loclowerbound - glblowerbound, branchrule->
maxbounddist* (cutoffbound - glblowerbound));
1572 if( runbranchrule )
1590 SCIP_CALL( branchrule->branchexeclp(
set->scip, branchrule, allowaddcons, result) );
1604 SCIPerrorMessage(
"branching rule <%s> returned invalid result code <%d> from LP solution branching\n",
1605branchrule->
name, *result);
1610 SCIPerrorMessage(
"branching rule <%s> added a constraint in LP solution branching without permission\n",
1611branchrule->
name);
1652assert(branchrule !=
NULL);
1654assert(tree !=
NULL);
1657assert(result !=
NULL);
1660 if( branchrule->branchexecext !=
NULL 1677runbranchrule =
SCIPsetIsLE(
set, loclowerbound - glblowerbound, branchrule->
maxbounddist* (cutoffbound - glblowerbound));
1680 if( runbranchrule )
1685 intoldnactiveconss;
1698 SCIP_CALL( branchrule->branchexecext(
set->scip, branchrule, allowaddcons, result) );
1712 SCIPerrorMessage(
"branching rule <%s> returned invalid result code <%d> from external solution branching\n",
1713branchrule->
name, *result);
1718 SCIPerrorMessage(
"branching rule <%s> added a constraint in external solution branching without permission\n",
1719branchrule->
name);
1758assert(branchrule !=
NULL);
1760assert(tree !=
NULL);
1762assert(result !=
NULL);
1765 if( branchrule->branchexecps !=
NULL 1781runbranchrule =
SCIPsetIsLE(
set, loclowerbound - glblowerbound, branchrule->
maxbounddist* (cutoffbound - glblowerbound));
1784 if( runbranchrule )
1800 SCIP_CALL( branchrule->branchexecps(
set->scip, branchrule, allowaddcons, result) );
1813 SCIPerrorMessage(
"branching rule <%s> returned invalid result code <%d> from pseudo solution branching\n",
1814branchrule->
name, *result);
1819 SCIPerrorMessage(
"branching rule <%s> added a constraint in pseudo solution branching without permission\n",
1820branchrule->
name);
1853assert(branchrule !=
NULL);
1864assert(branchrule !=
NULL);
1875assert(branchrule !=
NULL);
1877branchrule->branchcopy = branchcopy;
1886assert(branchrule !=
NULL);
1888branchrule->branchfree = branchfree;
1897assert(branchrule !=
NULL);
1899branchrule->branchinit = branchinit;
1908assert(branchrule !=
NULL);
1910branchrule->branchexit = branchexit;
1919assert(branchrule !=
NULL);
1921branchrule->branchinitsol = branchinitsol;
1930assert(branchrule !=
NULL);
1932branchrule->branchexitsol = branchexitsol;
1943assert(branchrule !=
NULL);
1945branchrule->branchexeclp = branchexeclp;
1954assert(branchrule !=
NULL);
1956branchrule->branchexecext = branchexecext;
1965assert(branchrule !=
NULL);
1967branchrule->branchexecps = branchexecps;
1975assert(branchrule !=
NULL);
1977 returnbranchrule->
name;
1985assert(branchrule !=
NULL);
1987 returnbranchrule->
desc;
1995assert(branchrule !=
NULL);
2007assert(branchrule !=
NULL);
2019assert(branchrule !=
NULL);
2030assert(branchrule !=
NULL);
2031assert(maxdepth >= -1);
2041assert(branchrule !=
NULL);
2052assert(branchrule !=
NULL);
2053assert(maxbounddist >= -1);
2064assert(branchrule !=
NULL);
2075assert(branchrule !=
NULL);
2085assert(branchrule !=
NULL);
2095assert(branchrule !=
NULL);
2105assert(branchrule !=
NULL);
2115assert(branchrule !=
NULL);
2125assert(branchrule !=
NULL);
2135assert(branchrule !=
NULL);
2147assert(branchrule !=
NULL);
2157assert(branchrule !=
NULL);
2167assert(branchrule !=
NULL);
2177assert(branchrule !=
NULL);
2204 if(
set->branch_sumadjustscore )
2207downgain = downgain +
eps;
2208upgain = upgain +
eps;
2213downgain =
MAX(downgain,
eps);
2214upgain =
MAX(upgain,
eps);
2217 switch(
set->branch_scorefunc )
2221 if( downgain > upgain )
2222score =
set->branch_scorefac * downgain + (1.0-
set->branch_scorefac) * upgain;
2224score =
set->branch_scorefac * upgain + (1.0-
set->branch_scorefac) * downgain;
2228score = downgain * upgain;
2231 if( downgain > upgain )
2232score = upgain * upgain / downgain;
2234score = downgain * downgain / upgain;
2261assert(nchildren == 0 || gains !=
NULL);
2266 for( c = 0; c < nchildren; ++c )
2268 if( gains[c] < min1 )
2273 else if( gains[c] < min2 )
2300assert(var !=
NULL);
2313branchpoint =
MAX(lb,
MIN(suggestion, ub));
2325 if( branchpoint < ub )
2335 if( branchpoint > lb )
2352 if(
REALABS(branchpoint) > 1e+12 )
2375reldomainwidth = (ub - lb) / (gub - glb);
2379 if( reldomainwidth < set->branch_midpullreldomtrig )
2380midpull *= reldomainwidth;
2382branchpoint = midpull * (lb+ub) / 2.0 + (1.0 - midpull) * branchpoint;
2386branchpoint =
MAX(lb,
MIN(branchpoint, ub));
2397branchpoint = lb + 1000.0;
2408branchpoint = ub - 1000.0;
2434branchpoint = (lb+ub)/2.0;
2448scale =
MAX3(lbabs, ubabs, 1.0);
2454minbrpoint = (1.0 -
set->branch_clamp) * lb +
set->branch_clamp * ub;
2461maxbrpoint =
set->branch_clamp * lb + (1.0 -
set->branch_clamp) * ub;
2465branchpoint =
MAX(minbrpoint,
MIN(branchpoint, maxbrpoint));
2485 returnbranchpoint - 0.5;
2493 if( branchpoint <= lb + 0.5 )
2499branchpoint = lb + 0.5;
2500 if( branchpoint == lb )
2501branchpoint = 0.5 * (lb+ub);
2504 else if( branchpoint >= ub - 0.5 )
2510branchpoint = ub - 0.5;
2511 if( branchpoint == ub )
2512branchpoint = 0.5 * (lb+ub);
2522 returnbranchpoint - 0.5;
2556assert(branchcand !=
NULL);
2557assert(result !=
NULL);
2566 SCIPsetDebugMsg(
set,
"branching on LP solution with %d (+%d) fractional (+implicit fractional) variables (%d of maximal priority)\n",
2571 if( nalllpcands == 0 )
2579 SCIP_CALL(
SCIPbranchExecPseudo(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue, cutoffbound,
2580allowaddcons, result) );
2607bestpriority = INT_MIN;
2609 for( i = 0; i < nalllpcands; ++i )
2613 if( priority > bestpriority || (priority == bestpriority && factor > bestfactor) )
2616bestpriority = priority;
2617bestfactor = factor;
2620assert(0 <= bestcand && bestcand < nalllpcands);
2622var = branchcand->
lpcands[bestcand];
2628 SCIP_CALL(
SCIPtreeBranchVar(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, var,
SCIP_INVALID,
2657assert(branchcand !=
NULL);
2658assert(result !=
NULL);
2664 SCIPsetDebugMsg(
set,
"branching on external solution with %d branching candidates (%d of maximal priority)\n",
2679 SCIP_CALL(
SCIPbranchExecPseudo(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue, cutoffbound,
2680allowaddcons, result) );
2710bestpriority = INT_MIN;
2731 if( priority > bestpriority || (priority == bestpriority && factor > bestfactor) || (priority == bestpriority && factor == bestfactor && domain > bestdomain) )
2734bestpriority = priority;
2735bestfactor = factor;
2736bestdomain = domain;
2739assert(0 <= bestcand && bestcand < branchcand->nexterncands);
2749 SCIPsetDebugMsg(
set,
"no branching method succeeded; fallback selected to branch on variable <%s> with bounds [%g, %g] on value %g\n",
2752 SCIP_CALL(
SCIPtreeBranchVar(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, var, val,
2787assert(branchcand !=
NULL);
2788assert(result !=
NULL);
2820bestpriority = INT_MIN;
2826 if( priority > bestpriority || (priority == bestpriority && factor > bestfactor) )
2829bestpriority = priority;
2830bestfactor = factor;
2833assert(0 <= bestcand && bestcand < branchcand->npseudocands);
2839 SCIP_CALL(
SCIPtreeBranchVar(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, var,
SCIP_INVALID,
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)
int SCIPbranchcandGetNPrioPseudoCands(SCIP_BRANCHCAND *branchcand)
int SCIPbranchcandGetNExternCands(SCIP_BRANCHCAND *branchcand)
static SCIP_DECL_PARAMCHGD(paramChgdBranchrulePriority)
SCIP_Real SCIPbranchGetBranchingPoint(SCIP_SET *set, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real suggestion)
SCIP_RETCODE SCIPbranchcandCreate(SCIP_BRANCHCAND **branchcand)
void SCIPbranchruleSetExit(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXIT((*branchexit)))
void SCIPbranchruleSetInitsol(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINITSOL((*branchinitsol)))
void SCIPbranchruleSetMaxdepth(SCIP_BRANCHRULE *branchrule, int maxdepth)
void SCIPbranchruleSetFree(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHFREE((*branchfree)))
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)
void SCIPbranchruleSetInit(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINIT((*branchinit)))
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)
SCIP_Real SCIPbranchGetScoreMultiple(SCIP_SET *set, SCIP_VAR *var, int nchildren, SCIP_Real *gains)
int SCIPbranchcandGetNPrioExternCands(SCIP_BRANCHCAND *branchcand)
SCIP_RETCODE SCIPbranchruleExit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
void SCIPbranchcandClearExternCands(SCIP_BRANCHCAND *branchcand)
int SCIPbranchcandGetExternMaxPrio(SCIP_BRANCHCAND *branchcand)
static SCIP_RETCODE doBranchruleCreate(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)
SCIP_RETCODE SCIPbranchruleFree(SCIP_BRANCHRULE **branchrule, SCIP_SET *set)
SCIP_RETCODE SCIPbranchruleInitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
SCIP_RETCODE SCIPbranchcandUpdateVarBranchPriority(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, int branchpriority)
int SCIPbranchcandGetNPrioExternBins(SCIP_BRANCHCAND *branchcand)
SCIP_RETCODE SCIPbranchruleExecPseudoSol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
void SCIPbranchruleSetExecPs(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECPS((*branchexecps)))
int SCIPbranchcandGetNPseudoCands(SCIP_BRANCHCAND *branchcand)
int SCIPbranchcandGetNPrioPseudoBins(SCIP_BRANCHCAND *branchcand)
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)
void SCIPbranchruleSetCopy(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHCOPY((*branchcopy)))
SCIP_RETCODE SCIPbranchruleExitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
int SCIPbranchcandGetNPrioExternImpls(SCIP_BRANCHCAND *branchcand)
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)
int SCIPbranchcandGetNPrioLPCands(SCIP_BRANCHCAND *branchcand)
SCIP_RETCODE SCIPbranchcandGetPseudoCands(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR ***pseudocands, int *npseudocands, int *npriopseudocands)
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)
void SCIPbranchcandInvalidate(SCIP_BRANCHCAND *branchcand)
void SCIPbranchruleSetExecExt(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECEXT((*branchexecext)))
int SCIPbranchcandGetNPrioExternInts(SCIP_BRANCHCAND *branchcand)
int SCIPbranchcandGetNPrioPseudoImpls(SCIP_BRANCHCAND *branchcand)
static SCIP_RETCODE ensureExterncandsSize(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num)
SCIP_RETCODE SCIPbranchcandRemoveVar(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
static SCIP_RETCODE branchcandCalcLPCands(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_RETCODE SCIPbranchcandAddExternCand(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, SCIP_Real score, SCIP_Real solval)
void SCIPbranchruleEnableOrDisableClocks(SCIP_BRANCHRULE *branchrule, SCIP_Bool enable)
static SCIP_RETCODE ensurePseudocandsSize(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num)
static void branchcandRemovePseudoCand(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
static SCIP_RETCODE ensureLpcandsSize(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, int num)
SCIP_RETCODE SCIPbranchcandFree(SCIP_BRANCHCAND **branchcand)
int SCIPbranchcandGetNPrioPseudoInts(SCIP_BRANCHCAND *branchcand)
SCIP_RETCODE SCIPbranchcandUpdateVar(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var)
static void branchcandSortPseudoCands(SCIP_BRANCHCAND *branchcand)
void SCIPbranchruleSetMaxbounddist(SCIP_BRANCHRULE *branchrule, SCIP_Real maxbounddist)
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)
int SCIPbranchcandGetLPMaxPrio(SCIP_BRANCHCAND *branchcand)
void SCIPbranchruleSetPriority(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, int priority)
void SCIPbranchruleSetExitsol(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXITSOL((*branchexitsol)))
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)
void SCIPbranchruleSetExecLp(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECLP((*branchexeclp)))
int SCIPbranchcandGetNPrioExternConts(SCIP_BRANCHCAND *branchcand)
SCIP_Real SCIPbranchGetScore(SCIP_SET *set, SCIP_VAR *var, SCIP_Real downgain, SCIP_Real upgain)
SCIP_RETCODE SCIPbranchruleCopyInclude(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
SCIP_Bool SCIPbranchcandContainsExternCand(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
SCIP_RETCODE SCIPbranchruleInit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
static void branchcandInsertPseudoCand(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var, int insertpos)
internal methods for branching rules and branching candidate storage
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
void SCIPclockReset(SCIP_CLOCK *clck)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for clocks and timing issues
common defines and data types used in all packages of SCIP
#define SCIP_MAXTREEDEPTH
#define SCIP_LONGINT_FORMAT
#define SCIP_CALL_FINALLY(x, y)
internal methods for managing events
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPbranchruleIsInitialized(SCIP_BRANCHRULE *branchrule)
SCIP_Longint SCIPbranchruleGetNDomredsFound(SCIP_BRANCHRULE *branchrule)
SCIP_Longint SCIPbranchruleGetNPseudoCalls(SCIP_BRANCHRULE *branchrule)
int SCIPbranchruleGetMaxdepth(SCIP_BRANCHRULE *branchrule)
SCIP_Longint SCIPbranchruleGetNConssFound(SCIP_BRANCHRULE *branchrule)
SCIP_DECL_SORTPTRCOMP(SCIPbranchruleComp)
SCIP_Longint SCIPbranchruleGetNLPCalls(SCIP_BRANCHRULE *branchrule)
const char * SCIPbranchruleGetName(SCIP_BRANCHRULE *branchrule)
SCIP_BRANCHRULEDATA * SCIPbranchruleGetData(SCIP_BRANCHRULE *branchrule)
SCIP_Longint SCIPbranchruleGetNChildren(SCIP_BRANCHRULE *branchrule)
SCIP_Real SCIPbranchruleGetTime(SCIP_BRANCHRULE *branchrule)
int SCIPbranchruleGetPriority(SCIP_BRANCHRULE *branchrule)
SCIP_Real SCIPbranchruleGetSetupTime(SCIP_BRANCHRULE *branchrule)
SCIP_Real SCIPbranchruleGetMaxbounddist(SCIP_BRANCHRULE *branchrule)
const char * SCIPbranchruleGetDesc(SCIP_BRANCHRULE *branchrule)
SCIP_Longint SCIPbranchruleGetNCutoffs(SCIP_BRANCHRULE *branchrule)
SCIP_RETCODE SCIPsetBranchrulePriority(SCIP *scip, SCIP_BRANCHRULE *branchrule, int priority)
SCIP_Longint SCIPbranchruleGetNExternCalls(SCIP_BRANCHRULE *branchrule)
void SCIPbranchruleSetData(SCIP_BRANCHRULE *branchrule, SCIP_BRANCHRULEDATA *branchruledata)
SCIP_Longint SCIPbranchruleGetNCutsFound(SCIP_BRANCHRULE *branchrule)
SCIP_Real SCIPcolGetPrimsol(SCIP_COL *col)
SCIP_Real SCIPnodeGetLowerbound(SCIP_NODE *node)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
SCIP_Real SCIPvarGetSol(SCIP_VAR *var, SCIP_Bool getlpval)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPvarGetBranchFactor(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
int SCIPvarGetBranchPriority(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
SCIP_COL ** SCIPlpGetCols(SCIP_LP *lp)
int SCIPlpGetNCols(SCIP_LP *lp)
internal methods for LP management
static const char * paramname[]
memory allocation routines
#define BMSfreeMemory(ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSclearMemory(ptr)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
SCIP_PARAMDATA * SCIPparamGetData(SCIP_PARAM *param)
int SCIPparamGetInt(SCIP_PARAM *param)
internal methods for handling parameter settings
int SCIPprobGetNImplVars(SCIP_PROB *prob)
int SCIPprobGetNIntVars(SCIP_PROB *prob)
int SCIPprobGetNBinVars(SCIP_PROB *prob)
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
internal methods for storing and manipulating the main problem
int SCIPsepastoreGetNCuts(SCIP_SEPASTORE *sepastore)
internal methods for storing separated cuts
SCIP_Real SCIPsetFloor(SCIP_SET *set, SCIP_Real val)
void SCIPsetSortBranchrules(SCIP_SET *set)
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)
SCIP_Bool SCIPsetIsRelLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasPositive(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasFracIntegral(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsFeasNegative(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPsetFeastol(SCIP_SET *set)
SCIP_Real SCIPsetCeil(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
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)
SCIP_Real SCIPsetEpsilon(SCIP_SET *set)
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasZero(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_Real SCIPsetSumepsilon(SCIP_SET *set)
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsRelGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsIntegral(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPsetFeasFrac(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetRound(SCIP_SET *set, SCIP_Real val)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
internal methods for global SCIP settings
internal methods for main solving loop and node processing
internal methods for problem statistics
SCIP_Longint validlpcandslp
SCIP_Real * externcandsscore
SCIP_Real * externcandssol
SCIP_Longint nexterncalls
SCIP_BRANCHRULEDATA * branchruledata
SCIP_Longint npseudocalls
SCIP_Longint ndomredsfound
SCIP_Longint nactiveconssadded
SCIP_Longint nprobholechgs
SCIP_Longint nprobboundchgs
datastructures for branching rules and branching candidate storage
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)
SCIP_Bool SCIPtreeHasCurrentNodeLP(SCIP_TREE *tree)
SCIP_Real SCIPtreeGetLowerbound(SCIP_TREE *tree, SCIP_SET *set)
int SCIPtreeGetCurrentDepth(SCIP_TREE *tree)
internal methods for branch and bound tree
#define SCIP_DECL_BRANCHEXECPS(x)
#define SCIP_DECL_BRANCHEXECLP(x)
#define SCIP_DECL_BRANCHEXECEXT(x)
#define SCIP_DECL_BRANCHINITSOL(x)
#define SCIP_DECL_BRANCHINIT(x)
#define SCIP_DECL_BRANCHCOPY(x)
#define SCIP_DECL_BRANCHEXIT(x)
#define SCIP_DECL_BRANCHFREE(x)
struct SCIP_BranchruleData SCIP_BRANCHRULEDATA
#define SCIP_DECL_BRANCHEXITSOL(x)
@ SCIP_LPSOLSTAT_UNBOUNDEDRAY
struct SCIP_ParamData SCIP_PARAMDATA
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_VARSTATUS_ORIGINAL
@ SCIP_VARSTATUS_MULTAGGR
@ SCIP_VARSTATUS_AGGREGATED
enum SCIP_Vartype SCIP_VARTYPE
SCIP_Real SCIPvarGetMultaggrLbLocal(SCIP_VAR *var, SCIP_SET *set)
SCIP_RETCODE SCIPvarChgBranchPriority(SCIP_VAR *var, int branchpriority)
SCIP_Real SCIPvarGetMultaggrUbLocal(SCIP_VAR *var, SCIP_SET *set)
internal methods for problem variables
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4