assert(tree !=
NULL);
92assert(num <= tree->childrensize);
105assert(tree !=
NULL);
118assert(num <= tree->pathsize);
131assert(tree !=
NULL);
142assert(num <= tree->pendingbdchgssize);
157assert(elem1 !=
NULL);
158assert(elem2 !=
NULL);
175assert(fork !=
NULL);
191assert(fork !=
NULL);
193assert(blkmem !=
NULL);
214assert(subroot !=
NULL);
219 SCIPdebugMessage(
"captured LPI state of subroot %p %d times -> new nlpistateref=%d\n",
231assert(subroot !=
NULL);
233assert(blkmem !=
NULL);
253assert(node !=
NULL);
268 SCIPerrorMessage(
"node for capturing the LPI state is neither fork nor subroot\n");
282assert(node !=
NULL);
294 SCIPerrorMessage(
"node for releasing the LPI state is neither fork nor subroot\n");
307assert(probingnode !=
NULL);
311(*probingnode)->lpistate =
NULL;
312(*probingnode)->lpinorms =
NULL;
315(*probingnode)->ncols = (*probingnode)->ninitialcols;
316(*probingnode)->nrows = (*probingnode)->ninitialrows;
317(*probingnode)->origobjvars =
NULL;
318(*probingnode)->origobjvals =
NULL;
319(*probingnode)->nchgdobjs = 0;
321 SCIPdebugMessage(
"created probingnode information (%d cols, %d rows)\n", (*probingnode)->ncols, (*probingnode)->nrows);
337assert(probingnode !=
NULL);
389assert(probingnode !=
NULL);
390assert(*probingnode !=
NULL);
393 if( (*probingnode)->lpistate !=
NULL)
398 if( (*probingnode)->lpinorms !=
NULL)
404 if( (*probingnode)->nchgdobjs > 0 )
406assert((*probingnode)->origobjvars !=
NULL);
407assert((*probingnode)->origobjvals !=
NULL);
425assert(junction !=
NULL);
426assert(tree !=
NULL);
451assert(pseudofork !=
NULL);
452assert(blkmem !=
NULL);
453assert(tree !=
NULL);
460(*pseudofork)->addedcols =
NULL;
461(*pseudofork)->addedrows =
NULL;
464(*pseudofork)->nchildren = tree->
nchildren;
466 SCIPdebugMessage(
"creating pseudofork information with %d children (%d new cols, %d new rows)\n",
467(*pseudofork)->nchildren, (*pseudofork)->naddedcols, (*pseudofork)->naddedrows);
469 if( (*pseudofork)->naddedcols > 0 )
474 if( (*pseudofork)->naddedrows > 0 )
482 for( i = 0; i < (*pseudofork)->naddedrows; ++i )
506assert(pseudofork !=
NULL);
507assert(*pseudofork !=
NULL);
508assert((*pseudofork)->nchildren == 0);
509assert(blkmem !=
NULL);
513 for( i = 0; i < (*pseudofork)->naddedrows; ++i )
536assert(fork !=
NULL);
537assert(blkmem !=
NULL);
538assert(tree !=
NULL);
556(*fork)->nlpistateref = 0;
557(*fork)->addedcols =
NULL;
558(*fork)->addedrows =
NULL;
561(*fork)->nchildren = (
unsignedint) tree->
nchildren;
563 SCIPsetDebugMsg(
set,
"creating fork information with %u children (%d new cols, %d new rows)\n", (*fork)->nchildren, (*fork)->naddedcols, (*fork)->naddedrows);
565 if( (*fork)->naddedcols > 0 )
570 if( (*fork)->naddedrows > 0 )
578 for( i = 0; i < (*fork)->naddedrows; ++i )
599assert(fork !=
NULL);
600assert(*fork !=
NULL);
601assert((*fork)->nchildren == 0);
602assert((*fork)->nlpistateref == 0);
603assert((*fork)->lpistate ==
NULL);
604assert(blkmem !=
NULL);
609 for( i = (*fork)->naddedrows - 1; i >= 0; --i )
635assert(subroot !=
NULL);
636assert(blkmem !=
NULL);
637assert(tree !=
NULL);
648(*subroot)->nlpistateref = 0;
651(*subroot)->nchildren = (
unsignedint) tree->
nchildren;
658 if( (*subroot)->ncols != 0 )
663(*subroot)->cols =
NULL;
664 if( (*subroot)->nrows != 0 )
669(*subroot)->rows =
NULL;
672 for( i = 0; i < (*subroot)->nrows; ++i )
693assert(subroot !=
NULL);
694assert(*subroot !=
NULL);
695assert((*subroot)->nchildren == 0);
696assert((*subroot)->nlpistateref == 0);
697assert((*subroot)->lpistate ==
NULL);
698assert(blkmem !=
NULL);
703 for( i = 0; i < (*subroot)->nrows; ++i )
724assert(tree !=
NULL);
725assert(sibling !=
NULL);
750assert(tree !=
NULL);
751assert(child !=
NULL);
773assert(tree !=
NULL);
774assert(child !=
NULL);
803assert(node !=
NULL);
809assert(blkmem !=
NULL);
811assert(tree !=
NULL);
822 if( parent !=
NULL)
862assert(node !=
NULL);
863assert(blkmem !=
NULL);
864assert(tree !=
NULL);
871 if( parent !=
NULL)
938 if( freeParent && !parent->
active)
943 else if( !
set->reopt_enable && freeParent == !parent->
active)
987singleChild =
FALSE;
1019assert(node !=
NULL);
1022(*node)->parent =
NULL;
1023(*node)->conssetchg =
NULL;
1024(*node)->domchg =
NULL;
1025(*node)->number = 0;
1028(*node)->reoptid = 0;
1031(*node)->active =
FALSE;
1032(*node)->cutoff =
FALSE;
1033(*node)->reprop =
FALSE;
1034(*node)->repropsubtreemark = 0;
1050assert(node !=
NULL);
1051assert(blkmem !=
NULL);
1053assert(stat !=
NULL);
1054assert(tree !=
NULL);
1070(*node)->data.child.arraypos = -1;
1115assert(node !=
NULL);
1116assert(*node !=
NULL);
1117assert(!(*node)->active);
1118assert(blkmem !=
NULL);
1119assert(tree !=
NULL);
1148 SCIPerrorMessage(
"cannot free focus node - has to be converted into a dead end first\n");
1157assert((*node)->data.sibling.arraypos >= 0);
1158assert((*node)->data.sibling.arraypos < tree->
nsiblings);
1159assert(tree->
siblings[(*node)->data.sibling.arraypos] == *node);
1169assert((*node)->data.child.arraypos >= 0);
1170assert((*node)->data.child.arraypos < tree->
nchildren);
1171assert(tree->
children[(*node)->data.child.arraypos] == *node);
1180 if( (*node)->data.leaf.lpstatefork !=
NULL)
1253assert(stat !=
NULL);
1254assert(tree !=
NULL);
1262 if(
set->reopt_enable )
1278 if( node->
depth== 0 )
1284 if(
set->misc_calcintegral )
1309assert(node !=
NULL);
1311assert(stat !=
NULL);
1312assert(tree !=
NULL);
1333assert(node !=
NULL);
1334assert(tree !=
NULL);
1362assert(tree !=
NULL);
1402assert(node !=
NULL);
1410assert(stat !=
NULL);
1411assert(tree !=
NULL);
1413assert(cutoff !=
NULL);
1416initialreprop = node->
reprop;
1425 if( clockisrunning )
1452assert(!node->
reprop|| *cutoff);
1477 if( initialreprop && !(*cutoff) && stat->
nboundchgs> oldnboundchgs )
1504 if( clockisrunning )
1540assert(node !=
NULL);
1542assert(stat !=
NULL);
1543assert(tree !=
NULL);
1545assert(cutoff !=
NULL);
1568node->
reprop=
set->conf_enable &&
set->conf_useprop;
1582 SCIP_CALL(
nodeRepropagate(node, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, conflict,
1583eventfilter, eventqueue, cliquetable, &propcutoff) );
1584*cutoff = *cutoff || propcutoff;
1603assert(node !=
NULL);
1605assert(tree !=
NULL);
1637assert(node !=
NULL);
1638assert(cons !=
NULL);
1640assert(tree !=
NULL);
1647 if( cons->
scip!=
set->scip )
1680assert(node !=
NULL);
1681assert(tree !=
NULL);
1682assert(cons !=
NULL);
1710assert(node !=
NULL);
1718 if( addedconsssize < *naddedconss )
1722 for( cons = 0; cons < *naddedconss; cons++ )
1735assert(node !=
NULL);
1758assert(tree !=
NULL);
1778 if( node->
depth== 0 )
1873assert(node !=
NULL);
1878|| node->
depth== 0);
1880assert(tree !=
NULL);
1883assert(var !=
NULL);
1884assert(node->
active|| (infercons ==
NULL&& inferprop ==
NULL));
1898inferboundtype = boundtype;
1929newbound =
MIN(newbound, oldub);
1946newbound =
MAX(newbound, oldlb);
1963 SCIPsetDebugMsg(
set,
" -> transformed to active variable <%s>: old bounds=[%g,%g], new %s bound: %g, obj: %g\n",
1975 intconflictingdepth;
1979 if( conflictingdepth >= 0 )
1982assert(conflictingdepth > 0);
1983assert(conflictingdepth < tree->pathlen);
1985 SCIPsetDebugMsg(
set,
" -> bound change <%s> %s %g violates current local bounds [%g,%g] since depth %d: remember for later application\n",
2011assert(!probingchange);
2013 SCIPsetDebugMsg(
set,
" -> bound change in root node: perform global bound change\n");
2020 SCIPsetDebugMsg(
set,
"marked root node to be repropagated due to global bound change <%s>:[%g,%g] -> [%g,%g] found in depth %u\n",
2059 if(
set->misc_exactsolve )
20730.0, infervar, infercons, inferprop, inferinfo, inferboundtype) );
2126 SCIP_CALL(
SCIPnodeAddBoundinfer(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
2127cliquetable, var, newbound, boundtype,
NULL,
NULL, 0, probingchange) );
2153assert(node !=
NULL);
2158|| node->
depth== 0);
2159assert(blkmem !=
NULL);
2161assert(tree !=
NULL);
2164assert(var !=
NULL);
2165assert(node->
active|| (infercons ==
NULL&& inferprop ==
NULL));
2176adjustedleft = left;
2177adjustedright = right;
2191 SCIPsetDebugMsg(
set,
"adding hole (%g,%g) at node at depth %u to variable <%s>: bounds=[%g,%g], (infer%s=<%s>, inferinfo=%d)\n",
2218assert(!probingchange);
2220 SCIPsetDebugMsg(
set,
" -> hole added in root node: perform global domain change\n");
2227 SCIPsetDebugMsg(
set,
"marked root node to be repropagated due to global added hole <%s>: (%g,%g) found in depth %u\n",
2237 SCIPerrorMessage(
"WARNING: currently domain holes can only be handled globally!\n");
2263assert(node !=
NULL);
2267assert(blkmem !=
NULL);
2269 SCIPsetDebugMsg(
set,
"adding hole (%g,%g) at node at depth %u of variable <%s>\n",
2273 NULL,
NULL, 0, probingchange, added) );
2301assert(tree !=
NULL);
2304 for( i = 0; i < npendingbdchgs; ++i )
2316 if( conflictdepth == 0 )
2326assert(conflictdepth == -1);
2365assert(var !=
NULL);
2390assert(stat !=
NULL);
2407 if( node->
depth== 0 )
2414assert(lowerbound <= newbound);
2437assert(lp !=
NULL);
2454 if(
set->misc_exactsolve )
2492assert(node !=
NULL);
2521assert(node !=
NULL);
2526assert(cutoff !=
NULL);
2535 for( i = 0; i < nboundchgs && !(*cutoff); ++i )
2565 for( j = 0; j < nimpls; ++j )
2610 SCIP_CALL(
SCIPnodeAddBoundinfer(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
2611eventqueue, cliquetable, implvars[j], implbounds[j], impltypes[j],
NULL,
NULL, 0,
FALSE) );
2617 for( j = 0; j < ncliques; ++j )
2627 for( k = 0; k < nvars; ++k )
2638 if( vars[k] == var && values[k] == varfixing )
2644 if( values[k] ==
FALSE)
2669 SCIP_CALL(
SCIPnodeAddBoundinfer(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
2699assert(tree !=
NULL);
2700assert(startdepth >= 0);
2701assert(startdepth <= tree->pathlen);
2703 if( startdepth == 0 )
2714 for( i = startdepth; i < tree->
pathlen; ++i )
2716node = tree->
path[i];
2717assert(node !=
NULL);
2719assert((
int)(node->
depth) == i);
2733 if( i < tree->pathlen-1 )
2813assert(tree !=
NULL);
2828assert(commonfork !=
NULL);
2829assert(newlpfork !=
NULL);
2830assert(newlpstatefork !=
NULL);
2831assert(newsubroot !=
NULL);
2832assert(cutoff !=
NULL);
2834*commonfork =
NULL;
2836*newlpstatefork =
NULL;
2837*newsubroot =
NULL;
2871lpfork = lpfork->
parent;
2872 if( lpfork ==
NULL)
2880*newlpfork = lpfork;
2882lpstatefork = lpfork;
2885lpstatefork = lpstatefork->
parent;
2886 if( lpstatefork ==
NULL)
2888 if( lpstatefork->
cutoff)
2894*newlpstatefork = lpstatefork;
2896subroot = lpstatefork;
2899subroot = subroot->
parent;
2900 if( subroot ==
NULL)
2908*newsubroot = subroot;
2926lpstatefork =
NULL;
2928assert(fork !=
NULL);
2933assert(fork !=
NULL);
2944 if( lpstatefork ==
NULL 2950assert(lpfork ==
NULL|| !lpfork->
active|| lpfork == fork);
2951assert(lpstatefork ==
NULL|| !lpstatefork->
active|| lpstatefork == fork);
2952assert(subroot ==
NULL|| !subroot->
active|| subroot == fork);
2965assert(fork !=
NULL);
2975 if( lpfork ==
NULL)
2981 while( lpfork !=
NULL 2986assert(lpfork->
active);
2987lpfork = lpfork->
parent;
2998assert(lpfork ==
NULL 3007 if( lpstatefork ==
NULL)
3013lpstatefork = lpfork;
3016 while( lpstatefork !=
NULL 3020assert(lpstatefork->
active);
3021lpstatefork = lpstatefork->
parent;
3029assert(lpstatefork ==
NULL|| lpstatefork->
depth<= fork->
depth);
3030assert(lpstatefork ==
NULL|| lpstatefork->
active);
3032assert(lpstatefork ==
NULL 3035assert(lpstatefork ==
NULL|| (lpfork !=
NULL&& lpstatefork->
depth<= lpfork->
depth));
3036 SCIPdebugMessage(
"find switch forks: lpstateforkdepth=%d\n", lpstatefork ==
NULL? -1 : (
int)(lpstatefork->
depth));
3041 if( subroot ==
NULL)
3047subroot = lpstatefork;
3054assert(subroot->
active);
3055subroot = subroot->
parent;
3061assert(subroot ==
NULL|| subroot->
active);
3064assert(subroot ==
NULL|| (lpstatefork !=
NULL&& subroot->
depth<= lpstatefork->
depth));
3079*newlpfork = lpfork;
3080*newlpstatefork = lpstatefork;
3081*newsubroot = subroot;
3084 while( fork !=
NULL)
3117 intneweffectiverootdepth;
3123assert(tree !=
NULL);
3125assert(fork ==
NULL|| focusnode !=
NULL);
3126assert(focusnode ==
NULL|| (!focusnode->
active&& !focusnode->
cutoff));
3128assert(cutoff !=
NULL);
3137focusnodedepth = (focusnode !=
NULL? (int)focusnode->
depth: -1);
3138forklen = (fork !=
NULL? (int)fork->
depth+ 1 : 0);
3139assert(forklen <= focusnodedepth + 1);
3145 while( tree->
pathlen> forklen )
3150assert(tree->
pathlen== forklen);
3153 SCIP_CALL(
treeApplyPendingBdchgs(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, cliquetable) );
3158 while( focusnode != fork )
3160assert(focusnode !=
NULL);
3161assert(!focusnode->
active);
3162assert(!focusnode->
cutoff);
3164tree->
path[focusnode->
depth] = focusnode;
3165focusnode = focusnode->
parent;
3169 if( oldfocusnode !=
NULL)
3221 "shift effective root from depth %d to %d: applying constraint set and bound changes to global problem\n",
3233 for( i = tree->
effectiverootdepth+ 1; i <= neweffectiverootdepth && !(*cutoff); ++i )
3247 else if( fork !=
NULL&& fork->
reprop&& !(*cutoff) )
3254 SCIP_CALL(
nodeRepropagate(fork, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
3255conflict, eventfilter, eventqueue, cliquetable, cutoff) );
3257assert(fork !=
NULL|| !(*cutoff));
3270 while( tree->
pathlen< focusnodedepth && !(*cutoff) )
3276lp, branchcand, conflict, eventfilter, eventqueue, cliquetable, cutoff) );
3283 if( tree->
pathlen== focusnodedepth && !(*cutoff) )
3289lp, branchcand, conflict, eventfilter, eventqueue, cliquetable, cutoff) );
3324assert(subroot !=
NULL);
3327assert(blkmem !=
NULL);
3329assert(lp !=
NULL);
3336assert(ncols == 0 || cols !=
NULL);
3337assert(nrows == 0 || rows !=
NULL);
3339 for( c = 0; c < ncols; ++c )
3343 for(
r= 0;
r< nrows; ++
r)
3369assert(fork !=
NULL);
3372assert(blkmem !=
NULL);
3374assert(lp !=
NULL);
3381assert(ncols == 0 || cols !=
NULL);
3382assert(nrows == 0 || rows !=
NULL);
3384 for( c = 0; c < ncols; ++c )
3388 for(
r= 0;
r< nrows; ++
r)
3414assert(pseudofork !=
NULL);
3417assert(blkmem !=
NULL);
3419assert(lp !=
NULL);
3426assert(ncols == 0 || cols !=
NULL);
3427assert(nrows == 0 || rows !=
NULL);
3429 for( c = 0; c < ncols; ++c )
3433 for(
r= 0;
r< nrows; ++
r)
3453assert(tree !=
NULL);
3458 for( d = 0; d < tree->
pathlen; ++d )
3460node = tree->
path[d];
3461assert(node !=
NULL);
3462assert((
int)(node->
depth) == d);
3472 if( d < tree->pathlen-1 )
3503 SCIPerrorMessage(
"node at depth %d on active path has to be of type JUNCTION, PSEUDOFORK, FORK, SUBROOT, FOCUSNODE, REFOCUSNODE, or PROBINGNODE, but is %d\n",
3512#define treeCheckPath(tree) 3530assert(tree !=
NULL);
3539assert(blkmem !=
NULL);
3541assert(lp !=
NULL);
3542assert(initroot !=
NULL);
3558 if( lpfork ==
NULL)
3570assert(lpfork->
active);
3571assert(tree->
path[lpfork->
depth] == lpfork);
3572lpforkdepth = (int) lpfork->
depth;
3574assert(lpforkdepth < tree->pathlen-1);
3598assert(lpforkdepth < tree->pathlen);
3605pathnode = tree->
path[d];
3606assert(pathnode !=
NULL);
3607assert((
int)(pathnode->
depth) == d);
3657 intlpstateforkdepth;
3660assert(tree !=
NULL);
3670assert(blkmem !=
NULL);
3672assert(lp !=
NULL);
3681 if( lpstatefork ==
NULL)
3686assert(lpstatefork->
active);
3687assert(tree->
path[lpstatefork->
depth] == lpstatefork);
3688lpstateforkdepth = (int) lpstatefork->
depth;
3689assert(lpstateforkdepth < tree->pathlen-1);
3690assert(lpstateforkdepth <= tree->correctlpdepth);
3713checkbdchgs =
TRUE;
3720checkbdchgs =
FALSE;
3740assert(d < tree->pathlen);
3780assert(stat !=
NULL);
3781assert(lpstatefork ==
NULL|| lpstatefork->
depth< (*node)->depth);
3783assert(lpstatefork ==
NULL 3792pathnode = (*node)->
parent;
3793 while( pathnode !=
NULL&& pathnode != lpstatefork )
3797pathnode = pathnode->
parent;
3799assert(pathnode == lpstatefork);
3812(*node)->data.leaf.lpstatefork = lpstatefork;
3833assert(*node ==
NULL);
3863assert(blkmem !=
NULL);
3865assert(stat !=
NULL);
3866assert(tree !=
NULL);
3870assert(lp !=
NULL);
3873needdel = (tree->
focusnode== tree->
root?
set->price_delvarsroot :
set->price_delvars);
3893assert(var !=
NULL);
3957assert(blkmem !=
NULL);
3958assert(tree !=
NULL);
3968 SCIP_CALL(
focusnodeCleanupVars(blkmem,
set, stat, eventqueue, transprob, origprob, tree, reopt, lp, branchcand, cliquetable,
TRUE) );
3997assert(tree !=
NULL);
4006 SCIP_CALL(
nodeToLeaf(&tree->
focusnode, blkmem,
set, stat, eventfilter, eventqueue, tree, reopt, lp, lpstatefork, cutoffbound));
4021assert(tree !=
NULL);
4066assert(blkmem !=
NULL);
4067assert(tree !=
NULL);
4073assert(lp !=
NULL);
4079 SCIP_CALL(
focusnodeCleanupVars(blkmem,
set, stat, eventqueue, transprob, origprob, tree, reopt, lp, branchcand, cliquetable,
FALSE) );
4120assert(blkmem !=
NULL);
4121assert(tree !=
NULL);
4127assert(lp !=
NULL);
4145 SCIP_CALL(
SCIPlpSolveAndEval(lp,
set, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,
FALSE,
FALSE,
TRUE,
FALSE, &lperror) );
4182 SCIP_CALL(
focusnodeCleanupVars(blkmem,
set, stat, eventqueue, transprob, origprob, tree, reopt, lp, branchcand, cliquetable,
FALSE) );
4232assert(blkmem !=
NULL);
4233assert(tree !=
NULL);
4239assert(lp !=
NULL);
4253#ifdef SCIP_DISABLED_CODE 4266 SCIP_CALL(
SCIPlpSolveAndEval(lp,
set, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,
FALSE,
FALSE,
TRUE,
FALSE, &lperror) );
4269assert(lp->
solved|| lperror);
4303 SCIP_CALL(
focusnodeCleanupVars(blkmem,
set, stat, eventqueue, transprob, origprob, tree, lp, branchcand, cliquetable,
FALSE) );
4309 SCIP_CALL( subrootCreate(&subroot, blkmem,
set, transprob, tree, lp) );
4347assert(tree !=
NULL);
4358 SCIP_CALL(
nodeToLeaf(&nodes[*
nnodes-1], blkmem,
set, stat, eventfilter, eventqueue, tree, reopt, lp, lpstatefork, cutoffbound) );
4378assert(tree !=
NULL);
4395 for( i = 0; i < tree->
nsiblings; ++i )
4437assert(node !=
NULL);
4438assert(*node ==
NULL 4442assert(*node ==
NULL|| !(*node)->active);
4443assert(stat !=
NULL);
4444assert(tree !=
NULL);
4446assert(lp !=
NULL);
4447assert(conflictstore !=
NULL);
4448assert(cutoff !=
NULL);
4467 SCIPsetDebugMsg(
set,
"focus node: focusnodedepth=%ld, forkdepth=%ld, lpforkdepth=%ld, lpstateforkdepth=%ld, subrootdepth=%ld, cutoff=%u\n",
4468*node !=
NULL? (
long)((*node)->depth) : -1, fork !=
NULL? (
long)(fork->
depth) : -1,
4469lpfork !=
NULL? (
long)(lpfork->
depth) : -1, lpstatefork !=
NULL? (
long)(lpstatefork->
depth) : -1,
4470subroot !=
NULL? (
long)(subroot->
depth) : -1, *cutoff);
4475assert(*node !=
NULL);
4481assert(!(*node)->active);
4484 SCIPsetDebugMsg(
set,
"cutting off leaf node #%lld (queuelen=%d) at depth %d with lowerbound=%g\n",
4488 if(
set->reopt_enable )
4497(*node)->cutoff =
TRUE;
4501 if( (*node)->depth == 0 )
4505 if(
set->misc_calcintegral )
4531assert(lpstatefork ==
NULL|| lpfork !=
NULL);
4532assert(subroot ==
NULL|| lpstatefork !=
NULL);
4539assert(subroot ==
NULL|| subroot->
active);
4559 if( exitsolve && tree->
nchildren> 0 )
4562 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
children, &tree->
nchildren,
NULL, -
SCIPsetInfinity(
set)) );
4580 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
children, &tree->
nchildren,
NULL, -
SCIPsetInfinity(
set)) );
4591 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
siblings, &tree->
nsiblings, tree->
focuslpstatefork,
4603assert(!postponed || *node ==
NULL);
4609assert(*node ==
NULL);
4621 SCIP_CALL(
focusnodeToDeadend(blkmem,
set, stat, eventqueue, transprob, origprob, tree, reopt, lp, branchcand,
4636assert(oldcutoffdepth == INT_MAX);
4649 SCIP_CALL( focusnodeToSubroot(blkmem,
set, messagehdlr, stat, eventqueue, eventfilter, transprob, origprob, tree, lp, branchcand) );
4659reopt, lp, branchcand, cliquetable) );
4666childrenlpstatefork = tree->
focusnode;
4671 if( selectedchild )
4688branchcand, cliquetable) );
4696 if( selectedchild )
4722 SCIP_CALL(
focusnodeToDeadend(blkmem,
set, stat, eventqueue, transprob, origprob, tree, reopt, lp, branchcand, cliquetable) );
4725assert(lpstatefork ==
NULL 4728assert(childrenlpstatefork ==
NULL 4731assert(lpfork ==
NULL 4738 if( *node ==
NULL)
4741 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
siblings, &tree->
nsiblings, tree->
focuslpstatefork,
4745 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
children, &tree->
nchildren, childrenlpstatefork,
4761 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
children, &tree->
nchildren, childrenlpstatefork,
4779 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
siblings, &tree->
nsiblings, tree->
focuslpstatefork,
4793 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
siblings, &tree->
nsiblings, tree->
focuslpstatefork,
4802 for( c = 0; c < tree->
nchildren; ++c )
4812 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
children, &tree->
nchildren, childrenlpstatefork,
4835assert(subroot ==
NULL|| (lpstatefork !=
NULL&& subroot->
depth<= lpstatefork->
depth));
4836assert(lpstatefork ==
NULL|| (lpfork !=
NULL&& lpstatefork->
depth<= lpfork->
depth));
4837assert(lpfork ==
NULL|| (*node !=
NULL&& lpfork->
depth< (*node)->depth));
4845 SCIP_CALL(
treeSwitchPath(tree, reopt, blkmem,
set, stat, transprob, origprob, primal, lp, branchcand, conflict,
4846eventfilter, eventqueue, cliquetable, fork, *node, cutoff) );
4850assert(*node ==
NULL|| tree->
pathlen-1 <= (
int)(*node)->depth);
4873assert(tree !=
NULL);
4874assert(blkmem !=
NULL);
4878(*tree)->root =
NULL;
4883 for( p = 0; p <= 1; ++p )
4888(*tree)->ndivebdchanges[p] = 0;
4889(*tree)->divebdchgsize[p] = 1;
4892(*tree)->path =
NULL;
4893(*tree)->focusnode =
NULL;
4894(*tree)->focuslpfork =
NULL;
4895(*tree)->focuslpstatefork =
NULL;
4896(*tree)->focussubroot =
NULL;
4897(*tree)->children =
NULL;
4898(*tree)->siblings =
NULL;
4899(*tree)->probingroot =
NULL;
4900(*tree)->childrenprio =
NULL;
4901(*tree)->siblingsprio =
NULL;
4902(*tree)->pathnlpcols =
NULL;
4903(*tree)->pathnlprows =
NULL;
4904(*tree)->probinglpistate =
NULL;
4905(*tree)->probinglpinorms =
NULL;
4906(*tree)->pendingbdchgs =
NULL;
4907(*tree)->probdiverelaxsol =
NULL;
4908(*tree)->nprobdiverelaxsol = 0;
4909(*tree)->pendingbdchgssize = 0;
4910(*tree)->npendingbdchgs = 0;
4911(*tree)->focuslpstateforklpcount = -1;
4912(*tree)->childrensize = 0;
4913(*tree)->nchildren = 0;
4914(*tree)->siblingssize = 0;
4915(*tree)->nsiblings = 0;
4916(*tree)->pathlen = 0;
4917(*tree)->pathsize = 0;
4918(*tree)->effectiverootdepth = 0;
4919(*tree)->updatedeffectiverootdepth = 0;
4920(*tree)->lastbranchparentid = -1L;
4921(*tree)->correctlpdepth = -1;
4922(*tree)->cutoffdepth = INT_MAX;
4923(*tree)->repropdepth = INT_MAX;
4924(*tree)->repropsubtreecount = 0;
4925(*tree)->focusnodehaslp =
FALSE;
4926(*tree)->probingnodehaslp =
FALSE;
4927(*tree)->focuslpconstructed =
FALSE;
4928(*tree)->cutoffdelayed =
FALSE;
4929(*tree)->probinglpwasflushed =
FALSE;
4930(*tree)->probinglpwassolved =
FALSE;
4931(*tree)->probingloadlpistate =
FALSE;
4932(*tree)->probinglpwasrelax =
FALSE;
4933(*tree)->probingsolvedlp =
FALSE;
4934(*tree)->forcinglpmessage =
FALSE;
4935(*tree)->sbprobing =
FALSE;
4936(*tree)->probinglpwasprimfeas =
TRUE;
4937(*tree)->probinglpwasdualfeas =
TRUE;
4938(*tree)->probdiverelaxstored =
FALSE;
4939(*tree)->probdiverelaxincludeslp =
FALSE;
4957assert(tree !=
NULL);
4958assert(*tree !=
NULL);
4959assert((*tree)->nchildren == 0);
4960assert((*tree)->nsiblings == 0);
4961assert((*tree)->focusnode ==
NULL);
4970 for( p = 0; p <= 1; ++p )
5006assert(tree !=
NULL);
5024assert(var !=
NULL);
5066assert(tree !=
NULL);
5094 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventfilter, eventqueue, lp, tree->
children, &tree->
nchildren,
NULL,
5122assert(tree !=
NULL);
5134 SCIP_CALL(
SCIPnodeFocus(&tree->
root, blkmem,
set, messagehdlr, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
5135conflict, conflictstore, eventfilter, eventqueue, cliquetable, &cutoff,
FALSE,
FALSE) );
5164assert(tree !=
NULL);
5171 SCIP_CALL(
SCIPnodeFocus(&node, blkmem,
set, messagehdlr, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
5172conflict, conflictstore, eventfilter, eventqueue, cliquetable, &cutoff,
FALSE,
FALSE) );
5189assert(tree !=
NULL);
5203assert(tree !=
NULL);
5204assert(stat !=
NULL);
5238assert(tree !=
NULL);
5239assert(stat !=
NULL);
5240assert(lp !=
NULL);
5258 for( i = tree->
nsiblings-1; i >= 0; --i )
5270 for( i = tree->
nchildren-1; i >= 0; --i )
5316 switch( branchdir )
5328 switch(
set->nodesel_childsel )
5343prio = targetvalue - varsol;
5346prio = varrootsol - varsol;
5350 if( !isroot && haslp )
5351prio *= (varrootsol - varsol + 1.0);
5360 SCIPerrorMessage(
"invalid preferred branching direction <%d> of variable <%s>\n",
5377 switch(
set->nodesel_childsel )
5392prio = varsol - targetvalue;
5395prio = varsol - varrootsol;
5399 if( !isroot && haslp )
5400prio *= (varsol - varrootsol + 1.0);
5414 SCIPerrorMessage(
"invalid preferred branching direction <%d> of variable <%s>\n",
5449assert(tree !=
NULL);
5450assert(var !=
NULL);
5473 if( estimateinc > 0.0 )
5474estimate += estimateinc;
5526assert(tree !=
NULL);
5528assert(var !=
NULL);
5531 if( downchild !=
NULL)
5533 if( eqchild !=
NULL)
5535 if( upchild !=
NULL)
5553 if( scalar == 0.0 )
5560val = (val - constant) / scalar;
5629 SCIPsetDebugMsg(
set,
"fixing continuous variable <%s> with value %g and bounds [%.15g, %.15g], priority %d (current lower bound: %g)\n",
5661 SCIPsetDebugMsg(
set,
"continuous branch on variable <%s> with bounds [%.15g, %.15g], priority %d (current lower bound: %g), node %p\n",
5687 SCIPsetDebugMsg(
set,
"continuous branch on variable <%s> with value %g, priority %d (current lower bound: %g)\n",
5712center = (ub + lb) / 2.0;
5713 if( val <= center )
5716uplb = downub + 1.0;
5721downub = uplb - 1.0;
5733downub = fixval - 1.0;
5737uplb = fixval + 1.0;
5739 SCIPsetDebugMsg(
set,
"integral branch on variable <%s> with value %g, priority %d (current lower bound: %g)\n",
5746uplb = downub + 1.0;
5748 SCIPsetDebugMsg(
set,
"fractional branch on variable <%s> with value %g, root value %g, priority %d (current lower bound: %g)\n",
5766 SCIPsetDebugMsg(
set,
" -> creating child: <%s> <= %g (priority: %g, estimate: %g)\n",
5769 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
5774 if( downchild !=
NULL)
5783 SCIPsetDebugMsg(
set,
" -> creating child: <%s> == %g (priority: %g, estimate: %g)\n",
5788 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
5793 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
5799 if( eqchild !=
NULL)
5811 SCIPsetDebugMsg(
set,
" -> creating child: <%s> >= %g (priority: %g, estimate: %g)\n",
5814 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
5819 if( upchild !=
NULL)
5850assert(tree !=
NULL);
5852assert(var !=
NULL);
5860 if( downchild !=
NULL)
5862 if( upchild !=
NULL)
5917 SCIPsetDebugMsg(
set,
" -> creating child: <%s> <= %g (priority: %g, estimate: %g)\n",
5921 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
NULL,
5926 if( downchild !=
NULL)
5937 SCIPsetDebugMsg(
set,
" -> creating child: <%s> >= %g (priority: %g, estimate: %g)\n",
5941 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
5946 if( upchild !=
NULL)
6000assert(tree !=
NULL);
6002assert(var !=
NULL);
6004assert(minwidth >= 0.0);
6015 SCIP_CALL(
SCIPtreeBranchVar(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, var, val,
6016&downchild, &fixchild, &upchild) );
6018 if( nchildren !=
NULL)
6019*nchildren = (downchild !=
NULL? 1 : 0) + (fixchild !=
NULL? 1 : 0) + (upchild !=
NULL? 1 : 0);
6039 if( scalar == 0.0 )
6046val = (val - constant) / scalar;
6120 else if( widthfactor == 1.0 )
6138assert(widthfactor > 1.0);
6140width *= (widthfactor - 1.0) / (pow(widthfactor, (
SCIP_Real)(n/2)) - 1.0);
6142width /= 0.5 + widthfactor * (pow(widthfactor, (
SCIP_Real)(n/2)) - 1.0) / (widthfactor - 1.0);
6145minwidth =
MAX(1.0, minwidth);
6146 if( width < minwidth )
6150 SCIPsetDebugMsg(
set,
"%d-ary branching on variable <%s> [%g, %g] around %g, initial width = %g\n",
6153 if( nchildren !=
NULL)
6160left = val - width/2.0;
6161right = val + width/2.0;
6166 if( left <= right )
6178 SCIPsetDebugMsg(
set,
" -> creating middle child: %g <= <%s> <= %g (priority: %g, estimate: %g, width: %g)\n",
6179left,
SCIPvarGetName(var), right, priority, estimate, right - left);
6182 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
6184 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6189 if( nchildren !=
NULL)
6201width *= widthfactor;
6209 if( right - left < 0.5 )
6226 for( i = 0; i < n; ++i )
6257 SCIPsetDebugMsg(
set,
" -> creating left child: %g <= <%s> <= %g (priority: %g, estimate: %g, width: %g)\n",
6258bnd,
SCIPvarGetName(var), left, priority, estimate, left - bnd);
6263 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6266 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6271 if( nchildren !=
NULL)
6291bnd = right + width;
6308 SCIPsetDebugMsg(
set,
" -> creating right child: %g <= <%s> <= %g (priority: %g, estimate: %g, width: %g)\n",
6309right,
SCIPvarGetName(var), bnd, priority, estimate, bnd - right);
6312 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6316 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6322 if( nchildren !=
NULL)
6330width *= widthfactor;
6339#define ARRAYGROWTH 5 6349 intidx = preferred ? 0 : 1;
6352assert(pos < tree->divebdchgsize[idx]);
6381 intidx = preferred ? 0 : 1;
6383assert(variables !=
NULL);
6384assert(directions !=
NULL);
6385assert(values !=
NULL);
6386assert(ndivebdchgs !=
NULL);
6401 for( p = 0; p < 2; ++p )
6421assert(tree !=
NULL);
6424assert(blkmem !=
NULL);
6429assert(currentnode !=
NULL);
6437assert(node !=
NULL);
6475 SCIPsetDebugMsg(
set,
"updated probingnode information of parent (%d cols, %d rows)\n",
6511assert(tree !=
NULL);
6515assert(lp !=
NULL);
6517 SCIPsetDebugMsg(
set,
"probing started in depth %d (LP flushed: %u, LP solved: %u, solstat: %d), probing root in depth %d\n",
6603assert(tree !=
NULL);
6605assert(lpistate !=
NULL);
6606assert(lpinorms !=
NULL);
6654assert(tree !=
NULL);
6670assert(node !=
NULL);
6691assert(node !=
NULL);
6696 if( lpistate ==
NULL)
6707 if( lpistate !=
NULL)
6710lpwasprimfeas, lpwasprimchecked, lpwasdualfeas, lpwasdualchecked) );
6714 if( lpinorms !=
NULL)
6735assert(tree !=
NULL);
6743assert(node !=
NULL);
6777assert(tree !=
NULL);
6793assert(newpathlen >= 1);
6796 if( newpathlen < tree->pathlen )
6808 while( tree->
pathlen> newpathlen )
6853assert(tree->
pathlen== newpathlen);
6881 SCIP_CALL(
treeApplyPendingBdchgs(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, cliquetable) );
6919assert(tree !=
NULL);
6924 SCIP_CALL(
treeBacktrackProbing(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, primal, branchcand,
6925eventqueue, eventfilter, cliquetable, probingdepth) );
6954assert(tree !=
NULL);
6968 SCIP_CALL(
treeBacktrackProbing(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, primal, branchcand,
6969eventqueue, eventfilter, cliquetable, -1) );
7015 SCIP_CALL(
SCIPlpSolveAndEval(lp,
set, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,
FALSE,
FALSE,
FALSE,
FALSE, &lperror) );
7030 "LP was not resolved to a sufficient status after probing\n");
7065 SCIPsetDebugMsg(
set,
"clearing lp state at end of probing mode because LP was initially unsolved\n");
7108assert(tree !=
NULL);
7110assert(relaxation !=
NULL);
7111assert(transprob !=
NULL);
7131 for( v = 0; v < nvars; ++v )
7152assert(tree !=
NULL);
7159assert( nvars <= tree->nprobdiverelaxsol );
7162 for( v = 0; v < nvars; ++v )
7182assert(tree !=
NULL);
7186 for( i = 0; i < tree->
nchildren; ++i )
7208assert(tree !=
NULL);
7212 for( i = 0; i < tree->
nsiblings; ++i )
7235assert(tree !=
NULL);
7238assert(nodesel !=
NULL);
7241 for( i = 0; i < tree->
nchildren; ++i )
7262assert(tree !=
NULL);
7265assert(nodesel !=
NULL);
7268 for( i = 0; i < tree->
nsiblings; ++i )
7284assert(tree !=
NULL);
7301assert(tree !=
NULL);
7304assert(nodesel !=
NULL);
7312bestnode = bestchild;
7314bestnode = bestsibling;
7316bestnode = bestleaf;
7332assert(tree !=
NULL);
7339 for( i = 0; i < tree->
nchildren; ++i )
7346 for( i = 0; i < tree->
nsiblings; ++i )
7372assert(tree !=
NULL);
7381 for( i = 0; i < tree->
nchildren; ++i )
7388lowerboundnode = tree->
children[i];
7396 for( i = 0; i < tree->
nsiblings; ++i )
7403lowerboundnode = tree->
siblings[i];
7410 returnlowerboundnode;
7423assert(tree !=
NULL);
7437 for( i = 0; i < tree->
nsiblings; ++i )
7445 for( i = 0; i < tree->
nchildren; ++i )
7468#undef SCIPnodeGetType 7469#undef SCIPnodeGetNumber 7470#undef SCIPnodeGetDepth 7471#undef SCIPnodeGetLowerbound 7472#undef SCIPnodeGetEstimate 7473#undef SCIPnodeGetDomchg 7474#undef SCIPnodeGetParent 7475#undef SCIPnodeGetConssetchg 7476#undef SCIPnodeIsActive 7477#undef SCIPnodeIsPropagatedAgain 7478#undef SCIPtreeGetNLeaves 7479#undef SCIPtreeGetNChildren 7480#undef SCIPtreeGetNSiblings 7481#undef SCIPtreeGetNNodes 7482#undef SCIPtreeIsPathComplete 7483#undef SCIPtreeProbing 7484#undef SCIPtreeGetProbingRoot 7485#undef SCIPtreeGetProbingDepth 7486#undef SCIPtreeGetFocusNode 7487#undef SCIPtreeGetFocusDepth 7488#undef SCIPtreeHasFocusNodeLP 7489#undef SCIPtreeSetFocusNodeLP 7490#undef SCIPtreeIsFocusNodeLPConstructed 7491#undef SCIPtreeInRepropagation 7492#undef SCIPtreeGetCurrentNode 7493#undef SCIPtreeGetCurrentDepth 7494#undef SCIPtreeHasCurrentNodeLP 7495#undef SCIPtreeGetEffectiveRootDepth 7496#undef SCIPtreeGetRootNode 7497#undef SCIPtreeProbingObjChanged 7498#undef SCIPtreeMarkProbingObjChanged 7505assert(node !=
NULL);
7515assert(node !=
NULL);
7525assert(node !=
NULL);
7527 return(
int) node->
depth;
7535assert(node !=
NULL);
7545assert(node !=
NULL);
7555assert(node !=
NULL);
7566assert(node !=
NULL);
7576node->
reopttype= (
unsignedint) reopttype;
7586assert(node !=
NULL);
7597assert(node !=
NULL);
7598assert(
id<= 536870911);
7610assert(node !=
NULL);
7628assert(node !=
NULL);
7630count_branchings = (nbranchings !=
NULL);
7631count_consprop = (nconsprop !=
NULL);
7632count_prop = (nprop !=
NULL);
7635 if( count_branchings )
7637 if( count_consprop )
7649 if( count_branchings )
7652 if( !count_consprop && !count_prop )
7660 if( count_consprop )
7690 intnpseudobranchvars;
7692assert(node !=
NULL);
7700npseudobranchvars = 0;
7702assert(boundchgs !=
NULL);
7703assert(nboundchgs >= 0);
7708 for( i = nboundchgs-1; i >= 0; i--)
7719npseudobranchvars++;
7724 returnnpseudobranchvars;
7743assert(node !=
NULL);
7744assert(vars !=
NULL);
7745assert(bounds !=
NULL);
7746assert(boundtypes !=
NULL);
7747assert(nvars !=
NULL);
7748assert(varssize >= 0);
7758assert(boundchgs !=
NULL);
7759assert(nboundchgs >= 0);
7764 for( i = nboundchgs-1; i >= 0; i--)
7780 if( varssize >= *nvars )
7784 for( i = i+1; i < nboundchgs; i++)
7795vars[j] = boundchgs[i].
var;
7796bounds[j] = boundchgs[i].
newbound;
7810assert(node !=
NULL);
7831assert(node !=
NULL);
7832assert(branchvars !=
NULL);
7833assert(branchbounds !=
NULL);
7834assert(boundtypes !=
NULL);
7835assert(nbranchvars !=
NULL);
7836assert(branchvarssize >= 0);
7846assert(boundchgs !=
NULL);
7847assert(nboundchgs >= 0);
7852 for( i = 0; i < nboundchgs; i++)
7862 for( ; i < nboundchgs; i++)
7867 if( branchvarssize >= *nbranchvars )
7869 for( i = 0; i < *nbranchvars; i++)
7872branchvars[i] = boundchgs[i].
var;
7874branchbounds[i] = boundchgs[i].
newbound;
7891assert(node !=
NULL);
7892assert(branchvars !=
NULL);
7893assert(branchbounds !=
NULL);
7894assert(boundtypes !=
NULL);
7895assert(nbranchvars !=
NULL);
7896assert(branchvarssize >= 0);
7902 intnodenbranchvars;
7906start = *nbranchvars < branchvarssize - 1 ? *nbranchvars : branchvarssize - 1;
7907size = *nbranchvars > branchvarssize ? 0 : branchvarssize-(*nbranchvars);
7910*nbranchvars += nodenbranchvars;
7929assert(node !=
NULL);
7930assert(parent !=
NULL);
7931assert(branchvars !=
NULL);
7932assert(branchbounds !=
NULL);
7933assert(boundtypes !=
NULL);
7934assert(nbranchvars !=
NULL);
7935assert(branchvarssize >= 0);
7939 while( node != parent )
7941 intnodenbranchvars;
7945start = *nbranchvars < branchvarssize - 1 ? *nbranchvars : branchvarssize - 1;
7946size = *nbranchvars > branchvarssize ? 0 : branchvarssize-(*nbranchvars);
7949*nbranchvars += nodenbranchvars;
7976assert(node !=
NULL);
7977assert(vars !=
NULL);
7978assert(varbounds !=
NULL);
7979assert(varboundtypes !=
NULL);
7980assert(npropvars !=
NULL);
7981assert(propvarssize >= 0);
7991assert(boundchgs !=
NULL);
7992assert(nboundchgs >= 0);
7998 for( i = nbranchings; i < nboundchgs; ++i )
8019 if( propvarssize < *npropvars )
8022 for( i = nbranchings, pos = 0; pos < *npropvars; ++i )
8024assert(i < nboundchgs);
8027vars[pos] = boundchgs[i].
var;
8029varbounds[pos] = boundchgs[i].
newbound;
8058assert(node !=
NULL);
8059assert(vars !=
NULL);
8060assert(varbounds !=
NULL);
8061assert(varboundtypes !=
NULL);
8062assert(nvars !=
NULL);
8063assert(varssize >= 0);
8073assert(boundchgs !=
NULL);
8074assert(nboundchgs >= 0);
8077 for( i = 0; i < nboundchgs; ++i )
8095 for( ; i < nboundchgs; ++i )
8113 if( varssize < *nvars )
8117 for( i = first_dual, pos = 0; pos < *nvars; ++i )
8119assert(i < nboundchgs);
8133vars[pos] = boundchgs[i].
var;
8135varbounds[pos] = boundchgs[i].
newbound;
8164 for( i = 0; i < nboundchgs; i++)
8174 if( nbranchings > 0 )
8210assert(node !=
NULL);
8211assert(branchvars !=
NULL);
8212assert(branchbounds !=
NULL);
8213assert(boundtypes !=
NULL);
8214assert(nbranchvars !=
NULL);
8215assert(branchvarssize >= 0);
8223 intnodenbranchvars;
8228start = *nbranchvars < branchvarssize - 1 ? *nbranchvars : branchvarssize - 1;
8229size = *nbranchvars > branchvarssize ? 0 : branchvarssize-(*nbranchvars);
8230 if( *
nnodes< nodeswitchsize )
8231nodeswitches[*
nnodes] = start;
8235*nbranchvars += nodenbranchvars;
8248assert(node1 !=
NULL);
8249assert(node2 !=
NULL);
8263 return(node1 == node2);
8272assert(node1 !=
NULL);
8273assert(node2 !=
NULL);
8286 while( node1 != node2 )
8302assert(node !=
NULL);
8312assert(node !=
NULL);
8322assert(node !=
NULL);
8332assert(tree !=
NULL);
8342assert(tree !=
NULL);
8352assert(tree !=
NULL);
8362assert(tree !=
NULL);
8372assert(tree !=
NULL);
8389assert(tree !=
NULL);
8402assert(tree !=
NULL);
8415assert(tree !=
NULL);
8432assert(tree !=
NULL);
8449assert(tree !=
NULL);
8460assert(tree !=
NULL);
8470assert(tree !=
NULL);
8480assert(tree !=
NULL);
8490assert(tree !=
NULL);
8507assert(tree !=
NULL);
8524assert(tree !=
NULL);
8535assert(tree !=
NULL);
8546assert(tree !=
NULL);
8557assert(tree !=
NULL);
8559 returntree->
root;
8568assert(tree !=
NULL);
8579assert(tree !=
NULL);
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Bool SCIPclockIsRunning(SCIP_CLOCK *clck)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
internal methods for clocks and timing issues
internal methods for storing conflicts
SCIP_RETCODE SCIPconshdlrsStorePropagationStatus(SCIP_SET *set, SCIP_CONSHDLR **conshdlrs, int nconshdlrs)
SCIP_RETCODE SCIPconssetchgUndo(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPconsDisable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPconssetchgAddAddedCons(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons, int depth, SCIP_Bool focusnode, SCIP_Bool active)
SCIP_RETCODE SCIPconssetchgFree(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RETCODE SCIPconssetchgAddDisabledCons(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS *cons)
SCIP_RETCODE SCIPconshdlrsResetPropagationStatus(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONSHDLR **conshdlrs, int nconshdlrs)
SCIP_RETCODE SCIPconssetchgApply(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)
SCIP_RETCODE SCIPconssetchgMakeGlobal(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_REOPT *reopt)
internal methods for constraints and constraint handlers
#define SCIPdebugCheckLbGlobal(scip, var, lb)
#define SCIPdebugCheckUbGlobal(scip, var, ub)
#define SCIPdebugCheckGlobalLowerbound(blkmem, set)
#define SCIPdebugCheckLocalLowerbound(blkmem, set, node)
#define SCIPdebugRemoveNode(blkmem, set, node)
#define SCIPdebugCheckInference(blkmem, set, node, var, newbound, boundtype)
common defines and data types used in all packages of SCIP
#define SCIP_MAXTREEDEPTH
#define SCIP_LONGINT_FORMAT
SCIP_RETCODE SCIPeventChgNode(SCIP_EVENT *event, SCIP_NODE *node)
SCIP_Bool SCIPeventqueueIsDelayed(SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPeventqueueProcess(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventProcess(SCIP_EVENT *event, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventChgType(SCIP_EVENT *event, SCIP_EVENTTYPE eventtype)
SCIP_RETCODE SCIPeventqueueDelay(SCIP_EVENTQUEUE *eventqueue)
internal methods for managing events
void SCIPgmlWriteNode(FILE *file, unsigned int id, const char *label, const char *nodetype, const char *fillcolor, const char *bordercolor)
void SCIPgmlWriteClosing(FILE *file)
void SCIPgmlWriteOpening(FILE *file, SCIP_Bool directed)
void SCIPgmlWriteArc(FILE *file, unsigned int source, unsigned int target, const char *label, const char *color)
SCIP_RETCODE SCIPlpiClearState(SCIP_LPI *lpi)
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPconsIsGlobal(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
void SCIPnodeGetAncestorBranchings(SCIP_NODE *node, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize)
void SCIPnodeSetReopttype(SCIP_NODE *node, SCIP_REOPTTYPE reopttype)
void SCIPnodeSetReoptID(SCIP_NODE *node, unsigned int id)
void SCIPnodeGetAncestorBranchingsPart(SCIP_NODE *node, SCIP_NODE *parent, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize)
void SCIPnodeGetParentBranchings(SCIP_NODE *node, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize)
SCIP_NODETYPE SCIPnodeGetType(SCIP_NODE *node)
SCIP_Real SCIPnodeGetLowerbound(SCIP_NODE *node)
void SCIPnodeGetAncestorBranchingPath(SCIP_NODE *node, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize, int *nodeswitches, int *nnodes, int nodeswitchsize)
void SCIPnodeGetNDomchg(SCIP_NODE *node, int *nbranchings, int *nconsprop, int *nprop)
SCIP_NODE * SCIPnodesGetCommonAncestor(SCIP_NODE *node1, SCIP_NODE *node2)
SCIP_Bool SCIPnodeIsActive(SCIP_NODE *node)
SCIP_DOMCHG * SCIPnodeGetDomchg(SCIP_NODE *node)
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
SCIP_NODE * SCIPnodeGetParent(SCIP_NODE *node)
SCIP_Bool SCIPnodesSharePath(SCIP_NODE *node1, SCIP_NODE *node2)
int SCIPnodeGetNAddedConss(SCIP_NODE *node)
SCIP_Real SCIPnodeGetEstimate(SCIP_NODE *node)
void SCIPnodeGetAddedConss(SCIP_NODE *node, SCIP_CONS **addedconss, int *naddedconss, int addedconsssize)
int SCIPnodeGetDepth(SCIP_NODE *node)
SCIP_REOPTTYPE SCIPnodeGetReopttype(SCIP_NODE *node)
unsigned int SCIPnodeGetReoptID(SCIP_NODE *node)
SCIP_Bool SCIPnodeIsPropagatedAgain(SCIP_NODE *node)
SCIP_RETCODE SCIPnodePrintAncestorBranchings(SCIP_NODE *node, FILE *file)
SCIP_DECL_SORTPTRCOMP(SCIPnodeCompLowerbound)
SCIP_CONSSETCHG * SCIPnodeGetConssetchg(SCIP_NODE *node)
const char * SCIPnodeselGetName(SCIP_NODESEL *nodesel)
const char * SCIPpropGetName(SCIP_PROP *prop)
SCIP_RETCODE SCIPvarGetProbvarBound(SCIP_VAR **var, SCIP_Real *bound, SCIP_BOUNDTYPE *boundtype)
SCIP_Real SCIPvarGetSol(SCIP_VAR *var, SCIP_Bool getlpval)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_BOUNDTYPE SCIPboundchgGetBoundtype(SCIP_BOUNDCHG *boundchg)
SCIP_VAR * SCIPboundchgGetVar(SCIP_BOUNDCHG *boundchg)
SCIP_BOUNDCHG * SCIPdomchgGetBoundchg(SCIP_DOMCHG *domchg, int pos)
int SCIPvarGetNImpls(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetProbvar(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_VAR ** SCIPvarGetImplVars(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetWorstBoundLocal(SCIP_VAR *var)
int SCIPdomchgGetNBoundchgs(SCIP_DOMCHG *domchg)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPvarGetRootSol(SCIP_VAR *var)
SCIP_Bool SCIPvarIsDeletable(SCIP_VAR *var)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_BRANCHDIR SCIPvarGetBranchDirection(SCIP_VAR *var)
SCIP_Real * SCIPvarGetImplBounds(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetLPSol(SCIP_VAR *var)
int SCIPvarGetNCliques(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPboundchgIsRedundant(SCIP_BOUNDCHG *boundchg)
SCIP_RETCODE SCIPvarGetProbvarHole(SCIP_VAR **var, SCIP_Real *left, SCIP_Real *right)
int SCIPvarGetBranchPriority(SCIP_VAR *var)
SCIP_CLIQUE ** SCIPvarGetCliques(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
void SCIPvarMarkNotDeletable(SCIP_VAR *var)
SCIP_BOUNDTYPE * SCIPvarGetImplTypes(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Bool SCIPvarIsInLP(SCIP_VAR *var)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_VAR ** SCIPcliqueGetVars(SCIP_CLIQUE *clique)
int SCIPcliqueGetNVars(SCIP_CLIQUE *clique)
SCIP_Bool * SCIPcliqueGetValues(SCIP_CLIQUE *clique)
methods for implications, variable bounds, and cliques
SCIP_RETCODE SCIPlpCleanupNew(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
SCIP_Real SCIPlpGetModifiedProvedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
void SCIProwCapture(SCIP_ROW *row)
SCIP_RETCODE SCIPlpFreeState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_RETCODE SCIPlpGetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
void SCIPlpMarkSize(SCIP_LP *lp)
SCIP_RETCODE SCIPlpGetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
int SCIPlpGetNNewcols(SCIP_LP *lp)
SCIP_RETCODE SCIPlpAddCol(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, int depth)
SCIP_RETCODE SCIPlpSetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, SCIP_LPISTATE *lpistate, SCIP_Bool wasprimfeas, SCIP_Bool wasprimchecked, SCIP_Bool wasdualfeas, SCIP_Bool wasdualchecked)
SCIP_Bool SCIPlpDivingObjChanged(SCIP_LP *lp)
SCIP_RETCODE SCIPlpFlush(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue)
SCIP_Real SCIPlpGetModifiedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
SCIP_RETCODE SCIPlpShrinkCols(SCIP_LP *lp, SCIP_SET *set, int newncols)
SCIP_ROW ** SCIPlpGetNewrows(SCIP_LP *lp)
void SCIPlpRecomputeLocalAndGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_RETCODE SCIPlpClear(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
void SCIPlpSetIsRelax(SCIP_LP *lp, SCIP_Bool relax)
SCIP_Bool SCIPlpIsRelax(SCIP_LP *lp)
SCIP_RETCODE SCIPlpSolveAndEval(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool limitresolveiters, SCIP_Bool aging, SCIP_Bool keepsol, SCIP_Bool forcedlpsolve, SCIP_Bool *lperror)
SCIP_Real SCIPlpGetObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_RETCODE SCIPlpCleanupAll(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
SCIP_RETCODE SCIPlpGetProvedLowerbound(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *bound)
SCIP_COL ** SCIPlpGetNewcols(SCIP_LP *lp)
SCIP_RETCODE SCIPlpFreeNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
SCIP_Bool SCIPlpDiving(SCIP_LP *lp)
void SCIPlpUnmarkDivingObjChanged(SCIP_LP *lp)
SCIP_RETCODE SCIPlpSetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS *lpinorms)
SCIP_RETCODE SCIPlpSetCutoffbound(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real cutoffbound)
SCIP_RETCODE SCIPlpShrinkRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int newnrows)
SCIP_RETCODE SCIPlpStartProbing(SCIP_LP *lp)
SCIP_RETCODE SCIPlpRemoveAllObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPlpEndProbing(SCIP_LP *lp)
SCIP_RETCODE SCIPlpAddRow(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_ROW *row, int depth)
SCIP_COL ** SCIPlpGetCols(SCIP_LP *lp)
int SCIPlpGetNCols(SCIP_LP *lp)
SCIP_ROW ** SCIPlpGetRows(SCIP_LP *lp)
int SCIPlpGetNNewrows(SCIP_LP *lp)
int SCIPlpGetNRows(SCIP_LP *lp)
void SCIPlpSetSizeMark(SCIP_LP *lp, int nrows, int ncols)
SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
internal methods for LP management
interface methods for specific LP solvers
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
#define BMSfreeMemory(ptr)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
#define BMSallocMemoryArray(ptr, num)
#define BMSfreeMemoryArray(ptr)
#define BMSallocBlockMemoryArray(mem, ptr, num)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
void SCIPmessagePrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr,...)
SCIP_Real SCIPnodepqGetLowerbound(SCIP_NODEPQ *nodepq, SCIP_SET *set)
int SCIPnodepqLen(const SCIP_NODEPQ *nodepq)
SCIP_RETCODE SCIPnodepqRemove(SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node)
int SCIPnodeselCompare(SCIP_NODESEL *nodesel, SCIP_SET *set, SCIP_NODE *node1, SCIP_NODE *node2)
SCIP_RETCODE SCIPnodepqFree(SCIP_NODEPQ **nodepq, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp)
SCIP_RETCODE SCIPnodepqBound(SCIP_NODEPQ *nodepq, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real cutoffbound)
SCIP_RETCODE SCIPnodepqSetNodesel(SCIP_NODEPQ **nodepq, SCIP_SET *set, SCIP_NODESEL *nodesel)
SCIP_RETCODE SCIPnodepqClear(SCIP_NODEPQ *nodepq, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp)
SCIP_NODESEL * SCIPnodepqGetNodesel(SCIP_NODEPQ *nodepq)
SCIP_RETCODE SCIPnodepqInsert(SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node)
SCIP_NODE * SCIPnodepqFirst(const SCIP_NODEPQ *nodepq)
int SCIPnodepqCompare(SCIP_NODEPQ *nodepq, SCIP_SET *set, SCIP_NODE *node1, SCIP_NODE *node2)
SCIP_RETCODE SCIPnodepqCreate(SCIP_NODEPQ **nodepq, SCIP_SET *set, SCIP_NODESEL *nodesel)
SCIP_Real SCIPnodepqGetLowerboundSum(SCIP_NODEPQ *nodepq)
SCIP_NODE * SCIPnodepqGetLowerboundNode(SCIP_NODEPQ *nodepq, SCIP_SET *set)
internal methods for node selectors and node priority queues
internal methods for collecting primal CIP solutions and primal informations
SCIP_RETCODE SCIPprobPerformVarDeletions(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand)
SCIP_RETCODE SCIPprobDelVar(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var, SCIP_Bool *deleted)
int SCIPprobGetNVars(SCIP_PROB *prob)
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
SCIP_Bool SCIPprobAllColsInLP(SCIP_PROB *prob, SCIP_SET *set, SCIP_LP *lp)
internal methods for storing and manipulating the main problem
internal methods for propagators
public methods for message output
void SCIPrelaxationSetSolValid(SCIP_RELAXATION *relaxation, SCIP_Bool isvalid, SCIP_Bool includeslp)
SCIP_Bool SCIPrelaxationIsLpIncludedForSol(SCIP_RELAXATION *relaxation)
SCIP_Bool SCIPrelaxationIsSolValid(SCIP_RELAXATION *relaxation)
internal methods for relaxators
SCIP_RETCODE SCIPreoptCheckCutoff(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_EVENTTYPE eventtype, SCIP_LP *lp, SCIP_LPSOLSTAT lpsolstat, SCIP_Bool isrootnode, SCIP_Bool isfocusnode, SCIP_Real lowerbound, int effectiverootdepth)
data structures and methods for collecting reoptimization information
SCIP_Real SCIPsetFloor(SCIP_SET *set, SCIP_Real val)
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_Real SCIPsetFeasCeil(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsFeasNegative(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPsetCeil(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsRelEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasEQ(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_Real SCIPsetFeasFloor(SCIP_SET *set, SCIP_Real val)
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_Bool SCIPsetIsFeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetInfinity(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 SCIPsetIsRelGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
int SCIPsetCalcPathGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsRelGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val)
internal methods for global SCIP settings
SCIP_RETCODE SCIPpropagateDomains(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_CONFLICT *conflict, SCIP_CLIQUETABLE *cliquetable, int depth, int maxproprounds, SCIP_PROPTIMING timingmask, SCIP_Bool *cutoff)
internal methods for main solving loop and node processing
void SCIPstatUpdatePrimalDualIntegrals(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real upperbound, SCIP_Real lowerbound)
internal methods for problem statistics
#define SCIPstatIncrement(stat, set, field)
union SCIP_BoundChg::@21 data
SCIP_INFERENCEDATA inferencedata
unsigned int boundchgtype
SCIP_CONS ** disabledconss
unsigned int updatedisable
SCIP_BOUNDCHG * boundchgs
SCIP_BOUNDCHG * boundchgs
unsigned int lpwasprimfeas
unsigned int lpwasprimchecked
unsigned int lpwasdualfeas
unsigned int lpwasdualchecked
unsigned int repropsubtreemark
SCIP_PROBINGNODE * probingnode
SCIP_PSEUDOFORK * pseudofork
union SCIP_Node::@19 data
SCIP_CONSSETCHG * conssetchg
SCIP_Bool lpwasdualchecked
SCIP_Bool lpwasprimchecked
SCIP_Longint nearlybacktracks
SCIP_Longint nactiveconssadded
SCIP_Longint nrepropcutoffs
SCIP_Longint ncreatednodesrun
SCIP_CLOCK * nodeactivationtime
SCIP_Longint nprobholechgs
SCIP_Longint ndeactivatednodes
SCIP_Longint nrepropboundchgs
SCIP_Longint nactivatednodes
SCIP_Longint ncreatednodes
unsigned int lpwasdualchecked
unsigned int lpwasdualfeas
unsigned int lpwasprimchecked
unsigned int lpwasprimfeas
SCIP_Bool focuslpconstructed
SCIP_LPISTATE * probinglpistate
SCIP_PENDINGBDCHG * pendingbdchgs
SCIP_Bool probinglpwasdualchecked
SCIP_NODE * focuslpstatefork
SCIP_Bool probinglpwasprimfeas
SCIP_BRANCHDIR * divebdchgdirs[2]
SCIP_Bool probinglpwassolved
SCIP_Bool probinglpwasrelax
SCIP_Bool probingnodehaslp
SCIP_Bool probingobjchanged
SCIP_Real * divebdchgvals[2]
int updatedeffectiverootdepth
SCIP_Bool probdiverelaxincludeslp
SCIP_VAR ** divebdchgvars[2]
SCIP_Bool probingsolvedlp
SCIP_Bool probinglpwasprimchecked
SCIP_LPINORMS * probinglpinorms
SCIP_Bool probinglpwasflushed
SCIP_Longint lastbranchparentid
SCIP_Bool probdiverelaxstored
SCIP_Real * probdiverelaxsol
SCIP_Bool probingloadlpistate
SCIP_Longint focuslpstateforklpcount
SCIP_Bool probinglpwasdualfeas
datastructures for managing events
datastructures for block memory pools and memory buffers
SCIP main data structure.
void SCIPnodeUpdateLowerbound(SCIP_NODE *node, SCIP_STAT *stat, SCIP_SET *set, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real newbound)
SCIP_Bool SCIPtreeIsFocusNodeLPConstructed(SCIP_TREE *tree)
SCIP_NODE * SCIPtreeGetProbingRoot(SCIP_TREE *tree)
SCIP_RETCODE SCIPnodeReleaseLPIState(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_LP *lp)
SCIP_RETCODE SCIPnodeAddHoleinfer(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var, SCIP_Real left, SCIP_Real right, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool probingchange, SCIP_Bool *added)
static SCIP_RETCODE forkCreate(SCIP_FORK **fork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)
static void treeCheckPath(SCIP_TREE *tree)
static void subrootCaptureLPIState(SCIP_SUBROOT *subroot, int nuses)
void SCIPnodeGetDualBoundchgs(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_BOUNDTYPE *boundtypes, int *nvars, int varssize)
SCIP_NODE * SCIPtreeGetBestSibling(SCIP_TREE *tree, SCIP_SET *set)
SCIP_RETCODE SCIPnodeCutoff(SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_REOPT *reopt, SCIP_LP *lp, BMS_BLKMEM *blkmem)
static SCIP_RETCODE treeApplyPendingBdchgs(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_CLIQUETABLE *cliquetable)
static SCIP_RETCODE focusnodeToFork(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable)
static SCIP_RETCODE treeUpdatePathLPSize(SCIP_TREE *tree, int startdepth)
SCIP_NODE * SCIPtreeGetFocusNode(SCIP_TREE *tree)
SCIP_Bool SCIPtreeProbing(SCIP_TREE *tree)
int SCIPtreeGetFocusDepth(SCIP_TREE *tree)
SCIP_Real SCIPtreeGetAvgLowerbound(SCIP_TREE *tree, SCIP_Real cutoffbound)
static SCIP_RETCODE pseudoforkFree(SCIP_PSEUDOFORK **pseudofork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
SCIP_Bool SCIPtreeIsPathComplete(SCIP_TREE *tree)
static SCIP_RETCODE focusnodeToLeaf(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_NODE *lpstatefork, SCIP_Real cutoffbound)
static SCIP_RETCODE junctionInit(SCIP_JUNCTION *junction, SCIP_TREE *tree)
SCIP_Bool SCIPtreeProbingObjChanged(SCIP_TREE *tree)
int SCIPtreeGetProbingDepth(SCIP_TREE *tree)
SCIP_RETCODE SCIPtreeSetNodesel(SCIP_TREE *tree, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_NODESEL *nodesel)
static SCIP_RETCODE nodeDeactivate(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPnodeDelCons(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_CONS *cons)
void SCIPnodeSetEstimate(SCIP_NODE *node, SCIP_SET *set, SCIP_Real newestimate)
SCIP_RETCODE SCIPtreeBranchVarHole(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 left, SCIP_Real right, SCIP_NODE **downchild, SCIP_NODE **upchild)
SCIP_RETCODE SCIPtreeBranchVarNary(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, int n, SCIP_Real minwidth, SCIP_Real widthfactor, int *nchildren)
void SCIPnodePropagateAgain(SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree)
SCIP_RETCODE SCIPnodeCaptureLPIState(SCIP_NODE *node, int nuses)
static SCIP_RETCODE forkAddLP(SCIP_NODE *fork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
static SCIP_RETCODE treeCreateProbingNode(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
static void treeNextRepropsubtreecount(SCIP_TREE *tree)
void SCIPnodeGetPropsAfterDual(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int *nvars, int varssize)
SCIP_RETCODE SCIPtreeStartProbing(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_PROB *transprob, SCIP_Bool strongbranching)
static SCIP_RETCODE treeEnsureChildrenMem(SCIP_TREE *tree, SCIP_SET *set, int num)
SCIP_RETCODE SCIPtreeFree(SCIP_TREE **tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
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)
int SCIPtreeGetNChildren(SCIP_TREE *tree)
SCIP_RETCODE SCIPtreeSetProbingLPState(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_LP *lp, SCIP_LPISTATE **lpistate, SCIP_LPINORMS **lpinorms, SCIP_Bool primalfeas, SCIP_Bool dualfeas)
SCIP_RETCODE SCIPnodeFree(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp)
SCIP_NODE * SCIPtreeGetCurrentNode(SCIP_TREE *tree)
void SCIPnodeMarkPropagated(SCIP_NODE *node, SCIP_TREE *tree)
int SCIPtreeGetNLeaves(SCIP_TREE *tree)
SCIP_NODE * SCIPtreeGetRootNode(SCIP_TREE *tree)
SCIP_RETCODE SCIPtreeStoreRelaxSol(SCIP_TREE *tree, SCIP_SET *set, SCIP_RELAXATION *relaxation, SCIP_PROB *transprob)
SCIP_RETCODE SCIPnodeCreateChild(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Real nodeselprio, SCIP_Real estimate)
static void treeRemoveChild(SCIP_TREE *tree, SCIP_NODE *child)
void SCIPtreeMarkProbingObjChanged(SCIP_TREE *tree)
static void treeChildrenToSiblings(SCIP_TREE *tree)
static SCIP_RETCODE nodeToLeaf(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_NODE *lpstatefork, SCIP_Real cutoffbound)
SCIP_RETCODE SCIPtreeAddDiveBoundChange(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Bool preferred)
SCIP_Bool SCIPtreeHasCurrentNodeLP(SCIP_TREE *tree)
SCIP_Real SCIPtreeGetLowerbound(SCIP_TREE *tree, SCIP_SET *set)
SCIP_RETCODE SCIPnodeAddBoundinfer(SCIP_NODE *node, 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_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool probingchange)
SCIP_RETCODE SCIPtreeRestoreRelaxSol(SCIP_TREE *tree, SCIP_SET *set, SCIP_RELAXATION *relaxation, SCIP_PROB *transprob)
static SCIP_RETCODE probingnodeCreate(SCIP_PROBINGNODE **probingnode, BMS_BLKMEM *blkmem, SCIP_LP *lp)
SCIP_RETCODE SCIPnodeAddHolechg(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var, SCIP_Real left, SCIP_Real right, SCIP_Bool probingchange, SCIP_Bool *added)
static void treeFindSwitchForks(SCIP_TREE *tree, SCIP_NODE *node, SCIP_NODE **commonfork, SCIP_NODE **newlpfork, SCIP_NODE **newlpstatefork, SCIP_NODE **newsubroot, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPtreeCreatePresolvingRoot(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable)
SCIP_RETCODE SCIPnodePropagateImplics(SCIP_NODE *node, 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_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
static SCIP_RETCODE focusnodeCleanupVars(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool inlp)
SCIP_NODE * SCIPtreeGetBestChild(SCIP_TREE *tree, SCIP_SET *set)
SCIP_RETCODE SCIPtreeLoadProbingLPState(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
static SCIP_RETCODE treeAddPendingBdchg(SCIP_TREE *tree, SCIP_SET *set, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool probingchange)
int SCIPtreeGetEffectiveRootDepth(SCIP_TREE *tree)
static void treeRemoveSibling(SCIP_TREE *tree, SCIP_NODE *sibling)
static SCIP_RETCODE subrootReleaseLPIState(SCIP_SUBROOT *subroot, BMS_BLKMEM *blkmem, SCIP_LP *lp)
SCIP_NODE * SCIPtreeGetPrioSibling(SCIP_TREE *tree)
SCIP_RETCODE SCIPnodeAddBoundchg(SCIP_NODE *node, 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_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_Bool probingchange)
void SCIPtreeSetFocusNodeLP(SCIP_TREE *tree, SCIP_Bool solvelp)
int SCIPnodeGetNDualBndchgs(SCIP_NODE *node)
SCIP_RETCODE SCIPnodeAddCons(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_CONS *cons)
int SCIPtreeGetNNodes(SCIP_TREE *tree)
static SCIP_RETCODE subrootConstructLP(SCIP_NODE *subroot, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
static SCIP_RETCODE treeSwitchPath(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_NODE *fork, SCIP_NODE *focusnode, SCIP_Bool *cutoff)
static SCIP_RETCODE treeAddChild(SCIP_TREE *tree, SCIP_SET *set, SCIP_NODE *child, SCIP_Real nodeselprio)
static SCIP_RETCODE treeNodesToQueue(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_NODE **nodes, int *nnodes, SCIP_NODE *lpstatefork, SCIP_Real cutoffbound)
static SCIP_RETCODE pseudoforkCreate(SCIP_PSEUDOFORK **pseudofork, BMS_BLKMEM *blkmem, SCIP_TREE *tree, SCIP_LP *lp)
static SCIP_RETCODE probingnodeFree(SCIP_PROBINGNODE **probingnode, BMS_BLKMEM *blkmem, SCIP_LP *lp)
SCIP_Real SCIPtreeCalcNodeselPriority(SCIP_TREE *tree, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_BRANCHDIR branchdir, SCIP_Real targetvalue)
SCIP_RETCODE SCIPtreeClear(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
static SCIP_RETCODE forkReleaseLPIState(SCIP_FORK *fork, BMS_BLKMEM *blkmem, SCIP_LP *lp)
static SCIP_RETCODE probingnodeUpdate(SCIP_PROBINGNODE *probingnode, BMS_BLKMEM *blkmem, SCIP_TREE *tree, SCIP_LP *lp)
int SCIPtreeGetNSiblings(SCIP_TREE *tree)
SCIP_NODE * SCIPtreeGetBestNode(SCIP_TREE *tree, SCIP_SET *set)
static SCIP_RETCODE treeEnsurePendingbdchgsMem(SCIP_TREE *tree, SCIP_SET *set, int num)
static SCIP_RETCODE nodeReleaseParent(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp)
SCIP_NODE * SCIPtreeGetBestLeaf(SCIP_TREE *tree)
SCIP_RETCODE SCIPtreeEndProbing(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_PRIMAL *primal, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable)
SCIP_Bool SCIPtreeHasFocusNodeLP(SCIP_TREE *tree)
void SCIPtreeGetDiveBoundChangeData(SCIP_TREE *tree, SCIP_VAR ***variables, SCIP_BRANCHDIR **directions, SCIP_Real **values, int *ndivebdchgs, SCIP_Bool preferred)
SCIP_RETCODE SCIPnodeFocus(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff, SCIP_Bool postponed, SCIP_Bool exitsolve)
SCIP_RETCODE SCIPtreeCreate(SCIP_TREE **tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_NODESEL *nodesel)
void SCIPchildChgNodeselPrio(SCIP_TREE *tree, SCIP_NODE *child, SCIP_Real priority)
int SCIPtreeGetCurrentDepth(SCIP_TREE *tree)
SCIP_NODE * SCIPtreeGetPrioChild(SCIP_TREE *tree)
static SCIP_RETCODE treeEnsurePathMem(SCIP_TREE *tree, SCIP_SET *set, int num)
SCIP_RETCODE SCIPtreeCreateRoot(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
static SCIP_RETCODE subrootFree(SCIP_SUBROOT **subroot, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
SCIP_Bool SCIPtreeWasNodeLastBranchParent(SCIP_TREE *tree, SCIP_NODE *node)
SCIP_RETCODE SCIPtreeCreateProbingNode(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
static SCIP_RETCODE forkFree(SCIP_FORK **fork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
SCIP_RETCODE SCIPtreeMarkProbingNodeHasLP(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_LP *lp)
SCIP_RETCODE SCIPnodeUpdateLowerboundLP(SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_LP *lp)
SCIP_RETCODE SCIPtreeCutoff(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real cutoffbound)
static SCIP_RETCODE treeBacktrackProbing(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_PRIMAL *primal, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, int probingdepth)
SCIP_RETCODE SCIPtreeLoadLPState(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_Bool SCIPtreeInRepropagation(SCIP_TREE *tree)
static SCIP_RETCODE nodeAssignParent(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_TREE *tree, SCIP_NODE *parent, SCIP_Real nodeselprio)
static SCIP_RETCODE focusnodeToPseudofork(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable)
static void forkCaptureLPIState(SCIP_FORK *fork, int nuses)
SCIP_NODESEL * SCIPtreeGetNodesel(SCIP_TREE *tree)
SCIP_Real SCIPtreeCalcChildEstimate(SCIP_TREE *tree, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_Real targetvalue)
SCIP_NODE * SCIPtreeGetLowerboundNode(SCIP_TREE *tree, SCIP_SET *set)
SCIP_RETCODE SCIPtreeBacktrackProbing(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_PRIMAL *primal, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, int probingdepth)
static SCIP_RETCODE focusnodeToJunction(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp)
void SCIPnodeGetPropsBeforeDual(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int *npropvars, int propvarssize)
static SCIP_RETCODE nodeActivate(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPtreeLoadLP(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_Bool *initroot)
static SCIP_RETCODE nodeCreate(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set)
static SCIP_RETCODE focusnodeToDeadend(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable)
void SCIPtreeClearDiveBoundChanges(SCIP_TREE *tree)
SCIP_RETCODE SCIPtreeFreePresolvingRoot(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable)
static SCIP_RETCODE nodeRepropagate(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
static SCIP_RETCODE pseudoforkAddLP(SCIP_NODE *pseudofork, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
internal methods for branch and bound tree
#define SCIP_EVENTTYPE_NODEINFEASIBLE
#define SCIP_EVENTTYPE_NODEDELETE
@ SCIP_BRANCHDIR_DOWNWARDS
enum SCIP_BranchDir SCIP_BRANCHDIR
enum SCIP_BoundType SCIP_BOUNDTYPE
@ SCIP_LPSOLSTAT_NOTSOLVED
@ SCIP_LPSOLSTAT_TIMELIMIT
@ SCIP_LPSOLSTAT_UNBOUNDEDRAY
@ SCIP_LPSOLSTAT_INFEASIBLE
@ SCIP_LPSOLSTAT_OBJLIMIT
@ SCIP_LPSOLSTAT_ITERLIMIT
@ SCIP_REOPTTYPE_INFSUBTREE
@ SCIP_REOPTTYPE_LOGICORNODE
@ SCIP_REOPTTYPE_FEASIBLE
@ SCIP_REOPTTYPE_STRBRANCHED
enum SCIP_ReoptType SCIP_REOPTTYPE
enum SCIP_Retcode SCIP_RETCODE
#define SCIP_PROPTIMING_ALWAYS
enum SCIP_NodeType SCIP_NODETYPE
@ SCIP_NODETYPE_REFOCUSNODE
@ SCIP_NODETYPE_PROBINGNODE
@ SCIP_NODETYPE_PSEUDOFORK
@ SCIP_NODETYPE_FOCUSNODE
@ SCIP_DOMCHGTYPE_DYNAMIC
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_BOUNDCHGTYPE_PROPINFER
@ SCIP_BOUNDCHGTYPE_BRANCHING
@ SCIP_BOUNDCHGTYPE_CONSINFER
@ SCIP_VARSTATUS_MULTAGGR
SCIP_DOMCHGBOUND domchgbound
SCIP_Real SCIPvarGetPseudocost(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPvarChgObj(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newobj)
SCIP_RETCODE SCIPdomchgUndo(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPboundchgApply(SCIP_BOUNDCHG *boundchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, int depth, int pos, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPdomchgMakeStatic(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_RETCODE SCIPvarAddHoleGlobal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_Real left, SCIP_Real right, SCIP_Bool *added)
SCIP_RETCODE SCIPvarRelease(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
void SCIPvarAdjustLb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *lb)
void SCIPvarAdjustBd(SCIP_VAR *var, SCIP_SET *set, SCIP_BOUNDTYPE boundtype, SCIP_Real *bd)
SCIP_RETCODE SCIPdomchgFree(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
void SCIPvarCapture(SCIP_VAR *var)
SCIP_Real SCIPvarGetAvgInferences(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
int SCIPvarGetConflictingBdchgDepth(SCIP_VAR *var, SCIP_SET *set, SCIP_BOUNDTYPE boundtype, SCIP_Real bound)
SCIP_RETCODE SCIPdomchgApplyGlobal(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPdomchgApply(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, int depth, SCIP_Bool *cutoff)
SCIP_Real SCIPvarGetRelaxSol(SCIP_VAR *var, SCIP_SET *set)
SCIP_RETCODE SCIPvarChgBdGlobal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
SCIP_RETCODE SCIPdomchgAddBoundchg(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_BOUNDCHGTYPE boundchgtype, SCIP_Real lpsolval, SCIP_VAR *infervar, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_BOUNDTYPE inferboundtype)
SCIP_RETCODE SCIPvarGetProbvarSum(SCIP_VAR **var, SCIP_SET *set, SCIP_Real *scalar, SCIP_Real *constant)
void SCIPvarAdjustUb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *ub)
SCIP_RETCODE SCIPvarSetRelaxSol(SCIP_VAR *var, SCIP_SET *set, SCIP_RELAXATION *relaxation, SCIP_Real solval, SCIP_Bool updateobj)
internal methods for problem variables
SCIP_RETCODE SCIPvisualUpdateChild(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node)
void SCIPvisualLowerbound(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real lowerbound)
void SCIPvisualMarkedRepropagateNode(SCIP_VISUAL *visual, SCIP_STAT *stat, SCIP_NODE *node)
SCIP_RETCODE SCIPvisualNewChild(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node)
void SCIPvisualCutoffNode(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node, SCIP_Bool infeasible)
void SCIPvisualRepropagatedNode(SCIP_VISUAL *visual, SCIP_STAT *stat, SCIP_NODE *node)
methods for creating output for visualization tools (VBC, BAK)
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