assert(eventhdlr !=
NULL);
95 if( eventnode ==
NULL)
119assert(eventhdlr !=
NULL);
145assert(eventhdlr !=
NULL);
185assert(num <= reopt->nmaxactiveconss);
201assert(runidx <= reopt->runsize);
212assert(num <= reopt->soltree->solssize[runidx]);
236 for(
ints = reopt->
runsize; s < newsize; ++s )
248assert(num < reopt->runsize);
261assert(reopttree !=
NULL);
262assert(blkmem !=
NULL);
273 for(
unsigned int id= reopttree->
reoptnodessize;
id< (
unsigned int)newsize; ++
id)
298assert(reoptnode !=
NULL);
299assert(blkmem !=
NULL);
300assert(var_mem >= 0);
301assert(child_mem >= 0);
302assert(conss_mem >= 0);
314 else if( reoptnode->
varssize< var_mem )
350 else if( reoptnode->
consssize< conss_mem )
374assert(solnode !=
NULL);
382sibling = solnode->
child;
385 while( sibling !=
NULL)
409assert(reopt !=
NULL);
410assert(vars !=
NULL);
418 for(
intv = 0; v < nvars; ++v )
445assert(transvar !=
NULL);
455assert(0 <= probidx && probidx < reopt->nobjvars);
457c1 = reopt->
objs[obj1_id][probidx];
458c2 = reopt->
objs[obj2_id][probidx];
462norm_obj1 +=
SQR(c1);
463norm_obj2 +=
SQR(c2);
468norm_obj1 = sqrt(norm_obj1);
469norm_obj2 = sqrt(norm_obj2);
472similarity /= (norm_obj1 * norm_obj2);
475similarity =
MAX(similarity, -1.0);
476similarity =
MIN(similarity, 1.0);
488assert((*reoptnode) !=
NULL);
489assert(blkmem !=
NULL);
492 if( (*reoptnode)->consssize > 0 )
494assert((*reoptnode)->conss !=
NULL);
496 for(
intc = 0; c < (*reoptnode)->nconss; ++c )
498assert((*reoptnode)->conss[c] !=
NULL);
499assert((*reoptnode)->conss[c]->vals !=
NULL);
500assert((*reoptnode)->conss[c]->vars !=
NULL);
508(*reoptnode)->nconss = 0;
509(*reoptnode)->consssize = 0;
510(*reoptnode)->conss =
NULL;
514 if( (*reoptnode)->childids !=
NULL)
517(*reoptnode)->nchilds = 0;
518(*reoptnode)->allocchildmem = 0;
519(*reoptnode)->childids =
NULL;
523 if( (*reoptnode)->dualredscur !=
NULL)
525assert((*reoptnode)->dualredscur->varssize > 0);
530(*reoptnode)->dualredscur =
NULL;
534 if( (*reoptnode)->dualredsnex !=
NULL)
536assert((*reoptnode)->dualredsnex->varssize > 0);
541(*reoptnode)->dualredsnex =
NULL;
545 if((*reoptnode)->varboundtypes !=
NULL)
547assert((*reoptnode)->varssize > 0);
549(*reoptnode)->varboundtypes =
NULL;
553 if((*reoptnode)->varbounds !=
NULL)
555assert((*reoptnode)->varssize > 0);
557(*reoptnode)->varbounds =
NULL;
561 if((*reoptnode)->vars !=
NULL)
563assert((*reoptnode)->varssize > 0);
565(*reoptnode)->vars =
NULL;
568(*reoptnode)->varssize = 0;
571 if((*reoptnode)->afterdualvarboundtypes !=
NULL)
573assert((*reoptnode)->afterdualvarssize > 0);
575(*reoptnode)->afterdualvarboundtypes =
NULL;
579 if((*reoptnode)->afterdualvarbounds !=
NULL)
581assert((*reoptnode)->afterdualvarssize > 0);
583(*reoptnode)->afterdualvarbounds =
NULL;
587 if((*reoptnode)->afterdualvars !=
NULL)
589assert((*reoptnode)->afterdualvarssize > 0);
591(*reoptnode)->afterdualvars =
NULL;
594(*reoptnode)->afterdualvarssize = 0;
597(*reoptnode) =
NULL;
610assert(reoptnode !=
NULL);
612assert(blkmem !=
NULL);
615 if( reoptnode->
nconss> 0 )
620 for(
intc = 0; c < reoptnode->
nconss; ++c )
622 if( !reoptnode->
conss[c]->linear )
624assert(reoptnode->
conss[c]->boundtypes !=
NULL);
669reoptnode->
nvars= 0;
688assert(reopttree !=
NULL);
689assert(id < reopttree->reoptnodessize);
717assert(soltree !=
NULL);
725soltree->
nsols[s] = 0;
755assert(reopt !=
NULL);
758assert(solnode !=
NULL);
759assert(blkmem !=
NULL);
761child = (*solnode)->
child;
764 while( child !=
NULL)
767assert(child !=
NULL);
774 if( (*solnode)->sol !=
NULL)
793assert(reopt !=
NULL);
797assert(blkmem !=
NULL);
827assert(blkmem !=
NULL);
828assert(curnode !=
NULL);
829assert(child !=
NULL&& *child ==
NULL);
833*child = curnode->
child;
836 if( *child ==
NULL)
843solnode->
father= curnode;
846solnode->
value= val;
848assert(var !=
NULL);
855curnode->
child= *child;
857#ifdef SCIP_MORE_DEBUG 859(
void*) solnode->sibling);
865 while( *child !=
NULL)
867#ifdef SCIP_MORE_DEBUG 868 SCIPsetDebugMsg(
set,
"-> check %p: father=%p, value=%g, sibling=%p\n", (
void*) *child, (
void*) (*child)->
father,
869(*child)->
value, (
void*) (*child)->sibling);
876 if( (*child)->sibling ==
NULL)
882solnode->
father= curnode;
884solnode->
value= val;
886assert(var !=
NULL);
896(*child)->sibling = solnode;
898#ifdef SCIP_MORE_DEBUG 900(
void*) solnode->sibling);
907#ifdef SCIP_MORE_DEBUG 909 SCIPsetDebugMsg(
set,
" before switching: node %p witch child=%p, sibling=%p, sol=%p, value=%g\n",
910(
void*) (*child), (
void*) (*child)->child, (
void*) (*child)->sibling, (
void*) (*child)->sol,
913(
void*) solnode, (
void*) solnode->child, (
void*) solnode->sibling, (
void*) solnode->sol,
917solnode->child = (*child)->child;
918(*child)->child =
NULL;
921solnode->value = (*child)->value;
922(*child)->value = val;
926solnode->sol = (*child)->sol;
927(*child)->sol =
NULL;
928#ifdef SCIP_MORE_DEBUG 929 SCIPsetDebugMsg(
set,
" after switching: node %p witch child=%p, sibling=%p, sol=%p, value=%g\n",
930(
void*) (*child), (
void*) (*child)->child, (
void*) (*child)->sibling, (
void*) (*child)->sol,
933(
void*) solnode, (
void*) solnode->child, (
void*) solnode->sibling, (
void*) solnode->sol,
953solnode->
father= curnode;
956solnode->
value= val;
958assert(var !=
NULL);
964(*child)->sibling = solnode;
967#ifdef SCIP_MORE_DEBUG 969(
void*) solnode->sibling);
975*child = (*child)->sibling;
980solnode = curnode->
child;
981assert(solnode !=
NULL);
1012assert(reopt !=
NULL);
1014assert(stat !=
NULL);
1015assert(origprimal !=
NULL);
1016assert(blkmem !=
NULL);
1017assert(vars !=
NULL);
1018assert(sol !=
NULL);
1019assert(solnode !=
NULL);
1025 if(
set->reopt_savesols > 0 )
1032 for(
intvarid = 0; varid < nvars; ++varid )
1042assert(child !=
NULL);
1048 if( (*added || bestsol) && !purelp )
1057cursolnode->
sol= copysol;
1068assert(cursolnode->
sol!=
NULL);
1073(*solnode) = cursolnode;
1086assert(node !=
NULL);
1096child = node->
child;
1099 while( child !=
NULL)
1123assert(reopttree !=
NULL);
1124assert(id < reopttree->reoptnodessize);
1179assert(reopttree !=
NULL);
1181assert(blkmem !=
NULL);
1191 for(
unsigned int id= 1;
id< reopttree->
reoptnodessize; ++id )
1224assert(reopttree !=
NULL);
1231 for(
unsigned int id= 0;
id< reopttree->
reoptnodessize; ++id )
1259assert(reopttree !=
NULL);
1260assert(blkmem !=
NULL);
1284assert(reopt !=
NULL);
1285assert(blkmem !=
NULL);
1294reopt->
dualreds->varssize = size;
1297 else if( reopt->
dualreds->varssize < size )
1303reopt->
dualreds->varssize = newsize;
1318assert(reopt !=
NULL);
1319assert(blkmem !=
NULL);
1357assert(reopt !=
NULL);
1401assert(reopt !=
NULL);
1402assert(blkmem !=
NULL);
1403assert(node !=
NULL);
1404assert(0 <
id&& id < reopt->reopttree->reoptnodessize);
1411 if( nconsprops > 0 || npropprops > 0 )
1423assert(nvars + naddedbndchgs <= reopt->reopttree->reoptnodes[
id]->varssize);
1427*transintoorig =
TRUE;
1455assert(reopt !=
NULL);
1456assert(blkmem !=
NULL);
1457assert(node !=
NULL);
1458assert(0 <
id&& id < reopt->reopttree->reoptnodessize);
1510 if( nbranchvars > 0 )
1511*transintoorig =
TRUE;
1513 SCIPsetDebugMsg(
set,
" -> save %d bound changes after dual reductions\n", nbranchvars);
1535assert(reopt !=
NULL);
1537assert(lp !=
NULL);
1538assert(blkmem !=
NULL);
1543 for(
int r= 0;
r< nlprows; ++
r)
1576 for(
intc = 0; c < ncutvars; ++c )
1582assert(cutvars[c] !=
NULL);
1590 if( cutvars[c] !=
NULL)
1596assert(cutvars[c] !=
NULL);
1605cutvals[c] = cutvals[c]/scalar;
1629assert(reopt !=
NULL);
1630assert(0 <
id&& id < reopt->reopttree->reoptnodessize);
1672 unsigned int* parentid,
1676assert(reopt !=
NULL);
1686 intnbranchings = 0;
1690 if(
set->reopt_saveprop )
1695(*nbndchgs) = (*nbndchgs) + nbranchings + nconsprop + npropprops;
1733 unsigned intparentid,
1734 unsigned intchildid
1739assert(reopttree !=
NULL);
1740assert(blkmem !=
NULL);
1766 unsigned intnodeid,
1767 unsigned intparentid
1770 unsigned intchildid;
1773assert(reopt !=
NULL);
1774assert(blkmem !=
NULL);
1775assert(0 < nodeid && nodeid < reopt->reopttree->reoptnodessize);
1776assert(parentid < reopt->reopttree->reoptnodessize);
1789assert(0 < childid && childid < reopt->reopttree->reoptnodessize);
1831assert(reopttree !=
NULL);
1832assert(blkmem !=
NULL);
1833assert(id < reopttree->reoptnodessize);
1839 SCIPsetDebugMsg(
set,
"-> delete subtree induced by ID %u (hard remove = %u)\n",
id, exitsolve);
1844 unsigned intchildid;
1848assert(0 < childid && childid < reopttree->reoptnodessize);
1857 if( delnodeitself )
1879assert(reopt !=
NULL);
1880assert(node !=
NULL);
1881assert(id < reopt->reopttree->reoptnodessize);
1884assert(reoptnodes !=
NULL);
1885assert(reoptnodes[
id] !=
NULL);
1887 if( reoptnodes[
id]->childids !=
NULL&& reoptnodes[
id]->nchilds > 0 )
1890 unsigned intparentid = 0;
1895assert(parentid !=
id);
1896assert(reoptnodes[parentid] !=
NULL);
1897assert(reoptnodes[parentid]->childids !=
NULL&& reoptnodes[parentid]->nchilds);
1907 if( ndomchgs <= set->reopt_maxdiffofnodes )
1912 id, reoptnodes[
id]->nchilds);
1919 while( reoptnodes[parentid]->childids[c] !=
id)
1922assert(c < reoptnodes[parentid]->nchilds);
1925assert(reoptnodes[parentid]->childids[c] ==
id);
1929--reoptnodes[parentid]->
nchilds;
1952assert(reopttree !=
NULL);
1953assert(id < reopttree->reoptnodessize);
1958 unsigned intchildid;
1964 while( seenids < nchildids )
1968assert(childid < reopttree->reoptnodessize);
1997assert(reoptnode !=
NULL);
1998assert(blkmem !=
NULL);
2037assert(reopt !=
NULL);
2040assert(blkmem !=
NULL);
2041assert(node !=
NULL);
2042assert(transvars !=
NULL);
2045assert(node !=
NULL);
2047*localrestart =
FALSE;
2050assert(id < reopt->reopttree->reoptnodessize);
2056 if(
set->reopt_objsimdelay > -1 )
2069 for(
intv = 0; v < ntransvars; ++v )
2078assert(0 <= idx && idx < ntransvars);
2083sim += (oldcoef * newcoef);
2092*localrestart =
TRUE;
2105 SCIPsetDebugMsg(
set,
" -> local similarity: %.4f%s\n", sim, *localrestart ?
" (solve subproblem from scratch)":
"");
2120 unsigned intparentid
2125assert(reopttree !=
NULL);
2126assert(node !=
NULL);
2127assert(parent !=
NULL);
2128assert(1 <=
id&& id < reopttree->reoptnodessize);
2130assert(parentid < reopttree->reoptnodessize);
2131assert(parentid == 0 || reopttree->
reoptnodes[parentid] !=
NULL);
2169assert(nbranchvars <= reopttree->reoptnodes[
id]->varssize);
2173assert(nbranchvars <= reopttree->reoptnodes[
id]->varssize);
2195assert(reoptconsdata !=
NULL);
2196assert(cons !=
NULL);
2199allocbuffervals =
FALSE;
2200reoptconsdata->linear =
TRUE;
2210reoptconsdata->varssize = reoptconsdata->nvars;
2213reoptconsdata->boundtypes =
NULL;
2216assert(conshdlr !=
NULL);
2232allocbuffervals =
TRUE;
2234 for(
intv = 0; v < reoptconsdata->nvars; ++v )
2237reoptconsdata->lhs = 1.0;
2246allocbuffervals =
TRUE;
2248 for(
intv = 0; v < reoptconsdata->nvars; ++v )
2253reoptconsdata->lhs = 1.0;
2254reoptconsdata->rhs = 1.0;
2258reoptconsdata->rhs = 1.0;
2261reoptconsdata->lhs = 1.0;
2277assert(vars !=
NULL);
2278assert(vals !=
NULL);
2281 for(
intv = 0; v < reoptconsdata->nvars; ++v )
2286assert(vars[v] !=
NULL);
2288reoptconsdata->vars[v] = vars[v];
2289reoptconsdata->vals[v] = vals[v];
2295reoptconsdata->vals[v] *= scalar;
2298reoptconsdata->lhs -= constant;
2300reoptconsdata->rhs -= constant;
2304 if( allocbuffervals )
2327assert(reoptconsdata !=
NULL);
2328assert(cons !=
NULL);
2331reoptconsdata->linear =
FALSE;
2334assert(conshdlr !=
NULL);
2339 SCIPerrorMessage(
"Cannot handle constraints of type <%s> in saveConsBounddisjuction.\n",
2354reoptconsdata->varssize = reoptconsdata->nvars;
2359 for(
intv = 0; v < reoptconsdata->nvars; ++v )
2364assert(reoptconsdata->vars[v] !=
NULL);
2370reoptconsdata->vals[v] -= constant;
2371reoptconsdata->vals[v] *= scalar;
2396assert(node !=
NULL);
2397assert(reopttree !=
NULL);
2398assert(id < reopttree->reoptnodessize);
2417 for(
intc = nconss; c < naddedconss; ++c )
2456 else if( strcmp(
"reopt_dual",
SCIPconsGetName(addedcons[c])) == 0 )
2489assert(reopt !=
NULL);
2491assert(id < reopt->reopttree->reoptnodessize);
2493assert(node !=
NULL);
2494assert(blkmem !=
NULL);
2499nbndchgs = reopt->
dualreds->nvars;
2513&nbndchgs, reopt->
dualreds->varssize);
2514assert(nbndchgs <= reopt->dualreds->varssize);
2516reopt->
dualreds->nvars = nbndchgs;
2520 for(
intv = 0; v < nbndchgs; ++v )
2526reopt->
dualreds->vals[v] = (reopt->
dualreds->vals[v] - constant) / scalar;
2532assert(nbndchgs > 0);
2544cons_is_next =
FALSE;
2555reopt->
dualreds->vars, nbndchgs) );
2557reopt->
dualreds->vals, nbndchgs) );
2559reopt->
dualreds->boundtypes, nbndchgs) );
2569 SCIPsetDebugMsg(
set,
" -> save dual information of type 1: node %lld, nvars %d, constype %d\n",
2581reopt->
dualreds->vars, nbndchgs) );
2583reopt->
dualreds->vals, nbndchgs) );
2585reopt->
dualreds->boundtypes, nbndchgs) );
2593 SCIPsetDebugMsg(
set,
" -> save dual information of type 2: node %lld, nvars %d, constype %d\n",
2618 unsigned intparentid = 0;
2620assert(reopt !=
NULL);
2622assert(blkmem !=
NULL);
2623assert(node !=
NULL);
2625 if(
set->reopt_maxsavednodes == 0 )
2646assert(!isrootnode);
2649assert(id < reopt->reopttree->reoptnodessize);
2659assert(parent !=
NULL);
2671assert(parent !=
NULL);
2680assert(parentid == 0
2698transintoorig =
FALSE;
2701 if(
set->reopt_usecuts )
2707 if( saveafterdual )
2714 if(
set->reopt_saveprop )
2720 if( transintoorig )
2730#ifdef SCIP_MORE_DEBUG 2759 switch( reopttype )
2762 if(
set->reopt_shrinkinner )
2782 if(
set->reopt_reducetofrontier )
2796 if(
set->reopt_reducetofrontier )
2846 if(
set->reopt_usecuts )
2851 switch( reopttype )
2880 SCIPsetDebugMsg(
set,
" -> nvars: 0, ncons: 0, parentID: -, reopttype: %d, lowerbound: %g\n", reopttype,
2894 if(
set->reopt_reducetofrontier )
2913 SCIPsetDebugMsg(
set,
" -> nvars: 0, ncons: 0, parentID: -, reopttype: %d, lowerbound: %g\n", reopttype,
2927 if(
set->reopt_reducetofrontier )
2946 SCIPsetDebugMsg(
set,
" -> nvars: 0, ncons: 0, parentID: -, reopttype: %d, lowerbound:%g \n", reopttype,
3007assert(
id>= 1 && id < reopt->reopttree->reoptnodessize);
3008assert(!isrootnode);
3015assert(parent !=
NULL);
3033 if( saveafterdual )
3058 if(
set->reopt_usecuts )
3074 SCIPsetDebugMsg(
set,
" -> nvars: %d, ncons: %d, parentID: %u, reopttype: %d, lowerbound: %g\n",
3078#ifdef SCIP_MORE_DEBUG 3100 switch( reopttype )
3175assert(reopt !=
NULL);
3193assert(reoptnode !=
NULL);
3194assert(blkmem !=
NULL);
3254assert(reopt !=
NULL);
3255assert(blkmem !=
NULL);
3257assert(vars !=
NULL);
3258assert(vals !=
NULL);
3259assert(nbinvars + nintvars == nvars);
3266reoptconsdata =
NULL;
3271reoptconsdata = reopt->
glbconss[nglbconss];
3276reoptconsdata->varssize = (int)(nbinvars+2*nintvars);
3277reoptconsdata->nvars = 0;
3281assert(reopt->
glbconss[nglbconss]->nvars == 0);
3282assert(reopt->
glbconss[nglbconss]->varssize > 0);
3284reoptconsdata = reopt->
glbconss[nglbconss];
3286 if( reoptconsdata->varssize < nbinvars+2*nintvars )
3289(
int)(nbinvars+2*nintvars)) );
3291(
int)(nbinvars+2*nintvars)) );
3293(
int)(nbinvars+2*nintvars)) );
3294reoptconsdata->varssize = (int)(nbinvars+2*nintvars);
3297assert(reoptconsdata !=
NULL);
3299reoptconsdata->lhs = 1.0;
3301reoptconsdata->linear =
FALSE;
3304 for(
intv = 0; v < nvars; ++v )
3306assert(nvarsadded < reoptconsdata->varssize);
3307assert(vars[v] !=
NULL);
3321reoptconsdata->vars[nvarsadded] = vars[v];
3326reoptconsdata->vals[nvarsadded] = 0.0;
3333reoptconsdata->vals[nvarsadded] = 1.0;
3340assert(boundtypes !=
NULL);
3342reoptconsdata->vals[nvarsadded] = vals[v];
3354reoptconsdata->vars[nvarsadded] = vars[v];
3370reoptconsdata->vals[nvarsadded] = ubglb - 1.0;
3378reoptconsdata->vals[nvarsadded] = lbglb + 1.0;
3382 else if( boundtypes !=
NULL)
3391reoptconsdata->vals[nvarsadded] = roundedval + 1.0;
3399reoptconsdata->vals[nvarsadded] = roundedval - 1.0;
3412reoptconsdata->vals[nvarsadded] = roundedval - 1.0;
3417reoptconsdata->vars[nvarsadded] = vars[v];
3418reoptconsdata->vals[nvarsadded] = roundedval + 1.0;
3424assert(nvars <= nvarsadded);
3425assert(nvarsadded == nbinvars + 2 * nintvars);
3427reoptconsdata->nvars = nvarsadded;
3443assert(reopt !=
NULL);
3444assert(node !=
NULL);
3465 if( allocmem < nbranchvars )
3470allocmem = nbranchvars;
3478 for(
intv = 0; v < nbranchvars; ++v )
3485assert(nbinvars + nintvars == nbranchvars);
3513assert(reopttree !=
NULL);
3514assert(blkmem !=
NULL);
3515assert(id1 < reopttree->reoptnodessize);
3516assert(id2 < reopttree->reoptnodessize);
3530 for(
intc = 0; c < nchilds_id1; ++c )
3535 for(
intk = 0; k < nchilds_id2; ++k )
3573assert(reopt !=
NULL);
3575assert(stat !=
NULL);
3576assert(transprob !=
NULL);
3577assert(tree !=
NULL);
3578assert(lp !=
NULL);
3579assert(branchcand !=
NULL);
3580assert(eventqueue !=
NULL);
3581assert(cliquetable !=
NULL);
3582assert(node !=
NULL);
3583assert(blkmem !=
NULL);
3586assert(reopttree !=
NULL);
3587assert(id < reopttree->reoptnodessize);
3590assert(reoptnode !=
NULL);
3597 for(
intv = 0; v < reoptnode->
nvars; ++v )
3606var = reoptnode->
vars[v];
3635#ifdef SCIP_MORE_DEBUG 3691#ifdef SCIP_MORE_DEBUG 3698nvars = reoptnode->
nvars;
3702++reoptnode->
nvars;
3746assert(reopt !=
NULL);
3748assert(id < reopt->reopttree->reoptnodessize);
3754assert(stat !=
NULL);
3755assert(blkmem !=
NULL);
3756assert(transprob !=
NULL);
3757assert(origprob !=
NULL);
3758assert(tree !=
NULL);
3759assert(lp !=
NULL);
3760assert(branchcand !=
NULL);
3761assert(eventqueue !=
NULL);
3762assert(node !=
NULL);
3786assert(!reoptconsdata->linear);
3787assert(reoptconsdata->vars !=
NULL);
3788assert(reoptconsdata->vals !=
NULL);
3789assert(reoptconsdata->boundtypes !=
NULL);
3791var = reoptconsdata->vars[0];
3792newbound = reoptconsdata->vals[0];
3793boundtype = reoptconsdata->boundtypes[0];
3804newbound = reoptconsdata->vals[0] - 1.0;
3812newbound = reoptconsdata->vals[0] + 1.0;
3850assert(!reoptconsdata->linear);
3851assert(reoptconsdata->vars !=
NULL);
3852assert(reoptconsdata->vals !=
NULL);
3853assert(reoptconsdata->boundtypes !=
NULL);
3859 for(
intv = 0; v < reoptconsdata->nvars; ++v )
3882 SCIPerrorMessage(
"Variable <%s> has to be either binary, (implied) integer, or continuous.\n",
3897 if( reoptconsdata->nvars == nbinvars )
3899 for(
intv = 0; v < reoptconsdata->nvars; ++v )
3901consvars[v] = reoptconsdata->vars[v];
3902consval = reoptconsdata->vals[v];
3926assert(nintvars > 0 || ncontvars > 0);
3933 for(
intv = 0; v < reoptconsdata->nvars; ++v )
3935consvars[v] = reoptconsdata->vars[v];
3936consvals[v] = reoptconsdata->vals[v];
3937consboundtypes[v] = reoptconsdata->boundtypes[v];
3971consvals,
FALSE,
FALSE,
TRUE,
FALSE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
TRUE) );
3979#ifdef SCIP_DEBUG_CONSS 4015assert(reopt !=
NULL);
4017assert(stat !=
NULL);
4018assert(transprob !=
NULL);
4019assert(origprob !=
NULL);
4020assert(tree !=
NULL);
4021assert(lp !=
NULL);
4022assert(branchcand !=
NULL);
4023assert(eventqueue !=
NULL);
4024assert(cliquetable !=
NULL);
4025assert(node !=
NULL);
4026assert(blkmem !=
NULL);
4029assert(reopttree !=
NULL);
4030assert(0 <
id&& id < reopttree->reoptnodessize);
4033assert(reoptnode !=
NULL);
4040 for(
intv = 0; v < reoptnode->
dualredscur->nvars; ++v )
4049boundtype = reoptnode->
dualredscur->boundtypes[v];
4079#ifdef SCIP_MORE_DEBUG 4089pos = reoptnode->
nvars;
4091reoptnode->
vars[pos] = var;
4099++reoptnode->
nvars;
4103 if( updatedualconss )
4143assert(reopt !=
NULL);
4145assert(stat !=
NULL);
4146assert(transprob !=
NULL);
4147assert(origprob !=
NULL);
4148assert(tree !=
NULL);
4149assert(lp !=
NULL);
4150assert(branchcand !=
NULL);
4151assert(eventqueue !=
NULL);
4152assert(cliquetable !=
NULL);
4153assert(node !=
NULL);
4154assert(perm !=
NULL);
4155assert(vars !=
NULL);
4156assert(vals !=
NULL);
4157assert(boundtypes !=
NULL);
4159assert(blkmem !=
NULL);
4160assert(0 <
id&& id < reopt->reopttree->reoptnodessize);
4168assert(reopttree !=
NULL);
4171assert(reoptnode !=
NULL);
4176nbndchgs =
MIN(negbndchg, nvars);
4179 for(
intv = 0; v < nbndchgs; ++v )
4181var = vars[perm[v]];
4182val = vals[perm[v]];
4183boundtype = boundtypes[perm[v]];
4189 if( v == nbndchgs-1 )
4217#ifdef SCIP_MORE_DEBUG 4240assert(reopt !=
NULL);
4243assert(stat !=
NULL);
4244assert(blkmem !=
NULL);
4245assert(node !=
NULL);
4246assert(0 <
id&& id < reopt->reopttree->reoptnodessize);
4260assert(reoptconsdata !=
NULL);
4261assert(reoptconsdata->nvars > 0);
4262assert(reoptconsdata->varssize >= reoptconsdata->nvars);
4274 if( reoptconsdata->linear )
4277reoptconsdata->lhs, reoptconsdata->rhs,
FALSE,
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
TRUE) );
4281assert(reoptconsdata->boundtypes !=
NULL);
4283reoptconsdata->vals,
FALSE,
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
TRUE) );
4285#ifdef SCIP_DEBUG_CONSS 4301assert(reopt !=
NULL);
4331 unsigned int* cutoffchilds;
4332 intncutoffchilds = 0;
4333 unsigned int* redchilds;
4337assert(reopt !=
NULL);
4339assert(id < reopt->reopttree->reoptnodessize);
4355 for( c = 0; c < reoptnode->
nchilds; ++c )
4360 int* redundantvars;
4362 unsigned intchildid;
4368childid = reoptnode->
childids[c];
4369assert(childid < reopt->reopttree->reoptnodessize);
4371assert(child !=
NULL);
4372#ifdef SCIP_MORE_DEBUG 4375 if( child->
nvars> 0 )
4380 for(
intv = 0; v < child->
nvars&& !cutoff; ++v )
4388transvar = child->
vars[v];
4401 SCIPsetDebugMsg(
set,
" -> <%s> is fixed to %g, can not change bound to %g -> cutoff\n",
4411 SCIPsetDebugMsg(
set,
" -> <%s> is already fixed to %g -> redundant bound change\n",
4414redundantvars[nredundantvars] = v;
4419 if( !cutoff && nredundantvars > 0 )
4421 for(
intv = 0; v < nredundantvars; ++v )
4424child->
vars[redundantvars[v]] = child->
vars[child->
nvars-1];
4434 else if( child->
nconss== 0 )
4442cutoffchilds[ncutoffchilds] = childid;
4445 else if( redundant )
4447redchilds[nredchilds] = childid;
4452 SCIPsetDebugMsg(
set,
"-> found %d redundant and %d infeasible nodes\n", nredchilds, ncutoffchilds);
4455 while( ncutoffchilds > 0 )
4462 while( reoptnode->
childids[c] != cutoffchilds[ncutoffchilds-1] && c < reoptnode->nchilds )
4464assert(reoptnode->
childids[c] == cutoffchilds[ncutoffchilds-1]);
4475 while( nredchilds > 0 )
4479 while( reoptnode->
childids[c] != redchilds[nredchilds-1] && c < reoptnode->nchilds )
4481assert(reoptnode->
childids[c] == redchilds[nredchilds-1]);
4510 for(
intcc = 0; cc < ncc; ++cc )
4544assert(reopttree !=
NULL);
4545assert(id < reopttree->reoptnodessize);
4562assert(reopt !=
NULL);
4563assert(id < reopt->reopttree->reoptnodessize);
4569 unsigned intchildid;
4572assert(childid < reopt->reopttree->reoptnodessize);
4588 unsigned int* leaves,
4593assert(reopt !=
NULL);
4594assert(leavessize > 0 && leaves !=
NULL);
4595assert((*nleaves) >= 0);
4596assert(id < reopt->reopttree->reoptnodessize);
4601 unsigned intchildid;
4603assert(*nleaves <= leavessize);
4606assert(childid < reopt->reopttree->reoptnodessize);
4620(*nleaves) += nleaves2;
4636assert(reopt !=
NULL);
4638assert(blkmem !=
NULL);
4661assert(reopt !=
NULL);
4664assert(blkmem !=
NULL);
4695assert(reopt !=
NULL);
4697assert(blkmem !=
NULL);
4698assert(origvars !=
NULL);
4699assert(norigvars >= 0);
4705 if( reopt->
nobjvars< norigvars )
4707 for(
inti = 0; i < reopt->
run-1; ++i )
4710 for(
intv = reopt->
nobjvars-1; v < norigvars; ++v )
4711reopt->
objs[i][v] = 0.0;
4718 for(
intv = 0; v < norigvars; ++v )
4730 for(
inti = 0; i < reopt->
run; ++i )
4733 for(
intj = reopt->
nobjvars; j < newsize; ++j )
4734reopt->
objs[i][j] = 0.0;
4738assert(0 <= probidx && probidx < reopt->nobjvars);
4748 if( reopt->
firstobj== -1 && reopt->
objs[reopt->
run-1][probidx] != 0 )
4753 if( reopt->
run-1 >= 1 )
4785assert(perm !=
NULL);
4786assert(vars !=
NULL);
4787assert(bounds !=
NULL);
4788assert(boundtypes !=
NULL);
4794 for(
intv = 0; v < nvars; ++v )
4835assert(reopt !=
NULL);
4836assert(sol !=
NULL);
4837assert(blkmem !=
NULL);
4839assert(stat !=
NULL);
4840assert(vars !=
NULL);
4853 for(
intv = 0; v < nvars; ++v )
4856assert(nbinvars + nintvars ==
w);
4867origvars[v] = vars[v];
4868assert(origvars[v] !=
NULL);
4896#undef SCIPreoptGetNRestartsGlobal 4897#undef SCIPreoptGetNRestartsLocal 4898#undef SCIPreoptGetNTotalRestartsLocal 4899#undef SCIPreoptGetFirstRestarts 4900#undef SCIPreoptGetLastRestarts 4901#undef SCIPreoptGetNFeasNodes 4902#undef SCIPreoptGetNTotalFeasNodes 4903#undef SCIPreoptGetNPrunedNodes 4904#undef SCIPreoptGetNTotalPrunedNodes 4905#undef SCIPreoptGetNCutoffReoptnodes 4906#undef SCIPreoptGetNTotalCutoffReoptnodes 4907#undef SCIPreoptGetNInfNodes 4908#undef SCIPreoptGetNTotalInfNodes 4909#undef SCIPreoptGetNInfSubtrees 4917assert(reopt !=
NULL);
4927assert(reopt !=
NULL);
4937assert(reopt !=
NULL);
4947assert(reopt !=
NULL);
4957assert(reopt !=
NULL);
4967assert(reopt !=
NULL);
4977assert(reopt !=
NULL);
4987assert(reopt !=
NULL);
4997assert(reopt !=
NULL);
5007assert(reopt !=
NULL);
5017assert(reopt !=
NULL);
5027assert(reopt !=
NULL);
5037assert(reopt !=
NULL);
5051assert(reopt !=
NULL);
5056(*reopt)->simtolastobj = -2.0;
5057(*reopt)->simtofirstobj = -2.0;
5058(*reopt)->firstobj = -1;
5059(*reopt)->currentnode = -1;
5060(*reopt)->lastbranched = -1;
5061(*reopt)->dualreds =
NULL;
5062(*reopt)->glbconss =
NULL;
5063(*reopt)->nglbconss = 0;
5064(*reopt)->allocmemglbconss = 0;
5065(*reopt)->ncheckedsols = 0;
5066(*reopt)->nimprovingsols = 0;
5067(*reopt)->noptsolsbyreoptsol = 0;
5068(*reopt)->nglbrestarts = 0;
5069(*reopt)->nlocrestarts = 0;
5070(*reopt)->ntotallocrestarts = 0;
5071(*reopt)->firstrestart = -1;
5072(*reopt)->lastrestart = 0;
5073(*reopt)->nobjvars = 0;
5074(*reopt)->objhaschanged =
FALSE;
5075(*reopt)->consadded =
FALSE;
5076(*reopt)->addedconss =
NULL;
5077(*reopt)->naddedconss = 0;
5078(*reopt)->addedconsssize = 0;
5079(*reopt)->glblb =
NULL;
5080(*reopt)->glbub =
NULL;
5081(*reopt)->nactiveconss = 0;
5082(*reopt)->nmaxactiveconss = 0;
5083(*reopt)->activeconss =
NULL;
5084(*reopt)->activeconssset =
NULL;
5090 for(
inti = 0; i < (*reopt)->runsize; ++i )
5092(*reopt)->objs[i] =
NULL;
5093(*reopt)->prevbestsols[i] =
NULL;
5094(*reopt)->varhistory[i] =
NULL;
5116eventInitsolReopt, eventExitsolReopt,
NULL, eventExecReopt,
NULL) );
5118assert(eventhdlr !=
NULL);
5158assert(reopt !=
NULL);
5159assert(*reopt !=
NULL);
5162assert(blkmem !=
NULL);
5173 for(
intp = (*reopt)->run-1; p >= 0; --p )
5175 if( (*reopt)->soltree->sols[p] !=
NULL)
5178(*reopt)->soltree->sols[p] =
NULL;
5181 if(
set->reopt_storevarhistory && (*reopt)->varhistory[p] !=
NULL)
5189(*reopt)->varhistory[p] =
NULL;
5195 if(
set->reopt_sepabestsol && (*reopt)->prevbestsols[p] !=
NULL)
5200 if( (*reopt)->objs[p] !=
NULL)
5210 if( (*reopt)->dualreds !=
NULL)
5212 if( (*reopt)->dualreds->varssize > 0 )
5214assert(!(*reopt)->dualreds->linear);
5220(*reopt)->dualreds =
NULL;
5224 if( (*reopt)->glbconss !=
NULL&& (*reopt)->allocmemglbconss > 0 )
5227 for(
intc = 0; c < (*reopt)->allocmemglbconss; ++c )
5229 if( (*reopt)->glbconss[c] !=
NULL)
5231 if( (*reopt)->glbconss[c]->varssize > 0 )
5236(*reopt)->glbconss[c]->varssize = 0;
5239--(*reopt)->nglbconss;
5242assert((*reopt)->nglbconss == 0);
5245(*reopt)->allocmemglbconss = 0;
5252 if( (*reopt)->activeconssset !=
NULL)
5258 if( (*reopt)->glblb !=
NULL)
5262(*reopt)->glblb =
NULL;
5263(*reopt)->glbub =
NULL;
5266assert((*reopt)->glbub ==
NULL);
5284assert(reopt !=
NULL);
5285assert(node !=
NULL);
5288assert(id < reopt->reopttree->reoptnodessize);
5319assert(reopt !=
NULL);
5321assert(sol !=
NULL);
5337 SCIP_CALL(
soltreeAddSol(reopt,
set, stat, origprimal, blkmem, vars, sol, &solnode, nvars, bestsol, added) );
5341assert(solnode !=
NULL);
5345reopt->
soltree->
sols[run-1][insertpos] = solnode;
5368assert(reopt !=
NULL);
5369assert(reopt->
run-1 >= 0);
5370assert(sol !=
NULL);
5371assert(blkmem !=
NULL);
5373assert(stat !=
NULL);
5374assert(origprimal !=
NULL);
5380 if(
set->reopt_sepabestsol )
5398assert(reopt !=
NULL);
5400assert(blkmem !=
NULL);
5401assert(origvars !=
NULL);
5429assert(reopt !=
NULL);
5440assert(reopt !=
NULL);
5450assert(reopt !=
NULL);
5461assert(reopt !=
NULL);
5472assert(reopt !=
NULL);
5473assert(0 < run && run <= reopt->runsize);
5488assert(reopt !=
NULL);
5490 for(
int r= 0;
r< reopt->
run; ++
r)
5505assert(reopt !=
NULL);
5506assert(run > 0 && run <= reopt->run);
5507assert(sols !=
NULL);
5509assert(solssize > 0);
5510assert(nsols !=
NULL);
5513 for(
ints = 0; s < reopt->
soltree->
nsols[run-1]; ++s )
5519 if( solssize < (*nsols) )
5523 for(
ints = 0; s < reopt->
soltree->
nsols[run-1]; ++s )
5543assert(reopt !=
NULL);
5576assert(reopt !=
NULL);
5578assert(blkmem !=
NULL);
5579assert(transvars !=
NULL);
5580assert(ntransvars >= 0);
5581assert(restart !=
NULL);
5589 if( reopt->
run> 1 &&
set->reopt_objsimdelay > -1.0 )
5600 SCIPsetDebugMsg(
set,
"-> restart reoptimization (objective functions are not similar enough)\n");
5612 SCIPsetDebugMsg(
set,
"-> restart reoptimization (found last %d optimal solutions by <reoptsols>)\n",
5637assert(reopt !=
NULL);
5646assert(reopt !=
NULL);
5660assert(reopt !=
NULL);
5661assert(run1 > 0 && run1 <= reopt->run);
5662assert(run2 > 0 && run2 <= reopt->run);
5663assert(origvars !=
NULL);
5664assert(norigvars >= 0);
5674assert(reopt !=
NULL);
5677 if( reopt->
run-2 < 0 )
5689assert(reopt !=
NULL);
5691assert(id < reopt->reopttree->reoptnodessize);
5704assert(reopt !=
NULL);
5705assert(0 < run && run <= reopt->runsize);
5707 returnreopt->
objs[run-1][idx];
5719assert(reopt !=
NULL);
5720assert(0 < run && run <= reopt->run);
5732assert(reopt !=
NULL);
5734assert(blkmem !=
NULL);
5742assert(cons !=
NULL);
5744#ifdef SCIP_MORE_DEBUG 5766assert(reopt !=
NULL);
5773 while( child !=
NULL)
5788assert(reopt !=
NULL);
5794assert(id < reopt->reopttree->reoptnodessize);
5800assert(0 <
id&& id < reopt->reopttree->reoptnodessize);
5813#undef SCIPreoptnodeGetNVars 5814#undef SCIPreoptnodeGetNConss 5815#undef SCIPreoptnodeGetNDualBoundChgs 5816#undef SCIPreoptnodeGetNChildren 5817#undef SCIPreoptnodeGetLowerbound 5818#undef SCIPreoptnodeGetType 5825assert(reoptnode !=
NULL);
5835assert(reoptnode !=
NULL);
5837 returnreoptnode->
nconss;
5845assert(reoptnode !=
NULL);
5858assert(reoptnode !=
NULL);
5868assert(reoptnode !=
NULL);
5878assert(reoptnode !=
NULL);
5894assert(reoptnode !=
NULL);
5895assert(vars !=
NULL);
5896assert(bounds !=
NULL);
5897assert(boundtypes !=
NULL);
5898assert(nvars !=
NULL);
5899assert(nconss !=
NULL);
5901(*nconss) = reoptnode->
nconss;
5903 if( mem < *nconss )
5906 for(
intc = 0; c < *nconss; ++c )
5908assert(vars[c] !=
NULL);
5909assert(bounds[c] !=
NULL);
5911vars[c] = reoptnode->
conss[c]->vars;
5912bounds[c] = reoptnode->
conss[c]->vals;
5913boundtypes[c] = reoptnode->
conss[c]->boundtypes;
5914nvars[c] = reoptnode->
conss[c]->nvars;
5921 unsigned intparentid
5924assert(reoptnode !=
NULL);
5925assert(parentid <= 536870911);
5939assert(reopt !=
NULL);
5942assert(id < reopt->reopttree->reoptnodessize);
5950 unsigned intchildid;
5953assert(childid < reopt->reopttree->reoptnodessize);
5972assert(reopt !=
NULL);
5974assert(blkmem !=
NULL);
5975assert(node !=
NULL);
5977 if(
set->reopt_sepaglbinfsubtrees )
6000 inteffectiverootdepth
6005assert(reopt !=
NULL);
6007assert(blkmem !=
NULL);
6008assert(lp !=
NULL);
6009assert(node !=
NULL);
6057lowerbound =
MIN(lowerbound, cutoffbound);
6062isrootnode, lowerbound) );
6081 SCIPsetDebugMsg(
set,
" -> strong branched : %s\n", strongbranched ?
"yes":
"no");
6084 switch( eventtype )
6088assert(isfocusnode);
6117 if( strongbranched )
6188assert(isfocusnode);
6200 if( strongbranched )
6226 if( strongbranched )
6270assert(reopt !=
NULL);
6271assert(node !=
NULL);
6294allocmem = reopt->
dualreds->nvars + resizelength;
6299assert(reopt->
dualreds->varssize > 0);
6300assert(reopt->
dualreds->nvars >= 0);
6309newval = (newval - constant) / scalar;
6310oldval = (oldval - constant) / scalar;
6316 SCIPerrorMessage(
"cannot store equal bounds: old = %g, new = %g\n", oldval, newval);
6352 intndualbndchgs = 0;
6354assert(reopt !=
NULL);
6355assert(node !=
NULL);
6360ndualbndchgs = reopt->
dualreds->nvars;
6363 returnndualbndchgs;
6372 unsigned int* childs,
6380assert(reopt !=
NULL);
6381assert(childssize > 0 && childs !=
NULL);
6382assert(nchilds !=
NULL);
6392assert(id < reopt->reopttree->reoptnodessize);
6407 if( childssize < *nchilds )
6410 for(
intc = 0; c < *nchilds; ++c )
6421 unsigned int* leaves,
6428assert(reopt !=
NULL);
6429assert(leavessize > 0 && leaves !=
NULL);
6430assert((*nleaves) >= 0);
6439 if(
id== 0 && node !=
NULL)
6445assert(id < reopt->reopttree->reoptnodessize);
6448 for(
inti = 0; i < leavessize; ++i )
6454 unsigned intchildid;
6456assert(*nleaves + 1 <= leavessize);
6459assert(childid < reopt->reopttree->reoptnodessize);
6473(*nleaves) += nleaves2;
6494assert(reopt !=
NULL);
6496assert(blkmem !=
NULL);
6497assert(nleaves >= 0);
6498assert(nleaves == 0 || leaves !=
NULL);
6499assert(nchilds >= 0);
6500assert(nchilds == 0 || childs !=
NULL);
6501assert(nsiblings >= 0);
6502assert(nsiblings == 0 || siblings !=
NULL);
6504 SCIPsetDebugMsg(
set,
"save unprocessed nodes (%d leaves, %d children, %d siblings)\n", nleaves, nchilds, nsiblings);
6507 for(
intn = 0; n < nleaves; ++n )
6514 for(
intn = 0; n < nchilds; ++n )
6521 for(
intn = 0; n < nsiblings; ++n )
6546assert(reopt !=
NULL);
6547assert(stat !=
NULL);
6550 if( !
set->reopt_storevarhistory )
6555bestrun = reopt->
run-2;
6576 for(
intv = 0; v < nvars; ++v )
6581assert(transvar !=
NULL);
6588assert(0 <= idx && idx <= nvars);
6591 for(
intd = 0; d <= 1; ++d )
6615(d == 0 ?
"down":
"up"), avginference[d], avgcutoff[d]);
6632assert(reopt !=
NULL);
6633assert(stat !=
NULL);
6634assert(blkmem !=
NULL);
6637 if( !
set->reopt_storevarhistory )
6647 for(
intv = 0; v < nvars; ++v )
6654 for(
intv = 0; v < nvars; ++v )
6661assert(idx >= 0 && idx < nvars);
6664assert(transvar !=
NULL);
6683 intnrepresentatives,
6690assert(reopt !=
NULL);
6692assert(blkmem !=
NULL);
6693assert(representatives !=
NULL);
6694assert(nrepresentatives > 0);
6710 for(
int r= 0;
r< nrepresentatives; ++
r)
6714assert(1 <=
id&& id < reopttree->reoptnodessize);
6725 if( representatives[
r]->nvars > 0 )
6727assert(representatives[
r]->nvars <= representatives[
r]->varssize);
6729 for(
intv = 0; v < representatives[
r]->
nvars; ++v )
6736 if( representatives[
r]->nconss > 0 )
6738assert(representatives[
r]->nconss <= representatives[
r]->consssize);
6740 for(
intc = 0; c < representatives[
r]->
nconss; ++c )
6743representatives[
r]->
conss[c]->vals, representatives[
r]->
conss[c]->boundtypes,
6744representatives[
r]->
conss[c]->lhs, representatives[
r]->
conss[c]->rhs,
6745representatives[
r]->
conss[c]->nvars, representatives[
r]->
conss[c]->constype,
6746representatives[
r]->
conss[c]->linear) );
6767 SCIPsetDebugMsg(
set,
"-> new tree consists of %d nodes, the root has %d child nodes.\n",
6786assert(reopt !=
NULL);
6788assert(blkmem !=
NULL);
6789assert(consdata !=
NULL);
6790assert(dualreds !=
NULL);
6795consdata->boundtypes =
NULL;
6797consdata->varssize = dualreds->nvars;
6798consdata->nvars = dualreds->nvars;
6800consdata->linear =
TRUE;
6803consdata->lhs = 1.0;
6806 for(
intv = 0; v < consdata->nvars; ++v )
6808assert(consdata->vars[v] !=
NULL);
6814consdata->vals[v] = 1.0;
6826consdata->vals[v] = -1.0;
6827consdata->lhs -= 1.0;
6846assert(reopt !=
NULL);
6848assert(blkmem !=
NULL);
6849assert(consdata !=
NULL);
6850assert(dualreds !=
NULL);
6857consdata->varssize = dualreds->nvars;
6858consdata->nvars = dualreds->nvars;
6860consdata->linear =
FALSE;
6866 for(
intv = 0; v < consdata->nvars; ++v )
6870assert(consdata->vars[v] !=
NULL);
6879consdata->vals[v] =
MIN(consdata->vals[v]+1.0, glbbd);
6885consdata->vals[v] =
MAX(glbbd, consdata->vals[v]-1.0);
6900 int* ncreatedchilds,
6917assert(reopt !=
NULL);
6919assert(stat !=
NULL);
6920assert(blkmem !=
NULL);
6923assert(reopttree !=
NULL);
6926assert(reoptnodes !=
NULL);
6927assert(reoptnodes[0] !=
NULL);
6928assert(reoptnodes[0]->dualreds);
6931nchilds = reoptnodes[0]->
nchilds;
6933assert(reoptnodes[0]->dualredscur !=
NULL);
6936(*ncreatedchilds) = 0;
6946assert(reoptnodes[
id] ==
NULL|| reoptnodes[
id]->nvars == 0);
6959assert(reoptnodes[
id]->varssize >= nbndchgs);
6960assert(reoptnodes[
id]->nvars == 0);
6961assert(reoptnodes[
id]->vars !=
NULL);
6962assert(reoptnodes[
id]->varbounds !=
NULL);
6963assert(reoptnodes[
id]->varboundtypes !=
NULL);
6966 if( !
set->reopt_usesplitcons )
6968assert(perm ==
NULL);
6973 for( v = 0; v < nbndchgs; ++v )
6978++reoptnodes[id]->
nvars;
6981 if( !
set->reopt_usesplitcons )
6984assert(reoptnodes[
id]->nvars == reoptnodes[0]->dualredscur->
nvars);
6988assert(reoptnodes[0]->nchilds == 0);
6993++(*ncreatedchilds);
6995 if(
set->reopt_usesplitcons )
7003assert(*ncreatedchilds == 1);
7024consdata = reoptnodes[id]->
conss[0];
7027 for( v = 0; v < nbndchgs; ++v )
7051 if( nbinvars == nbndchgs )
7058assert(nintvars > 0 || ncontvars > 0);
7061++reoptnodes[id]->
nconss;
7065++(*ncreatedchilds);
7071assert(*ncreatedchilds == 1);
7072assert(perm !=
NULL);
7076boundtypes = reoptnodes[0]->
dualredscur->boundtypes;
7078assert(perm[0] == 0 && perm[nvars-1] == nvars-1);
7081 switch(
set->reopt_varorderinterdiction)
7102 for(
intc = 0; c < nvars; ++c )
7109assert(reoptnodes[
id] ==
NULL|| reoptnodes[
id]->nvars == 0);
7121assert(reoptnodes[
id]->varssize >= perm[c]+1);
7122assert(reoptnodes[
id]->nvars == 0);
7123assert(reoptnodes[
id]->vars !=
NULL);
7124assert(reoptnodes[
id]->varbounds !=
NULL);
7125assert(reoptnodes[
id]->varboundtypes !=
NULL);
7128 if(
set->reopt_varorderinterdiction ==
'd')
7131 for( v = 0; v < c; ++v )
7133reoptnodes[id]->
vars[v] = vars[v];
7134reoptnodes[id]->
varbounds[v] = bounds[v];
7141 for( v = 0; v < c; ++v )
7143reoptnodes[id]->
vars[v] = vars[perm[v]];
7144reoptnodes[id]->
varbounds[v] = bounds[perm[v]];
7148reoptnodes[id]->
nvars+= c;
7152reoptnodes[id]->
vars[c] = vars[perm[c]];
7153reoptnodes[id]->
varbounds[c] = bounds[perm[c]];
7162++reoptnodes[id]->
nvars;
7167++(*ncreatedchilds);
7170assert(*ncreatedchilds == nvars+1);
7175assert(perm ==
NULL);
7178assert(reoptnodes[0]->dualredscur->
vars!=
NULL);
7179assert(reoptnodes[0]->dualredscur->vals !=
NULL);
7180assert(reoptnodes[0]->dualredscur->boundtypes !=
NULL);
7200assert(reopt !=
NULL);
7201assert(node !=
NULL);
7204assert(id < reopt->reopttree->reoptnodessize);
7225 int* nbndchgsafterdual
7231 intnafterdualvars2;
7233assert(reopt !=
NULL);
7234assert(reoptnode !=
NULL);
7235assert(vars !=
NULL);
7236assert(vals !=
NULL);
7237assert(boundtypes !=
NULL);
7239(*nbndchgs) = reoptnode->
nvars;
7243 if( varssize == 0 || varssize < *nbndchgs + *nbndchgsafterdual )
7247 for( v = 0; v < *nbndchgs; ++v )
7249vars[v] = reoptnode->
vars[v];
7255 for( ; v < *nbndchgs + *nbndchgsafterdual; ++v )
7268 SCIPreoptnodeGetPath(reopt, parent, &vars[v], &vals[v], &boundtypes[v], varssize, &nvars2, &nafterdualvars2);
7270(*nbndchgs) += nvars2;
7271(*nbndchgsafterdual) += nafterdualvars2;
7283assert(reopt !=
NULL);
7285assert(id < reopt->reopttree->reoptnodessize);
7287assert(blkmem !=
NULL);
7313 int* ncreatedchilds,
7319assert(reopt !=
NULL);
7322assert(stat !=
NULL);
7323assert(transprob !=
NULL);
7324assert(origprob !=
NULL);
7325assert(tree !=
NULL);
7326assert(lp !=
NULL);
7327assert(branchcand !=
NULL);
7328assert(eventqueue !=
NULL);
7329assert(cliquetable !=
NULL);
7330assert(blkmem !=
NULL);
7331assert(reoptnode !=
NULL);
7332assert(childnodes !=
NULL);
7334assert(id < reopt->reopttree->reoptnodessize);
7335assert(success !=
NULL);
7348 if(
set->reopt_usesplitcons )
7354(*ncreatedchilds) = 1;
7360(*ncreatedchilds) = 2;
7366 if( childnodessize < *ncreatedchilds )
7370 for(
intc = 0; c < *ncreatedchilds; ++c )
7380cliquetable, blkmem, childnodes[c],
id, c == 1) );
7396 SCIP_CALL(
addSplitcons(reopt,
scip,
set, stat, blkmem, transprob, origprob, tree, lp, branchcand,
7397eventqueue, cliquetable, childnodes[c],
id) );
7421 if( reoptnode->
nconss== 0 )
7428 SCIP_CALL(
fixBounds(reopt,
set, stat, transprob, origprob, tree, lp, branchcand, eventqueue, cliquetable,
7429blkmem, childnodes[c],
id,
TRUE) );
7457boundtypes = reoptnode->
dualredscur->boundtypes;
7460*ncreatedchilds = nvars+1;
7464 if( childnodessize < *ncreatedchilds )
7469 for(
intc = 0; c < nvars; ++c )
7473 switch(
set->reopt_varorderinterdiction)
7503 for(
intc = nvars; c >= 0; --c )
7508#ifdef SCIP_MORE_DEBUG 7514cliquetable, blkmem, childnodes[c],
id,
FALSE) );
7520 SCIP_CALL(
fixBounds(reopt,
set, stat, transprob, origprob, tree, lp, branchcand, eventqueue, cliquetable,
7521blkmem, childnodes[c],
id,
TRUE) );
7532 SCIP_CALL(
fixInterdiction(reopt,
set, stat, transprob, origprob, tree, lp, branchcand, eventqueue, cliquetable,
7533blkmem, childnodes[c],
id, perm, vars, bounds, boundtypes, nvars, c) );
7562(*ncreatedchilds) = 1;
7565 if( childnodessize < *ncreatedchilds )
7574cliquetable, blkmem, childnodes[0],
id,
FALSE) );
7602assert(reopt !=
NULL);
7619assert(reopt !=
NULL);
7621assert(stat !=
NULL);
7622assert(blkmem !=
NULL);
7627 for(
intc = reopt->
nglbconss-1; c >= 0; --c )
7635assert(reopt->
glbconss[c]->nvars > 0);
7643 for(
intv = 0; v < reopt->
glbconss[c]->nvars; ++v )
7652 SCIPerrorMessage(
"Expected variable type binary or (impl.) integer for variable <%s> in global constraint at pos. %d.\n",
7663 if( nbinvars == reopt->
glbconss[c]->nvars )
7670 for(
intv = 0; v < reopt->
glbconss[c]->nvars; ++v )
7672consvars[v] = reopt->
glbconss[c]->vars[v];
7685consvars,
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE) );
7693assert(reopt->
glbconss[c]->nvars == nbinvars + 2*nintvars);
7695 SCIPsetDebugMsg(
set,
"-> add bounddisjuction constraints with %d binvars, %d intvars\n", nbinvars, (
int) (2*nintvars));
7702#ifdef SCIP_DEBUG_CONSS 7749assert(reopt !=
NULL);
7750assert(node !=
NULL);
7751assert(sepastore !=
NULL);
7752assert(blkmem !=
NULL);
7754assert(stat !=
NULL);
7755assert(eventqueue !=
NULL);
7756assert(eventfilter !=
NULL);
7757assert(lp !=
NULL);
7760assert(id < reopt->reopttree->reoptnodessize);
7767assert(reoptnode !=
NULL);
7770 for(
intc = reoptnode->
nconss-1; c >= 0; --c )
7774cons = reoptnode->
conss[c];
7775assert(cons !=
NULL);
7789 for(
intv = 0; v < cons->nvars; ++v )
7796assert(transvar !=
NULL);
7799vals[ncols] = cons->vals[v];
7801assert(cols[ncols] !=
NULL);
7805assert(ncols == cons->nvars);
7808infeasible =
FALSE;
7812 SCIP_CALL(
SCIProwCreate(&cut, blkmem,
set, stat, cutname, ncols, cols, vals, cons->lhs, cons->rhs,
7816 SCIPsetDebugMsg(
set,
"add cut <%s> of size %d to cutpool, [lhs, rhs] = [%g,%g] to node %lld\n", cutname,
7821 SCIP_CALL(
SCIProwCreate(&cut, blkmem,
set, stat, cutname, ncols, cols, vals, cons->lhs, cons->rhs,
7823 SCIP_CALL(
SCIPsepastoreAddCut(sepastore, blkmem,
set, stat, eventqueue, eventfilter, lp, cut,
FALSE, root,
7826 SCIPsetDebugMsg(
set,
"add cut <%s> of size %d to sepastore, [lhs, rhs] = [%g,%g] to node %lld\n", cutname,
7849 for(
inti = c-1; i >= 0; --i )
7868assert(reopt !=
NULL);
7869assert(node !=
NULL);
7873assert(id < reopt->reopttree->reoptnodessize);
7912assert(reoptnode !=
NULL);
7921reoptnode->
nvars= 0;
7947assert(reopt !=
NULL);
7949assert(blkmem !=
NULL);
7950assert(reoptnode !=
NULL);
7963assert(reoptnode !=
NULL);
7964assert(blkmem !=
NULL);
7983assert(reoptnode !=
NULL);
7984assert(var !=
NULL);
7985assert(blkmem !=
NULL);
7987nvars = reoptnode->
nvars;
7991reoptnode->
vars[nvars] = var;
7994++reoptnode->
nvars;
8016assert(reoptnode !=
NULL);
8018assert(vars !=
NULL);
8019assert(bounds !=
NULL);
8022assert(blkmem !=
NULL);
8029 SCIPsetDebugMsg(
set,
"-> constraint has size 1 -> save as normal bound change.\n");
8042assert(boundtypes !=
NULL);
8046newbound = bounds[0] + 1.0;
8053newbound = bounds[0] - 1.0;
8064nconss = reoptnode->
nconss;
8072 if( boundtypes !=
NULL)
8078reoptnode->
conss[nconss]->boundtypes =
NULL;
8080reoptnode->
conss[nconss]->varssize = nvars;
8081reoptnode->
conss[nconss]->nvars = nvars;
8082reoptnode->
conss[nconss]->lhs = lhs;
8083reoptnode->
conss[nconss]->rhs = rhs;
8084reoptnode->
conss[nconss]->constype = constype;
8085reoptnode->
conss[nconss]->linear = linear;
8099assert(reopt !=
NULL);
8101assert(blkmem !=
NULL);
8102assert(cons !=
NULL);
8104#ifdef SCIP_MORE_DEBUG 8152assert(reopt !=
NULL);
8153assert(transprob !=
NULL);
8164 for(
inti = 0; i < nvars; ++i )
8193assert(reopt !=
NULL);
8194assert(transprob !=
NULL);
8209 for(
inti = 0; i < nconss; ++i )
8238assert(reopt !=
NULL);
8239assert(transprob !=
NULL);
8247 for(
inti = 0; i < nvars; ++i )
8281assert(reopt !=
NULL);
8295assert(cons !=
NULL);
8321assert(reopt !=
NULL);
8322assert(cons !=
NULL);
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for clocks and timing issues
void SCIPconsCapture(SCIP_CONS *cons)
SCIP_RETCODE SCIPconsDeactivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPconsGetNVars(SCIP_CONS *cons, SCIP_SET *set, int *nvars, SCIP_Bool *success)
SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RETCODE SCIPconsActivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)
internal methods for constraints and constraint handlers
constraint handler for bound disjunction constraints
Constraint handler for linear constraints in their most general form, .
Constraint handler for logicor constraints (equivalent to set covering, but algorithms are suited fo...
Constraint handler for the set partitioning / packing / covering constraints .
SCIP_RETCODE SCIPcutpoolAddRow(SCIP_CUTPOOL *cutpool, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_ROW *row)
internal methods for storing cuts in a cut pool
common defines and data types used in all packages of SCIP
#define SCIP_LONGINT_FORMAT
SCIP_RETCODE SCIPeventhdlrCreate(SCIP_EVENTHDLR **eventhdlr, SCIP_SET *set, const char *name, const char *desc, SCIP_DECL_EVENTCOPY((*eventcopy)), SCIP_DECL_EVENTFREE((*eventfree)), SCIP_DECL_EVENTINIT((*eventinit)), SCIP_DECL_EVENTEXIT((*eventexit)), SCIP_DECL_EVENTINITSOL((*eventinitsol)), SCIP_DECL_EVENTEXITSOL((*eventexitsol)), SCIP_DECL_EVENTDELETE((*eventdelete)), SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
internal methods for managing events
SCIP_Real SCIPgetRhsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_Real * SCIPgetBoundsBounddisjunction(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetLhsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsBasicBounddisjunction(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds)
SCIP_Real * SCIPgetValsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsBounddisjunctionRedundant(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_BOUNDTYPE * SCIPgetBoundtypesBounddisjunction(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsSetppc(SCIP *scip, SCIP_CONS *cons)
SCIP_SETPPCTYPE SCIPgetTypeSetppc(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_VAR ** SCIPgetVarsLogicor(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsLogicor(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_VAR ** SCIPgetVarsBounddisjunction(SCIP *scip, SCIP_CONS *cons)
@ SCIP_SETPPCTYPE_PARTITIONING
@ SCIP_SETPPCTYPE_COVERING
@ SCIP_SETPPCTYPE_PACKING
SCIP_STAGE SCIPgetStage(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVars(SCIP *scip)
int SCIPgetNOrigVars(SCIP *scip)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
SCIP_Real SCIPhashmapGetImageReal(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsertReal(SCIP_HASHMAP *hashmap, void *origin, SCIP_Real image)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
void SCIPhashsetFree(SCIP_HASHSET **hashset, BMS_BLKMEM *blkmem)
SCIP_Bool SCIPhashsetExists(SCIP_HASHSET *hashset, void *element)
void SCIPhashsetRemoveAll(SCIP_HASHSET *hashset)
SCIP_RETCODE SCIPhashsetInsert(SCIP_HASHSET *hashset, BMS_BLKMEM *blkmem, void *element)
SCIP_RETCODE SCIPhashsetCreate(SCIP_HASHSET **hashset, BMS_BLKMEM *blkmem, int size)
SCIP_RETCODE SCIPaddConsNode(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons, SCIP_NODE *validnode)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
void SCIPrandomPermuteIntArray(SCIP_RANDNUMGEN *randnumgen, int *array, int begin, int end)
SCIP_VAR * SCIPcolGetVar(SCIP_COL *col)
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
SCIP_RETCODE SCIPcatchVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPdropVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_Real SCIPeventGetOldbound(SCIP_EVENT *event)
SCIP_VAR * SCIPeventGetVar(SCIP_EVENT *event)
SCIP_Real SCIPeventGetNewbound(SCIP_EVENT *event)
const char * SCIPheurGetName(SCIP_HEUR *heur)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
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)
SCIP_NODETYPE SCIPnodeGetType(SCIP_NODE *node)
SCIP_Real SCIPnodeGetLowerbound(SCIP_NODE *node)
void SCIPnodeGetNDomchg(SCIP_NODE *node, int *nbranchings, int *nconsprop, int *nprop)
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
SCIP_NODE * SCIPnodeGetParent(SCIP_NODE *node)
int SCIPnodeGetNAddedConss(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_RETCODE SCIPaddReoptDualBndchg(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound, SCIP_Real oldbound)
SCIP_Bool SCIPisReoptEnabled(SCIP *scip)
SCIP_Real SCIProwGetLhs(SCIP_ROW *row)
SCIP_COL ** SCIProwGetCols(SCIP_ROW *row)
SCIP_Real SCIProwGetRhs(SCIP_ROW *row)
int SCIProwGetAge(SCIP_ROW *row)
int SCIProwGetNLPNonz(SCIP_ROW *row)
int SCIProwGetLPPos(SCIP_ROW *row)
SCIP_Real SCIProwGetConstant(SCIP_ROW *row)
SCIP_Real * SCIProwGetVals(SCIP_ROW *row)
SCIP_ROWORIGINTYPE SCIProwGetOrigintype(SCIP_ROW *row)
SCIP_HEUR * SCIPsolGetHeur(SCIP_SOL *sol)
SCIP_Bool SCIPsolIsOriginal(SCIP_SOL *sol)
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPgetEffectiveRootDepth(SCIP *scip)
SCIP_NODE * SCIPgetCurrentNode(SCIP *scip)
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_RETCODE SCIPvarGetProbvarBound(SCIP_VAR **var, SCIP_Real *bound, SCIP_BOUNDTYPE *boundtype)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
int SCIPvarGetIndex(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Bool SCIPvarIsTransformedOrigvar(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
SCIP_Bool SCIPvarIsRelaxationOnly(SCIP_VAR *var)
SCIP_Bool SCIPvarIsOriginal(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetTransVar(SCIP_VAR *var)
int SCIPqueueNElems(SCIP_QUEUE *queue)
unsigned int SCIPqueueRemoveUInt(SCIP_QUEUE *queue)
void SCIPqueueFree(SCIP_QUEUE **queue)
SCIP_RETCODE SCIPqueueInsertUInt(SCIP_QUEUE *queue, unsigned int elem)
SCIP_RETCODE SCIPqueueCreate(SCIP_QUEUE **queue, int initsize, SCIP_Real sizefac)
void SCIPqueueClear(SCIP_QUEUE *queue)
SCIP_Bool SCIPqueueIsEmpty(SCIP_QUEUE *queue)
void SCIPsortDownRealInt(SCIP_Real *realarray, int *intarray, int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
void SCIPhistoryReset(SCIP_HISTORY *history)
SCIP_Real SCIPhistoryGetAvgInferences(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real SCIPhistoryGetAvgCutoffs(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPhistoryCreate(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)
void SCIPhistoryIncInferenceSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)
void SCIPhistoryIncCutoffSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)
void SCIPhistoryIncNBranchings(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, int depth)
void SCIPhistoryFree(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)
void SCIPhistoryUnite(SCIP_HISTORY *history, SCIP_HISTORY *addhistory, SCIP_Bool switcheddirs)
internal methods for branching and inference history
SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
SCIP_RETCODE SCIProwCreate(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_ROWORIGINTYPE origintype, void *origin, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_Real SCIPlpGetCutoffbound(SCIP_LP *lp)
SCIP_ROW ** SCIPlpGetRows(SCIP_LP *lp)
int SCIPlpGetNRows(SCIP_LP *lp)
SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
internal methods for LP management
methods for block memory pools and memory buffers
memory allocation routines
#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 BMSfreeBlockMemoryNull(mem, ptr)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
#define BMSallocClearBlockMemoryArray(mem, ptr, num)
#define BMSclearMemoryArray(ptr, num)
#define BMSallocClearMemoryArray(ptr, num)
struct BMS_BlkMem BMS_BLKMEM
#define BMSallocMemory(ptr)
void SCIPrandomFree(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPrandomCreate(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem, unsigned int initialseed)
internal miscellaneous methods
internal methods for collecting primal CIP solutions and primal informations
SCIP_CONS ** SCIPprobGetConss(SCIP_PROB *prob)
int SCIPprobGetNConss(SCIP_PROB *prob)
int SCIPprobGetNVars(SCIP_PROB *prob)
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
SCIP_Bool SCIPprobIsTransformed(SCIP_PROB *prob)
internal methods for storing and manipulating the main problem
#define SCIPdebugPrintCons(x, y, z)
static SCIP_RETCODE reoptMoveIDs(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int id1, unsigned int id2)
SCIP_RETCODE SCIPreoptUpdateVarHistory(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_VAR **vars, int nvars)
static SCIP_RETCODE changeReopttypeOfSubtree(SCIP_REOPTTREE *reopttree, unsigned int id, SCIP_REOPTTYPE reopttype)
int SCIPreoptGetNDualBndchgs(SCIP_REOPT *reopt, SCIP_NODE *node)
SCIP_RETCODE SCIPreoptSaveActiveConss(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_PROB *transprob, BMS_BLKMEM *blkmem)
static int soltreeNInducedSols(SCIP_SOLNODE *solnode)
int SCIPreoptGetNTotalPrunedNodes(SCIP_REOPT *reopt)
SCIP_RETCODE SCIPreoptnodeReset(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_REOPTNODE *reoptnode)
SCIP_RETCODE SCIPreoptAddRun(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_VAR **origvars, int norigvars, int size)
SCIP_RETCODE SCIPreoptAddCons(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONS *cons)
int SCIPreoptGetNTotalFeasNodes(SCIP_REOPT *reopt)
void SCIPreoptAddNCheckedSols(SCIP_REOPT *reopt, int ncheckedsols)
static SCIP_RETCODE ensureSolsSize(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, int num, int runidx)
static SCIP_RETCODE reopttreeDeleteNode(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int id, SCIP_Bool softreset)
int SCIPreoptGetFirstRestarts(SCIP_REOPT *reopt)
static SCIP_RETCODE saveAfterDualBranchings(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_Bool *transintoorig)
SCIP_RETCODE SCIPreoptAddSol(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *origprimal, BMS_BLKMEM *blkmem, SCIP_SOL *sol, SCIP_Bool bestsol, SCIP_Bool *added, SCIP_VAR **vars, int nvars, int run)
int SCIPreoptGetNTotalRestartsLocal(SCIP_REOPT *reopt)
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)
static SCIP_RETCODE transformDualredsToBounddisjunction(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_REOPTCONSDATA *consdata, SCIP_REOPTCONSDATA *dualreds)
static SCIP_RETCODE transformIntoOrig(SCIP_REOPT *reopt, unsigned int id)
static SCIP_RETCODE saveLocalConssData(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id)
int SCIPreoptGetNImprovingSols(SCIP_REOPT *reopt)
static SCIP_RETCODE addGlobalCut(SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, int nvars, int nbinvars, int nintvars)
static SCIP_RETCODE addNode(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_REOPTTYPE reopttype, SCIP_Bool saveafterdual, SCIP_Bool isrootnode, SCIP_Real lowerbound)
static SCIP_RETCODE shrinkNode(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_NODE *node, unsigned int id, SCIP_Bool *shrank, BMS_BLKMEM *blkmem)
static void deleteLastDualBndchgs(SCIP_REOPT *reopt)
SCIP_RETCODE SCIPreoptAddInfNode(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node)
static SCIP_RETCODE clearReoptnodes(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_Bool softreset)
static SCIP_RETCODE reoptResetTree(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_Bool softreset)
SCIP_RETCODE SCIPreoptApplyCuts(SCIP_REOPT *reopt, SCIP_NODE *node, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_Bool root)
static SCIP_RETCODE reopttreeCheckMemory(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem)
SCIP_SOL * SCIPreoptGetLastBestSol(SCIP_REOPT *reopt)
static SCIP_RETCODE separateSolution(SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_VAR **vars, int nvars)
SCIP_RETCODE SCIPreoptnodeAddBndchg(SCIP_REOPTNODE *reoptnode, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real val, SCIP_BOUNDTYPE boundtype)
SCIP_RETCODE SCIPreoptnodeAddCons(SCIP_REOPTNODE *reoptnode, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_BOUNDTYPE *boundtypes, SCIP_Real lhs, SCIP_Real rhs, int nvars, REOPT_CONSTYPE constype, SCIP_Bool linear)
SCIP_RETCODE SCIPreoptSplitRoot(SCIP_REOPT *reopt, SCIP_TREE *tree, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, int *ncreatedchilds, int *naddedconss)
#define DEFAULT_MEM_DUALCONS
static SCIP_RETCODE createSolTree(SCIP_SOLTREE *soltree, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPreoptGetSolsRun(SCIP_REOPT *reopt, int run, SCIP_SOL **sols, int solssize, int *nsols)
static SCIP_DECL_EVENTEXITSOL(eventExitsolReopt)
static void resetStats(SCIP_REOPT *reopt)
static SCIP_RETCODE reoptRestart(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)
static SCIP_RETCODE fixBounds(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_Bool updatedualconss)
SCIP_Bool SCIPreoptConsCanBeDeleted(SCIP_REOPT *reopt, SCIP_CONS *cons)
static SCIP_RETCODE freeReoptTree(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem)
int SCIPreoptGetNPrunedNodes(SCIP_REOPT *reopt)
int SCIPreoptGetNFeasNodes(SCIP_REOPT *reopt)
static SCIP_RETCODE reoptnodeDelete(SCIP_REOPTNODE **reoptnode, BMS_BLKMEM *blkmem)
static int reoptGetNLeaves(SCIP_REOPT *reopt, unsigned int id)
static SCIP_RETCODE saveGlobalCons(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, REOPT_CONSTYPE consttype)
static SCIP_RETCODE deleteChildrenBelow(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int id, SCIP_Bool delnodeitself, SCIP_Bool exitsolve)
SCIP_RETCODE SCIPreoptDeleteNode(SCIP_REOPT *reopt, SCIP_SET *set, unsigned int id, BMS_BLKMEM *blkmem)
SCIP_Real SCIPreoptnodeGetLowerbound(SCIP_REOPTNODE *reoptnode)
static SCIP_RETCODE reoptnodeReset(SCIP_REOPTNODE *reoptnode, SCIP_SET *set, BMS_BLKMEM *blkmem)
int SCIPreoptGetNRestartsLocal(SCIP_REOPT *reopt)
SCIP_RETCODE SCIPreoptReleaseData(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPreoptResetDualBndchgs(SCIP_REOPT *reopt, SCIP_NODE *node, BMS_BLKMEM *blkmem)
void SCIPreoptResetSolMarks(SCIP_REOPT *reopt)
static SCIP_RETCODE getInferenceOrder(SCIP_SET *set, SCIP_STAT *stat, int *perm, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_BOUNDTYPE *boundtypes, int nvars)
static SCIP_RETCODE freeSolTree(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_PRIMAL *origprimal, BMS_BLKMEM *blkmem)
int SCIPreoptGetNSols(SCIP_REOPT *reopt)
int SCIPreoptGetNSolsRun(SCIP_REOPT *reopt, int run)
void SCIPreoptnodeSetParentID(SCIP_REOPTNODE *reoptnode, unsigned int parentid)
SCIP_Real SCIPreoptGetSimToFirst(SCIP_REOPT *reopt)
static SCIP_RETCODE saveConsBounddisjuction(SCIP_REOPTCONSDATA *reoptconsdata, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONS *cons, SCIP_Bool *success)
static SCIP_RETCODE reoptAddChild(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int parentid, unsigned int childid)
SCIP_RETCODE SCIPreoptApply(SCIP_REOPT *reopt, SCIP *scip, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem, SCIP_REOPTNODE *reoptnode, unsigned int id, SCIP_Real estimate, SCIP_NODE **childnodes, int *ncreatedchilds, int *naddedconss, int childnodessize, SCIP_Bool *success)
#define DEFAULT_MEM_VARAFTERDUAL
int SCIPreoptGetNSavedSols(SCIP_REOPT *reopt)
#define DEFAULT_MEM_NODES
SCIP_Real SCIPreoptGetOldObjCoef(SCIP_REOPT *reopt, int run, int idx)
static void soltreeResetMarks(SCIP_SOLNODE *node)
static SCIP_RETCODE reoptnodeCheckMemory(SCIP_REOPTNODE *reoptnode, SCIP_SET *set, BMS_BLKMEM *blkmem, int var_mem, int child_mem, int conss_mem)
static SCIP_RETCODE cleanActiveConss(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)
static SCIP_DECL_EVENTEXEC(eventExecReopt)
int SCIPreoptGetNCheckedSols(SCIP_REOPT *reopt)
static SCIP_RETCODE reoptGetLeaves(SCIP_REOPT *reopt, unsigned int id, unsigned int *leaves, int leavessize, int *nleaves)
static SCIP_RETCODE getLastSavedNode(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_NODE *node, SCIP_NODE **parent, unsigned int *parentid, int *nbndchgs)
static SCIP_RETCODE reoptCheckLocalRestart(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_VAR **transvars, int ntransvars, SCIP_Bool *localrestart)
static SCIP_RETCODE storeCuts(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_LP *lp, unsigned int id)
static SCIP_RETCODE transformDualredsToLinear(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_REOPTCONSDATA *consdata, SCIP_REOPTCONSDATA *dualreds)
SCIP_RETCODE SCIPreoptFree(SCIP_REOPT **reopt, SCIP_SET *set, SCIP_PRIMAL *origprimal, BMS_BLKMEM *blkmem)
static SCIP_RETCODE addLocalConss(SCIP *scip, SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id)
int SCIPreoptnodeGetNConss(SCIP_REOPTNODE *reoptnode)
static SCIP_RETCODE solnodeAddChild(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_SOLNODE *curnode, SCIP_SOLNODE **child, SCIP_VAR *var, SCIP_Real val, SCIP_Bool *added)
void SCIPreoptnodeGetConss(SCIP_REOPTNODE *reoptnode, SCIP_VAR ***vars, SCIP_Real **bounds, SCIP_BOUNDTYPE **boundtypes, int mem, int *nconss, int *nvars)
static SCIP_RETCODE checkMemGlbCons(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, int mem)
int SCIPreoptGetLastRestarts(SCIP_REOPT *reopt)
static SCIP_RETCODE reoptnodeResetDualConss(SCIP_REOPTNODE *reoptnode, BMS_BLKMEM *blkmem)
static SCIP_RETCODE createReopttree(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem)
int SCIPreoptnodeGetNVars(SCIP_REOPTNODE *reoptnode)
static SCIP_RETCODE ensureActiveconssSize(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, int num)
int SCIPreoptGetNTotalCutoffReoptnodes(SCIP_REOPT *reopt)
static int reopttreeGetNNodes(SCIP_REOPTTREE *reopttree, unsigned int id)
static SCIP_RETCODE createReoptnode(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int id)
void SCIPreoptnodeGetPath(SCIP_REOPT *reopt, SCIP_REOPTNODE *reoptnode, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, int varssize, int *nbndchgs, int *nbndchgsafterdual)
SCIP_RETCODE SCIPreoptAddOptSol(SCIP_REOPT *reopt, SCIP_SOL *sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *origprimal, SCIP_VAR **vars, int nvars)
SCIP_REOPTTYPE SCIPreoptnodeGetType(SCIP_REOPTNODE *reoptnode)
int SCIPreoptGetNNodes(SCIP_REOPT *reopt, SCIP_NODE *node)
static SCIP_RETCODE moveChildrenUp(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int nodeid, unsigned int parentid)
SCIP_Real SCIPreoptGetSavingtime(SCIP_REOPT *reopt)
SCIP_RETCODE SCIPreoptResetActiveConss(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPreoptnodeDelete(SCIP_REOPTNODE **reoptnode, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPreoptCreate(SCIP_REOPT **reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)
int SCIPreoptGetNTotalInfNodes(SCIP_REOPT *reopt)
SCIP_RETCODE SCIPreoptAddDualBndchg(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newval, SCIP_Real oldval)
static SCIP_Real reoptSimilarity(SCIP_REOPT *reopt, SCIP_SET *set, int obj1_id, int obj2_id, SCIP_VAR **vars, int nvars)
static SCIP_RETCODE collectDualInformation(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_REOPTTYPE reopttype)
SCIP_Real SCIPreoptGetSimilarity(SCIP_REOPT *reopt, SCIP_SET *set, int run1, int run2, SCIP_VAR **origvars, int norigvars)
static SCIP_RETCODE ensureRunSize(SCIP_REOPT *reopt, SCIP_SET *set, int num, BMS_BLKMEM *blkmem)
static SCIP_RETCODE dryBranch(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_Bool *runagain, unsigned int id)
static SCIP_RETCODE soltreefreeNode(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SOLNODE **solnode)
SCIP_RETCODE SCIPreoptGetLeaves(SCIP_REOPT *reopt, SCIP_NODE *node, unsigned int *leaves, int leavessize, int *nleaves)
static SCIP_RETCODE updatePropagation(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_Bool *transintoorig)
static SCIP_RETCODE soltreeAddSol(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *origprimal, BMS_BLKMEM *blkmem, SCIP_VAR **vars, SCIP_SOL *sol, SCIP_SOLNODE **solnode, int nvars, SCIP_Bool bestsol, SCIP_Bool *added)
int SCIPreoptGetNAddedConss(SCIP_REOPT *reopt, SCIP_NODE *node)
SCIP_RETCODE SCIPreoptMergeVarHistory(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **vars, int nvars)
static SCIP_DECL_EVENTINITSOL(eventInitsolReopt)
static SCIP_RETCODE checkMemDualCons(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, int size)
static SCIP_RETCODE fixInterdiction(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, int *perm, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, int nvars, int negbndchg)
SCIP_RETCODE SCIPreoptSaveGlobalBounds(SCIP_REOPT *reopt, SCIP_PROB *transprob, BMS_BLKMEM *blkmem)
SCIP_REOPTNODE * SCIPreoptGetReoptnode(SCIP_REOPT *reopt, unsigned int id)
void SCIPreoptAddNImprovingSols(SCIP_REOPT *reopt, int nimprovingsols)
static SCIP_RETCODE reoptnodeUpdateDualConss(SCIP_REOPTNODE *reoptnode, BMS_BLKMEM *blkmem)
SCIP_Bool SCIPreoptGetSolveLP(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_NODE *node)
SCIP_RETCODE SCIPreoptCheckRestart(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_VAR **transvars, int ntransvars, SCIP_Bool *restart)
static SCIP_RETCODE addSplitcons(SCIP_REOPT *reopt, SCIP *scip, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_NODE *node, unsigned int id)
int SCIPreoptGetNCutoffReoptnodes(SCIP_REOPT *reopt)
SCIP_RETCODE SCIPreoptInstallBounds(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem)
static SCIP_RETCODE reoptSaveNewObj(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_VAR **origvars, int norigvars)
int SCIPreoptnodeGetNChildren(SCIP_REOPTNODE *reoptnode)
SCIP_RETCODE SCIPreoptApplyGlbConss(SCIP *scip, SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPreoptApplyCompression(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_REOPTNODE **representatives, int nrepresentatives, SCIP_Bool *success)
static SCIP_RETCODE changeAncestorBranchings(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_Bool afterdualbranching)
int SCIPreoptnodeGetNDualBoundChgs(SCIP_REOPTNODE *reoptnode)
SCIP_Real SCIPreoptGetSimToPrevious(SCIP_REOPT *reopt)
SCIP_RETCODE SCIPreoptReset(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPreoptGetChildIDs(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int *childs, int childssize, int *nchilds)
static SCIP_RETCODE saveAncestorBranchings(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_NODE *parent, unsigned int id, unsigned int parentid)
int SCIPreoptGetNRestartsGlobal(SCIP_REOPT *reopt)
SCIP_RETCODE SCIPreoptSaveOpenNodes(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_NODE **leaves, int nleaves, SCIP_NODE **childs, int nchilds, SCIP_NODE **siblings, int nsiblings)
static SCIP_RETCODE saveConsLinear(SCIP_REOPTCONSDATA *reoptconsdata, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONS *cons, SCIP_Bool *success)
SCIP_SOL * SCIPreoptGetBestSolRun(SCIP_REOPT *reopt, int run)
void SCIPreoptnodeInit(SCIP_REOPTNODE *reoptnode, SCIP_SET *set)
int SCIPreoptGetNLeaves(SCIP_REOPT *reopt, SCIP_NODE *node)
int SCIPreoptGetNInfNodes(SCIP_REOPT *reopt)
data structures and methods for collecting reoptimization information
SCIP_RETCODE SCIPsepastoreAddCut(SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_ROW *cut, SCIP_Bool forcecut, SCIP_Bool root, SCIP_Bool *infeasible)
internal methods for storing separated cuts
SCIP_Bool SCIPsetIsGE(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 SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_RETCODE SCIPsetGetIntParam(SCIP_SET *set, const char *name, int *value)
SCIP_RETCODE SCIPsetIncludeEventhdlr(SCIP_SET *set, SCIP_EVENTHDLR *eventhdlr)
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsIntegral(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
SCIP_BRANCHRULE * SCIPsetFindBranchrule(SCIP_SET *set, const char *name)
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetRound(SCIP_SET *set, SCIP_Real val)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
unsigned int SCIPsetInitializeRandomSeed(SCIP_SET *set, unsigned int initialseedvalue)
internal methods for global SCIP settings
#define SCIPsetFreeBufferArray(set, ptr)
#define SCIPsetAllocBufferArray(set, ptr, num)
#define SCIPsetReallocBufferArray(set, ptr, num)
SCIP_RETCODE SCIPsolFree(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_PRIMAL *primal)
SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
SCIP_RETCODE SCIPsolCopy(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_SOL *sourcesol)
internal methods for storing primal CIP solutions
SCIP_Real pscostweightedmean[2]
SCIP_Real pscostvariance[2]
SCIP_VAR ** afterdualvars
SCIP_REOPTCONSDATA * dualredscur
SCIP_REOPTCONSDATA * dualredsnex
SCIP_BOUNDTYPE * afterdualvarboundtypes
SCIP_BOUNDTYPE * varboundtypes
SCIP_Real * afterdualvarbounds
SCIP_REOPTCONSDATA ** conss
unsigned int reoptnodessize
SCIP_REOPTNODE ** reoptnodes
int ntotalcutoffreoptnodes
SCIP_REOPTCONSDATA ** glbconss
SCIP_REOPTTREE * reopttree
SCIP_REOPTCONSDATA * dualreds
SCIP_Longint lastbranched
SCIP_RANDNUMGEN * randnumgen
SCIP_Longint lastseennode
SCIP_HASHSET * activeconssset
SCIP_HISTORY *** varhistory
void SCIPnodeGetDualBoundchgs(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_BOUNDTYPE *boundtypes, int *nvars, int varssize)
void SCIPnodeSetEstimate(SCIP_NODE *node, SCIP_SET *set, SCIP_Real newestimate)
void SCIPnodeGetPropsAfterDual(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int *nvars, int varssize)
SCIP_NODE * SCIPtreeGetRootNode(SCIP_TREE *tree)
SCIP_RETCODE SCIPnodeCreateChild(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Real nodeselprio, SCIP_Real estimate)
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)
int SCIPnodeGetNDualBndchgs(SCIP_NODE *node)
void SCIPnodeGetPropsBeforeDual(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int *npropvars, int propvarssize)
internal methods for branch and bound tree
#define SCIP_EVENTTYPE_NODEFEASIBLE
#define SCIP_EVENTTYPE_GBDCHANGED
#define SCIP_EVENTTYPE_NODEINFEASIBLE
#define SCIP_EVENTTYPE_NODEBRANCHED
#define SCIP_EVENTTYPE_FORMAT
@ SCIP_BRANCHDIR_DOWNWARDS
enum SCIP_BranchDir SCIP_BRANCHDIR
enum SCIP_LPSolStat SCIP_LPSOLSTAT
@ SCIP_ROWORIGINTYPE_REOPT
@ SCIP_ROWORIGINTYPE_SEPA
enum SCIP_BoundType SCIP_BOUNDTYPE
@ SCIP_LPSOLSTAT_NOTSOLVED
@ SCIP_LPSOLSTAT_INFEASIBLE
@ SCIP_LPSOLSTAT_OBJLIMIT
@ SCIP_REOPTTYPE_INFSUBTREE
@ SCIP_REOPTTYPE_LOGICORNODE
@ SCIP_REOPTTYPE_FEASIBLE
@ SCIP_REOPTTYPE_STRBRANCHED
enum SCIP_ReoptType SCIP_REOPTTYPE
struct SCIP_ReoptConsData SCIP_REOPTCONSDATA
@ REOPT_CONSTYPE_DUALREDS
@ REOPT_CONSTYPE_INFSUBTREE
enum Reopt_ConsType REOPT_CONSTYPE
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_NODETYPE_PROBINGNODE
@ SCIP_NODETYPE_FOCUSNODE
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_VARSTATUS_MULTAGGR
void SCIPvarAdjustLb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *lb)
SCIP_RETCODE SCIPvarChgLbGlobal(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_RETCODE SCIPvarChgUbGlobal(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_Real SCIPvarGetAvgInferences(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarChgLbLocal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newbound)
SCIP_RETCODE SCIPvarNegate(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **negvar)
void SCIPvarAdjustUb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *ub)
SCIP_RETCODE SCIPvarChgUbLocal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newbound)
internal methods for problem variables
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4