83#define MAXIMPLSCLOSURE 100
85#define MAXABSVBCOEF 1e+5
100#ifdef DEBUGUSES_VARNAME
108void print_backtrace(
void)
115 size = backtrace(array, 10);
116 strings = backtrace_symbols(array, size);
117 if( strings ==
NULL )
121 for(
i = 1;
i < size; ++
i )
130 char* closepar =
NULL;
131#ifndef DEBUGUSES_NOADDR2LINE
132 openpar = strchr(strings[
i],
'(');
133 if( openpar !=
NULL && openpar[1] ==
'+' )
134 closepar = strchr(openpar+2,
')');
136 if( closepar !=
NULL )
139 (void)
SCIPsnprintf(cmd,
SCIP_MAXSTRLEN,
"addr2line -f -p -e \"%.*s\" %.*s", openpar - strings[
i], strings[
i], closepar-openpar-1, openpar+1);
145 printf(
" %s\n", strings[
i]);
170 SCIPsetDebugMsg(
set,
"create hole list element (%.15g,%.15g) in blkmem %p\n", left, right, (
void*)blkmem);
173 (*holelist)->hole.left = left;
174 (*holelist)->hole.right = right;
175 (*holelist)->next =
NULL;
190 while( *holelist !=
NULL )
195 (*holelist)->hole.left, (*holelist)->hole.right, (
void*)blkmem);
197 next = (*holelist)->
next;
217 while( source !=
NULL )
221 source = source->
next;
222 target = &(*target)->
next;
247 while( *insertpos !=
NULL && (*insertpos)->hole.left < left )
248 insertpos = &(*insertpos)->
next;
251 if( *insertpos !=
NULL && (*insertpos)->hole.left == left && (*insertpos)->hole.right >= right )
253 SCIPsetDebugMsg(
set,
"new hole (%.15g,%.15g) is redundant through known hole (%.15g,%.15g)\n",
254 left, right, (*insertpos)->hole.left, (*insertpos)->hole.right);
264 (*insertpos)->next = next;
298 while( *holelistptr !=
NULL )
300 if( (*holelistptr)->next !=
NULL )
303 lastleft = (*holelistptr)->hole.left;
306 holelistptr = &(*holelistptr)->
next;
314 lastrightptr = &dom->
lb;
315 lastnextptr = holelistptr;
317 while( *holelistptr !=
NULL )
319 SCIPsetDebugMsg(
set,
"check hole (%.15g,%.15g) last right interval was <%.15g>\n", (*holelistptr)->hole.left, (*holelistptr)->hole.right, *lastrightptr);
327 SCIPsetDebugMsg(
set,
"remove remaining hole since upper bound <%.15g> is less then the left hand side of the current hole\n", dom->
ub);
337 SCIPsetDebugMsg(
set,
"upper bound <%.15g> lays in current hole; store new upper bound and remove this and all remaining holes\n", dom->
ub);
342 dom->
ub = (*holelistptr)->hole.left;
345 *newub = (*holelistptr)->hole.left;
354 else if(
SCIPsetIsGT(
set, *lastrightptr, (*holelistptr)->hole.left) )
364 SCIPsetDebugMsg(
set,
"lower bound <%.15g> lays in current hole; store new lower bound and remove hole\n", dom->
lb);
365 *lastrightptr =
MAX(*lastrightptr, (*holelistptr)->hole.right);
368 dom->
lb = *lastrightptr;
371 *newlb = *lastrightptr;
375 SCIPsetDebugMsg(
set,
"current hole overlaps with the previous one (...,%.15g); merge to (...,%.15g)\n",
376 *lastrightptr,
MAX(*lastrightptr, (*holelistptr)->hole.right) );
377 *lastrightptr =
MAX(*lastrightptr, (*holelistptr)->hole.right);
379 nextholelist = (*holelistptr)->
next;
384 *lastnextptr = nextholelist;
387 *holelistptr = nextholelist;
392 lastrightptr = &(*holelistptr)->hole.right;
393 lastnextptr = &(*holelistptr)->
next;
396 holelistptr = &(*holelistptr)->
next;
408 while( *holelistptr !=
NULL )
415 lastright = (*holelistptr)->hole.right;
418 holelistptr = &(*holelistptr)->
next;
444 if( num >
var->lbchginfossize )
450 var->lbchginfossize = newsize;
452 assert(num <= var->lbchginfossize);
470 if( num >
var->ubchginfossize )
476 var->ubchginfossize = newsize;
478 assert(num <= var->ubchginfossize);
511 SCIPsetDebugMsg(
set,
"adding lower bound change info to var <%s>[%g,%g]: depth=%d, pos=%d, infer%s=<%s>, inferinfo=%d, %g -> %g\n",
517 var->lbchginfos[
var->nlbchginfos].oldbound = oldbound;
518 var->lbchginfos[
var->nlbchginfos].newbound = newbound;
519 var->lbchginfos[
var->nlbchginfos].var =
var;
520 var->lbchginfos[
var->nlbchginfos].bdchgidx.depth =
depth;
521 var->lbchginfos[
var->nlbchginfos].bdchgidx.pos = pos;
522 var->lbchginfos[
var->nlbchginfos].pos =
var->nlbchginfos;
523 var->lbchginfos[
var->nlbchginfos].boundchgtype = boundchgtype;
525 var->lbchginfos[
var->nlbchginfos].redundant =
FALSE;
526 var->lbchginfos[
var->nlbchginfos].inferboundtype = inferboundtype;
527 var->lbchginfos[
var->nlbchginfos].inferencedata.var = infervar;
528 var->lbchginfos[
var->nlbchginfos].inferencedata.info = inferinfo;
533 switch( boundchgtype )
539 var->lbchginfos[
var->nlbchginfos].inferencedata.reason.cons = infercons;
542 var->lbchginfos[
var->nlbchginfos].inferencedata.reason.prop = inferprop;
553 &
var->lbchginfos[
var->nlbchginfos-1].bdchgidx));
586 SCIPsetDebugMsg(
set,
"adding upper bound change info to var <%s>[%g,%g]: depth=%d, pos=%d, infer%s=<%s>, inferinfo=%d, %g -> %g\n",
592 var->ubchginfos[
var->nubchginfos].oldbound = oldbound;
593 var->ubchginfos[
var->nubchginfos].newbound = newbound;
594 var->ubchginfos[
var->nubchginfos].var =
var;
595 var->ubchginfos[
var->nubchginfos].bdchgidx.depth =
depth;
596 var->ubchginfos[
var->nubchginfos].bdchgidx.pos = pos;
597 var->ubchginfos[
var->nubchginfos].pos =
var->nubchginfos;
598 var->ubchginfos[
var->nubchginfos].boundchgtype = boundchgtype;
600 var->ubchginfos[
var->nubchginfos].redundant =
FALSE;
601 var->ubchginfos[
var->nubchginfos].inferboundtype = inferboundtype;
602 var->ubchginfos[
var->nubchginfos].inferencedata.var = infervar;
603 var->ubchginfos[
var->nubchginfos].inferencedata.info = inferinfo;
608 switch( boundchgtype )
614 var->ubchginfos[
var->nubchginfos].inferencedata.reason.cons = infercons;
617 var->ubchginfos[
var->nubchginfos].inferencedata.reason.prop = inferprop;
628 &
var->ubchginfos[
var->nubchginfos-1].bdchgidx));
692 SCIPsetDebugMsg(
set,
" -> constraint <%s> inference: new lower bound of <%s>[%g,%g]: %g\n",
702 SCIPsetDebugMsg(
set,
" -> propagator <%s> inference: new lower bound of <%s>[%g,%g]: %g\n",
719 var->lbchginfos[
var->nlbchginfos - 1].oldcertificateindex =
var->exactdata->locdom.lbcertificateidx;
764 SCIPsetDebugMsg(
set,
" -> constraint <%s> inference: new upper bound of <%s>[%g,%g]: %g\n",
774 SCIPsetDebugMsg(
set,
" -> propagator <%s> inference: new upper bound of <%s>[%g,%g]: %g\n",
792 var->ubchginfos[
var->nubchginfos - 1].oldcertificateindex =
var->exactdata->locdom.ubcertificateidx;
904 SCIPsetDebugMsg(
set,
" -> constraint <%s> inference: new lower bound of <%s>[%g,%g]: %g\n",
914 SCIPsetDebugMsg(
set,
" -> propagator <%s> inference: new lower bound of <%s>[%g,%g]: %g\n",
932 var->lbchginfos[
var->nlbchginfos - 1].oldcertificateindex =
var->exactdata->locdom.lbcertificateidx;
978 SCIPsetDebugMsg(
set,
" -> constraint <%s> inference: new upper bound of <%s>[%g,%g]: %g\n",
988 SCIPsetDebugMsg(
set,
" -> propagator <%s> inference: new upper bound of <%s>[%g,%g]: %g\n",
1006 var->ubchginfos[
var->nubchginfos - 1].oldcertificateindex =
var->exactdata->locdom.ubcertificateidx;
1092 SCIPsetDebugMsg(
set,
"removed lower bound change info of var <%s>[%g,%g]: depth=%d, pos=%d, %g -> %g\n",
1094 var->lbchginfos[
var->nlbchginfos].bdchgidx.depth,
var->lbchginfos[
var->nlbchginfos].bdchgidx.pos,
1095 var->lbchginfos[
var->nlbchginfos].oldbound,
var->lbchginfos[
var->nlbchginfos].newbound);
1102 var->lbchginfos[
var->nlbchginfos].oldcertificateindex) );
1116 var->lbchginfos[
var->nlbchginfos].oldbound) );
1131 SCIPsetDebugMsg(
set,
"removed upper bound change info of var <%s>[%g,%g]: depth=%d, pos=%d, %g -> %g\n",
1133 var->ubchginfos[
var->nubchginfos].bdchgidx.depth,
var->ubchginfos[
var->nubchginfos].bdchgidx.pos,
1134 var->ubchginfos[
var->nubchginfos].oldbound,
var->ubchginfos[
var->nubchginfos].newbound);
1140 var->ubchginfos[
var->nubchginfos].oldcertificateindex) );
1154 var->ubchginfos[
var->nubchginfos].oldbound) );
1337 (*domchg)->domchgdyn.nboundchgs = 0;
1338 (*domchg)->domchgdyn.boundchgs =
NULL;
1339 (*domchg)->domchgdyn.nholechgs = 0;
1340 (*domchg)->domchgdyn.holechgs =
NULL;
1341 (*domchg)->domchgdyn.boundchgssize = 0;
1342 (*domchg)->domchgdyn.holechgssize = 0;
1359 if( *domchg !=
NULL )
1364 for(
i = 0;
i < (int)(*domchg)->domchgbound.nboundchgs; ++
i )
1367 if( (*domchg)->domchgbound.boundchgs[
i].newboundexact !=
NULL )
1372 switch( (*domchg)->domchgdyn.domchgtype )
1407 SCIPdebugMessage(
"making domain change data %p pointing to %p dynamic\n", (
void*)domchg, (
void*)*domchg);
1409 if( *domchg ==
NULL )
1415 switch( (*domchg)->domchgdyn.domchgtype )
1419 (*domchg)->domchgdyn.nholechgs = 0;
1420 (*domchg)->domchgdyn.holechgs =
NULL;
1421 (*domchg)->domchgdyn.boundchgssize = (int) (*domchg)->domchgdyn.nboundchgs;
1422 (*domchg)->domchgdyn.holechgssize = 0;
1427 (*domchg)->domchgdyn.boundchgssize = (int) (*domchg)->domchgdyn.nboundchgs;
1428 (*domchg)->domchgdyn.holechgssize = (*domchg)->domchgdyn.nholechgs;
1441 for(
i = 0;
i < (int)(*domchg)->domchgbound.nboundchgs; ++
i )
1443 ||
EPSISINT((*domchg)->domchgbound.boundchgs[
i].newbound, 1e-06));
1462 SCIPsetDebugMsg(
set,
"making domain change data %p pointing to %p static\n", (
void*)domchg, (
void*)*domchg);
1464 if( *domchg !=
NULL )
1466 switch( (*domchg)->domchgdyn.domchgtype )
1469 if( (*domchg)->domchgbound.nboundchgs == 0 )
1475 if( (*domchg)->domchgboth.nholechgs == 0 )
1477 if( (*domchg)->domchgbound.nboundchgs == 0 )
1489 if( (*domchg)->domchgboth.nholechgs == 0 )
1491 if( (*domchg)->domchgbound.nboundchgs == 0 )
1499 (*domchg)->domchgdyn.boundchgssize, (*domchg)->domchgdyn.nboundchgs) );
1511 (*domchg)->domchgdyn.boundchgssize, (*domchg)->domchgdyn.nboundchgs) );
1513 (*domchg)->domchgdyn.holechgssize, (*domchg)->domchgdyn.nholechgs) );
1525 if( *domchg !=
NULL )
1528 for(
i = 0;
i < (int)(*domchg)->domchgbound.nboundchgs; ++
i )
1560 assert(num <= domchg->domchgdyn.boundchgssize);
1585 assert(num <= domchg->domchgdyn.holechgssize);
1611 if( domchg ==
NULL )
1653 if( domchg ==
NULL )
1693 if( domchg ==
NULL )
1696 SCIPsetDebugMsg(
set,
"applying domain changes at %p to the global problem\n", (
void*)domchg);
1702 branchcand, eventqueue, cliquetable,
cutoff) );
1762 SCIPsetDebugMsg(
set,
"adding %s bound change <%s: %g> of variable <%s> to domain change at %p pointing to %p\n",
1764 newbound,
var->name, (
void*)domchg, (
void*)*domchg);
1769 if( *domchg ==
NULL )
1783 boundchg = &(*domchg)->domchgdyn.boundchgs[(*domchg)->domchgdyn.nboundchgs];
1785 switch( boundchgtype )
1812 (*domchg)->domchgdyn.nboundchgs++;
1813 if( newboundexact !=
NULL )
1824#ifdef SCIP_DISABLED_CODE
1825#ifdef SCIP_MORE_DEBUG
1828 for(
i = 0;
i < (int)(*domchg)->domchgbound.nboundchgs; ++
i )
1856 if( *domchg ==
NULL )
1870 holechg = &(*domchg)->domchgdyn.holechgs[(*domchg)->domchgdyn.nholechgs];
1874 (*domchg)->domchgdyn.nholechgs++;
1898 else if( isintegral )
1931 else if( isintegral )
1947 else if( isintegral )
1980 else if( isintegral )
1997 for(
i = 0;
i <
var->data.multaggr.nvars;
i++ )
2027 onlyredundant ?
"redundant" :
"all", irrelevantvar ?
"irrelevant " :
"",
SCIPvarGetName(
var), lb, ub);
2030 if(
var->implics !=
NULL && (!onlyredundant || lb > 0.5 || ub < 0.5) )
2048 for(
i = 0;
i < nimpls;
i++ )
2053 implvar = implvars[
i];
2054 impltype = impltypes[
i];
2071 var->closestvblpcount = -1;
2083 var->closestvblpcount = -1;
2087 varfixing = !varfixing;
2089 while( varfixing ==
TRUE );
2118 for(
i = 0;
i < nvbds;
i++ )
2144 vars[newnvbds] = implvar;
2145 coefs[newnvbds] = coef;
2146 constants[newnvbds] = constants[
i];
2161 if( coef > 0.0 && implvar->
vubs !=
NULL )
2163 SCIPsetDebugMsg(
set,
"deleting variable upper bound from <%s> involving variable %s\n",
2167 var->closestvblpcount = -1;
2169 else if( coef < 0.0 && implvar->vlbs !=
NULL )
2171 SCIPsetDebugMsg(
set,
"deleting variable lower bound from <%s> involving variable %s\n",
2175 var->closestvblpcount = -1;
2183 var->closestvblpcount = -1;
2212 for(
i = 0;
i < nvbds;
i++ )
2238 vars[newnvbds] = implvar;
2239 coefs[newnvbds] = coefs[
i];
2240 constants[newnvbds] = constants[
i];
2255 if( coef < 0.0 && implvar->vubs !=
NULL )
2257 SCIPsetDebugMsg(
set,
"deleting variable upper bound from <%s> involving variable %s\n",
2261 var->closestvblpcount = -1;
2263 else if( coef > 0.0 && implvar->
vlbs !=
NULL )
2265 SCIPsetDebugMsg(
set,
"deleting variable lower bound from <%s> involving variable %s\n",
2269 var->closestvblpcount = -1;
2277 var->closestvblpcount = -1;
2361 if( !
set->exact_enable )
2369 if( ( lb == 0.0 || lb == 1.0 ) && ( ub == 0.0 || ub == 1.0 ) )
2378 SCIPerrorMessage(
"invalid bounds [%.2g,%.2g] for binary variable <%s>\n", lb, ub, name);
2394 (*var)->scip =
set->scip;
2397 (*var)->unchangedobj =
obj;
2398 (*var)->branchfactor = 1.0;
2399 (*var)->rootsol = 0.0;
2400 (*var)->bestrootsol = 0.0;
2401 (*var)->bestrootredcost = 0.0;
2403 (*var)->relaxsol = 0.0;
2404 (*var)->nlpsol = 0.0;
2405 (*var)->primsolavg = 0.5 * (lb + ub);
2408 (*var)->conflictrelaxedlb = (*var)->conflictlb;
2409 (*var)->conflictrelaxedub = (*var)->conflictub;
2412 (*var)->glbdom.holelist =
NULL;
2413 (*var)->glbdom.lb = lb;
2414 (*var)->glbdom.ub = ub;
2415 (*var)->locdom.holelist =
NULL;
2416 (*var)->locdom.lb = lb;
2417 (*var)->locdom.ub = ub;
2418 (*var)->varcopy = varcopy;
2419 (*var)->vardelorig = vardelorig;
2420 (*var)->vartrans = vartrans;
2421 (*var)->vardeltrans = vardeltrans;
2422 (*var)->vardata = vardata;
2423 (*var)->parentvars =
NULL;
2424 (*var)->negatedvar =
NULL;
2425 (*var)->vlbs =
NULL;
2426 (*var)->vubs =
NULL;
2427 (*var)->implics =
NULL;
2428 (*var)->cliquelist =
NULL;
2429 (*var)->eventfilter =
NULL;
2430 (*var)->lbchginfos =
NULL;
2431 (*var)->ubchginfos =
NULL;
2432 (*var)->index = stat->
nvaridx;
2433 (*var)->probindex = -1;
2434 (*var)->pseudocandindex = -1;
2435 (*var)->eventqueueindexobj = -1;
2436 (*var)->eventqueueindexlb = -1;
2437 (*var)->eventqueueindexub = -1;
2438 (*var)->parentvarssize = 0;
2439 (*var)->nparentvars = 0;
2441 (*var)->branchpriority = 0;
2443 (*var)->lbchginfossize = 0;
2444 (*var)->nlbchginfos = 0;
2445 (*var)->ubchginfossize = 0;
2446 (*var)->nubchginfos = 0;
2447 (*var)->conflictlbcount = 0;
2448 (*var)->conflictubcount = 0;
2449 (*var)->closestvlbidx = -1;
2450 (*var)->closestvubidx = -1;
2451 (*var)->closestvblpcount = -1;
2452 (*var)->initial = initial;
2453 (*var)->removable = removable;
2454 (*var)->deleted =
FALSE;
2455 (*var)->donotaggr =
FALSE;
2456 (*var)->donotmultaggr =
FALSE;
2457 (*var)->vartype = (
unsigned int)vartype;
2458 (*var)->varimpltype = (
unsigned int)impltype;
2459 (*var)->pseudocostflag =
FALSE;
2460 (*var)->eventqueueimpl =
FALSE;
2461 (*var)->deletable =
FALSE;
2462 (*var)->delglobalstructs =
FALSE;
2463 (*var)->exactdata =
NULL;
2464 (*var)->relaxationonly =
FALSE;
2468 (*var)->nlocksdown[
i] = 0;
2469 (*var)->nlocksup[
i] = 0;
2479 (*var)->valuehistory =
NULL;
2512 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, lb, ub,
obj, vartype, impltype, initial, removable,
2513 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
2517 (*var)->data.original.origdom.holelist =
NULL;
2518 (*var)->data.original.origdom.lb = lb;
2519 (*var)->data.original.origdom.ub = ub;
2520 (*var)->data.original.transvar =
NULL;
2555 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, lb, ub,
obj, vartype, impltype, initial, removable,
2556 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
2563 (*var)->data.loose.minaggrcoef = 1.0;
2564 (*var)->data.loose.maxaggrcoef = 1.0;
2595 var->glbdom.lb =
var->data.original.origdom.lb;
2596 var->locdom.lb =
var->data.original.origdom.lb;
2616 var->glbdom.ub =
var->data.original.origdom.ub;
2617 var->locdom.ub =
var->data.original.origdom.ub;
2637 var->obj =
var->unchangedobj;
2650 var->exactdata->glbdom.lbcertificateidx = -1;
2651 var->exactdata->glbdom.ubcertificateidx = -1;
2652 var->exactdata->locdom.lbcertificateidx = -1;
2653 var->exactdata->locdom.ubcertificateidx = -1;
2654 var->exactdata->colexact =
NULL;
2656 var->exactdata->certificateindex = -1;
2657 var->exactdata->multaggr.scalars =
NULL;
2658 var->exactdata->multaggr.constant =
NULL;
2659 var->exactdata->aggregate.constant =
NULL;
2660 var->exactdata->aggregate.scalar =
NULL;
2661 var->primsolavg = 0.5 * (
var->data.original.origdom.lb +
var->data.original.origdom.ub);
2674 SCIPerrorMessage(
"invalid bounds [%.2g,%.2g] for binary variable <%s>\n",
var->data.original.origdom.lb,
2675 var->data.original.origdom.ub,
var->name);
2808 (*var)->donotaggr = sourcevar->
donotaggr;
2818 if( sourcevar->varcopy !=
NULL )
2821 varmap, consmap, (*
var), &targetdata, &
result) );
2835 (*var)->varcopy = sourcevar->varcopy;
2836 (*var)->vardelorig = sourcevar->vardelorig;
2837 (*var)->vartrans = sourcevar->vartrans;
2838 (*var)->vardeltrans = sourcevar->vardeltrans;
2845 (*var)->vardata = sourcevar->
vardata;
2850 if(
set->history_allowtransfer )
2860 (*var)->varcopy = sourcevar->varcopy;
2861 (*var)->vardelorig = sourcevar->vardelorig;
2862 (*var)->vartrans = sourcevar->vartrans;
2863 (*var)->vardeltrans = sourcevar->vardeltrans;
2884 if( valueexact !=
NULL )
2901 else if( value !=
NULL )
2906 if( strncmp(str,
"+inf", 4) == 0 )
2910 else if( strncmp(str,
"-inf", 4) == 0 )
2946 || ( strncmp(type,
"original", 8) != 0 && strncmp(type,
"global", 6) != 0 && strncmp(type,
"local", 5) != 0 && strncmp(type,
"lazy", 4) != 0 ) )
2966 if( **endptr ==
',' )
3013 if( strncmp(token,
"binary", 3) == 0 )
3015 else if( strncmp(token,
"integer", 3) == 0 )
3017 else if( strncmp(token,
"implicit", 3) == 0 )
3022 else if( strncmp(token,
"continuous", 3) == 0 )
3051 if( *endptr ==
NULL )
3056 assert(strncmp(token,
"global", 6) == 0 || strncmp(token,
"original", 8) == 0);
3062 for(
i = 0;
i < 2 && *endptr !=
NULL && **endptr !=
'\0'; ++
i )
3071 if( strncmp(token,
"local", 5) == 0 )
3087 if( lbexact !=
NULL )
3093 if( ubexact !=
NULL )
3101 else if( strncmp(token,
"lazy", 4) == 0 )
3108 if( *endptr ==
NULL )
3115 if( lazylb !=
NULL )
3118 if( lazyub !=
NULL )
3121 if( lazylbexact !=
NULL )
3124 if( lazyubexact !=
NULL )
3131 if( lb !=
NULL && *lb < 0.0 )
3133 SCIPerrorMessage(
"Parsed invalid lower bound for binary variable <%s>: %f.\n", name, *lb);
3137 if( ub !=
NULL && *ub > 1.0 )
3139 SCIPerrorMessage(
"Parsed invalid upper bound for binary variable <%s>: %f.\n", name, *ub);
3145 SCIPerrorMessage(
"Parsed invalid exact lower bound for binary variable <%s>: %f.\n",
3152 SCIPerrorMessage(
"Parsed invalid exact upper bound for binary variable <%s>: %f.\n",
3159 if( lazylb !=
NULL && *lazylb < 0.0 )
3161 SCIPerrorMessage(
"Parsed invalid lazy lower bound for binary variable <%s>: %f.\n", name, *lazylb);
3165 if( lazyub !=
NULL && *lazyub > 1.0 )
3167 SCIPerrorMessage(
"Parsed invalid lazy upper bound for binary variable <%s>: %f.\n", name, *lazyub);
3173 SCIPerrorMessage(
"Parsed invalid exact lazy lower bound for binary variable <%s>: %f.\n",
3180 SCIPerrorMessage(
"Parsed invalid exact lazy upper bound for binary variable <%s>: %f.\n",
3188 if( *endptr !=
NULL )
3195 if( *endptr == strptr )
3199 if( strncmp(token,
"implied", 7) == 0 )
3204 if( strncmp(strptr,
"strong", 6) == 0 )
3207 *endptr = strptr + 6;
3209 else if( strncmp(strptr,
"weak", 4) == 0 )
3212 *endptr = strptr + 4;
3214 else if( strncmp(strptr,
"none", 4) == 0 )
3217 *endptr = strptr + 4;
3221 SCIPerrorMessage(
"Expected implied integral type 'none', 'weak', or 'strong', got: '%s'.\n", strptr);
3265 if(
set->exact_enable )
3280 SCIP_CALL(
varParse(
set, messagehdlr, str, name,
NULL,
NULL,
NULL, lb, ub,
obj, &vartype, &impltype,
3286 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, 0.0, 0.0, 0.0, vartype, impltype, initial, removable,
3287 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
3293 (*var)->data.original.origdom.holelist =
NULL;
3294 (*var)->data.original.transvar =
NULL;
3325 SCIP_CALL(
varParse(
set, messagehdlr, str, name, &lb, &ub, &
obj,
NULL,
NULL,
NULL, &vartype, &impltype,
3331 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, lb, ub,
obj, vartype, impltype, initial, removable,
3332 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
3337 (*var)->data.original.origdom.holelist =
NULL;
3338 (*var)->data.original.origdom.lb = (*var)->glbdom.lb;
3339 (*var)->data.original.origdom.ub = (*var)->glbdom.ub;
3340 (*var)->data.original.transvar =
NULL;
3343 (*var)->lazylb = lazylb;
3344 (*var)->lazyub = lazyub;
3387 if(
set->exact_enable )
3402 SCIP_CALL(
varParse(
set, messagehdlr, str, name,
NULL,
NULL,
NULL, lb, ub,
obj, &vartype, &impltype,
3408 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, 0.0, 0.0, 0.0, vartype, impltype, initial, removable,
3409 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
3415 (*var)->data.loose.minaggrcoef = 1.0;
3416 (*var)->data.loose.maxaggrcoef = 1.0;
3451 SCIP_CALL(
varParse(
set, messagehdlr, str, name, &lb, &ub, &
obj,
NULL,
NULL,
NULL, &vartype, &impltype,
3452 &lazylb, &lazyub,
NULL,
NULL,
TRUE, endptr, success) );
3457 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, lb, ub,
obj, vartype, impltype, initial, removable,
3458 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
3463 (*var)->data.loose.minaggrcoef = 1.0;
3464 (*var)->data.loose.maxaggrcoef = 1.0;
3465 (*var)->lazylb = lazylb;
3466 (*var)->lazyub = lazyub;
3490 if( num >
var->parentvarssize )
3496 var->parentvarssize = newsize;
3498 assert(num <= var->parentvarssize);
3519 parentvar->
name, (
void*)parentvar,
var->name, (
void*)
var,
var->nparentvars);
3523 var->parentvars[
var->nparentvars] = parentvar;
3547 for(
i = 0;
i < (*var)->nparentvars; ++
i )
3567#ifdef SCIP_DISABLED_CODE
3574 if( v < parentvar->data.multaggr.nvars-1 )
3585 assert((*var)->negatedvar == parentvar);
3587 (*var)->negatedvar =
NULL;
3591 SCIPerrorMessage(
"parent variable is neither ORIGINAL, AGGREGATED nor NEGATED\n");
3615 if( !
set->exact_enable )
3629 if(
var->exactdata->aggregate.scalar !=
NULL )
3635 if(
var->exactdata->multaggr.scalars !=
NULL )
3669 assert((*var)->nuses == 0);
3670 assert((*var)->probindex == -1);
3679 assert((*var)->data.original.transvar ==
NULL);
3680 holelistFree(&(*var)->data.original.origdom.holelist, blkmem);
3681 assert((*var)->data.original.origdom.holelist ==
NULL);
3708 if( (*var)->vardelorig !=
NULL )
3715 if( (*var)->vardeltrans !=
NULL )
3722 if( (*var)->eventfilter !=
NULL )
3774#ifdef DEBUGUSES_VARNAME
3775 if( strcmp(
var->name, DEBUGUSES_VARNAME) == 0
3776#ifdef DEBUGUSES_PROBNAME
3782 printf(
"Captured variable " DEBUGUSES_VARNAME
" in SCIP %p, now %d uses; captured at\n", (
void*)
var->scip,
var->nuses);
3799 assert((*var)->nuses >= 1);
3803 SCIPsetDebugMsg(
set,
"release variable <%s> with nuses=%d\n", (*var)->name, (*var)->nuses);
3806#ifdef DEBUGUSES_VARNAME
3807 if( strcmp((*var)->name, DEBUGUSES_VARNAME) == 0
3808#ifdef DEBUGUSES_PROBNAME
3809 && (((*var)->scip->transprob !=
NULL && strcmp(
SCIPprobGetName((*var)->scip->transprob), DEBUGUSES_PROBNAME) == 0) ||
3810 strcmp(
SCIPprobGetName((*var)->scip->origprob), DEBUGUSES_PROBNAME) == 0)
3814 printf(
"Released variable " DEBUGUSES_VARNAME
" in SCIP %p, now %d uses; released at\n", (
void*)(*var)->scip, (*var)->nuses);
3819 if( (*var)->nuses == 0 )
3855 var->conflictlbcount = 0;
3856 var->conflictubcount = 0;
3931 if( holelist ==
NULL )
3941 while(holelist !=
NULL )
3975 if( (
int)impltype > 2 -
set->write_implintlevel )
3980 if( (
int)impltype > 2 +
set->write_implintlevel )
4161 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
4220 if( addnlocksdown == 0 && addnlocksup == 0 )
4224 SCIPsetDebugMsg(
set,
"add rounding locks %d/%d to variable <%s> (locks=%d/%d, type=%u)\n",
4225 addnlocksdown, addnlocksup,
var->name,
var->nlocksdown[locktype],
var->nlocksup[locktype], locktype);
4244 lockvar->
nlocksdown[locktype] += addnlocksdown;
4245 lockvar->
nlocksup[locktype] += addnlocksup;
4255 lockvar->
nlocksdown[locktype] += addnlocksdown;
4256 lockvar->
nlocksup[locktype] += addnlocksup;
4262 && lockvar->
nlocksup[locktype] <= 1 )
4282 lockvar->
nlocksdown[locktype] += addnlocksdown;
4283 lockvar->
nlocksup[locktype] += addnlocksup;
4337 if(
var->data.original.transvar !=
NULL )
4340 return var->nlocksdown[locktype];
4345 return var->nlocksdown[locktype];
4349 if(
var->data.aggregate.scalar > 0.0 )
4357 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
4359 if(
var->data.multaggr.scalars[
i] > 0.0 )
4395 if(
var->data.original.transvar !=
NULL )
4398 return var->nlocksup[locktype];
4403 return var->nlocksup[locktype];
4407 if(
var->data.aggregate.scalar > 0.0 )
4415 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
4417 if(
var->data.multaggr.scalars[
i] > 0.0 )
4523 origvar->vardelorig, origvar->vartrans, origvar->vardeltrans, origvar->varcopy,
NULL) );
4542 (*transvar)->nlocksup[
i] = origvar->
nlocksup[
i];
4543 assert((*transvar)->nlocksdown[
i] >= 0);
4544 assert((*transvar)->nlocksup[
i] >= 0);
4548 (*transvar)->donotaggr = origvar->
donotaggr;
4552 (*transvar)->lazylb = origvar->
lazylb;
4553 (*transvar)->lazyub = origvar->
lazyub;
4561 if( origvar->vartrans !=
NULL )
4566 (*transvar)->vardata = origvar->
vardata;
4569 SCIPsetDebugMsg(
set,
"transformed variable: <%s>[%p] -> <%s>[%p]\n", origvar->
name, (
void*)origvar, (*transvar)->
name, (
void*)*transvar);
4627 if(
var->probindex != -1 )
4648 if( !
set->exact_enable )
4664 if(
var->probindex != -1 )
4698 if(
var->probindex != -1 )
4708 var->data.loose.minaggrcoef = 1.0;
4709 var->data.loose.maxaggrcoef = 1.0;
4735 assert(0 <= fixeventtype && fixeventtype <= 2);
4742 for(
i =
var->nparentvars -1;
i >= 0; --
i )
4748 switch( fixeventtype )
4752 for(
i =
var->nparentvars - 1;
i >= 0; --
i )
4769 for(
i =
var->nparentvars - 1;
i >= 0; --
i )
4792 for(
i =
var->nparentvars - 1;
i >= 0; --
i )
4847 *infeasible =
FALSE;
4853 SCIPsetDebugMsg(
set,
" -> variable already fixed to %g (fixedval=%g): infeasible=%u\n",
var->locdom.lb, fixedval, *infeasible);
4860 SCIPsetDebugMsg(
set,
" -> fixing infeasible: locdom=[%g,%g], fixedval=%g\n",
var->locdom.lb,
var->locdom.ub, fixedval);
4868 if(
var->data.original.transvar ==
NULL )
4874 lp, branchcand, eventqueue, eventfilter, cliquetable, fixedval, infeasible, fixed) );
4904 var->glbdom.lb = fixedval;
4905 var->glbdom.ub = fixedval;
4908 var->locdom.lb = fixedval;
4909 var->locdom.ub = fixedval;
4925 if(
var->probindex != -1 )
4931 SCIP_CALL(
SCIPvarAddObj(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
4952 childfixedval = (fixedval -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
4953 SCIP_CALL(
SCIPvarFix(
var->data.aggregate.var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
4954 branchcand, eventqueue, eventfilter, cliquetable, childfixedval, infeasible, fixed) );
4968 SCIP_CALL(
SCIPvarFix(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
4969 branchcand, eventqueue, eventfilter, cliquetable,
var->data.negate.constant - fixedval, infeasible, fixed) );
5009 *infeasible =
FALSE;
5012 if( !
set->exact_enable )
5031 SCIPrationalDebugMessage(
" -> variable already fixed to %q (fixedval=%q): infeasible=%u\n",
var->exactdata->locdom.lb, fixedval, *infeasible);
5038 SCIPrationalDebugMessage(
" -> fixing infeasible: locdom=[%q,%q], fixedval=%q\n",
var->exactdata->locdom.lb,
var->exactdata->locdom.ub, fixedval);
5046 if(
var->data.original.transvar ==
NULL )
5052 lp, branchcand, eventqueue, eventfilter, cliquetable, fixedval, infeasible, fixed) );
5096 if(
var->probindex != -1 )
5102 SCIP_CALL(
SCIPvarAddObjExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
5130 SCIP_CALL(
SCIPvarFixExact(
var->data.aggregate.var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
5131 branchcand, eventqueue, eventfilter, cliquetable, childfixedval, infeasible, fixed) );
5147 SCIP_CALL(
SCIPvarFixExact(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
5148 branchcand, eventqueue, eventfilter, cliquetable, fixedval, infeasible, fixed) );
5231 tmpvarssize = *
nvars;
5235 activevarssize =
MAX(10, 2 * (*
nvars));
5243 activeconstant = 0.0;
5246 for( v = 0; v < *
nvars; ++v )
5268 if( tmpscalars[
var->index] == 0.0 )
5271 activevars[nactivevars++] =
var;
5273 tmpvars[ntmpvars++] =
var;
5275 tmpscalars[
var->index] += scalar;
5285 while( ntmpvars >= 1 )
5289 var = tmpvars[ntmpvars];
5294 scalar = tmpscalars[
var->index];
5300 nmultvars =
var->data.multaggr.nvars;
5301 multvars =
var->data.multaggr.vars;
5302 multscalars =
var->data.multaggr.scalars;
5305 tmpscalars[
var->index] = 0.0;
5308 for( v = 0; v < nmultvars; ++v )
5310 multvar = multvars[v];
5311 multscalar = multscalars[v];
5319 if( !activeconstantinf )
5326 if( scalar * multconstant > 0.0 )
5329 activeconstantinf =
TRUE;
5334 activeconstantinf =
TRUE;
5338 activeconstant += scalar * multconstant;
5351 if( multscalar == 0.0 )
5356 if( tmpscalars[multvar->
index] == 0.0 )
5362 if( nactivevars >= activevarssize )
5364 activevarssize *= 2;
5366 assert(nactivevars < activevarssize);
5368 activevars[nactivevars++] = multvar;
5373 if( ntmpvars >= tmpvarssize )
5377 assert(ntmpvars <= tmpvarssize);
5379 tmpvars[ntmpvars++] = multvar;
5384 tmpscalars[multvar->
index] += scalar * multscalar;
5385 assert(scalar * multscalar != 0.0);
5389 if( !activeconstantinf )
5398 if( scalar * multconstant > 0.0 )
5401 activeconstantinf =
TRUE;
5406 activeconstantinf =
TRUE;
5410 activeconstant += scalar * multconstant;
5428 if( varssize >= nactivevars )
5435 if( activeconstantinf )
5436 *constant = activeconstant;
5438 *constant += activeconstant;
5450 for( v = 0; v < nactivevars; ++v )
5452 var = activevars[v];
5467 tmpscalars[
var->index] = 0.0;
5470 *requiredsize = *
nvars;
5475 for( v = 0; v < nactivevars; ++v )
5477 var = activevars[v];
5479 tmpscalars[
var->index] = 0.0;
5481 *requiredsize = nactivevars;
5576 activeconstantinf =
FALSE;
5577 activevarssize = (*nvars) * 2;
5579 tmpvarssize = *
nvars;
5594 for( v = ntmpvars - 1; v >= 0; --v )
5617 noldtmpvars = ntmpvars;
5620 SCIPsortPtrPtr((
void**)tmpvars, (
void**)tmpscalars, SCIPvarComp, noldtmpvars);
5622 for( v = 1; v < noldtmpvars; ++v )
5627 SCIPrationalAdd(tmpscalars[ntmpvars], tmpscalars[ntmpvars], tmpscalars[v]);
5635 tmpvars[ntmpvars] = tmpvars[v];
5641#ifdef SCIP_MORE_DEBUG
5642 for( v = 1; v < ntmpvars; ++v )
5647 while( ntmpvars >= 1 )
5651 var = tmpvars[ntmpvars];
5670 if( nactivevars >= activevarssize )
5672 int newactivevarssize = activevarssize * 2;
5675 activevarssize = newactivevarssize;
5676 assert(nactivevars < activevarssize);
5678 activevars[nactivevars] =
var;
5685 nmultvars =
var->data.multaggr.nvars;
5686 multvars =
var->data.multaggr.vars;
5687 multscalars =
var->exactdata->multaggr.scalars;
5690 if( nmultvars + ntmpvars > tmpvarssize )
5692 ntmpvarsnew = tmpvarssize;
5693 while( nmultvars + ntmpvars > ntmpvarsnew )
5697 assert(nmultvars + ntmpvars <= ntmpvarsnew);
5698 tmpvarssize = ntmpvarsnew;
5701 if( nmultvars > tmpvarssize2 )
5703 ntmpvarsnew = tmpvarssize2;
5704 while( nmultvars > ntmpvarsnew )
5708 assert(nmultvars <= ntmpvarsnew);
5709 tmpvarssize2 = ntmpvarsnew;
5714 for( ; nmultvars >= 0; --nmultvars )
5719 multvar = multvars[nmultvars];
5731 if( !activeconstantinf )
5741 activeconstantinf =
TRUE;
5746 activeconstantinf =
TRUE;
5760 tmpvars2[ntmpvars2] = multvar;
5763 assert(ntmpvars2 <= tmpvarssize2);
5773 SCIPsortPtrPtr((
void**)tmpvars2, (
void**)tmpscalars2, SCIPvarComp, ntmpvars2);
5775 for( v = 1; v < ntmpvars2; ++v )
5788 tmpvars2[pos] = tmpvars2[v];
5792 ntmpvars2 = pos + 1;
5793#ifdef SCIP_MORE_DEBUG
5794 for( v = 1; v < ntmpvars2; ++v )
5798 for( v = 1; v < ntmpvars; ++v )
5805 pos = ntmpvars + ntmpvars2 - 1;
5806 ntmpvars += ntmpvars2;
5808 while( v >= 0 && k >= 0 )
5814 tmpvars[pos] = tmpvars[v];
5820 tmpvars[pos] = tmpvars2[k];
5830 tmpvars[pos] = tmpvars[v];
5838 tmpvars[pos] = tmpvars2[k];
5844#ifdef SCIP_MORE_DEBUG
5845 for( v = 1; v < ntmpvars; ++v )
5851 if( !activeconstantinf )
5863 activeconstantinf =
TRUE;
5868 activeconstantinf =
TRUE;
5890 if( mergemultiples )
5895 SCIPsortPtrPtr((
void**)activevars, (
void**)activescalars, SCIPvarComp, nactivevars);
5898 v = nactivevars - 1;
5907 SCIPrationalAdd(activescalars[v - 1], activescalars[v - 1], activescalars[v]);
5909 activevars[v] = activevars[nactivevars];
5915 activevars[v] = activevars[nactivevars];
5919 activevars[v] = activevars[nactivevars];
5933 for( v = 0; v < nactivevars / 2; ++v )
5935 tmpvar = activevars[v];
5937 activevars[v] = activevars[nactivevars - 1 - v];
5939 activevars[nactivevars - 1 - v] = tmpvar;
5944 *requiredsize = nactivevars;
5946 if( varssize >= *requiredsize )
5950 *
nvars = *requiredsize;
5955 if( activeconstantinf )
5962 for( v = 0; v < *
nvars; ++v )
5964 vars[v] = activevars[v];
5995 int multrequiredsize;
6024 nlocksup[
i] =
var->nlocksup[
i];
6025 nlocksdown[
i] =
var->nlocksdown[
i];
6030 multconstant =
var->data.multaggr.constant;
6031 nmultvars =
var->data.multaggr.nvars;
6032 multvarssize =
var->data.multaggr.varssize;
6034 if( !
set->exact_enable )
6037 multvarssize, &multconstant, &multrequiredsize) );
6039 if( multrequiredsize > multvarssize )
6043 multvarssize = multrequiredsize;
6045 multvarssize, &multconstant, &multrequiredsize) );
6047 assert( multrequiredsize <= multvarssize );
6064 var->data.multaggr.constant = multconstant;
6069 &nmultvars, multvarssize,
var->exactdata->multaggr.constant, &multrequiredsize,
TRUE) );
6071 var->data.multaggr.nvars = nmultvars;
6072 var->data.multaggr.varssize = multvarssize;
6075 if( multrequiredsize > multvarssize )
6080 multvarssize = multrequiredsize;
6082 &nmultvars, multvarssize,
var->exactdata->multaggr.constant, &multrequiredsize,
TRUE) );
6084 var->data.multaggr.nvars = nmultvars;
6085 var->data.multaggr.varssize = multvarssize;
6089 assert( multrequiredsize <= multvarssize );
6093 var->data.multaggr.nvars = nmultvars;
6094 var->data.multaggr.varssize = multvarssize;
6156 assert(aggscalar != 0.0);
6158 maxscalar = minscalar =
REALABS(aggscalar);
6161 if(
var->data.loose.minaggrcoef > minscalar )
6162 var->data.loose.minaggrcoef = minscalar;
6163 if(
var->data.loose.maxaggrcoef < maxscalar )
6164 var->data.loose.maxaggrcoef = maxscalar;
6205 *infeasible =
FALSE;
6208 SCIPsetDebugMsg(
set,
"updating bounds of variables in aggregation <%s> == %g*<%s> %+g\n",
var->name, scalar, aggvar->
name, constant);
6215 aggvarbdschanged =
FALSE;
6223 varlb = aggvar->
glbdom.
lb * scalar + constant;
6227 varub = aggvar->
glbdom.
ub * scalar + constant;
6234 varub = aggvar->
glbdom.
lb * scalar + constant;
6238 varlb = aggvar->
glbdom.
ub * scalar + constant;
6240 varlb =
MAX(varlb,
var->glbdom.lb);
6241 varub =
MIN(varub,
var->glbdom.ub);
6255 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6256 eventqueue, eventfilter, cliquetable, varlb, infeasible, fixed) );
6257 if( !(*infeasible) )
6261 SCIP_CALL(
SCIPvarFix(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6262 eventqueue, eventfilter, cliquetable, (varlb-constant)/scalar, infeasible, &aggfixed) );
6263 assert(*fixed == aggfixed);
6288 aggvarlb = (
var->glbdom.lb - constant) / scalar;
6292 aggvarub = (
var->glbdom.ub - constant) / scalar;
6299 aggvarub = (
var->glbdom.lb - constant) / scalar;
6303 aggvarlb = (
var->glbdom.ub - constant) / scalar;
6320 SCIP_CALL(
SCIPvarFix(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6321 eventqueue, eventfilter, cliquetable, aggvarlb, infeasible, fixed) );
6322 if( !(*infeasible) )
6326 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6327 eventqueue, eventfilter, cliquetable, aggvarlb * scalar + constant, infeasible, &varfixed) );
6328 assert(*fixed == varfixed);
6352 while( aggvarbdschanged );
6402 *infeasible =
FALSE;
6412 aggvarbdschanged =
FALSE;
6464 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6465 eventqueue, eventfilter, cliquetable, varlb, infeasible, fixed) );
6467 if( !(*infeasible) )
6474 SCIP_CALL(
SCIPvarFixExact(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6475 eventqueue, eventfilter, cliquetable, varlb, infeasible, &aggfixed) );
6476 assert(*fixed == aggfixed);
6545 SCIP_CALL(
SCIPvarFixExact(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6546 eventqueue, eventfilter, cliquetable, aggvarlb, infeasible, fixed) );
6548 if( !(*infeasible) )
6555 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6556 eventqueue, eventfilter, cliquetable, aggvarlb, infeasible, &varfixed) );
6557 assert(*fixed == varfixed);
6581 while( aggvarbdschanged );
6640 *infeasible =
FALSE;
6641 *aggregated =
FALSE;
6649 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue,
6650 eventfilter, cliquetable, constant, infeasible, aggregated) );
6685 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6686 eventqueue, eventfilter, cliquetable, constant/(1.0-scalar), infeasible, aggregated) );
6692 SCIP_CALL(
varUpdateAggregationBounds(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
6693 branchcand, eventqueue, eventfilter, cliquetable, aggvar, scalar, constant, infeasible, &fixed) );
6694 if( *infeasible || fixed )
6696 *aggregated = fixed;
6712 nlocksdown[
i] =
var->nlocksdown[
i];
6713 nlocksup[
i] =
var->nlocksup[
i];
6715 var->nlocksdown[
i] = 0;
6716 var->nlocksup[
i] = 0;
6729 var->data.negate.constant = 1.0;
6730 var->negatedvar = aggvar;
6745 var->data.aggregate.var = aggvar;
6746 var->data.aggregate.scalar = scalar;
6747 var->data.aggregate.constant = constant;
6777 for(
i = 0;
i < nvbds && !(*infeasible); ++
i )
6779 SCIP_CALL(
SCIPvarAddVlb(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
6780 eventqueue, eventfilter,
vars[
i], coefs[
i], constants[
i],
FALSE, infeasible,
NULL) );
6789 for(
i = 0;
i < nvbds && !(*infeasible); ++
i )
6791 SCIP_CALL(
SCIPvarAddVub(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
6792 eventqueue, eventfilter,
vars[
i], coefs[
i], constants[
i],
FALSE, infeasible,
NULL) );
6805 for(
i = 0;
i < 2; ++
i )
6817 for( j = 0; j < nimpls && !(*infeasible); ++j )
6822 SCIP_CALL(
SCIPvarAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
6823 branchcand, eventqueue, eventfilter, (
SCIP_Bool)
i, implvars[j], impltypes[j], implbounds[j],
FALSE,
6824 infeasible,
NULL) );
6880 if(
var->probindex != -1 )
6889 SCIP_CALL(
SCIPvarAddObj(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
6898 if( *infeasible || *aggregated )
6946 *infeasible =
FALSE;
6947 *aggregated =
FALSE;
6955 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6956 eventqueue, eventfilter, cliquetable, constant, infeasible, aggregated) );
6996 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6997 eventqueue, eventfilter, cliquetable, tmpval, infeasible, aggregated) );
7005 SCIP_CALL(
varUpdateAggregationBoundsExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
7006 branchcand, eventqueue, eventfilter, cliquetable, aggvar, scalar, constant, infeasible, &fixed) );
7007 if( *infeasible || fixed )
7009 *aggregated = fixed;
7032 nlocksdown[
i] =
var->nlocksdown[
i];
7033 nlocksup[
i] =
var->nlocksup[
i];
7035 var->nlocksdown[
i] = 0;
7036 var->nlocksup[
i] = 0;
7047 var->data.negate.constant = 1.0;
7048 var->negatedvar = aggvar;
7066 var->data.aggregate.var = aggvar;
7151 if(
var->probindex != -1 )
7160 SCIP_CALL(
SCIPvarAddObjExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
7223#define MAXDNOM 1000000LL
7248 *infeasible =
FALSE;
7249 *aggregated =
FALSE;
7269 a = (scm/scalarxd)*scalarxn;
7270 b = (scm/scalaryd)*scalaryn;
7302 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7303 branchcand, eventqueue, eventfilter, vary, (
SCIP_Real)(-
b/
a), (
SCIP_Real)(
c/
a), infeasible, aggregated) );
7311 SCIP_CALL(
SCIPvarAggregate(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7312 branchcand, eventqueue, eventfilter, varx, (
SCIP_Real)(-
a/
b), (
SCIP_Real)(
c/
b), infeasible, aggregated) );
7343 currentclass =
c %
a;
7344 if( currentclass < 0 )
7346 assert(0 <= currentclass && currentclass <
a);
7348 classstep = (-
b) %
a;
7352 assert(0 <= classstep && classstep <
a);
7354 while( currentclass != 0 )
7356 assert(0 <= currentclass && currentclass <
a);
7357 currentclass += classstep;
7358 if( currentclass >=
a )
7365 xsol = (
c -
b*ysol)/
a;
7377 impltype =
MIN(impltypex, impltypey);
7393 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7394 branchcand, eventqueue, eventfilter, aggvar, (
SCIP_Real)(-
b), (
SCIP_Real)xsol, infeasible, aggregated) );
7395 assert(*aggregated || *infeasible);
7397 if( !(*infeasible) )
7399 SCIP_CALL(
SCIPvarAggregate(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7400 branchcand, eventqueue, eventfilter, aggvar, (
SCIP_Real)
a, (
SCIP_Real)ysol, infeasible, aggregated) );
7401 assert(*aggregated || *infeasible);
7490 *infeasible =
FALSE;
7491 *aggregated =
FALSE;
7503 a = (scm/scalarxd)*scalarxn;
7504 b = (scm/scalaryd)*scalaryn;
7544 SCIP_CALL(
SCIPvarAggregateExact(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7545 branchcand, eventqueue, eventfilter, vary, tmprat1, tmprat2, infeasible, aggregated) );
7555 SCIP_CALL(
SCIPvarAggregateExact(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7556 branchcand, eventqueue, eventfilter, varx, tmprat1, tmprat2, infeasible, aggregated) );
7587 currentclass =
c %
a;
7588 if( currentclass < 0 )
7590 assert(0 <= currentclass && currentclass <
a);
7592 classstep = (-
b) %
a;
7596 assert(0 <= classstep && classstep <
a);
7598 while( currentclass != 0 )
7600 assert(0 <= currentclass && currentclass <
a);
7601 currentclass += classstep;
7602 if( currentclass >=
a )
7609 xsol = (
c -
b*ysol)/
a;
7621 impltype =
MIN(impltypex, impltypey);
7646 SCIP_CALL(
SCIPvarAggregateExact(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7647 branchcand, eventqueue, eventfilter, aggvar, tmprat1, tmprat2, infeasible, aggregated) );
7648 assert(*aggregated || *infeasible);
7650 if( !(*infeasible) )
7655 SCIP_CALL(
SCIPvarAggregateExact(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7656 branchcand, eventqueue, eventfilter, aggvar, tmprat1, tmprat2, infeasible, aggregated) );
7657 assert(*aggregated || *infeasible);
7735 *infeasible =
FALSE;
7736 *aggregated =
FALSE;
7743 if( typex < typey ||
7770 scalar = -scalary / scalarx;
7771 constant = rhs / scalarx;
7796 constant = rhs / scalary;
7831 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7832 branchcand, eventqueue, eventfilter, vary, scalar, constant, infeasible, aggregated) );
7839 SCIP_CALL(
tryAggregateIntVars(
set, blkmem, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7840 branchcand, eventqueue, eventfilter, varx, vary, scalarx, scalary, rhs, infeasible, aggregated) );
7912 *infeasible =
FALSE;
7913 *aggregated =
FALSE;
7917 maxscalar =
MAX(maxscalar, 1.0);
7919 if( absquot > maxscalar || absquot < 1 / maxscalar )
7933 if( typex < typey ||
8031 SCIP_CALL(
SCIPvarAggregateExact(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
8032 branchcand, eventqueue, eventfilter, vary, quotyx, constant, infeasible, aggregated) );
8041 SCIP_CALL(
tryAggregateIntVarsExact(
set, blkmem, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
8042 branchcand, eventqueue, eventfilter, varx, vary, scalarx, scalary, rhs, infeasible, aggregated) );
8088 int tmprequiredsize;
8101 SCIPsetDebugMsg(
set,
"trying multi-aggregating variable <%s> == ...%d vars... %+g\n",
var->name, naggvars, constant);
8103 *infeasible =
FALSE;
8104 *aggregated =
FALSE;
8109 if(
var->data.original.transvar ==
NULL )
8111 SCIPerrorMessage(
"cannot multi-aggregate an untransformed original variable\n");
8115 reopt, lp, cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars, constant, infeasible, aggregated) );
8122 ntmpvars = naggvars;
8123 tmpvarssize = naggvars;
8124 tmpconstant = constant;
8130 if( tmprequiredsize > tmpvarssize )
8134 tmpvarssize = tmprequiredsize;
8136 assert( tmprequiredsize <= tmpvarssize );
8144 for( v = ntmpvars - 1; v >= 0; --v )
8149 if( tmpvars[v]->index ==
var->index )
8151 tmpscalar += tmpscalars[v];
8152 tmpvars[v] = tmpvars[ntmpvars - 1];
8153 tmpscalars[v] = tmpscalars[ntmpvars - 1];
8165 SCIPsetDebugMsg(
set,
"Possible multi-aggregation was completely resolved and detected to be redundant.\n");
8170 SCIPsetDebugMsg(
set,
"Multi-aggregation was completely resolved and led to infeasibility.\n");
8175 else if( ntmpvars == 1 )
8177 assert(tmpscalars[0] != 0.0);
8181 SCIP_CALL(
SCIPvarFix(tmpvars[0], blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
8182 branchcand, eventqueue, eventfilter, cliquetable, -constant/tmpscalars[0], infeasible, aggregated) );
8185 else if( ntmpvars == 2 )
8188 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %g and %g and constant %g.\n",
8192 cliquetable, branchcand, eventqueue, eventfilter, tmpvars[0], tmpvars[1], tmpscalars[0],
8193 tmpscalars[1], -tmpconstant, infeasible, aggregated) );
8204 else if( tmpscalar != 0.0 )
8206 tmpscalar = 1 - tmpscalar;
8207 tmpconstant /= tmpscalar;
8208 for( v = 0; v < ntmpvars; ++v )
8209 tmpscalars[v] /= tmpscalar;
8216 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
8217 eventqueue, eventfilter, cliquetable, tmpconstant, infeasible, aggregated) );
8224 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %g and %g and constant %g.\n",
8228 cliquetable, branchcand, eventqueue, eventfilter,
var, tmpvars[0], 1.0, -tmpscalars[0], tmpconstant,
8229 infeasible, aggregated) );
8247 for( v = 0; v < ntmpvars; ++v )
8274 nlocksdown[
i] =
var->nlocksdown[
i];
8275 nlocksup[
i] =
var->nlocksup[
i];
8277 var->nlocksdown[
i] = 0;
8278 var->nlocksup[
i] = 0;
8282 for( v = 0; v < ntmpvars; ++v )
8289 var->data.multaggr.constant = tmpconstant;
8290 var->data.multaggr.nvars = ntmpvars;
8291 var->data.multaggr.varssize = ntmpvars;
8305 branchfactor =
var->branchfactor;
8306 branchpriority =
var->branchpriority;
8309 for( v = 0; v < ntmpvars; ++v )
8313 branchfactor =
MAX(tmpvars[v]->branchfactor, branchfactor);
8314 branchpriority =
MAX(tmpvars[v]->branchpriority, branchpriority);
8319 for( v = 0; v < ntmpvars; ++v )
8325 if( tmpscalars[v] >= 0.0 )
8338 if(
var->probindex != -1 )
8350 SCIP_CALL(
SCIPvarAddObj(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
8373 SCIPerrorMessage(
"cannot multi-aggregate a multiple aggregated variable again\n");
8386 for( v = 0; v < naggvars; ++v )
8390 SCIP_CALL(
SCIPvarMultiaggregate(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
8391 cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars,
8392 var->data.negate.constant - constant, infeasible, aggregated) );
8395 for( v = 0; v < naggvars; ++v )
8405 if( *infeasible || *aggregated )
8449 int tmprequiredsize;
8464 *infeasible =
FALSE;
8465 *aggregated =
FALSE;
8475 if(
var->data.original.transvar ==
NULL )
8477 SCIPerrorMessage(
"cannot multi-aggregate an untransformed original variable\n");
8481 reopt, lpexact, cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars, constant, infeasible, aggregated) );
8488 ntmpvars = naggvars;
8489 tmpvarssize = naggvars;
8496 if( tmprequiredsize > tmpvarssize )
8500 tmpvarssize = tmprequiredsize;
8502 assert( tmprequiredsize <= tmpvarssize );
8510 for( v = ntmpvars - 1; v >= 0; --v )
8515 if( tmpvars[v]->index ==
var->index )
8518 tmpvars[v] = tmpvars[ntmpvars - 1];
8531 SCIPsetDebugMsg(
set,
"Possible multi-aggregation was completely resolved and detected to be redundant.\n");
8536 SCIPsetDebugMsg(
set,
"Multi-aggregation was completely resolved and led to infeasibility.\n");
8541 else if( ntmpvars == 1 )
8550 SCIP_CALL(
SCIPvarFixExact(tmpvars[0], blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp,
8551 branchcand, eventqueue, eventfilter, cliquetable, tmpval, infeasible, aggregated) );
8554 else if( ntmpvars == 2 )
8559 SCIPrationalDebugMessage(
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %q and %q and constant %q.\n",
8563 cliquetable, branchcand, eventqueue, eventfilter, tmpvars[0], tmpvars[1], tmpscalars[0],
8564 tmpscalars[1], tmpconstant, infeasible, aggregated) );
8580 for( v = ntmpvars - 1; v >= 0; --v )
8588 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp, branchcand,
8589 eventqueue, eventfilter, cliquetable, tmpconstant, infeasible, aggregated) );
8598 SCIPrationalDebugMessage(
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %f and %q and constant %q.\n",
8602 cliquetable, branchcand, eventqueue, eventfilter,
var, tmpvars[0], tmpval, tmpscalars[0], tmpconstant,
8603 infeasible, aggregated) );
8646 nlocksdown[
i] =
var->nlocksdown[
i];
8647 nlocksup[
i] =
var->nlocksup[
i];
8649 var->nlocksdown[
i] = 0;
8650 var->nlocksup[
i] = 0;
8659 for(
i = 0;
i < ntmpvars; ++
i )
8663 var->data.multaggr.nvars = ntmpvars;
8664 var->data.multaggr.varssize = ntmpvars;
8678 branchfactor =
var->branchfactor;
8679 branchpriority =
var->branchpriority;
8682 for( v = 0; v < ntmpvars; ++v )
8686 branchfactor =
MAX(tmpvars[v]->branchfactor, branchfactor);
8687 branchpriority =
MAX(tmpvars[v]->branchpriority, branchpriority);
8692 for( v = 0; v < ntmpvars; ++v )
8711 if(
var->probindex != -1 )
8723 SCIP_CALL(
SCIPvarAddObjExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp, eventqueue, eventfilter,
obj) );
8745 SCIPerrorMessage(
"cannot multi-aggregate a multiple aggregated variable again\n");
8758 for( v = 0; v < naggvars; ++v )
8764 SCIP_CALL(
SCIPvarMultiaggregateExact(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact,
8765 cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars,
8766 tmpval, infeasible, aggregated) );
8769 for( v = 0; v < naggvars; ++v )
9011 (*negvar)->data.negate.constant = 1.0;
9013 (*negvar)->data.negate.constant =
var->glbdom.lb +
var->glbdom.ub;
9022 (*negvar)->glbdom.lb = (*negvar)->data.negate.constant -
var->glbdom.ub;
9023 (*negvar)->glbdom.ub = (*negvar)->data.negate.constant -
var->glbdom.lb;
9024 (*negvar)->locdom.lb = (*negvar)->data.negate.constant -
var->locdom.ub;
9025 (*negvar)->locdom.ub = (*negvar)->data.negate.constant -
var->locdom.lb;
9031 var->negatedvar = *negvar;
9039 (*negvar)->branchfactor =
var->branchfactor;
9040 (*negvar)->branchpriority =
var->branchpriority;
9044 (*negvar)->donotaggr =
var->donotaggr;
9045 (*negvar)->donotmultaggr =
var->donotmultaggr;
9048 (*negvar)->lazylb = (*negvar)->data.negate.constant -
var->lazyub;
9049 (*negvar)->lazyub = (*negvar)->data.negate.constant -
var->lazylb;
9053 assert((*negvar)->nuses == 1);
9058 *negvar =
var->negatedvar;
9075 var->probindex = probindex;
9079 var->data.col->var_probindex = probindex;
9107 var->name = (
char*)name;
9142 else if( !keepimplics )
9188 SCIPerrorMessage(
"cannot mark a multi-aggregated variable to not be aggregated.\n");
9224 SCIPerrorMessage(
"cannot mark a multi-aggregated variable to not be multi-aggregated.\n");
9256 if(
var->probindex >= 0 )
9258 SCIPerrorMessage(
"cannot change type of variable already in the problem\n");
9272 var->vartype = vartype;
9285 var->negatedvar->vartype = vartype;
9315 if(
var->probindex >= 0 )
9317 SCIPerrorMessage(
"cannot change type of variable already in the problem\n");
9322 var->varimpltype = impltype;
9332 var->negatedvar->varimpltype = impltype;
9440 if(
var->data.original.transvar !=
NULL )
9478 SCIPerrorMessage(
"cannot change objective value of a fixed, aggregated, multi-aggregated, or negated variable\n");
9509 if( !
set->exact_enable )
9526 if(
var->data.original.transvar !=
NULL )
9539 var->obj = newobjreal;
9540 var->unchangedobj = newobjreal;
9548 var->obj = newobjreal;
9552 var->unchangedobj = newobjreal;
9569 SCIPerrorMessage(
"cannot change objective value of a fixed, aggregated, multi-aggregated, or negated variable\n");
9616 if(
var->data.original.transvar !=
NULL )
9625 var->unchangedobj += addobj;
9638 var->unchangedobj += addobj;
9655 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9662 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9664 lp, eventqueue, eventfilter,
var->data.aggregate.scalar * addobj) );
9671 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9672 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
9675 reopt, lp, eventqueue, eventfilter,
var->data.multaggr.scalars[
i] * addobj) );
9685 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9686 SCIP_CALL(
SCIPvarAddObj(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
9687 eventqueue, eventfilter, -addobj) );
9738 if(
var->data.original.transvar !=
NULL )
9742 reopt, lp, eventqueue, eventfilter, tmpobj) );
9750 var->unchangedobj =
var->obj;
9757 oldobjreal =
var->obj;
9765 var->unchangedobj =
var->obj;
9782 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9789 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9794 lp, eventqueue, eventfilter, tmpobj) );
9804 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9806 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
9810 reopt, lp, eventqueue, eventfilter, multaggrobj) );
9823 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9826 SCIP_CALL(
SCIPvarAddObjExact(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
9827 eventqueue, eventfilter, tmpobj) );
9886 SCIPerrorMessage(
"cannot change diving objective value of a multi-aggregated variable\n");
10051 var->name,
var->data.original.origdom.lb, newbound);
10057 var->data.original.origdom.lb = newbound;
10066 for(
i = 0;
i <
var->nparentvars; ++
i )
10070 parentvar =
var->parentvars[
i];
10112 var->name,
var->exactdata->origdom.lb, newbound);
10135 for(
i = 0;
i <
var->nparentvars; ++
i )
10139 parentvar =
var->parentvars[
i];
10184 var->name,
var->data.original.origdom.ub, newbound);
10190 var->data.original.origdom.ub = newbound;
10199 for(
i = 0;
i <
var->nparentvars; ++
i )
10203 parentvar =
var->parentvars[
i];
10244 var->name,
var->exactdata->origdom.ub, newbound);
10267 for(
i = 0;
i <
var->nparentvars; ++
i )
10271 parentvar =
var->parentvars[
i];
10304 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || (newbound != oldbound && newbound * oldbound <= 0.0));
10317 SCIPsetDebugMsg(
set,
"issue GLBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
10382 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || (newbound != oldbound && newbound * oldbound <= 0.0));
10395 SCIPsetDebugMsg(
set,
"issue GUBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
10467 SCIPsetDebugMsg(
set,
"issue GHOLEADDED event for variable <%s>: (%.15g,%.15g)\n",
var->name, left, right);
10552 newbound =
var->glbdom.ub;
10558 SCIPsetDebugMsg(
set,
"process changing global lower bound of <%s> from %f to %f\n",
var->name,
var->glbdom.lb, newbound);
10560 if(
SCIPsetIsEQ(
set, newbound,
var->glbdom.lb) && !(newbound !=
var->glbdom.lb && newbound *
var->glbdom.lb <= 0.0) )
10567 oldbound =
var->glbdom.lb;
10569 var->glbdom.lb = newbound;
10587 for(
i = 0;
i <
var->nlbchginfos; ++
i )
10591 if(
var->lbchginfos[
i].oldbound <
var->glbdom.lb )
10593 SCIPsetDebugMsg(
set,
" -> adjust lower bound change <%s>: %g -> %g due to new global lower bound %g\n",
10595 var->lbchginfos[
i].oldbound =
var->glbdom.lb;
10599 var->lbchginfos[
i].newbound =
var->glbdom.lb;
10601 var->lbchginfos[
i].redundant =
TRUE;
10625 for(
i = 0;
i <
var->nparentvars; ++
i )
10627 parentvar =
var->parentvars[
i];
10640 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
10663 parentnewbound = scalar * newbound + constant;
10665 parentnewbound = newbound;
10677 parentnewbound = scalar * newbound + constant;
10679 parentnewbound = -newbound;
10737 newbound =
var->glbdom.lb;
10743 SCIPsetDebugMsg(
set,
"process changing global upper bound of <%s> from %f to %f\n",
var->name,
var->glbdom.ub, newbound);
10745 if(
SCIPsetIsEQ(
set, newbound,
var->glbdom.ub) && !(newbound !=
var->glbdom.ub && newbound *
var->glbdom.ub <= 0.0) )
10752 oldbound =
var->glbdom.ub;
10754 var->glbdom.ub = newbound;
10773 for(
i = 0;
i <
var->nubchginfos; ++
i )
10776 if(
var->ubchginfos[
i].oldbound >
var->glbdom.ub )
10778 SCIPsetDebugMsg(
set,
" -> adjust upper bound change <%s>: %g -> %g due to new global upper bound %g\n",
10780 var->ubchginfos[
i].oldbound =
var->glbdom.ub;
10784 var->ubchginfos[
i].newbound =
var->glbdom.ub;
10786 var->ubchginfos[
i].redundant =
TRUE;
10810 for(
i = 0;
i <
var->nparentvars; ++
i )
10812 parentvar =
var->parentvars[
i];
10825 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
10846 parentnewbound = scalar * newbound + constant;
10848 parentnewbound = newbound;
10858 parentnewbound = scalar * newbound + constant;
10860 parentnewbound = -newbound;
10963 if(
var->eventfilter !=
NULL )
10969 for(
i = 0;
i <
var->nparentvars; ++
i )
10971 parentvar =
var->parentvars[
i];
10984 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
11111 for(
i = 0;
i <
var->nparentvars; ++
i )
11113 parentvar =
var->parentvars[
i];
11126 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
11220 newbound =
MIN(newbound,
var->glbdom.ub);
11231 if(
SCIPsetIsEQ(
set,
var->glbdom.lb, newbound) && !(newbound !=
var->glbdom.lb && newbound *
var->glbdom.lb <= 0.0) )
11238 if(
var->data.original.transvar !=
NULL )
11241 cliquetable, newbound) );
11279 scalar =
var->data.aggregate.scalar;
11280 constant =
var->data.aggregate.constant;
11281 aggrvar =
var->data.aggregate.var;
11290 childnewbound = (newbound - constant) / scalar;
11292 childnewbound = newbound;
11302 childnewbound = (newbound - constant) / scalar;
11304 childnewbound = -newbound;
11312 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11320 var->data.negate.constant - newbound) );
11385 if(
var->data.original.transvar !=
NULL )
11461 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11522 newbound =
MAX(newbound,
var->glbdom.lb);
11533 if(
SCIPsetIsEQ(
set,
var->glbdom.ub, newbound) && !(newbound !=
var->glbdom.ub && newbound *
var->glbdom.ub <= 0.0) )
11540 if(
var->data.original.transvar !=
NULL )
11581 scalar =
var->data.aggregate.scalar;
11582 constant =
var->data.aggregate.constant;
11583 aggrvar =
var->data.aggregate.var;
11592 childnewbound = (newbound - constant) / scalar;
11594 childnewbound = newbound;
11604 childnewbound = (newbound - constant) / scalar;
11606 childnewbound = -newbound;
11614 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11622 var->data.negate.constant - newbound) );
11687 if(
var->data.original.transvar !=
NULL )
11764 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11806 var->lazylb = lazylb;
11829 var->lazyub = lazyub;
11851 switch( boundtype )
11880 switch( boundtype )
11908 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || newbound ==
var->glbdom.lb || (newbound != oldbound && newbound * oldbound <= 0.0));
11921 SCIPsetDebugMsg(
set,
"issue LBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
11985 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || newbound ==
var->glbdom.ub || (newbound != oldbound && newbound * oldbound <= 0.0));
11998 SCIPsetDebugMsg(
set,
"issue UBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
12095 newbound =
MIN(newbound,
var->locdom.ub);
12098 newbound =
MAX(newbound,
var->glbdom.lb);
12102 SCIPsetDebugMsg(
set,
"process changing lower bound of <%s> from %g to %g\n",
var->name,
var->locdom.lb, newbound);
12105 newbound =
var->glbdom.lb;
12106 else if(
SCIPsetIsEQ(
set, newbound,
var->locdom.lb) && !(newbound !=
var->locdom.lb && newbound *
var->locdom.lb <= 0.0) )
12110 oldbound =
var->locdom.lb;
12112 var->locdom.lb = newbound;
12114 if(
set->exact_enable )
12143 for(
i = 0;
i <
var->nparentvars; ++
i )
12145 parentvar =
var->parentvars[
i];
12158 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12173 if (!
set->exact_enable)
12175 parentnewbound = scalar * newbound + constant;
12183 parentnewbound = scalar > 0.0 ? parentboundinterval.
inf : parentboundinterval.
sup;
12199 if( parentnewbound > parentvar->
glbdom.
ub )
12203 parentnewbound = parentvar->
glbdom.
ub;
12207 parentnewbound = newbound;
12224 if( parentnewbound < parentvar->glbdom.lb )
12228 parentnewbound = parentvar->
glbdom.
lb;
12232 parentnewbound = -newbound;
12288 newbound =
MAX(newbound,
var->locdom.lb);
12291 newbound =
MIN(newbound,
var->glbdom.ub);
12295 SCIPsetDebugMsg(
set,
"process changing upper bound of <%s> from %g to %g\n",
var->name,
var->locdom.ub, newbound);
12298 newbound =
var->glbdom.ub;
12299 else if(
SCIPsetIsEQ(
set, newbound,
var->locdom.ub) && !(newbound !=
var->locdom.ub && newbound *
var->locdom.ub <= 0.0) )
12303 oldbound =
var->locdom.ub;
12305 var->locdom.ub = newbound;
12307 if(
set->exact_enable )
12336 for(
i = 0;
i <
var->nparentvars; ++
i )
12338 parentvar =
var->parentvars[
i];
12351 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12366 if( !
set->exact_enable )
12368 parentnewbound = scalar * newbound + constant;
12376 parentnewbound = scalar > 0.0 ? parentboundinterval.
sup : parentboundinterval.
inf;
12390 if( parentnewbound < parentvar->glbdom.lb )
12394 parentnewbound = parentvar->
glbdom.
lb;
12398 parentnewbound = newbound;
12413 if( parentnewbound > parentvar->
glbdom.
ub )
12417 parentnewbound = parentvar->
glbdom.
ub;
12421 parentnewbound = -newbound;
12528 for(
i = 0;
i <
var->nparentvars; ++
i )
12530 parentvar =
var->parentvars[
i];
12543 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12670 for(
i = 0;
i <
var->nparentvars; ++
i )
12672 parentvar =
var->parentvars[
i];
12685 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12776 newbound =
MIN(newbound,
var->locdom.ub);
12783 && !(newbound !=
var->locdom.lb && newbound *
var->locdom.lb <= 0.0) )
12793 if(
var->data.original.transvar !=
NULL )
12821 scalar =
var->data.aggregate.scalar;
12822 constant =
var->data.aggregate.constant;
12823 aggrvar =
var->data.aggregate.var;
12832 childnewbound = (newbound - constant) / scalar;
12834 childnewbound = newbound;
12844 childnewbound = (newbound - constant) / scalar;
12846 childnewbound = -newbound;
12859 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
12867 var->data.negate.constant - newbound) );
12924 if(
var->data.original.transvar !=
NULL )
12995 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13049 newbound =
MAX(newbound,
var->locdom.lb);
13056 && !(newbound !=
var->locdom.ub && newbound *
var->locdom.ub <= 0.0) )
13066 if(
var->data.original.transvar !=
NULL )
13093 scalar =
var->data.aggregate.scalar;
13094 constant =
var->data.aggregate.constant;
13095 aggrvar =
var->data.aggregate.var;
13104 childnewbound = (newbound - constant) / scalar;
13106 childnewbound = newbound;
13116 childnewbound = (newbound - constant) / scalar;
13118 childnewbound = -newbound;
13131 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13139 var->data.negate.constant - newbound) );
13196 if(
var->data.original.transvar !=
NULL )
13266 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13303 switch( boundtype )
13348 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13363 childnewbound = (newbound -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
13365 childnewbound = newbound;
13374 childnewbound = (newbound -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
13376 childnewbound = -newbound;
13387 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13435 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13447 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable\n");
13495 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13510 childnewbound = (newbound -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
13512 childnewbound = newbound;
13521 childnewbound = (newbound -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
13523 childnewbound = -newbound;
13534 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13582 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13594 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13634 lb =
var->data.multaggr.constant;
13635 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13637 aggrvar =
var->data.multaggr.vars[
i];
13638 if(
var->data.multaggr.scalars[
i] > 0.0 )
13647 lb +=
var->data.multaggr.scalars[
i] * bnd;
13658 lb +=
var->data.multaggr.scalars[
i] * bnd;
13705 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13707 aggrvar =
var->data.multaggr.vars[
i];
13748 if( posinf && !neginf )
13784 ub =
var->data.multaggr.constant;
13785 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13787 aggrvar =
var->data.multaggr.vars[
i];
13788 if(
var->data.multaggr.scalars[
i] > 0.0 )
13797 ub +=
var->data.multaggr.scalars[
i] * bnd;
13808 ub +=
var->data.multaggr.scalars[
i] * bnd;
13853 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13855 aggrvar =
var->data.multaggr.vars[
i];
13896 if( !posinf && neginf )
13932 lb =
var->data.multaggr.constant;
13933 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13935 aggrvar =
var->data.multaggr.vars[
i];
13936 if(
var->data.multaggr.scalars[
i] > 0.0 )
13945 lb +=
var->data.multaggr.scalars[
i] * bnd;
13956 lb +=
var->data.multaggr.scalars[
i] * bnd;
13998 ub =
var->data.multaggr.constant;
13999 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
14001 aggrvar =
var->data.multaggr.vars[
i];
14002 if(
var->data.multaggr.scalars[
i] > 0.0 )
14011 ub +=
var->data.multaggr.scalars[
i] * bnd;
14022 ub +=
var->data.multaggr.scalars[
i] * bnd;
14133 newlb =
var->glbdom.lb;
14134 newub =
var->glbdom.ub;
14145 if(
var->eventfilter !=
NULL )
14151 for(
i = 0;
i <
var->nparentvars; ++
i )
14157 parentvar =
var->parentvars[
i];
14163 parentnewleft = left;
14164 parentnewright = right;
14171 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
14213 parentnewleft, parentnewright, &localadded) );
14257 if(
var->data.original.transvar !=
NULL )
14260 left, right, added) );
14297 childnewleft = (left -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
14298 childnewright = (right -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
14302 childnewright = (left -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
14303 childnewleft = (right -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
14311 childnewleft, childnewright, added) );
14323 childnewright = -left +
var->data.negate.constant;
14324 childnewleft = -right +
var->data.negate.constant;
14327 childnewleft, childnewright, added) );
14379 newlb =
var->locdom.lb;
14380 newub =
var->locdom.ub;
14389#ifdef SCIP_DISABLED_CODE
14398 for(
i = 0;
i <
var->nparentvars; ++
i )
14404 parentvar =
var->parentvars[
i];
14410 parentnewleft = left;
14411 parentnewright = right;
14418 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
14460 parentnewleft, parentnewright, &localadded) );
14507 if(
var->data.original.transvar !=
NULL )
14510 left, right, added) );
14536 childnewleft = (left -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
14537 childnewright = (right -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
14541 childnewright = (left -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
14542 childnewleft = (right -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
14550 childnewleft, childnewright, added) );
14554 SCIPerrorMessage(
"cannot add domain hole to a multi-aggregated variable.\n");
14562 childnewright = -left +
var->data.negate.constant;
14563 childnewleft = -right +
var->data.negate.constant;
14723 var->closestvblpcount = -1;
14792 *infeasible =
FALSE;
14801 *infeasible =
TRUE;
14815 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, implvar, implbound,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
14822 if( nbdchgs !=
NULL )
14831 *infeasible =
TRUE;
14845 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, implvar, implbound,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
14852 if( nbdchgs !=
NULL )
14905 *infeasible =
FALSE;
14909 checkImplic(
set, implvar, impltype, implbound, &redundant, &conflict);
14910 assert(!redundant || !conflict);
14914 if(
var == implvar )
14939 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
14940 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
14962 vals[0] = varfixing;
14966 SCIP_CALL(
SCIPcliquetableAdd(cliquetable, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
14967 eventqueue, eventfilter,
vars, vals, 2,
FALSE, &conflict, nbdchgs) );
14979 isshortcut, &conflict, added) );
14982 assert(!conflict || !(*added));
15001 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 0.0,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15006 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 1.0,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15020 if( nbdchgs !=
NULL )
15058 varfixing ? implbound - ub : ub - implbound, varfixing ? ub : implbound) );
15066 varfixing ? implbound - lb : lb - implbound, varfixing ? lb : implbound) );
15103 *infeasible =
FALSE;
15120 while (
i >= 0 && !(*infeasible) )
15124 assert(implvars[
i] != implvar);
15131 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
15132 eventqueue, eventfilter, varfixing, implvars[
i], impltypes[
i], implbounds[
i],
TRUE, infeasible, nbdchgs, &added) );
15135 i =
MIN(
i, nimpls);
15183 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
15184 eventqueue, eventfilter, varfixing, implvar, impltype, implbound,
FALSE, infeasible, nbdchgs, &added) );
15186 if( *infeasible ||
var == implvar || !transitive || !added )
15200 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, implvarfixing, infeasible, nbdchgs) );
15203 if( !(*infeasible) )
15206 cliquetable, branchcand, eventqueue, eventfilter, !implvarfixing,
var, !varfixing, infeasible, nbdchgs) );
15232 while (
i >= 0 && !(*infeasible) )
15234 assert(vlbvars[
i] != implvar);
15260 vbimplbound = (implbound - vlbconstants[
i])/vlbcoefs[
i];
15261 if( vlbcoefs[
i] >= 0.0 )
15264 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15266 infeasible, nbdchgs, &added) );
15271 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15273 infeasible, nbdchgs, &added) );
15276 i =
MIN(
i, nvlbvars);
15303 while (
i >= 0 && !(*infeasible) )
15305 assert(vubvars[
i] != implvar);
15331 vbimplbound = (implbound - vubconstants[
i])/vubcoefs[
i];
15332 if( vubcoefs[
i] >= 0.0 )
15335 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15337 infeasible, nbdchgs, &added) );
15342 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15344 infeasible, nbdchgs, &added) );
15347 i =
MIN(
i, nvubvars);
15391 *infeasible =
FALSE;
15392 if( nbdchgs !=
NULL )
15400 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef, vlbconstant, transitive, infeasible, nbdchgs) );
15408 SCIPsetDebugMsg(
set,
" -> transformed to variable lower bound <%s> >= %g<%s> + %g\n",
15412 if(
var == vlbvar )
15418 *infeasible =
TRUE;
15434 *infeasible =
TRUE;
15451 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15458 if( nbdchgs !=
NULL )
15473 *infeasible =
TRUE;
15490 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15497 if( nbdchgs !=
NULL )
15511 *infeasible =
TRUE;
15525 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, vlbconstant,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15532 if( nbdchgs !=
NULL )
15557 if( vlbcoef >= 0.0 )
15567 *infeasible =
TRUE;
15584 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vlbvar, newzub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15592 if( nbdchgs !=
NULL )
15595 maxvlb = vlbcoef * zub + vlbconstant;
15597 minvlb = vlbcoef * zlb + vlbconstant;
15602 maxvlb = vlbcoef * zub + vlbconstant;
15604 minvlb = vlbcoef * zlb + vlbconstant;
15617 *infeasible =
TRUE;
15634 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vlbvar, newzlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15642 if( nbdchgs !=
NULL )
15645 maxvlb = vlbcoef * zlb + vlbconstant;
15647 minvlb = vlbcoef * zub + vlbconstant;
15652 maxvlb = vlbcoef * zlb + vlbconstant;
15654 minvlb = vlbcoef * zub + vlbconstant;
15657 if( maxvlb < minvlb )
15667 *infeasible =
TRUE;
15684 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, minvlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15692 if( nbdchgs !=
NULL )
15706 if( vlbcoef >= 0.0 )
15708 vlbcoef = maxvlb - minvlb;
15709 vlbconstant = minvlb;
15713 vlbcoef = minvlb - maxvlb;
15714 vlbconstant = maxvlb;
15734 cliquetable, branchcand, eventqueue, eventfilter, (vlbcoef >= 0.0),
var,
SCIP_BOUNDTYPE_LOWER, maxvlb, transitive,
15735 infeasible, nbdchgs) );
15744 implbound = -vlbconstant/vlbcoef;
15756 implbound, transitive, infeasible, nbdchgs) );
15776 if(
var->data.aggregate.var == vlbvar &&
SCIPsetIsEQ(
set,
var->data.aggregate.scalar, vlbcoef) )
15779 *infeasible =
TRUE;
15785 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef /
var->data.aggregate.scalar,
15786 (vlbconstant -
var->data.aggregate.constant) /
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
15792 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef /
var->data.aggregate.scalar,
15793 (vlbconstant -
var->data.aggregate.constant) /
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
15811 SCIP_CALL(
SCIPvarAddVub(
var->negatedvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15812 branchcand, eventqueue, eventfilter, vlbvar, -vlbcoef,
var->data.negate.constant - vlbconstant, transitive, infeasible,
15858 *infeasible =
FALSE;
15859 if( nbdchgs !=
NULL )
15867 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef, vubconstant, transitive, infeasible, nbdchgs) );
15875 SCIPsetDebugMsg(
set,
" -> transformed to variable upper bound <%s> <= %g<%s> + %g\n",
15879 if(
var == vubvar )
15885 *infeasible =
TRUE;
15901 *infeasible =
TRUE;
15918 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15925 if( nbdchgs !=
NULL )
15940 *infeasible =
TRUE;
15957 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15964 if( nbdchgs !=
NULL )
15978 *infeasible =
TRUE;
15992 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, vubconstant,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15999 if( nbdchgs !=
NULL )
16024 if( vubcoef >= 0.0 )
16034 *infeasible =
TRUE;
16051 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vubvar, newzlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
16059 if( nbdchgs !=
NULL )
16062 minvub = vubcoef * zlb + vubconstant;
16064 maxvub = vubcoef * zub + vubconstant;
16069 maxvub = vubcoef * zub + vubconstant;
16071 minvub = vubcoef * zlb + vubconstant;
16084 *infeasible =
TRUE;
16101 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vubvar, newzub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16109 if( nbdchgs !=
NULL )
16112 minvub = vubcoef * zub + vubconstant;
16114 maxvub = vubcoef * zlb + vubconstant;
16119 minvub = vubcoef * zub + vubconstant;
16121 maxvub = vubcoef * zlb + vubconstant;
16124 if( minvub > maxvub )
16134 *infeasible =
TRUE;
16151 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, maxvub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16159 if( nbdchgs !=
NULL )
16173 if( vubcoef >= 0.0 )
16175 vubcoef = maxvub - minvub;
16176 vubconstant = minvub;
16180 vubcoef = minvub - maxvub;
16181 vubconstant = maxvub;
16201 cliquetable, branchcand, eventqueue, eventfilter, (vubcoef < 0.0),
var,
SCIP_BOUNDTYPE_UPPER, minvub, transitive,
16202 infeasible, nbdchgs) );
16212 (1.0-vubconstant)/vubcoef, transitive, infeasible, nbdchgs) );
16232 if(
var->data.aggregate.var == vubvar &&
SCIPsetIsEQ(
set,
var->data.aggregate.scalar, vubcoef) )
16235 *infeasible =
TRUE;
16241 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef /
var->data.aggregate.scalar,
16242 (vubconstant -
var->data.aggregate.constant) /
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
16248 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef /
var->data.aggregate.scalar,
16249 (vubconstant -
var->data.aggregate.constant) /
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
16267 SCIP_CALL(
SCIPvarAddVlb(
var->negatedvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16268 branchcand, eventqueue, eventfilter, vubvar, -vubcoef,
var->data.negate.constant - vubconstant, transitive, infeasible,
16315 *infeasible =
FALSE;
16316 if( nbdchgs !=
NULL )
16324 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible,
16338 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
16339 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
16348 SCIP_CALL(
varAddTransitiveImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16349 branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible, nbdchgs) );
16358 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
16359 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
16379 if(
var->data.aggregate.scalar > 0 )
16382 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible,
16388 cliquetable, branchcand, eventqueue, eventfilter, !varfixing, implvar, impltype, implbound, transitive, infeasible,
16412 cliquetable, branchcand, eventqueue, eventfilter, !varfixing, implvar, impltype, implbound, transitive, infeasible, nbdchgs) );
16420 SCIP_CALL(
SCIPvarAddImplic(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16423 infeasible, nbdchgs) );
16438 cliquetable, branchcand, eventqueue, eventfilter, implvar, (impltype ==
SCIP_BOUNDTYPE_UPPER) ? 1.0 : -1.0,
16447 cliquetable, branchcand, eventqueue, eventfilter, implvar, (impltype ==
SCIP_BOUNDTYPE_UPPER) ? -1.0 : 1.0,
16457 SCIP_CALL(
SCIPvarAddVub(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16458 branchcand, eventqueue, eventfilter,
var->negatedvar, (varfixing) ? 1.0 : -1.0,
16459 (varfixing) ? 0.0 : 1.0, transitive, infeasible, nbdchgs) );
16466 SCIP_CALL(
SCIPvarAddVlb(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16467 branchcand, eventqueue, eventfilter,
var->negatedvar, (varfixing) ? -1.0 : 1.0, (varfixing) ? 1.0 : 0.0,
16468 transitive, infeasible, nbdchgs) );
16545 if( bounds ==
NULL )
16548 if( lowerpos >= 0 )
16549 *lb = bounds[lowerpos];
16551 if( upperpos >= 0 )
16552 *ub = bounds[upperpos];
16581 *infeasible =
FALSE;
16583 if( value ==
FALSE )
16585 if(
var->glbdom.lb > 0.5 )
16586 *infeasible =
TRUE;
16587 else if(
var->glbdom.ub > 0.5 )
16599 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 0.0,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16606 if( nbdchgs !=
NULL )
16612 if(
var->glbdom.ub < 0.5 )
16613 *infeasible =
TRUE;
16614 else if(
var->glbdom.lb < 0.5 )
16626 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 1.0,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
16633 if( nbdchgs !=
NULL )
16672 *infeasible =
FALSE;
16700 SCIP_CALL(
SCIPvarFixBinary(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
16701 eventqueue, eventfilter, cliquetable, !value, infeasible, nbdchgs) );
16707 if( oppositeentry )
16717 for(
i = 0;
i <
nvars && !(*infeasible); ++
i )
16722 SCIP_CALL(
SCIPvarFixBinary(
vars[
i], blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
16723 eventqueue, eventfilter, cliquetable, !values[
i], infeasible, nbdchgs) );
16751 for( v =
nvars - 1; v >= 0; --v )
16889 branchfactor =
MAX(branchfactor,
eps);
16891 SCIPsetDebugMsg(
set,
"process changing branch factor of <%s> from %f to %f\n",
var->name,
var->branchfactor, branchfactor);
16897 var->branchfactor = branchfactor;
16900 for(
i = 0;
i <
var->nparentvars; ++
i )
16902 parentvar =
var->parentvars[
i];
16915 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
16948 assert(branchfactor >= 0.0);
16950 SCIPdebugMessage(
"changing branch factor of <%s> from %g to %g\n",
var->name,
var->branchfactor, branchfactor);
16959 if(
var->data.original.transvar !=
NULL )
16966 var->branchfactor = branchfactor;
16984 for( v = 0; v <
var->data.multaggr.nvars; ++v )
17018 SCIPdebugMessage(
"process changing branch priority of <%s> from %d to %d\n",
17019 var->name,
var->branchpriority, branchpriority);
17021 if( branchpriority ==
var->branchpriority )
17025 var->branchpriority = branchpriority;
17028 for(
i = 0;
i <
var->nparentvars; ++
i )
17030 parentvar =
var->parentvars[
i];
17043 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
17073 SCIPdebugMessage(
"changing branch priority of <%s> from %d to %d\n",
var->name,
var->branchpriority, branchpriority);
17075 if(
var->branchpriority == branchpriority )
17082 if(
var->data.original.transvar !=
NULL )
17087 var->branchpriority = branchpriority;
17104 for( v = 0; v <
var->data.multaggr.nvars; ++v )
17138 SCIPdebugMessage(
"process changing branch direction of <%s> from %u to %d\n",
17139 var->name,
var->branchdirection, branchdirection);
17145 var->branchdirection = branchdirection;
17148 for(
i = 0;
i <
var->nparentvars; ++
i )
17150 parentvar =
var->parentvars[
i];
17163 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
17204 SCIPdebugMessage(
"changing branch direction of <%s> from %u to %d\n",
var->name,
var->branchdirection, branchdirection);
17213 if(
var->data.original.transvar !=
NULL )
17218 var->branchdirection = branchdirection;
17230 if(
var->data.aggregate.scalar > 0.0 )
17242 for( v = 0; v <
var->data.multaggr.nvars; ++v )
17248 if(
var->data.multaggr.scalars[v] > 0.0 )
17355 else if( obj1 > obj2 )
17397 int activevarssize;
17421 activevarssize = *
nvars;
17423 tmpvarssize = *
nvars;
17430 noldtmpvars = ntmpvars;
17433 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17434 for( v = ntmpvars - 1; v > 0; --v )
17440 tmpvars[v] = tmpvars[ntmpvars];
17444 if( noldtmpvars > ntmpvars )
17445 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17448 while( ntmpvars >= 1 )
17451 var = tmpvars[ntmpvars];
17457 if(
var->data.original.transvar ==
NULL )
17459 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17463 tmpvars[ntmpvars] =
var->data.original.transvar;
17468 tmpvars[ntmpvars] =
var->data.aggregate.var;
17473 tmpvars[ntmpvars] =
var->negatedvar;
17480 if( nactivevars >= activevarssize )
17482 activevarssize *= 2;
17484 assert(nactivevars < activevarssize);
17486 activevars[nactivevars] =
var;
17492 nmultvars =
var->data.multaggr.nvars;
17493 multvars =
var->data.multaggr.vars;
17496 if( nmultvars + ntmpvars > tmpvarssize )
17498 while( nmultvars + ntmpvars > tmpvarssize )
17501 assert(nmultvars + ntmpvars <= tmpvarssize);
17510 ntmpvars += nmultvars;
17511 noldtmpvars = ntmpvars;
17514 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17515 for( v = ntmpvars - 1; v > 0; --v )
17521 tmpvars[v] = tmpvars[ntmpvars];
17525 if( noldtmpvars > ntmpvars )
17526 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17542 SCIPsortPtr((
void**)activevars, SCIPvarComp, nactivevars);
17545 v = nactivevars - 1;
17552 activevars[v] = activevars[nactivevars];
17556 *requiredsize = nactivevars;
17558 if( varssize >= *requiredsize )
17562 *
nvars = *requiredsize;
17584 for( v =
nvars - 1; v >= 0; --v )
17616 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17670 for( v =
nvars - 1; v >= 0; --v )
17672 var = &((*vars)[v]);
17673 negated = &((*negatedarr)[v]);
17704 orignegated = *negated;
17712 if( (*var)->data.original.transvar ==
NULL )
17714 *
var = (*var)->data.original.transvar;
17725 if ( (*var)->data.multaggr.nvars == 1 )
17727 assert( (*var)->data.multaggr.vars !=
NULL );
17728 assert( (*var)->data.multaggr.scalars !=
NULL );
17730 assert(!
EPSZ((*var)->data.multaggr.scalars[0], 1e-06));
17740 if(
EPSEQ((*var)->data.multaggr.constant, -1.0, 1e-06) || (
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06) &&
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06)) )
17742 assert(
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06));
17751 if( !
EPSEQ(
REALABS((*var)->data.multaggr.scalars[0]), 1.0, 1e-06) )
17761 assert(
EPSZ((*var)->data.multaggr.constant, 1e-06) ||
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06)
17762 ||
EPSZ((*var)->data.multaggr.constant + (*var)->data.multaggr.scalars[0], 1e-06)
17763 ||
EPSEQ((*var)->data.multaggr.constant + (*var)->data.multaggr.scalars[0], 1.0, 1e-06));
17765 if( !
EPSZ((*var)->data.multaggr.constant, 1e-06) && !
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06) )
17771 assert(
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06) ||
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06));
17773 if(
EPSZ((*var)->data.multaggr.constant, 1e-06) )
17779 assert(
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06) ?
17785 assert(
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06));
17787 constant += (*negated) != orignegated ? -1.0 : 1.0;
17790 *negated = !(*negated);
17792 *
var = (*var)->data.multaggr.vars[0];
17801 assert(
EPSEQ((*var)->data.aggregate.scalar, 1.0, 1e-06) ||
EPSEQ((*var)->data.aggregate.scalar, -1.0, 1e-06));
17802 assert(
EPSLE((*var)->data.aggregate.var->glbdom.ub - (*var)->data.aggregate.var->glbdom.lb, 1.0, 1e-06));
17804 constant += (*negated) != orignegated ? -(*var)->data.aggregate.constant : (*var)->data.aggregate.constant;
17807 *negated = ((*var)->data.aggregate.scalar > 0.0) ? *negated : !(*negated);
17808 *
var = (*var)->data.aggregate.var;
17814 constant += (*negated) != orignegated ? -1.0 : 1.0;
17817 *negated = !(*negated);
17818 *
var = (*var)->negatedvar;
17832 assert(
EPSZ(constant, 1e-06) == ((*negated) == orignegated));
17857 SCIPdebugMessage(
"get probvar bound %g of type %d of variable <%s>\n", *
bound, *boundtype, (*var)->name);
17862 if( (*var)->data.original.transvar ==
NULL )
17864 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17867 *
var = (*var)->data.original.transvar;
17878 if ( (*var)->data.multaggr.nvars == 1 )
17880 assert( (*var)->data.multaggr.vars !=
NULL );
17881 assert( (*var)->data.multaggr.scalars !=
NULL );
17882 assert( (*var)->data.multaggr.scalars[0] != 0.0 );
17884 (*bound) /= (*var)->data.multaggr.scalars[0];
17885 (*bound) -= (*var)->data.multaggr.constant/(*var)->data.multaggr.scalars[0];
17886 if ( (*var)->data.multaggr.scalars[0] < 0.0 )
17893 *
var = (*var)->data.multaggr.vars[0];
17900 assert((*var)->data.aggregate.scalar != 0.0);
17902 (*bound) /= (*var)->data.aggregate.scalar;
17903 (*bound) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
17904 if( (*var)->data.aggregate.scalar < 0.0 )
17911 *
var = (*var)->data.aggregate.var;
17918 assert((*var)->negatedvar->negatedvar == *
var);
17919 (*bound) = (*var)->data.negate.constant - *
bound;
17924 *
var = (*var)->negatedvar;
17955 if( (*var)->data.original.transvar ==
NULL )
17957 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17960 *
var = (*var)->data.original.transvar;
17971 if( (*var)->data.multaggr.nvars == 1 )
17973 assert( (*var)->data.multaggr.vars !=
NULL );
17974 assert( (*var)->data.multaggr.scalars !=
NULL );
17975 assert( (*var)->data.multaggr.scalars[0] != 0.0 );
17987 *
var = (*var)->data.multaggr.vars[0];
17994 assert((*var)->data.aggregate.scalar != 0.0);
18006 *
var = (*var)->data.aggregate.var;
18013 assert((*var)->negatedvar->negatedvar == *
var);
18020 *
var = (*var)->negatedvar;
18046 SCIPdebugMessage(
"get probvar hole (%g,%g) of variable <%s>\n", *left, *right, (*var)->name);
18051 if( (*var)->data.original.transvar ==
NULL )
18053 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18056 *
var = (*var)->data.original.transvar;
18068 assert((*var)->data.aggregate.scalar != 0.0);
18071 (*left) /= (*var)->data.aggregate.scalar;
18072 (*right) /= (*var)->data.aggregate.scalar;
18075 (*left) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
18076 (*right) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
18078 *
var = (*var)->data.aggregate.var;
18081 if( (*var)->data.aggregate.scalar < 0.0 )
18094 assert((*var)->negatedvar->negatedvar == *
var);
18097 (*left) = (*var)->data.negate.constant - (*left);
18098 (*right) = (*var)->data.negate.constant - (*right);
18100 *
var = (*var)->negatedvar;
18136 if( (*var)->data.original.transvar ==
NULL )
18138 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18141 *
var = (*var)->data.original.transvar;
18154 if( (*scalar) * (*var)->glbdom.lb > 0.0 )
18160 (*constant) += *scalar * (*var)->glbdom.lb;
18176 if ( (*var)->data.multaggr.nvars == 1 )
18179 assert((*var)->data.multaggr.scalars !=
NULL);
18180 assert((*var)->data.multaggr.vars[0] !=
NULL);
18190 if( (*scalar) * (*var)->data.multaggr.constant > 0 )
18203 (*constant) += *scalar * (*var)->data.multaggr.constant;
18205 (*scalar) *= (*var)->data.multaggr.scalars[0];
18206 *
var = (*var)->data.multaggr.vars[0];
18216 (*constant) += *scalar * (*var)->data.aggregate.constant;
18217 (*scalar) *= (*var)->data.aggregate.scalar;
18218 *
var = (*var)->data.aggregate.var;
18224 assert((*var)->negatedvar->negatedvar == *
var);
18228 (*constant) += *scalar * (*var)->data.negate.constant;
18230 *
var = (*var)->negatedvar;
18266 if( (*var)->data.original.transvar ==
NULL )
18268 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18271 *
var = (*var)->data.original.transvar;
18297 if ( (*var)->data.multaggr.nvars == 1 )
18300 assert((*var)->data.multaggr.scalars !=
NULL);
18301 assert((*var)->data.multaggr.vars[0] !=
NULL);
18326 *
var = (*var)->data.multaggr.vars[0];
18337 *
var = (*var)->data.aggregate.var;
18342 assert((*var)->negatedvar->negatedvar == *
var);
18347 *
var = (*var)->negatedvar;
18381 if( (*var)->nparentvars == 0 )
18387 ((*var)->negatedvar->nparentvars == 0 || (*var)->negatedvar->parentvars[0] != *
var) )
18390 *constant -= (*var)->data.negate.constant * (*scalar);
18391 *
var = (*var)->negatedvar;
18416 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
18465 if( (*var)->nparentvars == 0 )
18471 ((*var)->negatedvar->nparentvars == 0 || (*var)->negatedvar->parentvars[0] != *
var) )
18475 *
var = (*var)->negatedvar;
18500 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
18543 parentvar =
var->parentvars[0];
18583 SCIPerrorMessage(
"cannot get the objective value of a multiple aggregated variable\n");
18625 return var->locdom.lb;
18634 else if(
var->data.aggregate.scalar > 0.0 )
18639 else if(
var->data.aggregate.scalar < 0.0 )
18653 SCIPerrorMessage(
"getting the bounds of a multiple aggregated variable is not implemented yet\n");
18695 return var->locdom.ub;
18704 if(
var->data.aggregate.scalar > 0.0 )
18709 else if(
var->data.aggregate.scalar < 0.0 )
18722 SCIPerrorMessage(
"cannot get the bounds of a multi-aggregated variable.\n");
18749 if(
var->data.original.transvar ==
NULL )
18762 return var->locdom.lb;
18781 return var->data.aggregate.scalar * lpsolval +
var->data.aggregate.constant;
18795 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18823 if(
var->data.original.transvar ==
NULL )
18863 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18905 return var->nlpsol;
18915 return var->data.aggregate.scalar * solval +
var->data.aggregate.constant;
18918 solval =
var->data.multaggr.constant;
18919 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18925 return var->data.negate.constant - solval;
18948 if(
var->data.original.transvar ==
NULL )
18958 return var->locdom.lb;
18975 return var->data.aggregate.scalar * pseudosolval +
var->data.aggregate.constant;
18984 pseudosol =
var->data.multaggr.constant;
18985 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19013 if(
var->data.original.transvar ==
NULL )
19023 return var->exactdata->locdom.lb;
19100 if(
var->bestrootredcost > 0.0 )
19105 currcutoffbound = (
bound -
var->bestrootsol) *
var->bestrootredcost +
var->bestrootlpobjval;
19110 if( rootredcost > 0.0 )
19115 cutoffbound = (
bound -
rootsol) * rootredcost + rootlpobjval;
19118 if( cutoffbound > currcutoffbound )
19124 var->bestrootredcost = rootredcost;
19125 var->bestrootlpobjval = rootlpobjval;
19136 var->bestrootredcost = rootredcost;
19137 var->bestrootlpobjval = rootlpobjval;
19156 if(
var->data.original.transvar ==
NULL )
19162 return var->rootsol;
19166 return var->locdom.lb;
19190 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19258#define MAX_CLIQUELENGTH 50
19281#ifdef SCIP_MORE_DEBUG
19319 for(
c = ncliques - 1;
c >= 0; --
c )
19321 clique = cliques[
c];
19336 for( v = nclqvars - 1; v >= 0; --v )
19338 clqvar = clqvars[v];
19346 assert(0 < probindex && probindex < nentries);
19348#ifdef SCIP_DISABLED_CODE
19352 assert(!entries[probindex] || entries[probindex] == (clqvalues[v] ? probindex : -probindex));
19354 if( entries[probindex] == 0 )
19356 ids[nids] = probindex;
19360 entries[probindex] = (clqvalues[v] ? probindex : -probindex);
19370 for( v = nids - 1; v >= 0; --v )
19373 assert(0 <
id &&
id < nentries);
19374 assert(entries[
id] != 0);
19380 if( (entries[
id] > 0) != varfixing )
19386 implredcost += redcost;
19396#ifdef SCIP_MORE_DEBUG
19422 for( v =
nvars - 1; v >= 0; --v )
19450 redcost *= (lb - bounds[v]);
19452 redcost *= (bounds[v] - lb);
19460 redcost *= (bounds[v] - ub);
19462 redcost *= (ub - bounds[v]);
19476 redcost *= (lb - bounds[v]);
19478 redcost *= (bounds[v] - lb);
19486 redcost *= (bounds[v] - ub);
19488 redcost *= (ub - bounds[v]);
19494 implredcost += redcost;
19498#ifdef SCIP_MORE_DEBUG
19499 SCIPsetDebugMsg(
set,
"variable <%s> incl. cliques (%d) and implications (%d) has implied reduced cost of %g\n",
19503 return implredcost;
19521 if(
var->data.original.transvar ==
NULL )
19527 return var->bestrootsol;
19531 return var->locdom.lb;
19555 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19585 if(
var->data.original.transvar ==
NULL )
19591 return var->bestrootredcost;
19619 if(
var->data.original.transvar ==
NULL )
19625 return var->bestrootlpobjval;
19651 var->bestrootredcost = rootredcost;
19652 var->bestrootlpobjval = rootlpobjval;
19680 var->relaxsol = solval;
19686 SCIPerrorMessage(
"cannot set relaxation solution value for variable <%s> fixed to %.15g to different value %.15g\n",
19695 (solval -
var->data.aggregate.constant) /
var->data.aggregate.scalar, updateobj) );
19698 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
19738 return var->relaxsol;
19750 if(
var->data.aggregate.scalar * solval > 0.0 )
19752 if(
var->data.aggregate.scalar * solval < 0.0 )
19755 return var->data.aggregate.scalar * solval +
var->data.aggregate.constant;
19758 solvalsum =
var->data.multaggr.constant;
19759 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19764 if(
var->data.multaggr.scalars[
i] * solval > 0.0 )
19766 if(
var->data.multaggr.scalars[
i] * solval < 0.0 )
19769 solvalsum +=
var->data.multaggr.scalars[
i] * solval;
19779 return var->data.negate.constant - solval;
19796 return var->relaxsol;
19819 var->nlpsol = solval;
19825 SCIPerrorMessage(
"cannot set NLP solution value for variable <%s> fixed to %.15g to different value %.15g\n",
19838 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
19868 if(
var->data.original.transvar ==
NULL )
19874 avgsol =
var->primsolavg;
19875 avgsol =
MAX(avgsol,
var->glbdom.lb);
19876 avgsol =
MIN(avgsol,
var->glbdom.ub);
19881 return var->locdom.lb;
19887 +
var->data.aggregate.constant;
19896 avgsol =
var->data.multaggr.constant;
19897 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19935 *closestvlbidx = -1;
19953 i =
var->closestvlbidx;
19956 *closestvlbidx =
i;
19962 for(
i = 0;
i < nvlbs;
i++ )
19969 if( vlbsol > *closestvlb )
19971 *closestvlb = vlbsol;
19972 *closestvlbidx =
i;
19980 if(
var->closestvblpcount != stat->
lpcount )
19981 var->closestvubidx = -1;
19982 var->closestvlbidx = *closestvlbidx;
20009 *closestvubidx = -1;
20027 i =
var->closestvubidx;
20030 *closestvubidx =
i;
20036 for(
i = 0;
i < nvubs;
i++ )
20043 if( vubsol < *closestvub )
20045 *closestvub = vubsol;
20046 *closestvubidx =
i;
20054 if(
var->closestvblpcount != stat->
lpcount )
20055 var->closestvlbidx = -1;
20056 var->closestvubidx = *closestvubidx;
20092 if(
var->data.original.transvar ==
NULL )
20130 row,
var->data.aggregate.scalar * val) );
20141 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
20144 row,
var->data.multaggr.scalars[
i] * val) );
20193 if(
var->data.original.transvar ==
NULL )
20256 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
20294#ifdef SCIP_HISTORYTOFILE
20296const char* historypath=
".";
20325 if(
var->data.original.transvar ==
NULL )
20327 SCIPerrorMessage(
"cannot update pseudo costs of original untransformed variable\n");
20348#ifdef SCIP_HISTORYTOFILE
20351 char filename[256];
20358 f = fopen(filename,
"a");
20361 fprintf(f,
"%lld %s \t %lld \t %lld \t %lld \t %d \t %15.9f \t %.3f\n",
20377 SCIPerrorMessage(
"cannot update pseudo cost values of a fixed variable\n");
20383 solvaldelta /
var->data.aggregate.scalar, objdelta, weight) );
20387 SCIPerrorMessage(
"cannot update pseudo cost values of a multi-aggregated variable\n");
20424 if(
var->data.original.transvar ==
NULL )
20426 SCIPerrorMessage(
"cannot update ancestral pseudo costs of original untransformed variable\n");
20442 SCIPerrorMessage(
"cannot update ancestral pseudo cost values of a fixed variable\n");
20448 solvaldelta /
var->data.aggregate.scalar, objdelta, weight) );
20452 SCIPerrorMessage(
"cannot update ancestral pseudo cost values of a multi-aggregated variable\n");
20480 if(
var->data.original.transvar ==
NULL )
20527 if(
var->data.original.transvar ==
NULL )
20576 if(
var->data.original.transvar ==
NULL )
20620 if(
var->data.original.transvar ==
NULL )
20633 if(
var->data.aggregate.scalar > 0.0 )
20665 if(
var->data.original.transvar ==
NULL )
20678 if(
var->data.aggregate.scalar > 0.0 )
20710 if(
var->data.original.transvar ==
NULL )
20723 if(
var->data.aggregate.scalar > 0.0 )
20769 return MIN(upscore, downscore);
20785 if(
var->data.original.transvar ==
NULL )
20792 if( onlycurrentrun )
20801 if(
var->data.aggregate.scalar > 0.0 )
20842 if( onlycurrentrun )
20849 confidencebound /= count;
20850 confidencebound = sqrt(confidencebound);
20857 confidencebound = 0.0;
20859 return confidencebound;
20883 size =
MIN(downsize, upsize);
20893 if( downsize >= 1.9 )
20899 normval =
MAX(1.0, normval);
20901 relerrordown /= normval;
20904 relerrordown = 0.0;
20906 if( upsize >= 1.9 )
20912 normval =
MAX(1.0, normval);
20913 relerrorup /= normval;
20919 relerror =
MAX(relerrorup, relerrordown);
20921 return (relerror <= threshold);
20970 if( countx <= 1.9 || county <= 1.9 )
21067 SCIPerrorMessage(
"Confidence level set to unknown value <%d>", (
int)clevel);
21072 return (probability >= problimit);
21092 if(
var->valuehistory ==
NULL )
21117 if( !
set->history_valuebased )
21155 if(
var->data.original.transvar ==
NULL )
21157 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
21188 value = (value -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
21190 if(
var->data.aggregate.scalar > 0.0 )
21196 assert(
var->data.aggregate.scalar < 0.0);
21206 value = 1.0 - value;
21228 if(
var->data.original.transvar ==
NULL )
21230 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
21288 if(
var->data.original.transvar ==
NULL )
21290 SCIPerrorMessage(
"cannot update conflict score of original untransformed variable\n");
21319 value = (value -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
21321 if(
var->data.aggregate.scalar > 0.0 )
21327 assert(
var->data.aggregate.scalar < 0.0);
21333 SCIPerrorMessage(
"cannot update conflict score of a multi-aggregated variable\n");
21337 value = 1.0 - value;
21362 if(
var->data.original.transvar ==
NULL )
21375 if(
var->data.aggregate.scalar > 0.0 )
21409 if(
var->data.original.transvar ==
NULL )
21422 if(
var->data.aggregate.scalar > 0.0 )
21452 if(
var->data.original.transvar ==
NULL )
21464 if(
var->data.aggregate.scalar > 0.0 )
21496 if(
var->data.original.transvar ==
NULL )
21509 if(
var->data.aggregate.scalar > 0.0 )
21549 if(
var->data.original.transvar ==
NULL )
21551 SCIPerrorMessage(
"cannot update branching counter of original untransformed variable\n");
21578 SCIPerrorMessage(
"cannot update branching counter of a fixed variable\n");
21582 value = (value -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
21584 if(
var->data.aggregate.scalar > 0.0 )
21590 assert(
var->data.aggregate.scalar < 0.0);
21596 SCIPerrorMessage(
"cannot update branching counter of a multi-aggregated variable\n");
21600 value = 1.0 - value;
21633 if(
var->data.original.transvar ==
NULL )
21635 SCIPerrorMessage(
"cannot update inference counter of original untransformed variable\n");
21662 SCIPerrorMessage(
"cannot update inference counter of a fixed variable\n");
21666 value = (value -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
21668 if(
var->data.aggregate.scalar > 0.0 )
21674 assert(
var->data.aggregate.scalar < 0.0);
21680 SCIPerrorMessage(
"cannot update inference counter of a multi-aggregated variable\n");
21684 value = 1.0 - value;
21717 if(
var->data.original.transvar ==
NULL )
21719 SCIPerrorMessage(
"cannot update cutoff sum of original untransformed variable\n");
21750 value = (value -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
21752 if(
var->data.aggregate.scalar > 0.0 )
21758 assert(
var->data.aggregate.scalar < 0.0);
21764 SCIPerrorMessage(
"cannot update cutoff sum of a multi-aggregated variable\n");
21768 value = 1.0 - value;
21791 if(
var->data.original.transvar ==
NULL )
21804 if(
var->data.aggregate.scalar > 0.0 )
21836 if(
var->data.original.transvar ==
NULL )
21849 if(
var->data.aggregate.scalar > 0.0 )
21879 if(
var->data.original.transvar ==
NULL )
21892 if(
var->data.aggregate.scalar > 0.0 )
21924 if(
var->data.original.transvar ==
NULL )
21937 if(
var->data.aggregate.scalar > 0.0 )
21974 if(
var->data.original.transvar ==
NULL )
21988 if(
var->data.aggregate.scalar > 0.0 )
22021 SCIPerrorMessage(
"invalid branching direction %d when asking for VSIDS value\n", dir);
22028 if(
var->data.original.transvar ==
NULL )
22041 if(
var->data.aggregate.scalar > 0.0 )
22071 if(
var->data.original.transvar ==
NULL )
22084 if(
var->data.aggregate.scalar > 0.0 )
22116 if(
var->data.original.transvar ==
NULL )
22129 if(
var->data.aggregate.scalar > 0.0 )
22161 if(
var->data.original.transvar ==
NULL )
22184 if(
var->data.aggregate.scalar > 0.0 )
22218 if(
var->data.original.transvar ==
NULL )
22241 if(
var->data.aggregate.scalar > 0.0 )
22271 if(
var->data.original.transvar ==
NULL )
22284 if(
var->data.aggregate.scalar > 0.0 )
22314 if(
var->data.original.transvar ==
NULL )
22327 if(
var->data.aggregate.scalar > 0.0 )
22359 if(
var->data.original.transvar ==
NULL )
22374 if(
var->data.aggregate.scalar > 0.0 )
22406 if(
var->data.original.transvar ==
NULL )
22421 if(
var->data.aggregate.scalar > 0.0 )
22451 if(
var->data.original.transvar ==
NULL )
22493 if(
var->data.original.transvar !=
NULL )
22535 if(
var->data.original.transvar !=
NULL )
22577 if(
var->data.original.transvar !=
NULL )
22626 (*bdchginfo)->oldbound = oldbound;
22627 (*bdchginfo)->newbound = newbound;
22628 (*bdchginfo)->var =
var;
22629 (*bdchginfo)->inferencedata.var =
var;
22630 (*bdchginfo)->inferencedata.reason.prop =
NULL;
22631 (*bdchginfo)->inferencedata.info = 0;
22632 (*bdchginfo)->bdchgidx.depth = INT_MAX;
22633 (*bdchginfo)->bdchgidx.pos = -1;
22634 (*bdchginfo)->pos = 0;
22636 (*bdchginfo)->boundtype = boundtype;
22637 (*bdchginfo)->inferboundtype = boundtype;
22638 (*bdchginfo)->redundant =
FALSE;
22672 for(
i =
var->nlbchginfos-1;
i >= 0; --
i )
22679 if(
var->lbchginfos[
i].redundant )
22681 assert(
var->lbchginfos[
i].oldbound <
var->lbchginfos[
i].newbound);
22685 return &
var->lbchginfos[
i];
22690 for(
i =
var->nlbchginfos-1;
i >= 0; --
i )
22697 if(
var->lbchginfos[
i].redundant )
22699 assert(
var->lbchginfos[
i].oldbound <
var->lbchginfos[
i].newbound);
22703 return &
var->lbchginfos[
i];
22728 for(
i =
var->nubchginfos-1;
i >= 0; --
i )
22735 if(
var->ubchginfos[
i].redundant )
22737 assert(
var->ubchginfos[
i].oldbound >
var->ubchginfos[
i].newbound);
22741 return &
var->ubchginfos[
i];
22746 for(
i =
var->nubchginfos-1;
i >= 0; --
i )
22753 if(
var->ubchginfos[
i].redundant )
22755 assert(
var->ubchginfos[
i].oldbound >
var->ubchginfos[
i].newbound);
22759 return &
var->ubchginfos[
i];
22815 lbchgidx = (
var->nlbchginfos > 0 && !
var->lbchginfos[
var->nlbchginfos-1].redundant
22817 ubchgidx = (
var->nubchginfos > 0 && !
var->ubchginfos[
var->nubchginfos-1].redundant
22839 return bdchgidx->
depth;
22882 return var->ubchginfos[
i].bdchgidx.depth;
22910 return var->lbchginfos[
i].bdchgidx.depth;
22978 int* ncontimplvars,
22983 int binimplvars = 0;
22985 int intimplvars = 0;
22987 int contimplvars = 0;
22992 for( v = 0; v <
nvars; ++v )
23022 if( nbinvars !=
NULL )
23023 *nbinvars = binvars;
23024 if( nintvars !=
NULL )
23025 *nintvars = intvars;
23026 if( nbinimplvars !=
NULL )
23027 *nbinimplvars = binimplvars;
23028 if( nintimplvars !=
NULL )
23029 *nintimplvars = intimplvars;
23030 if( ncontimplvars !=
NULL )
23031 *ncontimplvars = contimplvars;
23032 if( ncontvars !=
NULL )
23033 *ncontvars = contvars;
23062#undef SCIPboundchgGetNewbound
23063#undef SCIPboundchgGetLPSolVal
23064#undef SCIPboundchgGetVar
23065#undef SCIPboundchgGetBoundchgtype
23066#undef SCIPboundchgGetBoundtype
23067#undef SCIPboundchgIsRedundant
23068#undef SCIPdomchgGetNBoundchgs
23069#undef SCIPdomchgGetBoundchg
23070#undef SCIPholelistGetLeft
23071#undef SCIPholelistGetRight
23072#undef SCIPholelistGetNext
23073#undef SCIPvarGetName
23074#undef SCIPvarGetNUses
23075#undef SCIPvarGetData
23076#undef SCIPvarSetData
23077#undef SCIPvarSetDelorigData
23078#undef SCIPvarSetTransData
23079#undef SCIPvarSetDeltransData
23080#undef SCIPvarGetStatus
23081#undef SCIPvarIsOriginal
23082#undef SCIPvarIsTransformed
23083#undef SCIPvarIsNegated
23084#undef SCIPvarGetType
23085#undef SCIPvarIsBinary
23086#undef SCIPvarIsIntegral
23087#undef SCIPvarIsImpliedIntegral
23088#undef SCIPvarIsNonimpliedIntegral
23089#undef SCIPvarIsInitial
23090#undef SCIPvarIsRemovable
23091#undef SCIPvarIsDeleted
23092#undef SCIPvarIsDeletable
23093#undef SCIPvarMarkDeletable
23094#undef SCIPvarMarkNotDeletable
23095#undef SCIPvarIsActive
23096#undef SCIPvarGetIndex
23097#undef SCIPvarGetProbindex
23098#undef SCIPvarGetTransVar
23099#undef SCIPvarGetCol
23100#undef SCIPvarIsInLP
23101#undef SCIPvarGetMinAggrCoef
23102#undef SCIPvarGetMaxAggrCoef
23103#undef SCIPvarGetAggrVar
23104#undef SCIPvarGetAggrScalar
23105#undef SCIPvarGetAggrConstant
23106#undef SCIPvarGetMultaggrNVars
23107#undef SCIPvarGetMultaggrVars
23108#undef SCIPvarGetMultaggrScalars
23109#undef SCIPvarGetMultaggrConstant
23110#undef SCIPvarGetNegatedVar
23111#undef SCIPvarGetNegationVar
23112#undef SCIPvarGetNegationConstant
23113#undef SCIPvarGetObj
23114#undef SCIPvarGetLbOriginal
23115#undef SCIPvarGetUbOriginal
23116#undef SCIPvarGetHolelistOriginal
23117#undef SCIPvarGetLbGlobal
23118#undef SCIPvarGetUbGlobal
23119#undef SCIPvarGetHolelistGlobal
23120#undef SCIPvarGetBestBoundGlobal
23121#undef SCIPvarGetWorstBoundGlobal
23122#undef SCIPvarGetLbLocal
23123#undef SCIPvarGetUbLocal
23124#undef SCIPvarGetHolelistLocal
23125#undef SCIPvarGetBestBoundLocal
23126#undef SCIPvarGetWorstBoundLocal
23127#undef SCIPvarGetBestBoundType
23128#undef SCIPvarGetWorstBoundType
23129#undef SCIPvarGetLbLazy
23130#undef SCIPvarGetUbLazy
23131#undef SCIPvarGetBranchFactor
23132#undef SCIPvarGetBranchPriority
23133#undef SCIPvarGetBranchDirection
23134#undef SCIPvarGetNVlbs
23135#undef SCIPvarGetVlbVars
23136#undef SCIPvarGetVlbCoefs
23137#undef SCIPvarGetVlbConstants
23138#undef SCIPvarGetNVubs
23139#undef SCIPvarGetVubVars
23140#undef SCIPvarGetVubCoefs
23141#undef SCIPvarGetVubConstants
23142#undef SCIPvarGetNImpls
23143#undef SCIPvarGetImplVars
23144#undef SCIPvarGetImplTypes
23145#undef SCIPvarGetImplBounds
23146#undef SCIPvarGetImplIds
23147#undef SCIPvarGetNCliques
23148#undef SCIPvarGetCliques
23149#undef SCIPvarGetLPSol
23150#undef SCIPvarGetNLPSol
23151#undef SCIPvarGetBdchgInfoLb
23152#undef SCIPvarGetNBdchgInfosLb
23153#undef SCIPvarGetBdchgInfoUb
23154#undef SCIPvarGetNBdchgInfosUb
23155#undef SCIPvarGetValuehistory
23156#undef SCIPvarGetPseudoSol
23157#undef SCIPvarCatchEvent
23158#undef SCIPvarDropEvent
23159#undef SCIPvarGetVSIDS
23160#undef SCIPvarGetCliqueComponentIdx
23161#undef SCIPvarIsRelaxationOnly
23162#undef SCIPvarMarkRelaxationOnly
23163#undef SCIPbdchgidxGetPos
23164#undef SCIPbdchgidxGetDepth
23165#undef SCIPbdchgidxIsEarlierNonNull
23166#undef SCIPbdchgidxIsEarlier
23167#undef SCIPbdchginfoGetOldbound
23168#undef SCIPbdchginfoGetNewbound
23169#undef SCIPbdchginfoGetVar
23170#undef SCIPbdchginfoGetChgtype
23171#undef SCIPbdchginfoGetBoundtype
23172#undef SCIPbdchginfoGetDepth
23173#undef SCIPbdchginfoGetPos
23174#undef SCIPbdchginfoGetIdx
23175#undef SCIPbdchginfoGetInferVar
23176#undef SCIPbdchginfoGetInferCons
23177#undef SCIPbdchginfoGetInferProp
23178#undef SCIPbdchginfoGetInferInfo
23179#undef SCIPbdchginfoGetInferBoundtype
23180#undef SCIPbdchginfoIsRedundant
23181#undef SCIPbdchginfoHasInferenceReason
23182#undef SCIPbdchginfoIsTighter
23212 return boundchg->
var;
23292 return holelist->
next;
23325 return var->vardata;
23336 var->vardata = vardata;
23348 var->vardelorig = vardelorig;
23360 var->vartrans = vartrans;
23371 var->vardeltrans = vardeltrans;
23382 var->varcopy = varcopy;
23396 var->initial = initial;
23412 var->removable = removable;
23435 return var->exactdata->varstatusexact;
23445 return (
var->exactdata !=
NULL);
23518 &&
MAX(
var->glbdom.lb,
var->lazylb) >= 0.0 &&
MIN(
var->glbdom.ub,
var->lazyub) <= 1.0));
23552 return var->initial;
23562 return var->removable;
23572 return var->deleted;
23608 var->delglobalstructs =
TRUE;
23618 return var->delglobalstructs;
23638 return var->relaxationonly;
23670 return var->deletable;
23680 return (
var->probindex >= 0);
23700 return var->probindex;
23711 return var->data.original.transvar;
23722 return var->data.col;
23734 return var->exactdata->colexact;
23754 return var->data.loose.minaggrcoef;
23764 return var->data.loose.maxaggrcoef;
23776 return var->data.aggregate.var;
23788 return var->data.aggregate.scalar;
23799 return var->exactdata->aggregate.scalar;
23811 return var->data.aggregate.constant;
23822 return var->exactdata->aggregate.constant;
23834 return var->data.multaggr.nvars;
23846 return var->data.multaggr.vars;
23858 return var->data.multaggr.scalars;
23871 return var->exactdata->multaggr.scalars;
23883 return var->data.multaggr.constant;
23896 return var->exactdata->multaggr.constant;
23906 return var->negatedvar;
23917 return var->negatedvar;
23928 return var->data.negate.constant;
23949 return var->exactdata->obj;
23960 return var->exactdata->objinterval;
23970 return var->unchangedobj;
23987 while( probvar !=
NULL )
24060 return var->data.original.origdom.lb;
24067 return var->data.negate.constant -
var->negatedvar->data.original.origdom.ub;
24081 return var->exactdata->origdom.lb;
24103 return var->data.original.origdom.ub;
24110 return var->data.negate.constant -
var->negatedvar->data.original.origdom.lb;
24124 return var->exactdata->origdom.ub;
24146 return var->data.original.origdom.holelist;
24158 return var->glbdom.lb;
24170 return var->exactdata->glbdom.lb;
24180 return var->glbdom.ub;
24192 return var->exactdata->glbdom.ub;
24202 return var->glbdom.holelist;
24212 if(
var->obj >= 0.0 )
24213 return var->glbdom.lb;
24215 return var->glbdom.ub;
24230 return var->exactdata->glbdom.lb;
24232 return var->exactdata->glbdom.ub;
24242 if(
var->obj >= 0.0 )
24243 return var->glbdom.ub;
24245 return var->glbdom.lb;
24260 return var->exactdata->glbdom.ub;
24262 return var->exactdata->glbdom.lb;
24272 return var->locdom.lb;
24284 return var->exactdata->locdom.lb;
24306 return var->locdom.ub;
24318 return var->exactdata->locdom.ub;
24340 return var->locdom.holelist;
24350 if(
var->obj >= 0.0 )
24351 return var->locdom.lb;
24353 return var->locdom.ub;
24368 return var->exactdata->locdom.lb;
24370 return var->exactdata->locdom.ub;
24380 if(
var->obj >= 0.0 )
24381 return var->locdom.ub;
24383 return var->locdom.lb;
24398 return var->exactdata->locdom.ub;
24400 return var->exactdata->locdom.lb;
24410 if(
var->obj >= 0.0 )
24438 if(
var->obj >= 0.0 )
24466 return var->lazylb;
24476 return var->lazyub;
24488 return var->branchfactor;
24500 return var->branchpriority;
24730 return var->nlpsol;
24742 assert(pos < var->nlbchginfos);
24744 return &
var->lbchginfos[pos];
24752 return var->nlbchginfos;
24762 assert(pos < var->nubchginfos);
24764 return &
var->ubchginfos[pos];
24774 return var->nubchginfos;
24784 return var->valuehistory;
24848 eventtype,
var->name, (
void*)eventhdlr, (
void*)eventdata);
24872 SCIPsetDebugMsg(
set,
"drop event of variable <%s> with handler %p and data %p\n",
var->name, (
void*)eventhdlr,
24887 return bdchgidx->
pos;
24897 return bdchgidx->
depth;
24913 return (bdchgidx1->
depth < bdchgidx2->
depth)
24914 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
24931 if( bdchgidx1 ==
NULL )
24933 else if( bdchgidx2 ==
NULL )
24936 return (bdchgidx1->
depth < bdchgidx2->
depth)
24937 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
24967 return bdchginfo->
var;
25137 return var->exactdata->certificateindex;
25150 var->exactdata->certificateindex = certidx;
25163 var->exactdata->glbdom.ubcertificateidx = certidx;
25164 var->exactdata->locdom.ubcertificateidx = certidx;
25177 var->exactdata->locdom.ubcertificateidx = certidx;
25190 var->exactdata->locdom.lbcertificateidx = certidx;
25203 var->exactdata->glbdom.lbcertificateidx = certidx;
25204 var->exactdata->locdom.lbcertificateidx = certidx;
25213 assert(
var->exactdata->locdom.lbcertificateidx >= 0);
25216 return var->exactdata->locdom.lbcertificateidx;
25225 assert(
var->exactdata->locdom.ubcertificateidx >= 0);
25228 return var->exactdata->locdom.ubcertificateidx;
25237 assert(
var->exactdata->glbdom.lbcertificateidx >= 0);
25240 return var->exactdata->glbdom.lbcertificateidx;
25249 assert(
var->exactdata->glbdom.ubcertificateidx >= 0);
25252 return var->exactdata->glbdom.ubcertificateidx;
static GRAPHNODE ** active
SCIP_CERTIFICATE * SCIPgetCertificate(SCIP *scip)
SCIP_RETCODE SCIPcertificateSetLastBoundIndex(SCIP_CERTIFICATE *certificate, SCIP_Longint index)
SCIP_Longint SCIPcertificateGetLastBoundIndex(SCIP_CERTIFICATE *certificate)
SCIP_Bool SCIPcertificateIsEnabled(SCIP_CERTIFICATE *certificate)
SCIP_Longint SCIPcertificateGetCurrentIndex(SCIP_CERTIFICATE *certificate)
SCIP_Bool SCIPcertificateEnsureLastBoundInfoConsistent(SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound, SCIP_Bool needsglobal)
methods for certificate output
void SCIPconsCapture(SCIP_CONS *cons)
SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
internal methods for constraints and constraint handlers
#define SCIPdebugCheckLbGlobal(scip, var, lb)
#define SCIPdebugCheckImplic(set, var, varfixing, implvar, impltype, implbound)
#define SCIPdebugCheckUbGlobal(scip, var, ub)
#define SCIPdebugCheckVbound(set, var, vbtype, vbvar, vbcoef, vbconstant)
#define SCIPdebugCheckAggregation(set, var, aggrvars, scalars, constant, naggrvars)
#define SCIP_DEFAULT_INFINITY
#define SCIP_INTERVAL_INFINITY
#define SCIP_CALL_ABORT(x)
SCIP_RETCODE SCIPeventCreateLbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPeventCreateVarFixed(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventCreateUbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPeventCreateVarUnlocked(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventAddExactObjChg(SCIP_EVENT *event, BMS_BLKMEM *blkmem, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
SCIP_RETCODE SCIPeventCreateObjChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_RETCODE SCIPeventqueueAdd(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENT **event)
SCIP_RETCODE SCIPeventfilterFree(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_Bool SCIPeventqueueIsDelayed(SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPeventAddExactBdChg(SCIP_EVENT *event, BMS_BLKMEM *blkmem, SCIP_RATIONAL *oldbound, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPeventCreateGholeAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
SCIP_RETCODE SCIPeventfilterDel(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_RETCODE SCIPeventfilterCreate(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPeventProcess(SCIP_EVENT *event, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventCreateImplAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventChgType(SCIP_EVENT *event, SCIP_EVENTTYPE eventtype)
SCIP_RETCODE SCIPeventCreateImplTypeChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_IMPLINTTYPE oldtype, SCIP_IMPLINTTYPE newtype)
SCIP_RETCODE SCIPeventfilterAdd(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPeventCreateGubChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPeventCreateGlbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPeventCreateTypeChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_VARTYPE oldtype, SCIP_VARTYPE newtype)
internal methods for managing events
const char * SCIPgetProbName(SCIP *scip)
int SCIPgetNTotalVars(SCIP *scip)
SCIP_RETCODE SCIPhashmapInsert(SCIP_HASHMAP *hashmap, void *origin, void *image)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
SCIP_Longint SCIPcalcGreComDiv(SCIP_Longint val1, SCIP_Longint val2)
SCIP_Longint SCIPcalcSmaComMul(SCIP_Longint val1, SCIP_Longint val2)
SCIP_Bool SCIPrealToRational(SCIP_Real val, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Longint *numerator, SCIP_Longint *denominator)
void SCIPswapInts(int *value1, int *value2)
SCIP_Bool SCIPisCertified(SCIP *scip)
SCIP_Bool SCIPshouldCertificateTrackBounds(SCIP *scip)
SCIP_Real SCIPcolGetObj(SCIP_COL *col)
SCIP_Real SCIPcolGetLb(SCIP_COL *col)
SCIP_Real SCIPcolGetPrimsol(SCIP_COL *col)
SCIP_Real SCIPcolGetUb(SCIP_COL *col)
SCIP_Bool SCIPcolIsInLP(SCIP_COL *col)
SCIP_BASESTAT SCIPcolGetBasisStatus(SCIP_COL *col)
const char * SCIPconsGetName(SCIP_CONS *cons)
void SCIPintervalSet(SCIP_INTERVAL *resultant, SCIP_Real value)
struct SCIP_Interval SCIP_INTERVAL
void SCIPintervalMulScalar(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2)
void SCIPintervalAddScalar(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_Real operand2)
void SCIPintervalSetRational(SCIP_INTERVAL *resultant, SCIP_RATIONAL *value)
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
SCIP_NODE * SCIPnodeGetParent(SCIP_NODE *node)
SCIP_Bool SCIPinProbing(SCIP *scip)
const char * SCIPpropGetName(SCIP_PROP *prop)
SCIP_Bool SCIPrationalIsLTReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsFpRepresentable(SCIP_RATIONAL *rational)
void SCIPrationalMin(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalRoundLong(SCIP_Longint *res, SCIP_RATIONAL *src, SCIP_ROUNDMODE_RAT roundmode)
SCIP_RETCODE SCIPrationalCreateBlock(BMS_BLKMEM *blkmem, SCIP_RATIONAL **rational)
SCIP_RETCODE SCIPrationalCreate(SCIP_RATIONAL **rational)
void SCIPrationalMult(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
void SCIPrationalInvert(SCIP_RATIONAL *res, SCIP_RATIONAL *op)
void SCIPrationalSetInfinity(SCIP_RATIONAL *res)
void SCIPrationalAdd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Real SCIPrationalGetReal(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsString(const char *desc)
void SCIPrationalFreeBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **rational)
#define SCIPrationalDebugMessage
void SCIPrationalRoundInteger(SCIP_RATIONAL *res, SCIP_RATIONAL *src, SCIP_ROUNDMODE_RAT roundmode)
void SCIPrationalDiv(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsAbsInfinity(SCIP_RATIONAL *rational)
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)
SCIP_RETCODE SCIPrationalCopyBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **result, SCIP_RATIONAL *src)
void SCIPrationalFreeBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_RETCODE SCIPrationalCopyBlockArray(BMS_BLKMEM *mem, SCIP_RATIONAL ***target, SCIP_RATIONAL **src, int len)
void SCIPrationalDiff(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_RETCODE SCIPrationalCopyBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***result, SCIP_RATIONAL **src, int len)
SCIP_Bool SCIPrationalIsPositive(SCIP_RATIONAL *rational)
SCIP_Longint SCIPrationalDenominator(SCIP_RATIONAL *rational)
int SCIPrationalGetSign(const SCIP_RATIONAL *rational)
SCIP_RETCODE SCIPrationalCreateBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
void SCIPrationalAddProd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsZero(SCIP_RATIONAL *rational)
void SCIPrationalSetRational(SCIP_RATIONAL *res, SCIP_RATIONAL *src)
void SCIPrationalSetString(SCIP_RATIONAL *res, const char *desc)
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 SCIPrationalCanonicalize(SCIP_RATIONAL *rational)
void SCIPrationalMessage(SCIP_MESSAGEHDLR *msg, FILE *file, SCIP_RATIONAL *rational)
void SCIPrationalSetNegInfinity(SCIP_RATIONAL *res)
void SCIPrationalSetFraction(SCIP_RATIONAL *res, SCIP_Longint nom, SCIP_Longint denom)
void SCIPrationalNegate(SCIP_RATIONAL *res, SCIP_RATIONAL *op)
SCIP_Bool SCIPrationalIsNegative(SCIP_RATIONAL *rational)
void SCIPrationalDiffReal(SCIP_RATIONAL *res, SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsInfinity(SCIP_RATIONAL *rational)
void SCIPrationalFreeBlockArray(BMS_BLKMEM *mem, SCIP_RATIONAL ***ratblockarray, int size)
SCIP_Real SCIPrationalRoundReal(SCIP_RATIONAL *rational, SCIP_ROUNDMODE_RAT roundmode)
SCIP_Longint SCIPrationalNumerator(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsEQReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_RETCODE SCIPrationalCreateBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***rational, int size)
SCIP_Bool SCIPrationalIsNegInfinity(SCIP_RATIONAL *rational)
void SCIPrationalFree(SCIP_RATIONAL **rational)
void SCIPrationalDiffProdReal(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_Real op2)
SCIP_Bool SCIPrationalIsGTReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_RETCODE SCIPrationalReallocBlockArray(BMS_BLKMEM *mem, SCIP_RATIONAL ***result, int oldlen, int newlen)
SCIP_Bool SCIPrationalIsEQ(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalDiffProd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_RETCODE SCIPrationalReallocBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***result, int oldlen, int newlen)
void SCIPrationalMultReal(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_Real op2)
void SCIPrationalFreeBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***ratbufarray, int size)
SCIP_Bool SCIPrationalIsLE(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalAddProdReal(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_Real op2)
SCIP_Longint SCIPgetNLPIterations(SCIP *scip)
SCIP_NODE * SCIPgetFocusNode(SCIP *scip)
int SCIPgetDepth(SCIP *scip)
SCIP_Bool SCIPvarIsInitial(SCIP_VAR *var)
SCIP_Real SCIPvarGetLPSol_rec(SCIP_VAR *var)
int SCIPvarCompareActiveAndNegated(SCIP_VAR *var1, SCIP_VAR *var2)
SCIP_Longint SCIPvarGetUbCertificateIndexLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
void SCIPvarSetLbCertificateIndexGlobal(SCIP_VAR *var, SCIP_Longint certidx)
SCIP_HOLELIST * SCIPvarGetHolelistLocal(SCIP_VAR *var)
int SCIPvarGetNVlbs(SCIP_VAR *var)
SCIP_RETCODE SCIPvarGetProbvarBound(SCIP_VAR **var, SCIP_Real *bound, SCIP_BOUNDTYPE *boundtype)
SCIP_Bool SCIPvarIsDeleted(SCIP_VAR *var)
SCIP_Real SCIPvarGetNegationConstant(SCIP_VAR *var)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
SCIP_Bool SCIPbdchginfoIsRedundant(SCIP_BDCHGINFO *bdchginfo)
SCIP_Real SCIPvarGetAvgBranchdepthCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Bool SCIPvarMayRoundUp(SCIP_VAR *var)
SCIP_Real SCIPvarGetMultaggrConstant(SCIP_VAR *var)
SCIP_BOUNDTYPE SCIPvarGetBestBoundType(SCIP_VAR *var)
void SCIPvarSetTransData(SCIP_VAR *var,)
void SCIPvarsGetProbvar(SCIP_VAR **vars, int nvars)
SCIP_BOUNDTYPE SCIPvarGetWorstBoundTypeExact(SCIP_VAR *var)
SCIP_Real SCIPvarGetSol(SCIP_VAR *var, SCIP_Bool getlpval)
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
SCIP_Real * SCIPvarGetVlbCoefs(SCIP_VAR *var)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_Longint SCIPvarGetUbCertificateIndexGlobal(SCIP_VAR *var)
SCIP_BOUNDTYPE SCIPboundchgGetBoundtype(SCIP_BOUNDCHG *boundchg)
SCIP_Real SCIPholelistGetRight(SCIP_HOLELIST *holelist)
void SCIPvarSetDelorigData(SCIP_VAR *var,)
SCIP_Real SCIPvarGetAvgBranchdepth(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Real SCIPvarGetBestBoundGlobal(SCIP_VAR *var)
SCIP_Bool SCIPbdchgidxIsEarlier(SCIP_BDCHGIDX *bdchgidx1, SCIP_BDCHGIDX *bdchgidx2)
SCIP_RATIONAL * SCIPvarGetBestBoundGlobalExact(SCIP_VAR *var)
SCIP_Bool SCIPvarWasFixedEarlier(SCIP_VAR *var1, SCIP_VAR *var2)
SCIP_BDCHGIDX * SCIPbdchginfoGetIdx(SCIP_BDCHGINFO *bdchginfo)
SCIP_VAR * SCIPboundchgGetVar(SCIP_BOUNDCHG *boundchg)
void SCIPvarSetCertificateIndex(SCIP_VAR *var, int certidx)
SCIP_RATIONAL * SCIPvarGetAggrScalarExact(SCIP_VAR *var)
SCIP_Bool SCIPvarHasImplic(SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype)
SCIP_BOUNDCHG * SCIPdomchgGetBoundchg(SCIP_DOMCHG *domchg, int pos)
int SCIPvarGetNImpls(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_BOUNDCHGTYPE SCIPboundchgGetBoundchgtype(SCIP_BOUNDCHG *boundchg)
SCIP_Real SCIPvarGetInferenceSum(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Real SCIPvarGetAggrConstant(SCIP_VAR *var)
SCIP_Bool SCIPvarIsImpliedIntegral(SCIP_VAR *var)
SCIP_RETCODE SCIPvarGetAggregatedObj(SCIP_VAR *var, SCIP_Real *aggrobj)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
int SCIPvarGetNLocksDown(SCIP_VAR *var)
SCIP_Real SCIPvarGetBestRootSol(SCIP_VAR *var)
SCIP_HOLELIST * SCIPholelistGetNext(SCIP_HOLELIST *holelist)
SCIP_Real SCIPvarGetLbOriginal(SCIP_VAR *var)
SCIP_BDCHGINFO * SCIPvarGetLbchgInfo(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_RATIONAL * SCIPvarGetAggrConstantExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetPseudoSolExact(SCIP_VAR *var)
SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)
void SCIPvarMarkDeletable(SCIP_VAR *var)
void SCIPvarGetImplicVarBounds(SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_Real *lb, SCIP_Real *ub)
SCIP_PROP * SCIPbdchginfoGetInferProp(SCIP_BDCHGINFO *bdchginfo)
int SCIPvarGetCertificateIndex(SCIP_VAR *var)
SCIP_Bool SCIPvarIsNonimpliedIntegral(SCIP_VAR *var)
SCIP_Real SCIPboundchgGetNewbound(SCIP_BOUNDCHG *boundchg)
SCIP_Bool SCIPvarMayRoundDown(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_Real SCIPvarGetAggrScalar(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetProbvar(SCIP_VAR *var)
void SCIPvarMarkRelaxationOnly(SCIP_VAR *var)
SCIP_RETCODE SCIPvarGetOrigvarSumExact(SCIP_VAR **var, SCIP_RATIONAL *scalar, SCIP_RATIONAL *constant)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_BOUNDTYPE SCIPvarGetBestBoundTypeExact(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPvarSetInitial(SCIP_VAR *var, SCIP_Bool initial)
SCIP_VAR ** SCIPvarGetImplVars(SCIP_VAR *var, SCIP_Bool varfixing)
void SCIPvarSetBestRootSol(SCIP_VAR *var, SCIP_Real rootsol, SCIP_Real rootredcost, SCIP_Real rootlpobjval)
SCIP_VARSTATUS SCIPvarGetStatusExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetWorstBoundLocalExact(SCIP_VAR *var)
int SCIPbdchginfoGetDepth(SCIP_BDCHGINFO *bdchginfo)
int SCIPbdchginfoGetInferInfo(SCIP_BDCHGINFO *bdchginfo)
int SCIPvarGetIndex(SCIP_VAR *var)
SCIP_INTERVAL SCIPvarGetObjInterval(SCIP_VAR *var)
SCIP_CONS * SCIPbdchginfoGetInferCons(SCIP_BDCHGINFO *bdchginfo)
SCIP_Real SCIPvarGetNLPSol_rec(SCIP_VAR *var)
SCIP_BDCHGIDX * SCIPvarGetLastBdchgIndex(SCIP_VAR *var)
SCIP_COLEXACT * SCIPvarGetColExact(SCIP_VAR *var)
void SCIPvarGetLPSolExact_rec(SCIP_VAR *var, SCIP_RATIONAL *res)
int SCIPbdchginfoGetPos(SCIP_BDCHGINFO *bdchginfo)
SCIP_Real SCIPvarGetWorstBoundLocal(SCIP_VAR *var)
int SCIPvarGetNUses(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetLbOriginalExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetUbOriginalExact(SCIP_VAR *var)
int SCIPdomchgGetNBoundchgs(SCIP_DOMCHG *domchg)
SCIP_Longint SCIPvarGetLbCertificateIndexGlobal(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Bool SCIPvarIsExact(SCIP_VAR *var)
SCIP_RETCODE SCIPvarGetProbvarBoundExact(SCIP_VAR **var, SCIP_RATIONAL *bound, SCIP_BOUNDTYPE *boundtype)
SCIP_Real SCIPvarGetUbOriginal(SCIP_VAR *var)
SCIP_Real SCIPvarGetWorstBoundGlobal(SCIP_VAR *var)
SCIP_VAR * SCIPbdchginfoGetVar(SCIP_BDCHGINFO *bdchginfo)
SCIP_Bool SCIPvarHasBinaryImplic(SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_Bool implvarfixing)
void SCIPvarMarkDeleteGlobalStructures(SCIP_VAR *var)
SCIP_Real * SCIPvarGetVlbConstants(SCIP_VAR *var)
SCIP_Real SCIPvarGetRootSol(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetMultaggrConstantExact(SCIP_VAR *var)
int * SCIPvarGetImplIds(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetBestBoundLocal(SCIP_VAR *var)
int SCIPvarGetNVubs(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetUbLocalExact(SCIP_VAR *var)
SCIP_Real SCIPvarGetBranchFactor(SCIP_VAR *var)
void SCIPvarSetUbCertificateIndexGlobal(SCIP_VAR *var, SCIP_Longint certidx)
SCIP_Real SCIPvarGetAvgSol(SCIP_VAR *var)
SCIP_Bool SCIPvarIsDeletable(SCIP_VAR *var)
SCIP_Real SCIPbdchginfoGetOldbound(SCIP_BDCHGINFO *bdchginfo)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_Bool SCIPvarIsTransformedOrigvar(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLazy(SCIP_VAR *var)
SCIP_Real SCIPvarGetPseudoSol(SCIP_VAR *var)
SCIP_BRANCHDIR SCIPvarGetBranchDirection(SCIP_VAR *var)
SCIP_BOUNDTYPE SCIPbdchginfoGetInferBoundtype(SCIP_BDCHGINFO *bdchginfo)
void SCIPvarSetData(SCIP_VAR *var, SCIP_VARDATA *vardata)
SCIP_Real * SCIPvarGetImplBounds(SCIP_VAR *var, SCIP_Bool varfixing)
void SCIPvarSetDeltransData(SCIP_VAR *var,)
SCIP_Real SCIPvarGetLPSol(SCIP_VAR *var)
SCIP_BDCHGINFO * SCIPvarGetBdchgInfo(SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
void SCIPvarGetSolExact(SCIP_VAR *var, SCIP_RATIONAL *res, SCIP_Bool getlpval)
SCIP_VARDATA * SCIPvarGetData(SCIP_VAR *var)
SCIP_VAR ** SCIPvarGetMultaggrVars(SCIP_VAR *var)
SCIP_Bool SCIPbdchginfoIsTighter(SCIP_BDCHGINFO *bdchginfo1, SCIP_BDCHGINFO *bdchginfo2)
int SCIPvarGetMultaggrNVars(SCIP_VAR *var)
SCIP_RETCODE SCIPvarSetRemovable(SCIP_VAR *var, SCIP_Bool removable)
SCIP_Longint SCIPvarGetLbCertificateIndexLocal(SCIP_VAR *var)
SCIP_HOLELIST * SCIPvarGetHolelistOriginal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsRemovable(SCIP_VAR *var)
int SCIPvarGetNCliques(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_BOUNDCHGTYPE SCIPbdchginfoGetChgtype(SCIP_BDCHGINFO *bdchginfo)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
SCIP_VAR * SCIPbdchginfoGetInferVar(SCIP_BDCHGINFO *bdchginfo)
SCIP_RATIONAL * SCIPvarGetBestBoundLocalExact(SCIP_VAR *var)
SCIP_Bool SCIPbdchginfoHasInferenceReason(SCIP_BDCHGINFO *bdchginfo)
SCIP_RATIONAL * SCIPvarGetLbGlobalExact(SCIP_VAR *var)
SCIP_Bool SCIPboundchgIsRedundant(SCIP_BOUNDCHG *boundchg)
SCIP_Longint SCIPvarGetNBranchings(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Bool SCIPvarIsRelaxationOnly(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetNegationVar(SCIP_VAR *var)
SCIP_RETCODE SCIPvarGetProbvarHole(SCIP_VAR **var, SCIP_Real *left, SCIP_Real *right)
SCIP_VAR ** SCIPvarGetVlbVars(SCIP_VAR *var)
SCIP_BDCHGINFO * SCIPvarGetUbchgInfo(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_Real SCIPholelistGetLeft(SCIP_HOLELIST *holelist)
SCIP_RATIONAL ** SCIPvarGetMultaggrScalarsExact(SCIP_VAR *var)
SCIP_Real SCIPvarGetMaxAggrCoef(SCIP_VAR *var)
int SCIPvarGetBranchPriority(SCIP_VAR *var)
SCIP_Bool SCIPvarIsOriginal(SCIP_VAR *var)
SCIP_CLIQUE ** SCIPvarGetCliques(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetMinAggrCoef(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
void SCIPvarMarkNotDeletable(SCIP_VAR *var)
SCIP_Real SCIPvarGetBestRootRedcost(SCIP_VAR *var)
SCIP_BDCHGINFO * SCIPvarGetBdchgInfoLb(SCIP_VAR *var, int pos)
SCIP_RATIONAL * SCIPvarGetLbLocalExact(SCIP_VAR *var)
SCIP_IMPLINTTYPE SCIPvarGetImplType(SCIP_VAR *var)
int SCIPvarCompare(SCIP_VAR *var1, SCIP_VAR *var2)
void SCIPvarsCountTypes(SCIP_VAR **vars, int nvars, int *nbinvars, int *nintvars, int *nbinimplvars, int *nintimplvars, int *ncontimplvars, int *ncontvars)
SCIP_Real SCIPvarGetCutoffSumCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Real SCIPvarGetBestRootLPObjval(SCIP_VAR *var)
SCIP_RETCODE SCIPvarGetProbvarBinary(SCIP_VAR **var, SCIP_Bool *negated)
SCIP_Longint SCIPvarGetNBranchingsCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Real * SCIPvarGetVubConstants(SCIP_VAR *var)
int SCIPvarGetNLocksUp(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetTransVar(SCIP_VAR *var)
SCIP_Real SCIPvarGetNLPSol(SCIP_VAR *var)
SCIP_VAR ** SCIPvarGetVubVars(SCIP_VAR *var)
int SCIPvarGetNBdchgInfosUb(SCIP_VAR *var)
SCIP_BOUNDTYPE SCIPbdchginfoGetBoundtype(SCIP_BDCHGINFO *bdchginfo)
SCIP_VALUEHISTORY * SCIPvarGetValuehistory(SCIP_VAR *var)
SCIP_BOUNDTYPE SCIPvarGetWorstBoundType(SCIP_VAR *var)
void SCIPvarSetCopyData(SCIP_VAR *var,)
SCIP_Real SCIPvarGetInferenceSumCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Bool SCIPvarsHaveCommonClique(SCIP_VAR *var1, SCIP_Bool value1, SCIP_VAR *var2, SCIP_Bool value2, SCIP_Bool regardimplics)
SCIP_Bool SCIPbdchgidxIsEarlierNonNull(SCIP_BDCHGIDX *bdchgidx1, SCIP_BDCHGIDX *bdchgidx2)
SCIP_Real * SCIPvarGetVubCoefs(SCIP_VAR *var)
SCIP_HOLELIST * SCIPvarGetHolelistGlobal(SCIP_VAR *var)
void SCIPvarGetLPSolExact(SCIP_VAR *var, SCIP_RATIONAL *res)
SCIP_Real SCIPbdchginfoGetNewbound(SCIP_BDCHGINFO *bdchginfo)
SCIP_RATIONAL * SCIPvarGetWorstBoundGlobalExact(SCIP_VAR *var)
SCIP_Real SCIPboundchgGetLPSolVal(SCIP_BOUNDCHG *boundchg)
int SCIPvarGetNLocksDownType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_RATIONAL * SCIPvarGetObjExact(SCIP_VAR *var)
SCIP_BDCHGINFO * SCIPvarGetBdchgInfoUb(SCIP_VAR *var, int pos)
int SCIPvarGetNBdchgInfosLb(SCIP_VAR *var)
SCIP_BOUNDTYPE * SCIPvarGetImplTypes(SCIP_VAR *var, SCIP_Bool varfixing)
int SCIPvarGetLastBdchgDepth(SCIP_VAR *var)
SCIP_RETCODE SCIPvarsGetProbvarBinary(SCIP_VAR ***vars, SCIP_Bool **negatedarr, int nvars)
SCIP_RATIONAL * SCIPvarGetUbGlobalExact(SCIP_VAR *var)
SCIP_Real SCIPvarGetUnchangedObj(SCIP_VAR *var)
SCIP_Real * SCIPvarGetMultaggrScalars(SCIP_VAR *var)
SCIP_Real SCIPvarGetCutoffSum(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Real SCIPvarGetLbLazy(SCIP_VAR *var)
SCIP_Bool SCIPvarIsInLP(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetAggrVar(SCIP_VAR *var)
SCIP_Real SCIPnormalCDF(SCIP_Real mean, SCIP_Real variance, SCIP_Real value)
SCIP_Real SCIPcomputeTwoSampleTTestValue(SCIP_Real meanx, SCIP_Real meany, SCIP_Real variancex, SCIP_Real variancey, SCIP_Real countx, SCIP_Real county)
SCIP_Real SCIPstudentTGetCriticalValue(SCIP_CONFIDENCELEVEL clevel, int df)
SCIP_Bool SCIPsortedvecFindPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), void *val, int len, int *pos)
void SCIPsortPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
void SCIPsortPtrPtr(void **ptrarray1, void **ptrarray2, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_Bool SCIPstrToRealValue(const char *str, SCIP_Real *value, char **endptr)
void SCIPstrCopySection(const char *str, char startchar, char endchar, char *token, int size, char **endptr)
SCIP_RETCODE SCIPskipSpace(char **s)
SCIP_RETCODE SCIPvaluehistoryCreate(SCIP_VALUEHISTORY **valuehistory, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPvaluehistoryFind(SCIP_VALUEHISTORY *valuehistory, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real value, SCIP_HISTORY **history)
void SCIPvaluehistoryFree(SCIP_VALUEHISTORY **valuehistory, BMS_BLKMEM *blkmem)
void SCIPvaluehistoryScaleVSIDS(SCIP_VALUEHISTORY *valuehistory, SCIP_Real scalar)
assert(minobj< SCIPgetCutoffbound(scip))
void SCIPhistoryReset(SCIP_HISTORY *history)
SCIP_Real SCIPhistoryGetPseudocost(SCIP_HISTORY *history, SCIP_Real solvaldelta)
SCIP_Real SCIPhistoryGetAvgInferences(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Longint SCIPhistoryGetNActiveConflicts(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Longint SCIPhistoryGetNBranchings(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real SCIPhistoryGetAvgConflictlength(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real SCIPhistoryGetAvgCutoffs(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPhistoryCreate(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)
SCIP_Real SCIPhistoryGetAncPseudocostCount(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
void SCIPhistorySetLastGMIeff(SCIP_HISTORY *history, SCIP_Real gmieff)
void SCIPhistoryUpdateAncPseudocost(SCIP_HISTORY *history, SCIP_SET *set, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
void SCIPhistoryIncInferenceSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)
SCIP_Real SCIPhistoryGetAncPseudocost(SCIP_HISTORY *history, SCIP_Real solvaldelta)
SCIP_Real SCIPhistoryGetCutoffSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real SCIPhistoryGetPseudocostCount(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real SCIPhistoryGetPseudocostVariance(SCIP_HISTORY *history, SCIP_BRANCHDIR direction)
void SCIPhistoryIncNActiveConflicts(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real length)
void SCIPhistoryScaleVSIDS(SCIP_HISTORY *history, SCIP_Real scalar)
void SCIPhistoryIncCutoffSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)
void SCIPhistoryIncNBranchings(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, int depth)
void SCIPhistoryUpdatePseudocost(SCIP_HISTORY *history, SCIP_SET *set, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
SCIP_Real SCIPhistoryGetVSIDS(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real SCIPhistoryGetAvgBranchdepth(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real SCIPhistoryGetLastGMIeff(SCIP_HISTORY *history)
SCIP_Real SCIPhistoryGetAvgGMIeff(SCIP_HISTORY *history)
SCIP_Real SCIPhistoryGetInferenceSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
void SCIPhistoryFree(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)
void SCIPhistoryUnite(SCIP_HISTORY *history, SCIP_HISTORY *addhistory, SCIP_Bool switcheddirs)
void SCIPhistoryIncGMIeffSum(SCIP_HISTORY *history, SCIP_Real gmieff)
SCIP_BRANCHDIR SCIPbranchdirOpposite(SCIP_BRANCHDIR dir)
void SCIPhistoryIncVSIDS(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)
internal methods for branching and inference history
SCIP_VAR ** SCIPimplicsGetVars(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
void SCIPcliqueDelVar(SCIP_CLIQUE *clique, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Bool value)
SCIP_RETCODE SCIPcliquetableAdd(SCIP_CLIQUETABLE *cliquetable, 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_VAR **vars, SCIP_Bool *values, int nvars, SCIP_Bool isequation, SCIP_Bool *infeasible, int *nbdchgs)
void SCIPcliquelistRemoveFromCliques(SCIP_CLIQUELIST *cliquelist, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Bool irrelevantvar)
void SCIPvboundsFree(SCIP_VBOUNDS **vbounds, BMS_BLKMEM *blkmem)
SCIP_Real * SCIPvboundsGetCoefs(SCIP_VBOUNDS *vbounds)
void SCIPvboundsShrink(SCIP_VBOUNDS **vbounds, BMS_BLKMEM *blkmem, int newnvbds)
SCIP_VAR ** SCIPcliqueGetVars(SCIP_CLIQUE *clique)
SCIP_CLIQUE ** SCIPcliquelistGetCliques(SCIP_CLIQUELIST *cliquelist, SCIP_Bool value)
SCIP_Bool SCIPcliquelistsHaveCommonClique(SCIP_CLIQUELIST *cliquelist1, SCIP_Bool value1, SCIP_CLIQUELIST *cliquelist2, SCIP_Bool value2)
SCIP_Real * SCIPimplicsGetBounds(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
void SCIPcliquelistCheck(SCIP_CLIQUELIST *cliquelist, SCIP_VAR *var)
SCIP_VAR ** SCIPvboundsGetVars(SCIP_VBOUNDS *vbounds)
int SCIPcliqueGetNVars(SCIP_CLIQUE *clique)
SCIP_Bool * SCIPcliqueGetValues(SCIP_CLIQUE *clique)
SCIP_RETCODE SCIPvboundsDel(SCIP_VBOUNDS **vbounds, BMS_BLKMEM *blkmem, SCIP_VAR *vbdvar, SCIP_Bool negativecoef)
int * SCIPimplicsGetIds(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
SCIP_RETCODE SCIPimplicsAdd(SCIP_IMPLICS **implics, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool isshortcut, SCIP_Bool *conflict, SCIP_Bool *added)
SCIP_RETCODE SCIPvboundsAdd(SCIP_VBOUNDS **vbounds, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BOUNDTYPE vboundtype, SCIP_VAR *var, SCIP_Real coef, SCIP_Real constant, SCIP_Bool *added)
void SCIPcliquelistFree(SCIP_CLIQUELIST **cliquelist, BMS_BLKMEM *blkmem)
int SCIPimplicsGetNImpls(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
SCIP_RETCODE SCIPcliqueAddVar(SCIP_CLIQUE *clique, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *var, SCIP_Bool value, SCIP_Bool *doubleentry, SCIP_Bool *oppositeentry)
SCIP_BOUNDTYPE * SCIPimplicsGetTypes(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
int SCIPcliquelistGetNCliques(SCIP_CLIQUELIST *cliquelist, SCIP_Bool value)
SCIP_RETCODE SCIPcliquelistDel(SCIP_CLIQUELIST **cliquelist, BMS_BLKMEM *blkmem, SCIP_Bool value, SCIP_CLIQUE *clique)
SCIP_Bool SCIPcliqueIsCleanedUp(SCIP_CLIQUE *clique)
void SCIPimplicsGetVarImplicPoss(SCIP_IMPLICS *implics, SCIP_Bool varfixing, SCIP_VAR *implvar, int *lowerimplicpos, int *upperimplicpos)
SCIP_RETCODE SCIPimplicsDel(SCIP_IMPLICS **implics, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype)
SCIP_Real * SCIPvboundsGetConstants(SCIP_VBOUNDS *vbounds)
int SCIPvboundsGetNVbds(SCIP_VBOUNDS *vbounds)
SCIP_Bool SCIPimplicsContainsImpl(SCIP_IMPLICS *implics, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype)
void SCIPimplicsFree(SCIP_IMPLICS **implics, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPcliquelistAdd(SCIP_CLIQUELIST **cliquelist, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Bool value, SCIP_CLIQUE *clique)
methods for implications, variable bounds, and cliques
SCIP_Bool SCIPlpIsSolBasic(SCIP_LP *lp)
SCIP_RETCODE SCIPcolChgUb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newub)
SCIP_RETCODE SCIPcolFree(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_RETCODE SCIPcolChgLb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)
void SCIPlpDecNLoosevars(SCIP_LP *lp)
SCIP_RETCODE SCIProwAddConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real addval)
SCIP_RETCODE SCIPcolChgObj(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
SCIP_RETCODE SCIProwIncCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real incval)
SCIP_Bool SCIPlpDiving(SCIP_LP *lp)
SCIP_Real SCIPcolGetRedcost(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_RETCODE SCIPcolCreate(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROW **rows, SCIP_Real *vals, SCIP_Bool removable)
SCIP_RETCODE SCIPlpUpdateVarLoose(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
static const SCIP_Real scalars[]
SCIP_RETCODE SCIPlpUpdateVarColumn(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
internal methods for LP management
SCIP_RETCODE SCIPlpExactUpdateVarColumn(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
SCIP_RETCODE SCIProwExactIncCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *incval)
void SCIPlpExactDecNLoosevars(SCIP_LPEXACT *lpexact)
SCIP_RATIONAL * SCIPcolExactGetPrimsol(SCIP_COLEXACT *col)
SCIP_Bool SCIPlpExactDiving(SCIP_LPEXACT *lpexact)
SCIP_RETCODE SCIPcolExactFree(SCIP_COLEXACT **col, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPcolExactChgUb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newub)
SCIP_RETCODE SCIProwExactAddConstant(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *addval)
SCIP_RETCODE SCIPcolExactCreate(SCIP_COLEXACT **col, SCIP_COL *fpcol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROWEXACT **rows, SCIP_RATIONAL **vals, SCIP_Bool removable)
SCIP_RETCODE SCIPcolExactChgLb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newlb)
internal methods for exact LP management
#define BMSreallocBlockMemorySize(mem, ptr, oldsize, newsize)
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
#define BMSfreeBlockMemorySize(mem, ptr, size)
#define BMSallocBlockMemoryArray(mem, ptr, num)
#define BMScopyMemoryArray(ptr, source, num)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
#define BMSallocBlockMemorySize(mem, ptr, size)
struct BMS_BlkMem BMS_BLKMEM
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
SCIP_RETCODE SCIPprimalUpdateObjoffsetExact(SCIP_PRIMAL *primal, 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_RETCODE SCIPprimalUpdateObjoffset(SCIP_PRIMAL *primal, 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)
internal methods for collecting primal CIP solutions and primal informations
void SCIPprobUpdateNObjVars(SCIP_PROB *prob, SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj)
int SCIPprobGetNContVars(SCIP_PROB *prob)
SCIP_RETCODE SCIPprobVarChangedStatus(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var)
const char * SCIPprobGetName(SCIP_PROB *prob)
void SCIPprobAddObjoffset(SCIP_PROB *prob, SCIP_Real addval)
SCIP_RETCODE SCIPprobAddVar(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *var)
int SCIPprobGetNVars(SCIP_PROB *prob)
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
SCIP_Bool SCIPprobIsTransformed(SCIP_PROB *prob)
void SCIPprobAddObjoffsetExact(SCIP_PROB *prob, SCIP_RATIONAL *addval)
internal methods for storing and manipulating the main problem
public methods for managing constraints
public methods for branching and inference history structure
public methods for implications, variable bounds, and cliques
public methods for LP management
public methods for message output
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for propagators
public methods for problem variables
void SCIPrelaxationSolObjAdd(SCIP_RELAXATION *relaxation, SCIP_Real val)
internal methods for relaxators
public methods for certified solving
public methods for exact solving
public methods for global and local (sub)problems
public methods for the probing mode
SCIP_Bool SCIPsetIsDualfeasZero(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPsetFloor(SCIP_SET *set, SCIP_Real val)
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 SCIPsetFeastol(SCIP_SET *set)
SCIP_Real SCIPsetCeil(SCIP_SET *set, SCIP_Real val)
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_Bool SCIPsetIsDualfeasNegative(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_STAGE SCIPsetGetStage(SCIP_SET *set)
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 SCIPsetIsSumZero(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsDualfeasPositive(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_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsetGetHugeValue(SCIP_SET *set)
SCIP_Real SCIPsetRound(SCIP_SET *set, SCIP_Real val)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
internal methods for global SCIP settings
#define SCIPsetFreeBufferArray(set, ptr)
#define SCIPsetFreeCleanBufferArray(set, ptr)
#define SCIPsetAllocBufferArray(set, ptr, num)
#define SCIPsetAllocCleanBufferArray(set, ptr, num)
#define SCIPsetDuplicateBufferArray(set, ptr, source, num)
#define SCIPsetReallocBufferArray(set, ptr, num)
SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
internal methods for storing primal CIP solutions
SCIP_RETCODE SCIPstatUpdateVarRootLPBestEstimate(SCIP_STAT *stat, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldrootpscostscore)
internal methods for problem statistics
#define SCIPstatIncrement(stat, set, field)
SCIP_INFERENCEDATA inferencedata
unsigned int boundchgtype
unsigned int inferboundtype
SCIP_RATIONAL * newboundexact
union SCIP_BoundChg::@126301315365336333353356203157377037022074222233 data
SCIP_Longint certificateindex
SCIP_INFERENCEDATA inferencedata
SCIP_BRANCHINGDATA branchingdata
unsigned int inferboundtype
unsigned int boundchgtype
SCIP_BOUNDCHG * boundchgs
SCIP_BOUNDCHG * boundchgs
SCIP_HISTORY * glbhistory
SCIP_BRANCHDIR lastbranchdir
SCIP_Bool collectvarhistory
SCIP_HISTORY * glbhistorycrun
SCIP_Real lastbranchvalue
SCIP_INTERVAL objinterval
SCIP_MULTAGGREXACT multaggr
SCIP_VARSTATUS varstatusexact
SCIP_AGGREGATEEXACT aggregate
SCIP_BDCHGINFO * lbchginfos
int nlocksdown[NLOCKTYPES]
SCIP_HISTORY * historycrun
unsigned int donotmultaggr
SCIP_Real conflictrelaxedub
SCIP_BDCHGINFO * ubchginfos
union SCIP_Var::@062351145146014100220174313010263165251013276204 data
SCIP_Real conflictrelaxedlb
SCIP_VARDATAEXACT * exactdata
SCIP_CLIQUELIST * cliquelist
unsigned int branchdirection
SCIP_Longint closestvblpcount
datastructures for managing events
data structures for LP management
data structures for exact LP management
datastructures for storing and manipulating the main problem
SCIP main data structure.
datastructures for global SCIP settings
datastructures for problem statistics
datastructures for problem variables
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)
SCIP_NODE * SCIPtreeGetRootNode(SCIP_TREE *tree)
internal methods for branch and bound tree
struct SCIP_BranchCand SCIP_BRANCHCAND
struct SCIP_Certificate SCIP_CERTIFICATE
struct SCIP_Cons SCIP_CONS
#define SCIP_EVENTTYPE_GHOLEADDED
struct SCIP_Eventhdlr SCIP_EVENTHDLR
#define SCIP_EVENTTYPE_GUBCHANGED
struct SCIP_EventData SCIP_EVENTDATA
struct SCIP_EventFilter SCIP_EVENTFILTER
struct SCIP_EventQueue SCIP_EVENTQUEUE
#define SCIP_EVENTTYPE_FORMAT
#define SCIP_EVENTTYPE_GLBCHANGED
#define SCIP_EVENTTYPE_VARCHANGED
#define SCIP_EVENTTYPE_LBCHANGED
#define SCIP_EVENTTYPE_UBCHANGED
#define SCIP_EVENTTYPE_LHOLEADDED
struct SCIP_Event SCIP_EVENT
struct SCIP_History SCIP_HISTORY
@ SCIP_BRANCHDIR_DOWNWARDS
struct SCIP_ValueHistory SCIP_VALUEHISTORY
enum SCIP_BranchDir SCIP_BRANCHDIR
struct SCIP_Clique SCIP_CLIQUE
struct SCIP_CliqueTable SCIP_CLIQUETABLE
enum SCIP_BoundType SCIP_BOUNDTYPE
struct SCIP_LpExact SCIP_LPEXACT
struct SCIP_RowExact SCIP_ROWEXACT
struct SCIP_ColExact SCIP_COLEXACT
enum SCIP_BaseStat SCIP_BASESTAT
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
struct SCIP_HashMap SCIP_HASHMAP
#define SCIP_DECL_SORTPTRCOMP(x)
#define SCIP_DECL_HASHKEYEQ(x)
#define SCIP_DECL_HASHGETKEY(x)
#define SCIP_DECL_HASHKEYVAL(x)
@ SCIP_CONFIDENCELEVEL_MAX
@ SCIP_CONFIDENCELEVEL_MEDIUM
@ SCIP_CONFIDENCELEVEL_HIGH
@ SCIP_CONFIDENCELEVEL_MIN
@ SCIP_CONFIDENCELEVEL_LOW
enum SCIP_Confidencelevel SCIP_CONFIDENCELEVEL
struct SCIP_Primal SCIP_PRIMAL
struct SCIP_Prob SCIP_PROB
enum SCIP_Objsense SCIP_OBJSENSE
struct SCIP_Prop SCIP_PROP
struct SCIP_Rational SCIP_RATIONAL
struct SCIP_Relaxation SCIP_RELAXATION
struct SCIP_Reopt SCIP_REOPT
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_TRANSFORMING
struct SCIP_Stat SCIP_STAT
struct SCIP_Node SCIP_NODE
struct SCIP_Tree SCIP_TREE
struct SCIP_VarData SCIP_VARDATA
enum SCIP_BoundchgType SCIP_BOUNDCHGTYPE
struct SCIP_DomChgBoth SCIP_DOMCHGBOTH
enum SCIP_ImplintType SCIP_IMPLINTTYPE
@ SCIP_IMPLINTTYPE_STRONG
#define SCIP_DECL_VARDELORIG(x)
struct SCIP_HoleChg SCIP_HOLECHG
union SCIP_DomChg SCIP_DOMCHG
@ SCIP_DOMCHGTYPE_DYNAMIC
struct SCIP_BoundChg SCIP_BOUNDCHG
struct SCIP_BdChgIdx SCIP_BDCHGIDX
struct SCIP_DomChgDyn SCIP_DOMCHGDYN
#define SCIP_DECL_VARTRANS(x)
#define SCIP_DEPRECATED_VARTYPE_IMPLINT
struct SCIP_DomChgBound SCIP_DOMCHGBOUND
struct SCIP_Holelist SCIP_HOLELIST
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_BOUNDCHGTYPE_PROPINFER
@ SCIP_BOUNDCHGTYPE_BRANCHING
@ SCIP_BOUNDCHGTYPE_CONSINFER
@ SCIP_VARSTATUS_ORIGINAL
@ SCIP_VARSTATUS_MULTAGGR
@ SCIP_VARSTATUS_AGGREGATED
struct SCIP_BdChgInfo SCIP_BDCHGINFO
#define SCIP_DECL_VARCOPY(x)
#define SCIP_DECL_VARDELTRANS(x)
enum SCIP_LockType SCIP_LOCKTYPE
enum SCIP_Vartype SCIP_VARTYPE
enum SCIP_Varstatus SCIP_VARSTATUS
SCIP_DOMCHGBOUND domchgbound
SCIP_DOMCHGBOTH domchgboth
SCIP_Real SCIPvarGetObjLP(SCIP_VAR *var)
SCIP_Real SCIPvarGetPseudocost(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPvarsGetActiveVars(SCIP_SET *set, SCIP_VAR **vars, int *nvars, int varssize, int *requiredsize)
SCIP_RETCODE SCIPvarMultiaggregate(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int naggvars, SCIP_VAR **aggvars, SCIP_Real *scalars, SCIP_Real constant, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
SCIP_RETCODE SCIPvarTryAggregateVarsExact(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_RATIONAL *scalarx, SCIP_RATIONAL *scalary, SCIP_RATIONAL *rhs, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
static SCIP_RETCODE varParse(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *str, char *name, SCIP_Real *lb, SCIP_Real *ub, SCIP_Real *obj, SCIP_RATIONAL *lbexact, SCIP_RATIONAL *ubexact, SCIP_RATIONAL *objexact, SCIP_VARTYPE *vartype, SCIP_IMPLINTTYPE *impltype, SCIP_Real *lazylb, SCIP_Real *lazyub, SCIP_RATIONAL *lazylbexact, SCIP_RATIONAL *lazyubexact, SCIP_Bool local, char **endptr, SCIP_Bool *success)
SCIP_RETCODE SCIPvarIncNBranchings(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, int depth)
static SCIP_RETCODE varEventGlbChanged(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real oldbound, SCIP_Real newbound)
static SCIP_RETCODE varFreeExactData(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set)
static SCIP_RETCODE varEnsureUbchginfosSize(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
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 SCIPvarChgLbLazy(SCIP_VAR *var, SCIP_SET *set, SCIP_Real lazylb)
static SCIP_RETCODE domchgEnsureBoundchgsSize(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_RETCODE SCIPvarFixBinary(SCIP_VAR *var, 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 value, SCIP_Bool *infeasible, int *nbdchgs)
static SCIP_RETCODE varEventGubChangedExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *oldbound, SCIP_RATIONAL *newbound)
static SCIP_RETCODE varProcessChgUbLocal(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_Real SCIPvarGetPseudocostCount(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarResetBounds(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
void SCIPbdchginfoFree(SCIP_BDCHGINFO **bdchginfo, BMS_BLKMEM *blkmem)
static SCIP_RETCODE domAddHole(SCIP_DOM *dom, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real left, SCIP_Real right, SCIP_Bool *added)
SCIP_RETCODE SCIPvarGetTransformed(SCIP_VAR *origvar, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **transvar)
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)
static SCIP_RETCODE varProcessChgBranchPriority(SCIP_VAR *var, int branchpriority)
void SCIPvarGetUbLocalExactMinimal(SCIP_VAR *var, SCIP_RATIONAL *output)
SCIP_Real SCIPvarGetPseudocostVariance(SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Bool onlycurrentrun)
static SCIP_RETCODE boundchgApplyGlobal(SCIP_BOUNDCHG *boundchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
SCIP_Real SCIPvarGetImplRedcost(SCIP_VAR *var, SCIP_SET *set, SCIP_Bool varfixing, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp)
static SCIP_RETCODE applyImplic(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 *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_RETCODE SCIPvarSetLastGMIScore(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real gmieff)
static SCIP_RETCODE parseBounds(SCIP_SET *set, const char *str, char *type, SCIP_Real *lb, SCIP_Real *ub, SCIP_RATIONAL *lbexact, SCIP_RATIONAL *ubexact, char **endptr)
void SCIPvarInitSolve(SCIP_VAR *var)
SCIP_RETCODE SCIPvarChgUbGlobalExact(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_Real SCIPvarGetAncPseudocostCountCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarIncInferenceSum(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Real weight)
static SCIP_RETCODE varAddTransitiveBinaryClosureImplic(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_Bool implvarfixing, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_RETCODE SCIPvarChgLbGlobalExact(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)
static SCIP_RETCODE varUpdateAggregationBounds(SCIP_VAR *var, 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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *aggvar, SCIP_Real scalar, SCIP_Real constant, SCIP_Bool *infeasible, SCIP_Bool *fixed)
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)
static void printBounds(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_Real lb, SCIP_Real ub, const char *name)
SCIP_RETCODE SCIPvarTryAggregateVars(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
SCIP_RETCODE SCIPvarIncVSIDS(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Real weight)
static SCIP_RETCODE varProcessChgLbLocal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newbound)
static SCIP_RETCODE varAddLbchginfo(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real oldbound, SCIP_Real newbound, int depth, int pos, SCIP_VAR *infervar, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_BOUNDTYPE inferboundtype, SCIP_BOUNDCHGTYPE boundchgtype)
SCIP_RETCODE SCIPvarChgUbLocalExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPdomchgUndo(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
static SCIP_RETCODE varProcessAddHoleLocal(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_Real SCIPvarGetAvgCutoffs(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
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 SCIPvarGetProbvarSumExact(SCIP_VAR **var, SCIP_RATIONAL *scalar, SCIP_RATIONAL *constant)
SCIP_RETCODE SCIPdomchgMakeStatic(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
static void checkImplic(SCIP_SET *set, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool *redundant, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPvarGetMultaggrUbLocalExact(SCIP_VAR *var, SCIP_SET *set, SCIP_RATIONAL *result)
static SCIP_VAR * varGetActiveVar(SCIP_VAR *var)
SCIP_RETCODE SCIPvarUpdatePseudocost(SCIP_VAR *var, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
void SCIPvarSetLbCertificateIndexLocal(SCIP_VAR *var, SCIP_Longint certidx)
SCIP_RETCODE SCIPvarTransform(SCIP_VAR *origvar, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_OBJSENSE objsense, SCIP_VAR **transvar)
SCIP_RETCODE SCIPvarAddHoleOriginal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real left, SCIP_Real right)
static SCIP_RETCODE varProcessChgLbLocalExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPvarAddCliqueToList(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Bool value, SCIP_CLIQUE *clique)
int SCIPbdchgidxGetDepth(SCIP_BDCHGIDX *bdchgidx)
static SCIP_RETCODE varEventObjChanged(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_Real oldobj, SCIP_Real newobj)
static SCIP_RETCODE varFree(SCIP_VAR **var, 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_Real SCIPvarGetAvgInferencesCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
static SCIP_RETCODE varEventImplAdded(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPvarRelease(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
void SCIPvarGetClosestVub(SCIP_VAR *var, SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *closestvub, int *closestvubidx)
SCIP_RETCODE SCIPvarIncNActiveConflicts(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Real length)
static SCIP_RETCODE varCreate(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_IMPLINTTYPE impltype, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARCOPY((*varcopy)), SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_VARDATA *vardata)
SCIP_RETCODE SCIPvarRemove(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_CLIQUETABLE *cliquetable, SCIP_SET *set, SCIP_Bool final, SCIP_Bool keepimplics)
void SCIPvarAdjustLb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *lb)
static SCIP_RATIONAL * SCIPvarGetPseudoSolExact_rec(SCIP_VAR *var)
void SCIPvarAdjustLbExact(SCIP_VAR *var, SCIP_SET *set, SCIP_RATIONAL *lb)
SCIP_RETCODE SCIPvarDropEvent(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
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 SCIPvarSetNLPSol(SCIP_VAR *var, SCIP_SET *set, SCIP_Real solval)
SCIP_RETCODE SCIPvarCopy(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP *sourcescip, SCIP_VAR *sourcevar, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global)
SCIP_Real SCIPvarCalcPscostConfidenceBound(SCIP_VAR *var, SCIP_SET *set, SCIP_BRANCHDIR dir, SCIP_Bool onlycurrentrun, SCIP_CONFIDENCELEVEL clevel)
static SCIP_BDCHGIDX presolvebdchgidx
static SCIP_RETCODE varEventLbChanged(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_Bool SCIPvarIsPscostRelerrorReliable(SCIP_VAR *var, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real threshold, SCIP_CONFIDENCELEVEL clevel)
static SCIP_RETCODE parseValue(SCIP_SET *set, const char *str, SCIP_Real *value, SCIP_RATIONAL *valueexact)
SCIP_RETCODE SCIPvarChgLbOriginal(SCIP_VAR *var, SCIP_SET *set, SCIP_Real newbound)
SCIP_RETCODE SCIPvarAddToRow(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
static SCIP_RETCODE varAddTransitiveImplic(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool transitive, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_Real SCIPvarGetLbLP(SCIP_VAR *var, SCIP_SET *set)
static SCIP_RETCODE tryAggregateIntVarsExact(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_RATIONAL *scalarx, SCIP_RATIONAL *scalary, SCIP_RATIONAL *rhs, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
void SCIPvarAdjustBd(SCIP_VAR *var, SCIP_SET *set, SCIP_BOUNDTYPE boundtype, SCIP_Real *bd)
static SCIP_RETCODE varEventUbChanged(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPvarChgObjDive(SCIP_VAR *var, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
SCIP_RETCODE SCIPdomchgFree(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_RETCODE SCIPvarColumnExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lp)
SCIP_Real SCIPvarGetRelaxSolTransVar(SCIP_VAR *var)
SCIP_RETCODE SCIPvarPrint(SCIP_VAR *var, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
SCIP_Real SCIPvarGetAvgGMIScore(SCIP_VAR *var, SCIP_STAT *stat)
SCIP_Real SCIPvarGetVSIDS(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarAddObjExact(SCIP_VAR *var, 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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_RATIONAL *addobj)
static SCIP_RETCODE varEventVarFixed(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, int fixeventtype)
SCIP_RETCODE SCIPvarIncCutoffSum(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Real weight)
SCIP_Real SCIPvarGetMultaggrLbLocal(SCIP_VAR *var, SCIP_SET *set)
static SCIP_RETCODE varNegateExactData(SCIP_VAR *negvar, SCIP_VAR *origvar, BMS_BLKMEM *blkmem)
SCIP_Bool SCIPvarSignificantPscostDifference(SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *varx, SCIP_Real fracx, SCIP_VAR *vary, SCIP_Real fracy, SCIP_BRANCHDIR dir, SCIP_CONFIDENCELEVEL clevel, SCIP_Bool onesided)
void SCIPvarCapture(SCIP_VAR *var)
static SCIP_RETCODE varEventGubChanged(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPvarChgBranchDirection(SCIP_VAR *var, SCIP_BRANCHDIR branchdirection)
SCIP_Real SCIPvarGetPseudocostCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPdomchgAddHolechg(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_HOLELIST **ptr, SCIP_HOLELIST *newlist, SCIP_HOLELIST *oldlist)
void SCIPvarStoreRootSol(SCIP_VAR *var, SCIP_Bool roothaslp)
void SCIPvarGetLbLocalExactMaximal(SCIP_VAR *var, SCIP_RATIONAL *output)
static void adjustedLbExact(SCIP_SET *set, SCIP_Bool isintegral, SCIP_RATIONAL *lb)
static SCIP_RETCODE domchgEnsureHolechgsSize(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
static SCIP_RETCODE varEnsureLbchginfosSize(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
static SCIP_RETCODE varProcessChgLbGlobalExact(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_Bool SCIPvarDoNotAggr(SCIP_VAR *var)
SCIP_RETCODE SCIPvarChgType(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_VARTYPE vartype)
SCIP_RETCODE SCIPvarFlattenAggregationGraph(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
void SCIPvarAdjustUbExact(SCIP_VAR *var, SCIP_SET *set, SCIP_RATIONAL *ub)
SCIP_Longint SCIPvarGetNActiveConflicts(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarChgLbExactDive(SCIP_VAR *var, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPvarCreateOriginal(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_IMPLINTTYPE impltype, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_DECL_VARCOPY((*varcopy)), SCIP_VARDATA *vardata)
void SCIPvarUpdateBestRootSol(SCIP_VAR *var, SCIP_SET *set, SCIP_Real rootsol, SCIP_Real rootredcost, SCIP_Real rootlpobjval)
static SCIP_Real adjustedLbExactFloat(SCIP_Bool isintegral, SCIP_Real lb)
SCIP_RETCODE SCIPvarFixExact(SCIP_VAR *var, 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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_RATIONAL *fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_Real SCIPvarGetVSIDS_rec(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarChgImplType(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_IMPLINTTYPE impltype)
SCIP_RETCODE SCIPvarChgBdLocal(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_BOUNDTYPE boundtype)
static SCIP_RETCODE boundchgApplyExact(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 SCIPvarScaleVSIDS(SCIP_VAR *var, SCIP_Real scalar)
static SCIP_RETCODE findValuehistoryEntry(SCIP_VAR *var, SCIP_Real value, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_HISTORY **history)
SCIP_Real SCIPvarGetAvgConflictlength(SCIP_VAR *var, SCIP_BRANCHDIR dir)
static SCIP_Real adjustedLb(SCIP_SET *set, SCIP_Bool isintegral, SCIP_Real lb)
static SCIP_RETCODE varProcessChgUbGlobal(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 SCIPvarGetPseudocostCountCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
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_RETCODE SCIPvarMultiaggregateExact(SCIP_VAR *var, 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_LPEXACT *lpexact, SCIP_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int naggvars, SCIP_VAR **aggvars, SCIP_RATIONAL **scalars, SCIP_RATIONAL *constant, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
static void overwriteMultAggrWithExactData(SCIP_SET *set, SCIP_VAR *var)
SCIP_RETCODE SCIPvarChgUbOriginalExact(SCIP_VAR *var, SCIP_SET *set, SCIP_RATIONAL *newbound)
static SCIP_RETCODE varProcessChgUbGlobalExact(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)
static SCIP_RETCODE varUpdateAggregationBoundsExact(SCIP_VAR *var, 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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *aggvar, SCIP_RATIONAL *scalar, SCIP_RATIONAL *constant, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_RETCODE SCIPvarAggregate(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *aggvar, SCIP_Real scalar, SCIP_Real constant, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
static SCIP_RETCODE varEnsureParentvarsSize(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
static SCIP_Real adjustedUb(SCIP_SET *set, SCIP_Bool isintegral, SCIP_Real ub)
SCIP_RETCODE SCIPvarCreateTransformed(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_IMPLINTTYPE impltype, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_DECL_VARCOPY((*varcopy)), SCIP_VARDATA *vardata)
SCIP_RETCODE SCIPvarParseTransformed(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *str, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARCOPY((*varcopy)), SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_VARDATA *vardata, char **endptr, SCIP_Bool *success)
SCIP_Real SCIPvarGetUbLP(SCIP_VAR *var, SCIP_SET *set)
SCIP_RETCODE SCIPvarColumn(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp)
SCIP_Real SCIPvarGetAncPseudocost(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real solvaldelta)
SCIP_RETCODE SCIPvarChgUbOriginal(SCIP_VAR *var, SCIP_SET *set, SCIP_Real newbound)
SCIP_RETCODE SCIPvarChgUbDive(SCIP_VAR *var, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newbound)
static void domMerge(SCIP_DOM *dom, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real *newlb, SCIP_Real *newub)
SCIP_Real SCIPvarGetAvgInferences(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarAddObj(SCIP_VAR *var, 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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Real addobj)
int SCIPvarGetConflictingBdchgDepth(SCIP_VAR *var, SCIP_SET *set, SCIP_BOUNDTYPE boundtype, SCIP_Real bound)
static SCIP_RETCODE varEventVarUnlocked(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
static void adjustedUbExact(SCIP_SET *set, SCIP_Bool isintegral, SCIP_RATIONAL *ub)
SCIP_RETCODE SCIPvarChgUbExactDive(SCIP_VAR *var, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newbound)
SCIP_Real SCIPvarGetMultaggrUbGlobal(SCIP_VAR *var, SCIP_SET *set)
static SCIP_RETCODE varEventLbChangedExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *oldbound, SCIP_RATIONAL *newbound)
void SCIPvarGetClosestVlb(SCIP_VAR *var, SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *closestvlb, int *closestvlbidx)
SCIP_RETCODE SCIPvarChgUbLazy(SCIP_VAR *var, SCIP_SET *set, SCIP_Real lazyub)
static SCIP_RETCODE varAddVbound(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_BOUNDTYPE vbtype, SCIP_VAR *vbvar, SCIP_Real vbcoef, SCIP_Real vbconstant)
static SCIP_RETCODE tryAggregateIntVars(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
SCIP_RETCODE SCIPvarChgLbOriginalExact(SCIP_VAR *var, SCIP_SET *set, SCIP_RATIONAL *newbound)
SCIP_Bool SCIPvarPscostThresholdProbabilityTest(SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_Real frac, SCIP_Real threshold, SCIP_BRANCHDIR dir, SCIP_CONFIDENCELEVEL clevel)
SCIP_RETCODE SCIPdomchgApplyGlobal(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)
SCIP_RETCODE SCIPboundchgUndo(SCIP_BOUNDCHG *boundchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
void SCIPvarMarkDeleted(SCIP_VAR *var)
static SCIP_RETCODE varSetName(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_STAT *stat, const char *name)
void SCIPvarMergeHistories(SCIP_VAR *targetvar, SCIP_VAR *othervar, SCIP_STAT *stat)
SCIP_RETCODE SCIPvarAddVlb(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *vlbvar, SCIP_Real vlbcoef, SCIP_Real vlbconstant, SCIP_Bool transitive, SCIP_Bool *infeasible, int *nbdchgs)
static SCIP_RETCODE varEventGholeAdded(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_Real left, SCIP_Real right)
static void varUpdateMinMaxAggrCoef(SCIP_VAR *var, SCIP_VAR *aggvar, SCIP_Real aggscalar)
static void printHolelist(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_HOLELIST *holelist, const char *name)
void SCIPdomchgAddCurrentCertificateIndex(SCIP_DOMCHG *domchg, SCIP_CERTIFICATE *certificate)
static SCIP_RETCODE varAddUbchginfo(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real oldbound, SCIP_Real newbound, int depth, int pos, SCIP_VAR *infervar, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_BOUNDTYPE inferboundtype, SCIP_BOUNDCHGTYPE boundchgtype)
SCIP_RETCODE SCIPvarUpdateAncPseudocost(SCIP_VAR *var, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
SCIP_RETCODE SCIPvarCatchEvent(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPvarAddHoleLocal(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_Bool SCIPvarIsMarkedDeleteGlobalStructures(SCIP_VAR *var)
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_RETCODE SCIPvarDelClique(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool value, SCIP_CLIQUE *clique)
static SCIP_RETCODE varEventObjChangedExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
SCIP_Real SCIPvarGetRelaxSol(SCIP_VAR *var, SCIP_SET *set)
SCIP_RETCODE SCIPvarDelCliqueFromList(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_Bool value, SCIP_CLIQUE *clique)
int SCIPbdchgidxGetPos(SCIP_BDCHGIDX *bdchgidx)
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)
static SCIP_Bool useValuehistory(SCIP_VAR *var, SCIP_Real value, SCIP_SET *set)
SCIP_RETCODE SCIPvarsAddClique(SCIP_VAR **vars, SCIP_Bool *values, int nvars, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CLIQUE *clique)
SCIP_RETCODE SCIPvarMarkDoNotAggr(SCIP_VAR *var)
static SCIP_RETCODE varProcessChgBranchFactor(SCIP_VAR *var, SCIP_SET *set, SCIP_Real branchfactor)
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 SCIPvarLoose(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LP *lp)
static SCIP_RETCODE varFreeParents(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
static SCIP_BDCHGIDX initbdchgidx
SCIP_RETCODE SCIPvarAddClique(SCIP_VAR *var, 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 value, SCIP_CLIQUE *clique, SCIP_Bool *infeasible, int *nbdchgs)
static SCIP_RETCODE varProcessChgUbLocalExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPvarChgBranchPriority(SCIP_VAR *var, int branchpriority)
SCIP_RETCODE SCIPvarChgLbLocalExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *newbound)
static SCIP_RETCODE domchgCreate(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPvarMarkDoNotMultaggr(SCIP_VAR *var)
static SCIP_RETCODE holelistCreate(SCIP_HOLELIST **holelist, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real left, SCIP_Real right)
static SCIP_Real adjustedUbExactFloat(SCIP_Bool isintegral, SCIP_Real lb)
SCIP_RETCODE SCIPvarAddLocks(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LOCKTYPE locktype, int addnlocksdown, int addnlocksup)
SCIP_RETCODE SCIPvarNegate(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **negvar)
SCIP_Real SCIPvarGetMultaggrUbLocal(SCIP_VAR *var, SCIP_SET *set)
SCIP_RETCODE SCIPbdchginfoCreate(SCIP_BDCHGINFO **bdchginfo, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_Real SCIPvarGetMinPseudocostScore(SCIP_VAR *var, SCIP_STAT *stat, SCIP_SET *set, SCIP_Real solval)
SCIP_RETCODE SCIPvarGetProbvarSum(SCIP_VAR **var, SCIP_SET *set, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_Bool SCIPvarIsAggrCoefAcceptable(SCIP_SET *set, SCIP_VAR *var, SCIP_Real scalar)
SCIP_RETCODE SCIPvarAddExactData(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_RATIONAL *obj)
SCIP_RETCODE SCIPvarIncGMIeffSum(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real gmieff)
static void holelistFree(SCIP_HOLELIST **holelist, BMS_BLKMEM *blkmem)
static SCIP_RETCODE varProcessChgLbGlobal(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 SCIPvarGetLastGMIScore(SCIP_VAR *var, SCIP_STAT *stat)
void SCIPvarAdjustUb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *ub)
SCIP_Real SCIPbdchginfoGetRelaxedBound(SCIP_BDCHGINFO *bdchginfo)
static SCIP_Real getImplVarRedcost(SCIP_VAR *var, SCIP_SET *set, SCIP_Bool varfixing, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_RETCODE SCIPvarGetActiveRepresentatives(SCIP_SET *set, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, int varssize, SCIP_Real *constant, int *requiredsize)
static SCIP_RETCODE varAddImplic(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool isshortcut, SCIP_Bool *infeasible, int *nbdchgs, SCIP_Bool *added)
SCIP_RETCODE SCIPvarChgLbDive(SCIP_VAR *var, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newbound)
SCIP_RETCODE SCIPvarFix(SCIP_VAR *var, 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_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
static SCIP_Real SCIPvarGetPseudoSol_rec(SCIP_VAR *var)
SCIP_Real SCIPvarGetAvgConflictlengthCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarCopyExactData(BMS_BLKMEM *blkmem, SCIP_VAR *targetvar, SCIP_VAR *sourcevar, SCIP_Bool negateobj)
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)
static SCIP_RETCODE domchgMakeDynamic(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPvarParseOriginal(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *str, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARCOPY((*varcopy)), SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_VARDATA *vardata, char **endptr, SCIP_Bool *success)
SCIP_RETCODE SCIPvarAddVub(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *vubvar, SCIP_Real vubcoef, SCIP_Real vubconstant, SCIP_Bool transitive, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_Real SCIPvarGetVSIDSCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
static void varIncRootboundchgs(SCIP_VAR *var, SCIP_SET *set, SCIP_STAT *stat)
void SCIPvarSetNamePointer(SCIP_VAR *var, const char *name)
SCIP_RETCODE SCIPvarAggregateExact(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_VAR *aggvar, SCIP_RATIONAL *scalar, SCIP_RATIONAL *constant, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
static SCIP_RETCODE holelistDuplicate(SCIP_HOLELIST **target, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_HOLELIST *source)
SCIP_RETCODE SCIPvarChgName(SCIP_VAR *var, BMS_BLKMEM *blkmem, const char *name)
void SCIPvarSetHistory(SCIP_VAR *var, SCIP_HISTORY *history, SCIP_STAT *stat)
static SCIP_RETCODE varProcessAddHoleGlobal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_Real left, SCIP_Real right, SCIP_Bool *added)
void SCIPvarSetUbCertificateIndexLocal(SCIP_VAR *var, SCIP_Longint certidx)
void SCIPvarAdjustUbExactFloat(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *ub)
void SCIPvarSetProbindex(SCIP_VAR *var, int probindex)
static SCIP_RETCODE varAddParent(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *parentvar)
SCIP_Real SCIPvarGetMultaggrLbGlobal(SCIP_VAR *var, SCIP_SET *set)
SCIP_RETCODE SCIPvarSetRelaxSol(SCIP_VAR *var, SCIP_SET *set, SCIP_RELAXATION *relaxation, SCIP_Real solval, SCIP_Bool updateobj)
void SCIPvarAdjustLbExactFloat(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *lb)
SCIP_RETCODE SCIPvarChgBranchFactor(SCIP_VAR *var, SCIP_SET *set, SCIP_Real branchfactor)
static SCIP_RETCODE boundchgReleaseData(SCIP_BOUNDCHG *boundchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
static SCIP_RETCODE varEventUbChangedExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *oldbound, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPvarAddImplic(SCIP_VAR *var, 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_CLIQUETABLE *cliquetable, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool transitive, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_Longint SCIPvarGetNActiveConflictsCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
static SCIP_RETCODE boundchgCaptureData(SCIP_BOUNDCHG *boundchg)
SCIP_RETCODE SCIPvarChgObjExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_LPEXACT *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *newobj)
static SCIP_RETCODE varEventGlbChangedExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_RATIONAL *oldbound, SCIP_RATIONAL *newbound)
static SCIP_RETCODE varProcessChgBranchDirection(SCIP_VAR *var, SCIP_BRANCHDIR branchdirection)
SCIP_Real SCIPvarGetAvgCutoffsCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_Bool SCIPvarDoNotMultaggr(SCIP_VAR *var)
SCIP_RETCODE SCIPvarRemoveCliquesImplicsVbs(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_CLIQUETABLE *cliquetable, SCIP_SET *set, SCIP_Bool irrelevantvar, SCIP_Bool onlyredundant, SCIP_Bool removefromvar)
SCIP_RETCODE SCIPvarGetMultaggrLbLocalExact(SCIP_VAR *var, SCIP_SET *set, SCIP_RATIONAL *result)
static void printBoundsExact(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, const char *name)
static void varSetProbindex(SCIP_VAR *var, int probindex)
SCIP_RETCODE SCIPvarGetActiveRepresentativesExact(SCIP_SET *set, SCIP_VAR **vars, SCIP_RATIONAL **scalars, int *nvars, int varssize, SCIP_RATIONAL *constant, int *requiredsize, SCIP_Bool mergemultiples)
SCIP_RETCODE SCIPvarAddToRowExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *rowexact, SCIP_RATIONAL *val)
internal methods for problem variables