67#define MAXREPROPMARK 511
94 assert(num <= tree->childrensize);
120 assert(num <= tree->pathsize);
144 assert(num <= tree->pendingbdchgssize);
221 SCIPdebugMessage(
"captured LPI state of subroot %p %d times -> new nlpistateref=%d\n",
270 SCIPerrorMessage(
"node for capturing the LPI state is neither fork nor subroot\n");
296 SCIPerrorMessage(
"node for releasing the LPI state is neither fork nor subroot\n");
313 (*probingnode)->lpistate =
NULL;
314 (*probingnode)->lpinorms =
NULL;
317 (*probingnode)->ncols = (*probingnode)->ninitialcols;
318 (*probingnode)->nrows = (*probingnode)->ninitialrows;
319 (*probingnode)->origobjvars =
NULL;
320 (*probingnode)->origobjvals =
NULL;
321 (*probingnode)->nchgdobjs = 0;
323 SCIPdebugMessage(
"created probingnode information (%d cols, %d rows)\n", (*probingnode)->ncols, (*probingnode)->nrows);
395 if( (*probingnode)->lpistate !=
NULL )
400 if( (*probingnode)->lpinorms !=
NULL )
406 if( (*probingnode)->nchgdobjs > 0 )
462 (*pseudofork)->addedcols =
NULL;
463 (*pseudofork)->addedrows =
NULL;
466 (*pseudofork)->nchildren = tree->
nchildren;
468 SCIPdebugMessage(
"creating pseudofork information with %d children (%d new cols, %d new rows)\n",
469 (*pseudofork)->nchildren, (*pseudofork)->naddedcols, (*pseudofork)->naddedrows);
471 if( (*pseudofork)->naddedcols > 0 )
476 if( (*pseudofork)->naddedrows > 0 )
484 for(
i = 0;
i < (*pseudofork)->naddedrows; ++
i )
510 assert((*pseudofork)->nchildren == 0);
515 for(
i = 0;
i < (*pseudofork)->naddedrows; ++
i )
558 (*fork)->nlpistateref = 0;
559 (*fork)->addedcols =
NULL;
560 (*fork)->addedrows =
NULL;
563 (*fork)->nchildren = (
unsigned int) tree->
nchildren;
565 SCIPsetDebugMsg(
set,
"creating fork information with %u children (%d new cols, %d new rows)\n", (*fork)->nchildren, (*fork)->naddedcols, (*fork)->naddedrows);
567 if( (*fork)->naddedcols > 0 )
572 if( (*fork)->naddedrows > 0 )
580 for(
i = 0;
i < (*fork)->naddedrows; ++
i )
603 assert((*fork)->nchildren == 0);
604 assert((*fork)->nlpistateref == 0);
611 for(
i = (*fork)->naddedrows - 1;
i >= 0; --
i )
650 (*subroot)->nlpistateref = 0;
653 (*subroot)->nchildren = (
unsigned int) tree->
nchildren;
660 if( (*subroot)->ncols != 0 )
665 (*subroot)->cols =
NULL;
666 if( (*subroot)->nrows != 0 )
671 (*subroot)->rows =
NULL;
674 for(
i = 0;
i < (*subroot)->nrows; ++
i )
697 assert((*subroot)->nchildren == 0);
698 assert((*subroot)->nlpistateref == 0);
705 for(
i = 0;
i < (*subroot)->nrows; ++
i )
830 if(
set->exact_enable )
1008 if( freeParent && !parent->
active )
1025 (*node)->parent =
NULL;
1026 (*node)->conssetchg =
NULL;
1027 (*node)->domchg =
NULL;
1028 (*node)->number = 0;
1031 (*node)->reoptid = 0;
1034 (*node)->active =
FALSE;
1035 (*node)->cutoff =
FALSE;
1036 (*node)->reprop =
FALSE;
1037 (*node)->repropsubtreemark = 0;
1038 if(
set->exact_enable )
1044 (*node)->lowerboundexact =
NULL;
1080 (*node)->data.child.arraypos = -1;
1134 assert(!(*node)->active);
1166 SCIPerrorMessage(
"cannot free focus node - has to be converted into a dead end first\n");
1175 assert((*node)->data.sibling.arraypos >= 0);
1187 assert((*node)->data.child.arraypos >= 0);
1198 if( (*node)->data.leaf.lpstatefork !=
NULL )
1241 if(
set->exact_enable )
1250 while( *node !=
NULL );
1286 if(
set->reopt_enable )
1297 if(
set->exact_enable )
1305 if( node->
depth == 0 )
1314 if(
set->exact_enable )
1352 if(
set->misc_calcintegral )
1482 initialreprop = node->
reprop;
1491 if( clockisrunning )
1570 if( clockisrunning )
1650 SCIP_CALL(
nodeRepropagate(node, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, conflict,
1651 eventqueue, eventfilter, cliquetable, &propcutoff) );
1786 if( addedconsssize < *naddedconss )
1790 for( cons = 0; cons < *naddedconss; cons++ )
1844 if( newboundexact !=
NULL )
1855 if( node->
depth == 0 )
1950 if(
set->exact_enable && useglobal )
1960 eventqueue, cliquetable, newboundex, boundtype) );
1970 || node->
depth == 0);
1990 inferboundtype = boundtype;
2021 newbound =
MIN(newbound, oldub);
2038 newbound =
MAX(newbound, oldlb);
2055 SCIPsetDebugMsg(
set,
" -> transformed to active variable <%s>: old bounds=[%g,%g], new %s bound: %g, obj: %g\n",
2067 int conflictingdepth;
2071 if( conflictingdepth >= 0 )
2074 assert(conflictingdepth > 0);
2075 assert(conflictingdepth < tree->pathlen);
2077 SCIPsetDebugMsg(
set,
" -> bound change <%s> %s %g violates current local bounds [%g,%g] since depth %d: remember for later application\n",
2082 SCIP_CALL(
treeAddPendingBdchg(tree,
set, node,
var, newbound,
NULL, boundtype, infercons, inferprop, inferinfo,
2105 SCIPsetDebugMsg(
set,
" -> bound change in root node: perform global bound change\n");
2112 SCIPsetDebugMsg(
set,
"marked root node to be repropagated due to global bound change <%s>:[%g,%g] -> [%g,%g] found in depth %u\n",
2191 0.0, infervar, infercons, inferprop, inferinfo, inferboundtype) );
2284 || node->
depth == 0);
2295 SCIPrationalDebugMessage(
"adding boundchange at node %llu at depth %u to variable <%s>: old bounds=[%q,%q], new %s bound: %q (infer%s=<%s>, inferinfo=%d)\n",
2302 inferboundtype = boundtype;
2375 SCIPrationalDebugMessage(
" -> transformed to active variable <%s>: old bounds=[%q,%q], new %s bound: %q, obj: %q\n",
2387 int conflictingdepth;
2391 if( conflictingdepth >= 0 )
2394 assert(conflictingdepth > 0);
2395 assert(conflictingdepth < tree->pathlen);
2397 SCIPrationalDebugMessage(
" -> bound change <%s> %s %g violates current local bounds [%q,%q] since depth %d: remember for later application\n",
2402 SCIP_CALL(
treeAddPendingBdchg(tree,
set, node,
var, newboundreal, newbound, boundtype, infercons, inferprop, inferinfo,
2426 SCIPsetDebugMsg(
set,
" -> bound change in root node: perform global bound change\n");
2433 SCIPrationalDebugMessage(
"marked root node to be repropagated due to global bound change <%s>:[%q,%q] -> [%q,%q] found in depth %u\n",
2501 0.0, infervar, infercons, inferprop, inferinfo, inferboundtype) );
2559 SCIP_CALL(
SCIPnodeAddBoundinfer(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
2560 eventfilter, cliquetable,
var, newbound, boundtype,
NULL,
NULL, 0, probingchange) );
2588 SCIP_CALL(
SCIPnodeAddBoundinferExact(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lpexact, branchcand,
2589 eventqueue, eventfilter, cliquetable,
var, newbound, boundtype,
NULL,
NULL, 0, probingchange) );
2620 || node->
depth == 0);
2638 adjustedleft = left;
2639 adjustedright = right;
2653 SCIPsetDebugMsg(
set,
"adding hole (%g,%g) at node at depth %u to variable <%s>: bounds=[%g,%g], (infer%s=<%s>, inferinfo=%d)\n",
2689 SCIPsetDebugMsg(
set,
"marked root node to be repropagated due to global added hole <%s>: (%g,%g) found in depth %u\n",
2699 SCIPerrorMessage(
"WARNING: currently domain holes can only be handled globally!\n");
2735 NULL,
NULL, 0, probingchange, added) );
2769 for(
i = 0;
i < npendingbdchgs; ++
i )
2785 if( conflictdepth == 0 )
2796 assert(conflictdepth == -1);
2872 if(
set->exact_enable )
2876 if( newboundexact !=
NULL )
2933 if( node->
depth == 0 )
2941 assert(lowerbound <= newbound);
2947 if( !
set->exact_enable )
2956 if(
set->misc_calcintegral )
2999 SCIPerrorMessage(
"Trying to update lower bound with non-proven value in exact solving mode \n.");
3004 lpobjvalexact =
NULL;
3059 if( lpobjvalexact !=
NULL )
3134 for(
i = 0;
i < nboundchgs && !(*cutoff); ++
i )
3164 for( j = 0; j < nimpls; ++j )
3209 SCIP_CALL(
SCIPnodeAddBoundinfer(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
3210 eventqueue, eventfilter, cliquetable, implvars[j], implbounds[j], impltypes[j],
NULL,
NULL, 0,
FALSE) );
3216 for( j = 0; j < ncliques; ++j )
3226 for( k = 0; k <
nvars; ++k )
3237 if(
vars[k] ==
var && values[k] == varfixing )
3243 if( values[k] ==
FALSE )
3268 SCIP_CALL(
SCIPnodeAddBoundinfer(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
3300 assert(startdepth <= tree->pathlen);
3302 if( startdepth == 0 )
3313 for(
i = startdepth;
i < tree->
pathlen; ++
i )
3315 node = tree->
path[
i];
3435 *newlpstatefork =
NULL;
3470 if( lpfork ==
NULL )
3478 *newlpfork = lpfork;
3480 lpstatefork = lpfork;
3483 lpstatefork = lpstatefork->
parent;
3484 if( lpstatefork ==
NULL )
3486 if( lpstatefork->
cutoff )
3492 *newlpstatefork = lpstatefork;
3494 subroot = lpstatefork;
3497 subroot = subroot->
parent;
3498 if( subroot ==
NULL )
3506 *newsubroot = subroot;
3542 if( lpstatefork ==
NULL
3549 assert(lpstatefork ==
NULL || !lpstatefork->
active || lpstatefork == fork);
3572 if( lpfork ==
NULL )
3578 while( lpfork !=
NULL
3604 if( lpstatefork ==
NULL )
3610 lpstatefork = lpfork;
3613 while( lpstatefork !=
NULL
3618 lpstatefork = lpstatefork->
parent;
3638 if( subroot ==
NULL )
3644 subroot = lpstatefork;
3652 subroot = subroot->
parent;
3676 *newlpfork = lpfork;
3677 *newlpstatefork = lpstatefork;
3678 *newsubroot = subroot;
3681 while( fork !=
NULL )
3714 int neweffectiverootdepth;
3735 focusnodedepth = (focusnode !=
NULL ? (int)focusnode->
depth : -1);
3736 forklen = (fork !=
NULL ? (int)fork->
depth + 1 : 0);
3737 assert(forklen <= focusnodedepth + 1);
3743 while( tree->
pathlen > forklen )
3751 SCIP_CALL(
treeApplyPendingBdchgs(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, eventfilter, cliquetable) );
3756 while( focusnode != fork )
3762 tree->
path[focusnode->
depth] = focusnode;
3763 focusnode = focusnode->
parent;
3767 if( oldfocusnode !=
NULL )
3820 "shift effective root from depth %d to %d: applying constraint set and bound changes to global problem\n",
3853 SCIP_CALL(
nodeRepropagate(fork, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
3854 conflict, eventqueue, eventfilter, cliquetable,
cutoff) );
3875 lp, branchcand, conflict, eventqueue, eventfilter, cliquetable,
cutoff) );
3888 lp, branchcand, conflict, eventqueue, eventfilter, cliquetable,
cutoff) );
3932 for(
c = 0;
c < ncols; ++
c )
3936 for(
r = 0;
r < nrows; ++
r )
3977 for(
c = 0;
c < ncols; ++
c )
3981 for(
r = 0;
r < nrows; ++
r )
4022 for(
c = 0;
c < ncols; ++
c )
4026 for(
r = 0;
r < nrows; ++
r )
4051 for( d = 0; d < tree->
pathlen; ++d )
4053 node = tree->
path[d];
4065 if( d < tree->pathlen-1 )
4096 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",
4105#define treeCheckPath(tree)
4151 if( lpfork ==
NULL )
4165 lpforkdepth = (int) lpfork->
depth;
4167 assert(lpforkdepth < tree->pathlen-1);
4192 assert(lpforkdepth < tree->pathlen);
4199 pathnode = tree->
path[d];
4251 int lpstateforkdepth;
4275 if( lpstatefork ==
NULL )
4282 lpstateforkdepth = (int) lpstatefork->
depth;
4283 assert(lpstateforkdepth < tree->pathlen-1);
4284 assert(lpstateforkdepth <= tree->correctlpdepth);
4314 checkbdchgs =
FALSE;
4334 assert(d < tree->pathlen);
4386 pathnode = (*node)->
parent;
4387 while( pathnode !=
NULL && pathnode != lpstatefork )
4391 pathnode = pathnode->
parent;
4393 assert(pathnode == lpstatefork);
4399 || (
set->exact_enable && (*node)->lowerbound < cutoffbound) )
4407 (*node)->data.leaf.lpstatefork = lpstatefork;
4503 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 0.0,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
4508 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 0.0,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
4568 SCIP_CALL(
focusnodeCleanupVars(blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp, branchcand, cliquetable,
TRUE) );
4606 SCIP_CALL(
nodeToLeaf(&tree->
focusnode, blkmem,
set, stat, eventqueue, eventfilter, tree, reopt, lp, lpstatefork, cutoffbound) );
4680 SCIP_CALL(
focusnodeCleanupVars(blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp, branchcand, cliquetable,
FALSE) );
4746 SCIP_CALL(
SCIPlpSolveAndEval(lp,
set, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,
FALSE,
FALSE,
TRUE,
FALSE, &
lperror) );
4783 SCIP_CALL(
focusnodeCleanupVars(blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp, branchcand, cliquetable,
FALSE) );
4854#ifdef SCIP_DISABLED_CODE
4867 SCIP_CALL(
SCIPlpSolveAndEval(lp,
set, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,
FALSE,
FALSE,
TRUE,
FALSE, &
lperror) );
4904 SCIP_CALL(
focusnodeCleanupVars(blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, lp, branchcand, cliquetable,
FALSE) );
4910 SCIP_CALL( subrootCreate(&subroot, blkmem,
set, transprob, tree, lp) );
4959 SCIP_CALL(
nodeToLeaf(&nodes[*
nnodes-1], blkmem,
set, stat, eventqueue, eventfilter, tree, reopt, lp, lpstatefork, cutoffbound) );
5065 SCIPsetDebugMsg(
set,
"focus node: focusnodedepth=%ld, forkdepth=%ld, lpforkdepth=%ld, lpstateforkdepth=%ld, subrootdepth=%ld, cutoff=%u\n",
5066 *node !=
NULL ? (
long)((*node)->depth) : -1, fork !=
NULL ? (
long)(fork->
depth) : -1,
5067 lpfork !=
NULL ? (
long)(lpfork->
depth) : -1, lpstatefork !=
NULL ? (
long)(lpstatefork->
depth) : -1,
5080 assert(!(*node)->active);
5083 SCIPsetDebugMsg(
set,
"cutting off leaf node #%lld (queuelen=%d) at depth %d with lowerbound=%g\n",
5087 if(
set->reopt_enable )
5096 (*node)->cutoff =
TRUE;
5097 if(
set->exact_enable )
5102 if( (*node)->depth == 0 )
5105 if(
set->exact_enable )
5144 if(
set->misc_calcintegral )
5198 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
children, &tree->
nchildren,
NULL, -
SCIPsetInfinity(
set)) );
5216 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
children, &tree->
nchildren,
NULL, -
SCIPsetInfinity(
set)) );
5227 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
siblings, &tree->
nsiblings, tree->
focuslpstatefork,
5257 SCIP_CALL(
focusnodeToDeadend(blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp,
5258 branchcand, cliquetable) );
5275 if(
set->exact_enable )
5309 if( childrenlowerbound > nodelowerbound )
5310 childrenlowerbound = nodelowerbound;
5328 SCIP_CALL( focusnodeToSubroot(blkmem,
set, messagehdlr, stat, eventqueue, eventfilter, transprob, origprob, tree, lp, branchcand) );
5338 reopt, lp, branchcand, cliquetable) );
5367 reopt, lp, branchcand, cliquetable) );
5401 SCIP_CALL(
focusnodeToDeadend(blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp, branchcand, cliquetable) );
5420 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
siblings, &tree->
nsiblings, tree->
focuslpstatefork,
5424 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
children, &tree->
nchildren, childrenlpstatefork,
5440 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
children, &tree->
nchildren, childrenlpstatefork,
5458 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
siblings, &tree->
nsiblings, tree->
focuslpstatefork,
5472 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
siblings, &tree->
nsiblings, tree->
focuslpstatefork,
5491 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
children, &tree->
nchildren, childrenlpstatefork,
5524 SCIP_CALL(
treeSwitchPath(tree, reopt, blkmem,
set, stat, transprob, origprob, primal, lp, branchcand, conflict,
5525 eventqueue, eventfilter, cliquetable, fork, *node,
cutoff) );
5557 (*tree)->root =
NULL;
5562 for( p = 0; p <= 1; ++p )
5567 (*tree)->ndivebdchanges[p] = 0;
5568 (*tree)->divebdchgsize[p] = 1;
5571 (*tree)->path =
NULL;
5572 (*tree)->focusnode =
NULL;
5573 (*tree)->focuslpfork =
NULL;
5574 (*tree)->focuslpstatefork =
NULL;
5575 (*tree)->focussubroot =
NULL;
5576 (*tree)->children =
NULL;
5577 (*tree)->siblings =
NULL;
5578 (*tree)->probingroot =
NULL;
5579 (*tree)->childrenprio =
NULL;
5580 (*tree)->siblingsprio =
NULL;
5581 (*tree)->pathnlpcols =
NULL;
5582 (*tree)->pathnlprows =
NULL;
5583 (*tree)->probinglpistate =
NULL;
5584 (*tree)->probinglpinorms =
NULL;
5585 (*tree)->pendingbdchgs =
NULL;
5586 (*tree)->probdiverelaxsol =
NULL;
5587 (*tree)->nprobdiverelaxsol = 0;
5588 (*tree)->pendingbdchgssize = 0;
5589 (*tree)->npendingbdchgs = 0;
5590 (*tree)->focuslpstateforklpcount = -1;
5591 (*tree)->childrensize = 0;
5592 (*tree)->nchildren = 0;
5593 (*tree)->siblingssize = 0;
5594 (*tree)->nsiblings = 0;
5595 (*tree)->pathlen = 0;
5596 (*tree)->pathsize = 0;
5597 (*tree)->effectiverootdepth = 0;
5598 (*tree)->updatedeffectiverootdepth = 0;
5599 (*tree)->lastbranchparentid = -1L;
5600 (*tree)->correctlpdepth = -1;
5601 (*tree)->cutoffdepth = INT_MAX;
5602 (*tree)->repropdepth = INT_MAX;
5603 (*tree)->repropsubtreecount = 0;
5604 (*tree)->focusnodehaslp =
FALSE;
5605 (*tree)->probingnodehaslp =
FALSE;
5606 (*tree)->focuslpconstructed =
FALSE;
5607 (*tree)->cutoffdelayed =
FALSE;
5608 (*tree)->probinglpwasflushed =
FALSE;
5609 (*tree)->probinglpwassolved =
FALSE;
5610 (*tree)->probingloadlpistate =
FALSE;
5611 (*tree)->probinglpwasrelax =
FALSE;
5612 (*tree)->probingsolvedlp =
FALSE;
5613 (*tree)->forcinglpmessage =
FALSE;
5614 (*tree)->sbprobing =
FALSE;
5615 (*tree)->probinglpwasprimfeas =
TRUE;
5616 (*tree)->probinglpwasdualfeas =
TRUE;
5617 (*tree)->probdiverelaxstored =
FALSE;
5618 (*tree)->probdiverelaxincludeslp =
FALSE;
5638 assert((*tree)->nchildren == 0);
5639 assert((*tree)->nsiblings == 0);
5649 for( p = 0; p <= 1; ++p )
5773 SCIP_CALL(
treeNodesToQueue(tree, reopt, blkmem,
set, stat, eventqueue, eventfilter, lp, tree->
children, &tree->
nchildren,
NULL,
5813 SCIP_CALL(
SCIPnodeFocus(&tree->
root, blkmem,
set, messagehdlr, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
5814 conflict, conflictstore, eventqueue, eventfilter, cliquetable, &
cutoff,
FALSE,
FALSE) );
5850 SCIP_CALL(
SCIPnodeFocus(&node, blkmem,
set, messagehdlr, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
5851 conflict, conflictstore, eventqueue, eventfilter, cliquetable, &
cutoff,
FALSE,
FALSE) );
6011 switch(
set->nodesel_childsel )
6026 prio = targetvalue - varsol;
6029 prio = varrootsol - varsol;
6033 if( !isroot && haslp )
6034 prio *= (varrootsol - varsol + 1.0);
6043 SCIPerrorMessage(
"invalid preferred branching direction <%d> of variable <%s>\n",
6060 switch(
set->nodesel_childsel )
6075 prio = varsol - targetvalue;
6078 prio = varsol - varrootsol;
6082 if( !isroot && haslp )
6083 prio *= (varsol - varrootsol + 1.0);
6097 SCIPerrorMessage(
"invalid preferred branching direction <%d> of variable <%s>\n",
6156 if( estimateinc > 0.0 )
6157 estimate += estimateinc;
6215 if( downchild !=
NULL )
6217 if( eqchild !=
NULL )
6219 if( upchild !=
NULL )
6244 val = (val - constant) / scalar;
6313 SCIPsetDebugMsg(
set,
"fixing continuous variable <%s> with value %g and bounds [%.15g, %.15g], priority %d (current lower bound: %g)\n",
6329 tree, reopt, lp, branchcand, eventqueue, eventfilter,
NULL,
var,
SCIPvarGetUbLocal(
var),
SCIP_BOUNDTYPE_LOWER,
FALSE) );
6334 tree, reopt, lp, branchcand, eventqueue, eventfilter,
NULL,
var,
SCIPvarGetLbLocal(
var),
SCIP_BOUNDTYPE_UPPER,
FALSE) );
6345 SCIPsetDebugMsg(
set,
"continuous branch on variable <%s> with bounds [%.15g, %.15g], priority %d (current lower bound: %g), node %p\n",
6351 tree, reopt, lp, branchcand, eventqueue, eventfilter,
NULL,
var,
SCIPvarGetUbLocal(
var),
SCIP_BOUNDTYPE_LOWER,
FALSE) );
6357 tree, reopt, lp, branchcand, eventqueue, eventfilter,
NULL,
var,
SCIPvarGetLbLocal(
var),
SCIP_BOUNDTYPE_UPPER,
FALSE) );
6371 SCIPsetDebugMsg(
set,
"continuous branch on variable <%s> with value %g, priority %d (current lower bound: %g)\n",
6377 else if(
set->exact_enable &&
EPSISINT(val, 0.0) )
6395 center = (ub + lb) / 2.0;
6398 downub = floor(center);
6399 uplb = downub + 1.0;
6403 uplb = ceil(center);
6404 downub = uplb - 1.0;
6413 if( fixval - 1.0 >= lb )
6414 downub = fixval - 1.0;
6417 if( fixval + 1.0 <= ub )
6418 uplb = fixval + 1.0;
6420 SCIPsetDebugMsg(
set,
"integral branch on variable <%s> with value %g, priority %d (current lower bound: %g)\n",
6442 center = (ub + lb) / 2.0;
6446 uplb = downub + 1.0;
6451 downub = uplb - 1.0;
6457 fixval = round(val);
6461 downub = fixval - 1.0;
6465 uplb = fixval + 1.0;
6467 SCIPsetDebugMsg(
set,
"integral branch on variable <%s> with value %g, priority %d (current lower bound: %g)\n",
6473 if(
set->exact_enable )
6476 downub = floor(val);
6477 uplb = downub + 1.0;
6478 assert(uplb == ceil(val));
6483 uplb = downub + 1.0;
6486 SCIPsetDebugMsg(
set,
"fractional branch on variable <%s> with value %g, root value %g, priority %d (current lower bound: %g)\n",
6504 SCIPsetDebugMsg(
set,
" -> creating child: <%s> <= %g (priority: %g, estimate: %g)\n",
6511 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6516 if( downchild !=
NULL )
6525 SCIPsetDebugMsg(
set,
" -> creating child: <%s> == %g (priority: %g, estimate: %g)\n",
6540 SCIPerrorMessage(
"Cannot resolve 3-way branching in certificate currently \n");
6546 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6551 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6557 if( eqchild !=
NULL )
6569 SCIPsetDebugMsg(
set,
" -> creating child: <%s> >= %g (priority: %g, estimate: %g)\n",
6576 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6581 if( upchild !=
NULL )
6624 if( downchild !=
NULL )
6626 if( upchild !=
NULL )
6676 downub = floor(val);
6679 uplb = downub + 1.0;
6683 SCIPsetDebugMsg(
set,
"exact branch on variable <%s> with value %g, root value %g, priority %d (current lower bound: %g)\n",
6700 SCIPsetDebugMsg(
set,
" -> creating child: <%s> <= %g (priority: %g, estimate: %g)\n",
6707 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
6712 if( downchild !=
NULL )
6724 SCIPsetDebugMsg(
set,
" -> creating child: <%s> >= %g (priority: %g, estimate: %g)\n",
6731 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
6736 if( upchild !=
NULL )
6778 if( downchild !=
NULL )
6780 if( upchild !=
NULL )
6835 SCIPsetDebugMsg(
set,
" -> creating child: <%s> <= %g (priority: %g, estimate: %g)\n",
6839 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6844 if( downchild !=
NULL )
6855 SCIPsetDebugMsg(
set,
" -> creating child: <%s> >= %g (priority: %g, estimate: %g)\n",
6859 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
6864 if( upchild !=
NULL )
6934 SCIP_CALL(
SCIPtreeBranchVar(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, eventfilter,
6935 var, val, &downchild, &fixchild, &upchild) );
6937 if( nchildren !=
NULL )
6938 *nchildren = (downchild !=
NULL ? 1 : 0) + (fixchild !=
NULL ? 1 : 0) + (upchild !=
NULL ? 1 : 0);
6965 val = (val - constant) / scalar;
7040 else if( widthfactor == 1.0 )
7058 assert(widthfactor > 1.0);
7060 width *= (widthfactor - 1.0) / (pow(widthfactor, (
SCIP_Real)(n/2)) - 1.0);
7062 width /= 0.5 + widthfactor * (pow(widthfactor, (
SCIP_Real)(n/2)) - 1.0) / (widthfactor - 1.0);
7065 minwidth =
MAX(1.0, minwidth);
7066 if( width < minwidth )
7070 SCIPsetDebugMsg(
set,
"%d-ary branching on variable <%s> [%g, %g] around %g, initial width = %g\n",
7073 if( nchildren !=
NULL )
7080 left = val - width/2.0;
7081 right = val + width/2.0;
7098 SCIPsetDebugMsg(
set,
" -> creating middle child: %g <= <%s> <= %g (priority: %g, estimate: %g, width: %g)\n",
7102 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
7104 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
7109 if( nchildren !=
NULL )
7121 width *= widthfactor;
7129 if( right - left < 0.5 )
7146 for(
i = 0;
i < n; ++
i )
7177 SCIPsetDebugMsg(
set,
" -> creating left child: %g <= <%s> <= %g (priority: %g, estimate: %g, width: %g)\n",
7183 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
7186 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
7191 if( nchildren !=
NULL )
7211 bnd = right + width;
7228 SCIPsetDebugMsg(
set,
" -> creating right child: %g <= <%s> <= %g (priority: %g, estimate: %g, width: %g)\n",
7232 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
7236 SCIP_CALL(
SCIPnodeAddBoundchg(node, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
7242 if( nchildren !=
NULL )
7250 width *= widthfactor;
7259#define ARRAYGROWTH 5
7269 int idx = preferred ? 0 : 1;
7272 assert(pos < tree->divebdchgsize[idx]);
7301 int idx = preferred ? 0 : 1;
7321 for( p = 0; p < 2; ++p )
7395 SCIPsetDebugMsg(
set,
"updated probingnode information of parent (%d cols, %d rows)\n",
7437 SCIPsetDebugMsg(
set,
"probing started in depth %d (LP flushed: %u, LP solved: %u, solstat: %d), probing root in depth %d\n",
7619 if( lpistate ==
NULL )
7630 if( lpistate !=
NULL )
7633 lpwasprimfeas, lpwasprimchecked, lpwasdualfeas, lpwasdualchecked) );
7637 if( lpinorms !=
NULL )
7718 if( newpathlen < tree->pathlen )
7730 while( tree->
pathlen > newpathlen )
7803 SCIP_CALL(
treeApplyPendingBdchgs(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, branchcand, eventqueue, eventfilter, cliquetable) );
7846 SCIP_CALL(
treeBacktrackProbing(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, primal, branchcand,
7847 eventqueue, eventfilter, cliquetable, probingdepth) );
7890 SCIP_CALL(
treeBacktrackProbing(tree, reopt, blkmem,
set, stat, transprob, origprob, lp, primal, branchcand,
7891 eventqueue, eventfilter, cliquetable, -1) );
7937 SCIP_CALL(
SCIPlpSolveAndEval(lp,
set, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,
FALSE,
FALSE,
FALSE,
FALSE, &
lperror) );
7939 if(
set->exact_enable )
7945 SCIP_CALL(
SCIPlpSolveAndEval(lp,
set, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,
FALSE,
FALSE,
FALSE,
FALSE, &
lperror) );
7966 "LP was not resolved to a sufficient status after probing\n");
8002 SCIPsetDebugMsg(
set,
"clearing lp state at end of probing mode because LP was initially unsolved\n");
8025 if(
set->exact_enable )
8075 for( v = 0; v <
nvars; ++v )
8106 for( v = 0; v <
nvars; ++v )
8256 bestnode = bestchild;
8258 bestnode = bestsibling;
8260 bestnode = bestleaf;
8351 if(
set->exact_enable )
8412 return lowerboundnode;
8470#undef SCIPnodeGetType
8471#undef SCIPnodeGetNumber
8472#undef SCIPnodeGetDepth
8473#undef SCIPnodeGetLowerbound
8474#undef SCIPnodeGetEstimate
8475#undef SCIPnodeGetDomchg
8476#undef SCIPnodeGetParent
8477#undef SCIPnodeGetConssetchg
8478#undef SCIPnodeIsActive
8479#undef SCIPnodeIsPropagatedAgain
8480#undef SCIPtreeGetNLeaves
8481#undef SCIPtreeGetNChildren
8482#undef SCIPtreeGetNSiblings
8483#undef SCIPtreeGetNNodes
8484#undef SCIPtreeIsPathComplete
8485#undef SCIPtreeProbing
8486#undef SCIPtreeGetProbingRoot
8487#undef SCIPtreeGetProbingDepth
8488#undef SCIPtreeGetFocusNode
8489#undef SCIPtreeGetFocusDepth
8490#undef SCIPtreeHasFocusNodeLP
8491#undef SCIPtreeSetFocusNodeLP
8492#undef SCIPtreeIsFocusNodeLPConstructed
8493#undef SCIPtreeInRepropagation
8494#undef SCIPtreeGetCurrentNode
8495#undef SCIPtreeGetCurrentDepth
8496#undef SCIPtreeHasCurrentNodeLP
8497#undef SCIPtreeGetEffectiveRootDepth
8498#undef SCIPtreeGetRootNode
8499#undef SCIPtreeProbingObjChanged
8500#undef SCIPtreeMarkProbingObjChanged
8529 return (
int) node->
depth;
8588 node->
reopttype = (
unsigned int) reopttype;
8642 count_branchings = (nbranchings !=
NULL);
8643 count_consprop = (nconsprop !=
NULL);
8644 count_prop = (nprop !=
NULL);
8647 if( count_branchings )
8649 if( count_consprop )
8661 if( count_branchings )
8664 if( !count_consprop && !count_prop )
8672 if( count_consprop )
8702 int npseudobranchvars;
8712 npseudobranchvars = 0;
8720 for(
i = nboundchgs-1;
i >= 0;
i--)
8727 npseudobranchvars++;
8732 return npseudobranchvars;
8772 for(
i = nboundchgs-1;
i >= 0;
i--)
8787 if( varssize >= *
nvars )
8791 for(
i =
i+1;
i < nboundchgs;
i++)
8842 assert(branchvarssize >= 0);
8858 for(
i = 0;
i < nboundchgs;
i++)
8868 for( ;
i < nboundchgs;
i++)
8873 if( branchvarssize >= *nbranchvars )
8875 for(
i = 0;
i < *nbranchvars;
i++)
8878 branchvars[
i] = boundchgs[
i].
var;
8902 assert(branchvarssize >= 0);
8908 int nodenbranchvars;
8912 start = *nbranchvars < branchvarssize - 1 ? *nbranchvars : branchvarssize - 1;
8913 size = *nbranchvars > branchvarssize ? 0 : branchvarssize-(*nbranchvars);
8916 *nbranchvars += nodenbranchvars;
8941 assert(branchvarssize >= 0);
8945 while( node != parent )
8947 int nodenbranchvars;
8951 start = *nbranchvars < branchvarssize - 1 ? *nbranchvars : branchvarssize - 1;
8952 size = *nbranchvars > branchvarssize ? 0 : branchvarssize-(*nbranchvars);
8955 *nbranchvars += nodenbranchvars;
8987 assert(propvarssize >= 0);
9004 for(
i = nbranchings;
i < nboundchgs; ++
i )
9025 if( propvarssize < *npropvars )
9028 for(
i = nbranchings, pos = 0; pos < *npropvars; ++
i )
9083 for(
i = 0;
i < nboundchgs; ++
i )
9101 for( ;
i < nboundchgs; ++
i )
9119 if( varssize < *
nvars )
9123 for(
i = first_dual, pos = 0; pos < *
nvars; ++
i )
9170 for(
i = 0;
i < nboundchgs;
i++)
9180 if( nbranchings > 0 )
9221 assert(branchvarssize >= 0);
9229 int nodenbranchvars;
9234 start = *nbranchvars < branchvarssize - 1 ? *nbranchvars : branchvarssize - 1;
9235 size = *nbranchvars > branchvarssize ? 0 : branchvarssize-(*nbranchvars);
9236 if( *
nnodes < nodeswitchsize )
9237 nodeswitches[*
nnodes] = start;
9241 *nbranchvars += nodenbranchvars;
9269 return (node1 == node2);
9292 while( node1 != node2 )
SCIP_RETCODE SCIPcertificatePrintDualboundPseudo(SCIP_CERTIFICATE *certificate, SCIP_LPEXACT *lpexact, SCIP_NODE *node, SCIP_SET *set, SCIP_PROB *prob, SCIP_Bool lowerchanged, int modifiedvarindex, SCIP_Longint boundchangeindex, SCIP_Real psval)
SCIP_RETCODE SCIPcertificateNewNodeData(SCIP_CERTIFICATE *certificate, SCIP_STAT *stat, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificatePrintDualboundExactLP(SCIP_CERTIFICATE *certificate, SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_NODE *node, SCIP_PROB *prob, SCIP_Bool usefarkas)
SCIP_RETCODE SCIPcertificatePrintGlobalBound(SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_RATIONAL *value, SCIP_Longint certificateindex)
SCIP_Longint SCIPcertificateGetCurrentIndex(SCIP_CERTIFICATE *certificate)
SCIP_RETCODE SCIPcertificatePrintUnsplitting(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
SCIP_RETCODE SCIPcertificateUpdateBranchingData(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_STAT *stat, SCIP_LP *lp, SCIP_NODE *node, SCIP_VAR *branchvar, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound)
methods for certificate output
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 SCIPisCertified(SCIP *scip)
SCIP_Bool SCIPconsIsGlobal(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
BMS_BUFMEM * SCIPbuffer(SCIP *scip)
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_RATIONAL * SCIPnodeGetLowerboundExact(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_CONSSETCHG * SCIPnodeGetConssetchg(SCIP_NODE *node)
const char * SCIPnodeselGetName(SCIP_NODESEL *nodesel)
const char * SCIPpropGetName(SCIP_PROP *prop)
void SCIPrationalMin(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_RETCODE SCIPrationalCreateBlock(BMS_BLKMEM *blkmem, SCIP_RATIONAL **rational)
SCIP_RETCODE SCIPrationalCreate(SCIP_RATIONAL **rational)
void SCIPrationalSetInfinity(SCIP_RATIONAL *res)
SCIP_Real SCIPrationalGetReal(SCIP_RATIONAL *rational)
void SCIPrationalFreeBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **rational)
#define SCIPrationalDebugMessage
SCIP_Bool SCIPrationalIsLT(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalSetReal(SCIP_RATIONAL *res, SCIP_Real real)
SCIP_Bool SCIPrationalIsGT(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalFreeBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_Real SCIPrationalGetInfinity(void)
SCIP_RETCODE SCIPrationalCreateBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
void SCIPrationalSetRational(SCIP_RATIONAL *res, SCIP_RATIONAL *src)
SCIP_Bool SCIPrationalIsGEReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsIntegral(SCIP_RATIONAL *rational)
void SCIPrationalMax(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsGE(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalSetNegInfinity(SCIP_RATIONAL *res)
SCIP_Bool SCIPrationalIsInfinity(SCIP_RATIONAL *rational)
SCIP_Real SCIPrationalRoundReal(SCIP_RATIONAL *rational, SCIP_ROUNDMODE_RAT roundmode)
SCIP_Bool SCIPrationalIsNegInfinity(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsEQ(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
SCIP_Bool SCIPrationalIsLE(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
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)
int SCIPvarGetCertificateIndex(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetProbvar(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_RETCODE SCIPvarGetProbvarBoundExact(SCIP_VAR **var, SCIP_RATIONAL *bound, SCIP_BOUNDTYPE *boundtype)
SCIP_Real SCIPvarGetRootSol(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetUbLocalExact(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_RATIONAL * SCIPvarGetLbGlobalExact(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_RATIONAL * SCIPvarGetLbLocalExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetObjExact(SCIP_VAR *var)
SCIP_BOUNDTYPE * SCIPvarGetImplTypes(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_RATIONAL * SCIPvarGetUbGlobalExact(SCIP_VAR *var)
SCIP_Bool SCIPvarIsInLP(SCIP_VAR *var)
int SCIPsnprintf(char *t, int len, const char *s,...)
assert(minobj< SCIPgetCutoffbound(scip))
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)
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_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
SCIP_LPSOLSTAT SCIPlpExactGetSolstat(SCIP_LPEXACT *lpexact)
void SCIPlpExactGetObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
void SCIPlpExactForceSafeBound(SCIP_LPEXACT *lpexact, SCIP_SET *set)
internal methods for exact 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 SCIPmessageFPrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
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_RATIONAL * SCIPnodepqGetLowerboundExact(SCIP_NODEPQ *nodepq, SCIP_SET *set)
SCIP_RETCODE SCIPnodepqSetNodesel(SCIP_NODEPQ **nodepq, SCIP_SET *set, SCIP_NODESEL *nodesel)
SCIP_RETCODE SCIPnodepqFree(SCIP_NODEPQ **nodepq, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, 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)
SCIP_RETCODE SCIPnodepqBound(SCIP_NODEPQ *nodepq, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_Real cutoffbound)
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)
SCIP_RETCODE SCIPnodepqClear(SCIP_NODEPQ *nodepq, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_TREE *tree, SCIP_LP *lp)
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_EVENTFILTER *eventfilter, SCIP_CONFLICT *conflict, SCIP_CLIQUETABLE *cliquetable, int depth, int maxrounds, 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::@126301315365336333353356203157377037022074222233 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
SCIP_Bool glbpseudoobjvalid
unsigned int repropsubtreemark
SCIP_PROBINGNODE * probingnode
SCIP_PSEUDOFORK * pseudofork
union SCIP_Node::@314101335070107373341204020356162321174046011342 data
SCIP_RATIONAL * lowerboundexact
SCIP_CONSSETCHG * conssetchg
SCIP_RATIONAL * newboundexact
SCIP_RATIONAL * upperboundexact
SCIP_Bool lpwasdualchecked
SCIP_Bool lpwasprimchecked
SCIP_Longint nearlybacktracks
SCIP_Longint nactiveconssadded
SCIP_Longint nrepropcutoffs
SCIP_RATIONAL * lastlowerboundexact
SCIP_Longint ncreatednodesrun
SCIP_CLOCK * nodeactivationtime
SCIP_Longint nprobholechgs
SCIP_Longint ndeactivatednodes
SCIP_Longint nrepropboundchgs
SCIP_CERTIFICATE * certificate
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 probinglpobjval
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 probinglphadsafebound
SCIP_Bool probinglpwasdualfeas
datastructures for managing events
data structures for exact LP management
datastructures for block memory pools and memory buffers
SCIP main data structure.
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 SCIPtreeFree(SCIP_TREE **tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
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_RETCODE SCIPnodeAddBoundchgExact(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_LPEXACT *lpexact, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_RATIONAL *newbound, SCIP_BOUNDTYPE boundtype, SCIP_Bool probingchange)
static SCIP_RETCODE focusnodeToPseudofork(BMS_BLKMEM *blkmem, SCIP_SET *set, 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 focusnodeToLeaf(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_NODE *lpstatefork, SCIP_Real cutoffbound)
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 junctionInit(SCIP_JUNCTION *junction, SCIP_TREE *tree)
SCIP_Bool SCIPtreeProbingObjChanged(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_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_Bool probingchange)
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)
void SCIPnodePropagateAgain(SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree)
static SCIP_RETCODE nodeToLeaf(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_NODE *lpstatefork, SCIP_Real cutoffbound)
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_RATIONAL * SCIPtreeGetLowerboundExact(SCIP_TREE *tree, SCIP_SET *set)
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 SCIPnodeCutoff(SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_REOPT *reopt, SCIP_LP *lp, BMS_BLKMEM *blkmem)
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_EVENTFILTER *eventfilter, SCIP_VAR *var, SCIP_Real val, SCIP_NODE **downchild, SCIP_NODE **eqchild, SCIP_NODE **upchild)
static SCIP_RETCODE treeNodesToQueue(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_NODE **nodes, int *nnodes, SCIP_NODE *lpstatefork, SCIP_Real cutoffbound)
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 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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_NODE *fork, SCIP_NODE *focusnode, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPtreeBranchVarExact(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_EVENTFILTER *eventfilter, SCIP_VAR *var, SCIP_NODE **downchild, SCIP_NODE **upchild)
static void treeRemoveChild(SCIP_TREE *tree, SCIP_NODE *child)
void SCIPtreeMarkProbingObjChanged(SCIP_TREE *tree)
static void treeChildrenToSiblings(SCIP_TREE *tree)
SCIP_RETCODE SCIPtreeAddDiveBoundChange(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Bool preferred)
SCIP_RETCODE SCIPnodeFree(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_TREE *tree, SCIP_LP *lp)
static SCIP_RETCODE focusnodeToDeadend(BMS_BLKMEM *blkmem, SCIP_SET *set, 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)
SCIP_Bool SCIPtreeHasCurrentNodeLP(SCIP_TREE *tree)
SCIP_Real SCIPtreeGetLowerbound(SCIP_TREE *tree, SCIP_SET *set)
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 SCIPnodeAddBoundinferExact(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_LPEXACT *lpexact, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_RATIONAL *newbound, SCIP_BOUNDTYPE boundtype, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool probingchange)
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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable)
static SCIP_RETCODE focusnodeCleanupVars(BMS_BLKMEM *blkmem, SCIP_SET *set, 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, 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)
int SCIPtreeGetEffectiveRootDepth(SCIP_TREE *tree)
static void treeRemoveSibling(SCIP_TREE *tree, SCIP_NODE *sibling)
SCIP_RETCODE SCIPtreeCreateRoot(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
static SCIP_RETCODE subrootReleaseLPIState(SCIP_SUBROOT *subroot, BMS_BLKMEM *blkmem, SCIP_LP *lp)
SCIP_NODE * SCIPtreeGetPrioSibling(SCIP_TREE *tree)
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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
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)
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_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable)
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 treeAddChild(SCIP_TREE *tree, SCIP_SET *set, SCIP_NODE *child, SCIP_Real nodeselprio)
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)
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)
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_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
int SCIPtreeGetNSiblings(SCIP_TREE *tree)
SCIP_RETCODE SCIPtreeClear(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
SCIP_NODE * SCIPtreeGetBestNode(SCIP_TREE *tree, SCIP_SET *set)
static SCIP_RETCODE treeEnsurePendingbdchgsMem(SCIP_TREE *tree, SCIP_SET *set, int num)
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_RETCODE SCIPtreeCutoff(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_Real cutoffbound)
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 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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable)
static SCIP_RETCODE nodeReleaseParent(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_TREE *tree)
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 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_EVENTFILTER *eventfilter, SCIP_VAR *var, SCIP_Real left, SCIP_Real right, SCIP_NODE **downchild, SCIP_NODE **upchild)
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)
SCIP_RETCODE SCIPnodeUpdateLowerboundLP(SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_MESSAGEHDLR *messagehdlr, SCIP_EVENTFILTER *eventfilter, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, 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 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_EVENTFILTER *eventfilter, SCIP_VAR *var, SCIP_Real val, int n, SCIP_Real minwidth, SCIP_Real widthfactor, int *nchildren)
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_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool probingchange)
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_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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff, SCIP_Bool postponed, SCIP_Bool exitsolve)
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 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)
SCIP_RETCODE SCIPnodeUpdateLowerbound(SCIP_NODE *node, SCIP_STAT *stat, SCIP_SET *set, SCIP_EVENTFILTER *eventfilter, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real newbound, SCIP_RATIONAL *newboundexact)
static SCIP_RETCODE focusnodeToJunction(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_TREE *tree, SCIP_LP *lp)
static SCIP_RETCODE treeAddPendingBdchg(SCIP_TREE *tree, SCIP_SET *set, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound, SCIP_RATIONAL *newboundexact, SCIP_BOUNDTYPE boundtype, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_Bool probingchange)
void SCIPnodeGetPropsBeforeDual(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int *npropvars, int propvarssize)
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)
void SCIPtreeClearDiveBoundChanges(SCIP_TREE *tree)
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
struct SCIP_BranchCand SCIP_BRANCHCAND
struct SCIP_Conflict SCIP_CONFLICT
struct SCIP_ConflictStore SCIP_CONFLICTSTORE
struct SCIP_Cons SCIP_CONS
struct SCIP_ConsSetChg SCIP_CONSSETCHG
struct SCIP_EventFilter SCIP_EVENTFILTER
#define SCIP_EVENTTYPE_NODEINFEASIBLE
struct SCIP_EventQueue SCIP_EVENTQUEUE
#define SCIP_EVENTTYPE_DUALBOUNDIMPROVED
struct SCIP_Event SCIP_EVENT
#define SCIP_EVENTTYPE_NODEDELETE
@ SCIP_BRANCHDIR_DOWNWARDS
enum SCIP_BranchDir SCIP_BRANCHDIR
struct SCIP_Clique SCIP_CLIQUE
struct SCIP_CliqueTable SCIP_CLIQUETABLE
enum SCIP_LPSolStat SCIP_LPSOLSTAT
enum SCIP_BoundType SCIP_BOUNDTYPE
@ SCIP_LPSOLSTAT_NOTSOLVED
@ SCIP_LPSOLSTAT_TIMELIMIT
@ SCIP_LPSOLSTAT_UNBOUNDEDRAY
@ SCIP_LPSOLSTAT_INFEASIBLE
@ SCIP_LPSOLSTAT_OBJLIMIT
@ SCIP_LPSOLSTAT_ITERLIMIT
struct SCIP_LpExact SCIP_LPEXACT
struct SCIP_LPiState SCIP_LPISTATE
struct SCIP_LPiNorms SCIP_LPINORMS
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
#define SCIP_DECL_SORTPTRCOMP(x)
struct SCIP_Nodesel SCIP_NODESEL
struct SCIP_Primal SCIP_PRIMAL
struct SCIP_Prob SCIP_PROB
struct SCIP_Prop SCIP_PROP
struct SCIP_Rational SCIP_RATIONAL
struct SCIP_Relaxation SCIP_RELAXATION
@ SCIP_REOPTTYPE_INFSUBTREE
@ SCIP_REOPTTYPE_LOGICORNODE
@ SCIP_REOPTTYPE_FEASIBLE
@ SCIP_REOPTTYPE_STRBRANCHED
enum SCIP_ReoptType SCIP_REOPTTYPE
struct SCIP_Reopt SCIP_REOPT
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_Stat SCIP_STAT
#define SCIP_PROPTIMING_ALWAYS
struct SCIP_Node SCIP_NODE
struct SCIP_Fork SCIP_FORK
enum SCIP_NodeType SCIP_NODETYPE
struct SCIP_Tree SCIP_TREE
struct SCIP_Probingnode SCIP_PROBINGNODE
struct SCIP_Junction SCIP_JUNCTION
struct SCIP_Pseudofork SCIP_PSEUDOFORK
struct SCIP_Subroot SCIP_SUBROOT
@ SCIP_NODETYPE_REFOCUSNODE
@ SCIP_NODETYPE_PROBINGNODE
@ SCIP_NODETYPE_PSEUDOFORK
@ SCIP_NODETYPE_FOCUSNODE
union SCIP_DomChg SCIP_DOMCHG
@ SCIP_DOMCHGTYPE_DYNAMIC
struct SCIP_BoundChg SCIP_BOUNDCHG
@ 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 SCIPdomchgAddBoundchg(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *var, SCIP_Real newbound, SCIP_RATIONAL *newboundexact, 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 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 SCIPvarChgBdGlobalExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_RATIONAL *newbound, SCIP_BOUNDTYPE boundtype)
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 SCIPvarAdjustLbExact(SCIP_VAR *var, SCIP_SET *set, SCIP_RATIONAL *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)
void SCIPvarAdjustUbExact(SCIP_VAR *var, SCIP_SET *set, SCIP_RATIONAL *ub)
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)
void SCIPdomchgAddCurrentCertificateIndex(SCIP_DOMCHG *domchg, SCIP_CERTIFICATE *certificate)
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 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)