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,
var->data.original.origdom.ub,
var->name);
2806 (*var)->donotaggr = sourcevar->
donotaggr;
2816 if( sourcevar->varcopy !=
NULL )
2819 varmap, consmap, (*
var), &targetdata, &
result) );
2833 (*var)->varcopy = sourcevar->varcopy;
2834 (*var)->vardelorig = sourcevar->vardelorig;
2835 (*var)->vartrans = sourcevar->vartrans;
2836 (*var)->vardeltrans = sourcevar->vardeltrans;
2843 (*var)->vardata = sourcevar->
vardata;
2848 if(
set->history_allowtransfer )
2858 (*var)->varcopy = sourcevar->varcopy;
2859 (*var)->vardelorig = sourcevar->vardelorig;
2860 (*var)->vartrans = sourcevar->vartrans;
2861 (*var)->vardeltrans = sourcevar->vardeltrans;
2882 if( valueexact !=
NULL )
2899 else if( value !=
NULL )
2904 if( strncmp(str,
"+inf", 4) == 0 )
2908 else if( strncmp(str,
"-inf", 4) == 0 )
2944 || ( strncmp(type,
"original", 8) != 0 && strncmp(type,
"global", 6) != 0 && strncmp(type,
"local", 5) != 0 && strncmp(type,
"lazy", 4) != 0 ) )
2964 if( **endptr ==
',' )
3011 if( strncmp(token,
"binary", 3) == 0 )
3013 else if( strncmp(token,
"integer", 3) == 0 )
3015 else if( strncmp(token,
"implicit", 3) == 0 )
3020 else if( strncmp(token,
"continuous", 3) == 0 )
3049 if( *endptr ==
NULL )
3054 assert(strncmp(token,
"global", 6) == 0 || strncmp(token,
"original", 8) == 0);
3060 for(
i = 0;
i < 2 && *endptr !=
NULL && **endptr !=
'\0'; ++
i )
3069 if( strncmp(token,
"local", 5) == 0 )
3085 if( lbexact !=
NULL )
3091 if( ubexact !=
NULL )
3099 else if( strncmp(token,
"lazy", 4) == 0 )
3106 if( *endptr ==
NULL )
3113 if( lazylb !=
NULL )
3116 if( lazyub !=
NULL )
3119 if( lazylbexact !=
NULL )
3122 if( lazyubexact !=
NULL )
3129 if( lb !=
NULL && *lb < 0.0 )
3131 SCIPerrorMessage(
"Parsed invalid lower bound for binary variable <%s>: %f.\n", name, *lb);
3135 if( ub !=
NULL && *ub > 1.0 )
3137 SCIPerrorMessage(
"Parsed invalid upper bound for binary variable <%s>: %f.\n", name, *ub);
3143 SCIPerrorMessage(
"Parsed invalid exact lower bound for binary variable <%s>: %f.\n",
3150 SCIPerrorMessage(
"Parsed invalid exact upper bound for binary variable <%s>: %f.\n",
3157 if( lazylb !=
NULL && *lazylb < 0.0 )
3159 SCIPerrorMessage(
"Parsed invalid lazy lower bound for binary variable <%s>: %f.\n", name, *lazylb);
3163 if( lazyub !=
NULL && *lazyub > 1.0 )
3165 SCIPerrorMessage(
"Parsed invalid lazy upper bound for binary variable <%s>: %f.\n", name, *lazyub);
3171 SCIPerrorMessage(
"Parsed invalid exact lazy lower bound for binary variable <%s>: %f.\n",
3178 SCIPerrorMessage(
"Parsed invalid exact lazy upper bound for binary variable <%s>: %f.\n",
3186 if( *endptr !=
NULL )
3193 if( *endptr == strptr )
3197 if( strncmp(token,
"implied", 7) == 0 )
3202 if( strncmp(strptr,
"strong", 6) == 0 )
3205 *endptr = strptr + 6;
3207 else if( strncmp(strptr,
"weak", 4) == 0 )
3210 *endptr = strptr + 4;
3212 else if( strncmp(strptr,
"none", 4) == 0 )
3215 *endptr = strptr + 4;
3219 SCIPerrorMessage(
"Expected implied integral type 'none', 'weak', or 'strong', got: '%s'.\n", strptr);
3263 if(
set->exact_enable )
3278 SCIP_CALL(
varParse(
set, messagehdlr, str, name,
NULL,
NULL,
NULL, lb, ub,
obj, &vartype, &impltype,
3284 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, 0.0, 0.0, 0.0, vartype, impltype, initial, removable,
3285 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
3291 (*var)->data.original.origdom.holelist =
NULL;
3292 (*var)->data.original.transvar =
NULL;
3323 SCIP_CALL(
varParse(
set, messagehdlr, str, name, &lb, &ub, &
obj,
NULL,
NULL,
NULL, &vartype, &impltype,
3329 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, lb, ub,
obj, vartype, impltype, initial, removable,
3330 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
3335 (*var)->data.original.origdom.holelist =
NULL;
3336 (*var)->data.original.origdom.lb = (*var)->glbdom.lb;
3337 (*var)->data.original.origdom.ub = (*var)->glbdom.ub;
3338 (*var)->data.original.transvar =
NULL;
3341 (*var)->lazylb = lazylb;
3342 (*var)->lazyub = lazyub;
3385 if(
set->exact_enable )
3400 SCIP_CALL(
varParse(
set, messagehdlr, str, name,
NULL,
NULL,
NULL, lb, ub,
obj, &vartype, &impltype,
3406 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, 0.0, 0.0, 0.0, vartype, impltype, initial, removable,
3407 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
3413 (*var)->data.loose.minaggrcoef = 1.0;
3414 (*var)->data.loose.maxaggrcoef = 1.0;
3449 SCIP_CALL(
varParse(
set, messagehdlr, str, name, &lb, &ub, &
obj,
NULL,
NULL,
NULL, &vartype, &impltype,
3450 &lazylb, &lazyub,
NULL,
NULL,
TRUE, endptr, success) );
3455 SCIP_CALL(
varCreate(
var, blkmem,
set, stat, name, lb, ub,
obj, vartype, impltype, initial, removable,
3456 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
3461 (*var)->data.loose.minaggrcoef = 1.0;
3462 (*var)->data.loose.maxaggrcoef = 1.0;
3463 (*var)->lazylb = lazylb;
3464 (*var)->lazyub = lazyub;
3488 if( num >
var->parentvarssize )
3494 var->parentvarssize = newsize;
3496 assert(num <= var->parentvarssize);
3517 parentvar->
name, (
void*)parentvar,
var->name, (
void*)
var,
var->nparentvars);
3521 var->parentvars[
var->nparentvars] = parentvar;
3545 for(
i = 0;
i < (*var)->nparentvars; ++
i )
3565#ifdef SCIP_DISABLED_CODE
3572 if( v < parentvar->data.multaggr.nvars-1 )
3583 assert((*var)->negatedvar == parentvar);
3585 (*var)->negatedvar =
NULL;
3589 SCIPerrorMessage(
"parent variable is neither ORIGINAL, AGGREGATED nor NEGATED\n");
3613 if( !
set->exact_enable )
3627 if(
var->exactdata->aggregate.scalar !=
NULL )
3633 if(
var->exactdata->multaggr.scalars !=
NULL )
3667 assert((*var)->nuses == 0);
3668 assert((*var)->probindex == -1);
3677 assert((*var)->data.original.transvar ==
NULL);
3678 holelistFree(&(*var)->data.original.origdom.holelist, blkmem);
3679 assert((*var)->data.original.origdom.holelist ==
NULL);
3706 if( (*var)->vardelorig !=
NULL )
3713 if( (*var)->vardeltrans !=
NULL )
3720 if( (*var)->eventfilter !=
NULL )
3772#ifdef DEBUGUSES_VARNAME
3773 if( strcmp(
var->name, DEBUGUSES_VARNAME) == 0
3774#ifdef DEBUGUSES_PROBNAME
3780 printf(
"Captured variable " DEBUGUSES_VARNAME
" in SCIP %p, now %d uses; captured at\n", (
void*)
var->scip,
var->nuses);
3797 assert((*var)->nuses >= 1);
3801 SCIPsetDebugMsg(
set,
"release variable <%s> with nuses=%d\n", (*var)->name, (*var)->nuses);
3804#ifdef DEBUGUSES_VARNAME
3805 if( strcmp((*var)->name, DEBUGUSES_VARNAME) == 0
3806#ifdef DEBUGUSES_PROBNAME
3807 && (((*var)->scip->transprob !=
NULL && strcmp(
SCIPprobGetName((*var)->scip->transprob), DEBUGUSES_PROBNAME) == 0) ||
3808 strcmp(
SCIPprobGetName((*var)->scip->origprob), DEBUGUSES_PROBNAME) == 0)
3812 printf(
"Released variable " DEBUGUSES_VARNAME
" in SCIP %p, now %d uses; released at\n", (
void*)(*var)->scip, (*var)->nuses);
3817 if( (*var)->nuses == 0 )
3853 var->conflictlbcount = 0;
3854 var->conflictubcount = 0;
3929 if( holelist ==
NULL )
3939 while(holelist !=
NULL )
3973 if( (
int)impltype > 2 -
set->write_implintlevel )
3978 if( (
int)impltype > 2 +
set->write_implintlevel )
4159 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
4218 if( addnlocksdown == 0 && addnlocksup == 0 )
4222 SCIPsetDebugMsg(
set,
"add rounding locks %d/%d to variable <%s> (locks=%d/%d, type=%u)\n",
4223 addnlocksdown, addnlocksup,
var->name,
var->nlocksdown[locktype],
var->nlocksup[locktype], locktype);
4242 lockvar->
nlocksdown[locktype] += addnlocksdown;
4243 lockvar->
nlocksup[locktype] += addnlocksup;
4253 lockvar->
nlocksdown[locktype] += addnlocksdown;
4254 lockvar->
nlocksup[locktype] += addnlocksup;
4260 && lockvar->
nlocksup[locktype] <= 1 )
4271 int tmp = addnlocksup;
4273 addnlocksup = addnlocksdown;
4274 addnlocksdown = tmp;
4285 lockvar->
nlocksdown[locktype] += addnlocksdown;
4286 lockvar->
nlocksup[locktype] += addnlocksup;
4308 int tmp = addnlocksup;
4314 addnlocksup = addnlocksdown;
4315 addnlocksdown = tmp;
4343 if(
var->data.original.transvar !=
NULL )
4346 return var->nlocksdown[locktype];
4351 return var->nlocksdown[locktype];
4355 if(
var->data.aggregate.scalar > 0.0 )
4363 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
4365 if(
var->data.multaggr.scalars[
i] > 0.0 )
4401 if(
var->data.original.transvar !=
NULL )
4404 return var->nlocksup[locktype];
4409 return var->nlocksup[locktype];
4413 if(
var->data.aggregate.scalar > 0.0 )
4421 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
4423 if(
var->data.multaggr.scalars[
i] > 0.0 )
4529 origvar->vardelorig, origvar->vartrans, origvar->vardeltrans, origvar->varcopy,
NULL) );
4548 (*transvar)->nlocksup[
i] = origvar->
nlocksup[
i];
4549 assert((*transvar)->nlocksdown[
i] >= 0);
4550 assert((*transvar)->nlocksup[
i] >= 0);
4554 (*transvar)->donotaggr = origvar->
donotaggr;
4558 (*transvar)->lazylb = origvar->
lazylb;
4559 (*transvar)->lazyub = origvar->
lazyub;
4567 if( origvar->vartrans !=
NULL )
4572 (*transvar)->vardata = origvar->
vardata;
4575 SCIPsetDebugMsg(
set,
"transformed variable: <%s>[%p] -> <%s>[%p]\n", origvar->
name, (
void*)origvar, (*transvar)->
name, (
void*)*transvar);
4633 if(
var->probindex != -1 )
4654 if( !
set->exact_enable )
4670 if(
var->probindex != -1 )
4704 if(
var->probindex != -1 )
4714 var->data.loose.minaggrcoef = 1.0;
4715 var->data.loose.maxaggrcoef = 1.0;
4741 assert(0 <= fixeventtype && fixeventtype <= 2);
4748 for(
i =
var->nparentvars -1;
i >= 0; --
i )
4754 switch( fixeventtype )
4758 for(
i =
var->nparentvars - 1;
i >= 0; --
i )
4775 for(
i =
var->nparentvars - 1;
i >= 0; --
i )
4798 for(
i =
var->nparentvars - 1;
i >= 0; --
i )
4853 *infeasible =
FALSE;
4859 SCIPsetDebugMsg(
set,
" -> variable already fixed to %g (fixedval=%g): infeasible=%u\n",
var->locdom.lb, fixedval, *infeasible);
4866 SCIPsetDebugMsg(
set,
" -> fixing infeasible: locdom=[%g,%g], fixedval=%g\n",
var->locdom.lb,
var->locdom.ub, fixedval);
4874 if(
var->data.original.transvar ==
NULL )
4880 lp, branchcand, eventqueue, eventfilter, cliquetable, fixedval, infeasible, fixed) );
4910 var->glbdom.lb = fixedval;
4911 var->glbdom.ub = fixedval;
4914 var->locdom.lb = fixedval;
4915 var->locdom.ub = fixedval;
4931 if(
var->probindex != -1 )
4937 SCIP_CALL(
SCIPvarAddObj(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
4958 childfixedval = (fixedval -
var->data.aggregate.constant) /
var->data.aggregate.scalar;
4959 SCIP_CALL(
SCIPvarFix(
var->data.aggregate.var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
4960 branchcand, eventqueue, eventfilter, cliquetable, childfixedval, infeasible, fixed) );
4974 SCIP_CALL(
SCIPvarFix(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
4975 branchcand, eventqueue, eventfilter, cliquetable,
var->data.negate.constant - fixedval, infeasible, fixed) );
5015 *infeasible =
FALSE;
5018 if( !
set->exact_enable )
5037 SCIPrationalDebugMessage(
" -> variable already fixed to %q (fixedval=%q): infeasible=%u\n",
var->exactdata->locdom.lb, fixedval, *infeasible);
5044 SCIPrationalDebugMessage(
" -> fixing infeasible: locdom=[%q,%q], fixedval=%q\n",
var->exactdata->locdom.lb,
var->exactdata->locdom.ub, fixedval);
5052 if(
var->data.original.transvar ==
NULL )
5058 lp, branchcand, eventqueue, eventfilter, cliquetable, fixedval, infeasible, fixed) );
5102 if(
var->probindex != -1 )
5108 SCIP_CALL(
SCIPvarAddObjExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
5136 SCIP_CALL(
SCIPvarFixExact(
var->data.aggregate.var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
5137 branchcand, eventqueue, eventfilter, cliquetable, childfixedval, infeasible, fixed) );
5153 SCIP_CALL(
SCIPvarFixExact(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
5154 branchcand, eventqueue, eventfilter, cliquetable, fixedval, infeasible, fixed) );
5237 tmpvarssize = *
nvars;
5241 activevarssize =
MAX(10, 2 * (*
nvars));
5249 activeconstant = 0.0;
5252 for( v = 0; v < *
nvars; ++v )
5274 if( tmpscalars[
var->index] == 0.0 )
5277 activevars[nactivevars++] =
var;
5279 tmpvars[ntmpvars++] =
var;
5281 tmpscalars[
var->index] += scalar;
5291 while( ntmpvars >= 1 )
5295 var = tmpvars[ntmpvars];
5300 scalar = tmpscalars[
var->index];
5306 nmultvars =
var->data.multaggr.nvars;
5307 multvars =
var->data.multaggr.vars;
5308 multscalars =
var->data.multaggr.scalars;
5311 tmpscalars[
var->index] = 0.0;
5314 for( v = 0; v < nmultvars; ++v )
5316 multvar = multvars[v];
5317 multscalar = multscalars[v];
5325 if( !activeconstantinf )
5332 if( scalar * multconstant > 0.0 )
5335 activeconstantinf =
TRUE;
5340 activeconstantinf =
TRUE;
5344 activeconstant += scalar * multconstant;
5357 if( multscalar == 0.0 )
5362 if( tmpscalars[multvar->
index] == 0.0 )
5368 if( nactivevars >= activevarssize )
5370 activevarssize *= 2;
5372 assert(nactivevars < activevarssize);
5374 activevars[nactivevars++] = multvar;
5379 if( ntmpvars >= tmpvarssize )
5383 assert(ntmpvars <= tmpvarssize);
5385 tmpvars[ntmpvars++] = multvar;
5390 tmpscalars[multvar->
index] += scalar * multscalar;
5391 assert(scalar * multscalar != 0.0);
5395 if( !activeconstantinf )
5404 if( scalar * multconstant > 0.0 )
5407 activeconstantinf =
TRUE;
5412 activeconstantinf =
TRUE;
5416 activeconstant += scalar * multconstant;
5434 if( varssize >= nactivevars )
5441 if( activeconstantinf )
5442 *constant = activeconstant;
5444 *constant += activeconstant;
5456 for( v = 0; v < nactivevars; ++v )
5458 var = activevars[v];
5473 tmpscalars[
var->index] = 0.0;
5476 *requiredsize = *
nvars;
5481 for( v = 0; v < nactivevars; ++v )
5483 var = activevars[v];
5485 tmpscalars[
var->index] = 0.0;
5487 *requiredsize = nactivevars;
5582 activeconstantinf =
FALSE;
5583 activevarssize = (*nvars) * 2;
5585 tmpvarssize = *
nvars;
5600 for( v = ntmpvars - 1; v >= 0; --v )
5623 noldtmpvars = ntmpvars;
5626 SCIPsortPtrPtr((
void**)tmpvars, (
void**)tmpscalars, SCIPvarComp, noldtmpvars);
5628 for( v = 1; v < noldtmpvars; ++v )
5633 SCIPrationalAdd(tmpscalars[ntmpvars], tmpscalars[ntmpvars], tmpscalars[v]);
5641 tmpvars[ntmpvars] = tmpvars[v];
5647#ifdef SCIP_MORE_DEBUG
5648 for( v = 1; v < ntmpvars; ++v )
5653 while( ntmpvars >= 1 )
5657 var = tmpvars[ntmpvars];
5676 if( nactivevars >= activevarssize )
5678 int newactivevarssize = activevarssize * 2;
5681 activevarssize = newactivevarssize;
5682 assert(nactivevars < activevarssize);
5684 activevars[nactivevars] =
var;
5691 nmultvars =
var->data.multaggr.nvars;
5692 multvars =
var->data.multaggr.vars;
5693 multscalars =
var->exactdata->multaggr.scalars;
5696 if( nmultvars + ntmpvars > tmpvarssize )
5698 ntmpvarsnew = tmpvarssize;
5699 while( nmultvars + ntmpvars > ntmpvarsnew )
5703 assert(nmultvars + ntmpvars <= ntmpvarsnew);
5704 tmpvarssize = ntmpvarsnew;
5707 if( nmultvars > tmpvarssize2 )
5709 ntmpvarsnew = tmpvarssize2;
5710 while( nmultvars > ntmpvarsnew )
5714 assert(nmultvars <= ntmpvarsnew);
5715 tmpvarssize2 = ntmpvarsnew;
5720 for( ; nmultvars >= 0; --nmultvars )
5725 multvar = multvars[nmultvars];
5737 if( !activeconstantinf )
5747 activeconstantinf =
TRUE;
5752 activeconstantinf =
TRUE;
5766 tmpvars2[ntmpvars2] = multvar;
5769 assert(ntmpvars2 <= tmpvarssize2);
5779 SCIPsortPtrPtr((
void**)tmpvars2, (
void**)tmpscalars2, SCIPvarComp, ntmpvars2);
5781 for( v = 1; v < ntmpvars2; ++v )
5794 tmpvars2[pos] = tmpvars2[v];
5798 ntmpvars2 = pos + 1;
5799#ifdef SCIP_MORE_DEBUG
5800 for( v = 1; v < ntmpvars2; ++v )
5804 for( v = 1; v < ntmpvars; ++v )
5811 pos = ntmpvars + ntmpvars2 - 1;
5812 ntmpvars += ntmpvars2;
5814 while( v >= 0 && k >= 0 )
5820 tmpvars[pos] = tmpvars[v];
5826 tmpvars[pos] = tmpvars2[k];
5836 tmpvars[pos] = tmpvars[v];
5844 tmpvars[pos] = tmpvars2[k];
5850#ifdef SCIP_MORE_DEBUG
5851 for( v = 1; v < ntmpvars; ++v )
5857 if( !activeconstantinf )
5869 activeconstantinf =
TRUE;
5874 activeconstantinf =
TRUE;
5896 if( mergemultiples )
5901 SCIPsortPtrPtr((
void**)activevars, (
void**)activescalars, SCIPvarComp, nactivevars);
5904 v = nactivevars - 1;
5913 SCIPrationalAdd(activescalars[v - 1], activescalars[v - 1], activescalars[v]);
5915 activevars[v] = activevars[nactivevars];
5921 activevars[v] = activevars[nactivevars];
5925 activevars[v] = activevars[nactivevars];
5939 for( v = 0; v < nactivevars / 2; ++v )
5941 tmpvar = activevars[v];
5943 activevars[v] = activevars[nactivevars - 1 - v];
5945 activevars[nactivevars - 1 - v] = tmpvar;
5950 *requiredsize = nactivevars;
5952 if( varssize >= *requiredsize )
5956 *
nvars = *requiredsize;
5961 if( activeconstantinf )
5968 for( v = 0; v < *
nvars; ++v )
5970 vars[v] = activevars[v];
6001 int multrequiredsize;
6030 nlocksup[
i] =
var->nlocksup[
i];
6031 nlocksdown[
i] =
var->nlocksdown[
i];
6036 multconstant =
var->data.multaggr.constant;
6037 nmultvars =
var->data.multaggr.nvars;
6038 multvarssize =
var->data.multaggr.varssize;
6040 if( !
set->exact_enable )
6044 if( multrequiredsize > multvarssize )
6048 multvarssize = multrequiredsize;
6051 assert( multrequiredsize <= multvarssize );
6068 var->data.multaggr.constant = multconstant;
6073 &nmultvars, multvarssize,
var->exactdata->multaggr.constant, &multrequiredsize,
TRUE) );
6075 var->data.multaggr.nvars = nmultvars;
6076 var->data.multaggr.varssize = multvarssize;
6079 if( multrequiredsize > multvarssize )
6084 multvarssize = multrequiredsize;
6086 &nmultvars, multvarssize,
var->exactdata->multaggr.constant, &multrequiredsize,
TRUE) );
6088 var->data.multaggr.nvars = nmultvars;
6089 var->data.multaggr.varssize = multvarssize;
6093 assert( multrequiredsize <= multvarssize );
6097 var->data.multaggr.nvars = nmultvars;
6098 var->data.multaggr.varssize = multvarssize;
6160 assert(aggscalar != 0.0);
6162 maxscalar = minscalar =
REALABS(aggscalar);
6165 if(
var->data.loose.minaggrcoef > minscalar )
6166 var->data.loose.minaggrcoef = minscalar;
6167 if(
var->data.loose.maxaggrcoef < maxscalar )
6168 var->data.loose.maxaggrcoef = maxscalar;
6209 *infeasible =
FALSE;
6212 SCIPsetDebugMsg(
set,
"updating bounds of variables in aggregation <%s> == %g*<%s> %+g\n",
var->name, scalar, aggvar->
name, constant);
6219 aggvarbdschanged =
FALSE;
6227 varlb = aggvar->
glbdom.
lb * scalar + constant;
6231 varub = aggvar->
glbdom.
ub * scalar + constant;
6238 varub = aggvar->
glbdom.
lb * scalar + constant;
6242 varlb = aggvar->
glbdom.
ub * scalar + constant;
6244 varlb =
MAX(varlb,
var->glbdom.lb);
6245 varub =
MIN(varub,
var->glbdom.ub);
6259 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6260 eventqueue, eventfilter, cliquetable, varlb, infeasible, fixed) );
6261 if( !(*infeasible) )
6265 SCIP_CALL(
SCIPvarFix(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6266 eventqueue, eventfilter, cliquetable, (varlb-constant)/scalar, infeasible, &aggfixed) );
6267 assert(*fixed == aggfixed);
6292 aggvarlb = (
var->glbdom.lb - constant) / scalar;
6296 aggvarub = (
var->glbdom.ub - constant) / scalar;
6303 aggvarub = (
var->glbdom.lb - constant) / scalar;
6307 aggvarlb = (
var->glbdom.ub - constant) / scalar;
6324 SCIP_CALL(
SCIPvarFix(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6325 eventqueue, eventfilter, cliquetable, aggvarlb, infeasible, fixed) );
6326 if( !(*infeasible) )
6330 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6331 eventqueue, eventfilter, cliquetable, aggvarlb * scalar + constant, infeasible, &varfixed) );
6332 assert(*fixed == varfixed);
6356 while( aggvarbdschanged );
6406 *infeasible =
FALSE;
6416 aggvarbdschanged =
FALSE;
6468 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6469 eventqueue, eventfilter, cliquetable, varlb, infeasible, fixed) );
6471 if( !(*infeasible) )
6478 SCIP_CALL(
SCIPvarFixExact(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6479 eventqueue, eventfilter, cliquetable, varlb, infeasible, &aggfixed) );
6480 assert(*fixed == aggfixed);
6549 SCIP_CALL(
SCIPvarFixExact(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6550 eventqueue, eventfilter, cliquetable, aggvarlb, infeasible, fixed) );
6552 if( !(*infeasible) )
6559 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6560 eventqueue, eventfilter, cliquetable, aggvarlb, infeasible, &varfixed) );
6561 assert(*fixed == varfixed);
6585 while( aggvarbdschanged );
6644 *infeasible =
FALSE;
6645 *aggregated =
FALSE;
6653 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue,
6654 eventfilter, cliquetable, constant, infeasible, aggregated) );
6689 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6690 eventqueue, eventfilter, cliquetable, constant/(1.0-scalar), infeasible, aggregated) );
6696 SCIP_CALL(
varUpdateAggregationBounds(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
6697 branchcand, eventqueue, eventfilter, cliquetable, aggvar, scalar, constant, infeasible, &fixed) );
6698 if( *infeasible || fixed )
6700 *aggregated = fixed;
6716 nlocksdown[
i] =
var->nlocksdown[
i];
6717 nlocksup[
i] =
var->nlocksup[
i];
6719 var->nlocksdown[
i] = 0;
6720 var->nlocksup[
i] = 0;
6733 var->data.negate.constant = 1.0;
6734 var->negatedvar = aggvar;
6749 var->data.aggregate.var = aggvar;
6750 var->data.aggregate.scalar = scalar;
6751 var->data.aggregate.constant = constant;
6781 for(
i = 0;
i < nvbds && !(*infeasible); ++
i )
6783 SCIP_CALL(
SCIPvarAddVlb(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
6784 eventqueue, eventfilter,
vars[
i], coefs[
i], constants[
i],
FALSE, infeasible,
NULL) );
6793 for(
i = 0;
i < nvbds && !(*infeasible); ++
i )
6795 SCIP_CALL(
SCIPvarAddVub(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
6796 eventqueue, eventfilter,
vars[
i], coefs[
i], constants[
i],
FALSE, infeasible,
NULL) );
6809 for(
i = 0;
i < 2; ++
i )
6821 for( j = 0; j < nimpls && !(*infeasible); ++j )
6826 SCIP_CALL(
SCIPvarAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
6827 branchcand, eventqueue, eventfilter, (
SCIP_Bool)
i, implvars[j], impltypes[j], implbounds[j],
FALSE,
6828 infeasible,
NULL) );
6884 if(
var->probindex != -1 )
6893 SCIP_CALL(
SCIPvarAddObj(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
6902 if( *infeasible || *aggregated )
6950 *infeasible =
FALSE;
6951 *aggregated =
FALSE;
6959 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
6960 eventqueue, eventfilter, cliquetable, constant, infeasible, aggregated) );
7000 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
7001 eventqueue, eventfilter, cliquetable, tmpval, infeasible, aggregated) );
7009 SCIP_CALL(
varUpdateAggregationBoundsExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
7010 branchcand, eventqueue, eventfilter, cliquetable, aggvar, scalar, constant, infeasible, &fixed) );
7011 if( *infeasible || fixed )
7013 *aggregated = fixed;
7036 nlocksdown[
i] =
var->nlocksdown[
i];
7037 nlocksup[
i] =
var->nlocksup[
i];
7039 var->nlocksdown[
i] = 0;
7040 var->nlocksup[
i] = 0;
7051 var->data.negate.constant = 1.0;
7052 var->negatedvar = aggvar;
7070 var->data.aggregate.var = aggvar;
7155 if(
var->probindex != -1 )
7164 SCIP_CALL(
SCIPvarAddObjExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
7227#define MAXDNOM 1000000LL
7252 *infeasible =
FALSE;
7253 *aggregated =
FALSE;
7273 a = (scm/scalarxd)*scalarxn;
7274 b = (scm/scalaryd)*scalaryn;
7306 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7307 branchcand, eventqueue, eventfilter, vary, (
SCIP_Real)(-
b/
a), (
SCIP_Real)(
c/
a), infeasible, aggregated) );
7315 SCIP_CALL(
SCIPvarAggregate(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7316 branchcand, eventqueue, eventfilter, varx, (
SCIP_Real)(-
a/
b), (
SCIP_Real)(
c/
b), infeasible, aggregated) );
7347 currentclass =
c %
a;
7348 if( currentclass < 0 )
7350 assert(0 <= currentclass && currentclass <
a);
7352 classstep = (-
b) %
a;
7356 assert(0 <= classstep && classstep <
a);
7358 while( currentclass != 0 )
7360 assert(0 <= currentclass && currentclass <
a);
7361 currentclass += classstep;
7362 if( currentclass >=
a )
7369 xsol = (
c -
b*ysol)/
a;
7381 impltype =
MIN(impltypex, impltypey);
7397 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7398 branchcand, eventqueue, eventfilter, aggvar, (
SCIP_Real)(-
b), (
SCIP_Real)xsol, infeasible, aggregated) );
7399 assert(*aggregated || *infeasible);
7401 if( !(*infeasible) )
7403 SCIP_CALL(
SCIPvarAggregate(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7404 branchcand, eventqueue, eventfilter, aggvar, (
SCIP_Real)
a, (
SCIP_Real)ysol, infeasible, aggregated) );
7405 assert(*aggregated || *infeasible);
7494 *infeasible =
FALSE;
7495 *aggregated =
FALSE;
7507 a = (scm/scalarxd)*scalarxn;
7508 b = (scm/scalaryd)*scalaryn;
7548 SCIP_CALL(
SCIPvarAggregateExact(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7549 branchcand, eventqueue, eventfilter, vary, tmprat1, tmprat2, infeasible, aggregated) );
7559 SCIP_CALL(
SCIPvarAggregateExact(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7560 branchcand, eventqueue, eventfilter, varx, tmprat1, tmprat2, infeasible, aggregated) );
7591 currentclass =
c %
a;
7592 if( currentclass < 0 )
7594 assert(0 <= currentclass && currentclass <
a);
7596 classstep = (-
b) %
a;
7600 assert(0 <= classstep && classstep <
a);
7602 while( currentclass != 0 )
7604 assert(0 <= currentclass && currentclass <
a);
7605 currentclass += classstep;
7606 if( currentclass >=
a )
7613 xsol = (
c -
b*ysol)/
a;
7625 impltype =
MIN(impltypex, impltypey);
7650 SCIP_CALL(
SCIPvarAggregateExact(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7651 branchcand, eventqueue, eventfilter, aggvar, tmprat1, tmprat2, infeasible, aggregated) );
7652 assert(*aggregated || *infeasible);
7654 if( !(*infeasible) )
7659 SCIP_CALL(
SCIPvarAggregateExact(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7660 branchcand, eventqueue, eventfilter, aggvar, tmprat1, tmprat2, infeasible, aggregated) );
7661 assert(*aggregated || *infeasible);
7739 *infeasible =
FALSE;
7740 *aggregated =
FALSE;
7747 if( typex < typey ||
7774 scalar = -scalary / scalarx;
7775 constant = rhs / scalarx;
7800 constant = rhs / scalary;
7835 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7836 branchcand, eventqueue, eventfilter, vary, scalar, constant, infeasible, aggregated) );
7843 SCIP_CALL(
tryAggregateIntVars(
set, blkmem, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7844 branchcand, eventqueue, eventfilter, varx, vary, scalarx, scalary, rhs, infeasible, aggregated) );
7916 *infeasible =
FALSE;
7917 *aggregated =
FALSE;
7921 maxscalar =
MAX(maxscalar, 1.0);
7923 if( absquot > maxscalar || absquot < 1 / maxscalar )
7937 if( typex < typey ||
8035 SCIP_CALL(
SCIPvarAggregateExact(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
8036 branchcand, eventqueue, eventfilter, vary, quotyx, constant, infeasible, aggregated) );
8045 SCIP_CALL(
tryAggregateIntVarsExact(
set, blkmem, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
8046 branchcand, eventqueue, eventfilter, varx, vary, scalarx, scalary, rhs, infeasible, aggregated) );
8092 int tmprequiredsize;
8105 SCIPsetDebugMsg(
set,
"trying multi-aggregating variable <%s> == ...%d vars... %+g\n",
var->name, naggvars, constant);
8107 *infeasible =
FALSE;
8108 *aggregated =
FALSE;
8113 if(
var->data.original.transvar ==
NULL )
8115 SCIPerrorMessage(
"cannot multi-aggregate an untransformed original variable\n");
8119 reopt, lp, cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars, constant, infeasible, aggregated) );
8126 ntmpvars = naggvars;
8127 tmpvarssize = naggvars;
8128 tmpconstant = constant;
8134 if( tmprequiredsize > tmpvarssize )
8138 tmpvarssize = tmprequiredsize;
8140 assert( tmprequiredsize <= tmpvarssize );
8148 for( v = ntmpvars - 1; v >= 0; --v )
8153 if( tmpvars[v]->index ==
var->index )
8155 tmpscalar += tmpscalars[v];
8156 tmpvars[v] = tmpvars[ntmpvars - 1];
8157 tmpscalars[v] = tmpscalars[ntmpvars - 1];
8169 SCIPsetDebugMsg(
set,
"Possible multi-aggregation was completely resolved and detected to be redundant.\n");
8174 SCIPsetDebugMsg(
set,
"Multi-aggregation was completely resolved and led to infeasibility.\n");
8179 else if( ntmpvars == 1 )
8181 assert(tmpscalars[0] != 0.0);
8185 SCIP_CALL(
SCIPvarFix(tmpvars[0], blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
8186 branchcand, eventqueue, eventfilter, cliquetable, -constant/tmpscalars[0], infeasible, aggregated) );
8189 else if( ntmpvars == 2 )
8192 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %g and %g and constant %g.\n",
8196 cliquetable, branchcand, eventqueue, eventfilter, tmpvars[0], tmpvars[1], tmpscalars[0],
8197 tmpscalars[1], -tmpconstant, infeasible, aggregated) );
8208 else if( tmpscalar != 0.0 )
8210 tmpscalar = 1 - tmpscalar;
8211 tmpconstant /= tmpscalar;
8212 for( v = 0; v < ntmpvars; ++v )
8213 tmpscalars[v] /= tmpscalar;
8220 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
8221 eventqueue, eventfilter, cliquetable, tmpconstant, infeasible, aggregated) );
8228 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %g and %g and constant %g.\n",
8232 cliquetable, branchcand, eventqueue, eventfilter,
var, tmpvars[0], 1.0, -tmpscalars[0], tmpconstant,
8233 infeasible, aggregated) );
8251 for( v = 0; v < ntmpvars; ++v )
8278 nlocksdown[
i] =
var->nlocksdown[
i];
8279 nlocksup[
i] =
var->nlocksup[
i];
8281 var->nlocksdown[
i] = 0;
8282 var->nlocksup[
i] = 0;
8286 for( v = 0; v < ntmpvars; ++v )
8293 var->data.multaggr.constant = tmpconstant;
8294 var->data.multaggr.nvars = ntmpvars;
8295 var->data.multaggr.varssize = ntmpvars;
8309 branchfactor =
var->branchfactor;
8310 branchpriority =
var->branchpriority;
8313 for( v = 0; v < ntmpvars; ++v )
8317 branchfactor =
MAX(tmpvars[v]->branchfactor, branchfactor);
8318 branchpriority =
MAX(tmpvars[v]->branchpriority, branchpriority);
8323 for( v = 0; v < ntmpvars; ++v )
8329 if( tmpscalars[v] >= 0.0 )
8342 if(
var->probindex != -1 )
8354 SCIP_CALL(
SCIPvarAddObj(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
8377 SCIPerrorMessage(
"cannot multi-aggregate a multiple aggregated variable again\n");
8390 for( v = 0; v < naggvars; ++v )
8394 SCIP_CALL(
SCIPvarMultiaggregate(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
8395 cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars,
8396 var->data.negate.constant - constant, infeasible, aggregated) );
8399 for( v = 0; v < naggvars; ++v )
8409 if( *infeasible || *aggregated )
8453 int tmprequiredsize;
8468 *infeasible =
FALSE;
8469 *aggregated =
FALSE;
8479 if(
var->data.original.transvar ==
NULL )
8481 SCIPerrorMessage(
"cannot multi-aggregate an untransformed original variable\n");
8485 reopt, lpexact, cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars, constant, infeasible, aggregated) );
8492 ntmpvars = naggvars;
8493 tmpvarssize = naggvars;
8500 if( tmprequiredsize > tmpvarssize )
8504 tmpvarssize = tmprequiredsize;
8506 assert( tmprequiredsize <= tmpvarssize );
8514 for( v = ntmpvars - 1; v >= 0; --v )
8519 if( tmpvars[v]->index ==
var->index )
8522 tmpvars[v] = tmpvars[ntmpvars - 1];
8535 SCIPsetDebugMsg(
set,
"Possible multi-aggregation was completely resolved and detected to be redundant.\n");
8540 SCIPsetDebugMsg(
set,
"Multi-aggregation was completely resolved and led to infeasibility.\n");
8545 else if( ntmpvars == 1 )
8554 SCIP_CALL(
SCIPvarFixExact(tmpvars[0], blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp,
8555 branchcand, eventqueue, eventfilter, cliquetable, tmpval, infeasible, aggregated) );
8558 else if( ntmpvars == 2 )
8563 SCIPrationalDebugMessage(
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %q and %q and constant %q.\n",
8567 cliquetable, branchcand, eventqueue, eventfilter, tmpvars[0], tmpvars[1], tmpscalars[0],
8568 tmpscalars[1], tmpconstant, infeasible, aggregated) );
8584 for( v = ntmpvars - 1; v >= 0; --v )
8592 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp, branchcand,
8593 eventqueue, eventfilter, cliquetable, tmpconstant, infeasible, aggregated) );
8602 SCIPrationalDebugMessage(
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %f and %q and constant %q.\n",
8606 cliquetable, branchcand, eventqueue, eventfilter,
var, tmpvars[0], tmpval, tmpscalars[0], tmpconstant,
8607 infeasible, aggregated) );
8650 nlocksdown[
i] =
var->nlocksdown[
i];
8651 nlocksup[
i] =
var->nlocksup[
i];
8653 var->nlocksdown[
i] = 0;
8654 var->nlocksup[
i] = 0;
8663 for(
i = 0;
i < ntmpvars; ++
i )
8667 var->data.multaggr.nvars = ntmpvars;
8668 var->data.multaggr.varssize = ntmpvars;
8682 branchfactor =
var->branchfactor;
8683 branchpriority =
var->branchpriority;
8686 for( v = 0; v < ntmpvars; ++v )
8690 branchfactor =
MAX(tmpvars[v]->branchfactor, branchfactor);
8691 branchpriority =
MAX(tmpvars[v]->branchpriority, branchpriority);
8696 for( v = 0; v < ntmpvars; ++v )
8715 if(
var->probindex != -1 )
8727 SCIP_CALL(
SCIPvarAddObjExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp, eventqueue, eventfilter,
obj) );
8749 SCIPerrorMessage(
"cannot multi-aggregate a multiple aggregated variable again\n");
8762 for( v = 0; v < naggvars; ++v )
8768 SCIP_CALL(
SCIPvarMultiaggregateExact(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact,
8769 cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars,
8770 tmpval, infeasible, aggregated) );
8773 for( v = 0; v < naggvars; ++v )
9015 (*negvar)->data.negate.constant = 1.0;
9017 (*negvar)->data.negate.constant =
var->glbdom.lb +
var->glbdom.ub;
9026 (*negvar)->glbdom.lb = (*negvar)->data.negate.constant -
var->glbdom.ub;
9027 (*negvar)->glbdom.ub = (*negvar)->data.negate.constant -
var->glbdom.lb;
9028 (*negvar)->locdom.lb = (*negvar)->data.negate.constant -
var->locdom.ub;
9029 (*negvar)->locdom.ub = (*negvar)->data.negate.constant -
var->locdom.lb;
9035 var->negatedvar = *negvar;
9043 (*negvar)->branchfactor =
var->branchfactor;
9044 (*negvar)->branchpriority =
var->branchpriority;
9048 (*negvar)->donotaggr =
var->donotaggr;
9049 (*negvar)->donotmultaggr =
var->donotmultaggr;
9052 (*negvar)->lazylb = (*negvar)->data.negate.constant -
var->lazyub;
9053 (*negvar)->lazyub = (*negvar)->data.negate.constant -
var->lazylb;
9057 assert((*negvar)->nuses == 1);
9062 *negvar =
var->negatedvar;
9079 var->probindex = probindex;
9083 var->data.col->var_probindex = probindex;
9111 var->name = (
char*)name;
9146 else if( !keepimplics )
9192 SCIPerrorMessage(
"cannot mark a multi-aggregated variable to not be aggregated.\n");
9228 SCIPerrorMessage(
"cannot mark a multi-aggregated variable to not be multi-aggregated.\n");
9260 if(
var->probindex >= 0 )
9262 SCIPerrorMessage(
"cannot change type of variable already in the problem\n");
9276 var->vartype = vartype;
9289 var->negatedvar->vartype = vartype;
9319 if(
var->probindex >= 0 )
9321 SCIPerrorMessage(
"cannot change type of variable already in the problem\n");
9326 var->varimpltype = impltype;
9336 var->negatedvar->varimpltype = impltype;
9444 if(
var->data.original.transvar !=
NULL )
9482 SCIPerrorMessage(
"cannot change objective value of a fixed, aggregated, multi-aggregated, or negated variable\n");
9513 if( !
set->exact_enable )
9530 if(
var->data.original.transvar !=
NULL )
9544 var->obj = newobjreal;
9545 var->unchangedobj = newobjreal;
9553 var->obj = newobjreal;
9557 var->unchangedobj = newobjreal;
9574 SCIPerrorMessage(
"cannot change objective value of a fixed, aggregated, multi-aggregated, or negated variable\n");
9621 if(
var->data.original.transvar !=
NULL )
9630 var->unchangedobj += addobj;
9643 var->unchangedobj += addobj;
9660 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9667 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9669 lp, eventqueue, eventfilter,
var->data.aggregate.scalar * addobj) );
9676 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9677 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
9680 reopt, lp, eventqueue, eventfilter,
var->data.multaggr.scalars[
i] * addobj) );
9690 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9691 SCIP_CALL(
SCIPvarAddObj(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
9692 eventqueue, eventfilter, -addobj) );
9743 if(
var->data.original.transvar !=
NULL )
9747 reopt, lp, eventqueue, eventfilter, tmpobj) );
9755 var->unchangedobj =
var->obj;
9762 oldobjreal =
var->obj;
9770 var->unchangedobj =
var->obj;
9787 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9794 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9799 lp, eventqueue, eventfilter, tmpobj) );
9809 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9811 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
9815 reopt, lp, eventqueue, eventfilter, multaggrobj) );
9828 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9831 SCIP_CALL(
SCIPvarAddObjExact(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
9832 eventqueue, eventfilter, tmpobj) );
9891 SCIPerrorMessage(
"cannot change diving objective value of a multi-aggregated variable\n");
10056 var->name,
var->data.original.origdom.lb, newbound);
10062 var->data.original.origdom.lb = newbound;
10071 for(
i = 0;
i <
var->nparentvars; ++
i )
10075 parentvar =
var->parentvars[
i];
10117 var->name,
var->exactdata->origdom.lb, newbound);
10140 for(
i = 0;
i <
var->nparentvars; ++
i )
10144 parentvar =
var->parentvars[
i];
10189 var->name,
var->data.original.origdom.ub, newbound);
10195 var->data.original.origdom.ub = newbound;
10204 for(
i = 0;
i <
var->nparentvars; ++
i )
10208 parentvar =
var->parentvars[
i];
10249 var->name,
var->exactdata->origdom.ub, newbound);
10272 for(
i = 0;
i <
var->nparentvars; ++
i )
10276 parentvar =
var->parentvars[
i];
10309 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || (newbound != oldbound && newbound * oldbound <= 0.0));
10322 SCIPsetDebugMsg(
set,
"issue GLBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
10386 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || (newbound != oldbound && newbound * oldbound <= 0.0));
10399 SCIPsetDebugMsg(
set,
"issue GUBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
10470 SCIPsetDebugMsg(
set,
"issue GHOLEADDED event for variable <%s>: (%.15g,%.15g)\n",
var->name, left, right);
10555 newbound =
var->glbdom.ub;
10561 SCIPsetDebugMsg(
set,
"process changing global lower bound of <%s> from %f to %f\n",
var->name,
var->glbdom.lb, newbound);
10563 if(
SCIPsetIsEQ(
set, newbound,
var->glbdom.lb) && !(newbound !=
var->glbdom.lb && newbound *
var->glbdom.lb <= 0.0) )
10570 oldbound =
var->glbdom.lb;
10572 var->glbdom.lb = newbound;
10590 for(
i = 0;
i <
var->nlbchginfos; ++
i )
10594 if(
var->lbchginfos[
i].oldbound <
var->glbdom.lb )
10596 SCIPsetDebugMsg(
set,
" -> adjust lower bound change <%s>: %g -> %g due to new global lower bound %g\n",
10598 var->lbchginfos[
i].oldbound =
var->glbdom.lb;
10602 var->lbchginfos[
i].newbound =
var->glbdom.lb;
10604 var->lbchginfos[
i].redundant =
TRUE;
10628 for(
i = 0;
i <
var->nparentvars; ++
i )
10630 parentvar =
var->parentvars[
i];
10643 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
10662 parentnewbound = newbound;
10676 parentnewbound = -newbound;
10734 newbound =
var->glbdom.lb;
10740 SCIPsetDebugMsg(
set,
"process changing global upper bound of <%s> from %f to %f\n",
var->name,
var->glbdom.ub, newbound);
10742 if(
SCIPsetIsEQ(
set, newbound,
var->glbdom.ub) && !(newbound !=
var->glbdom.ub && newbound *
var->glbdom.ub <= 0.0) )
10749 oldbound =
var->glbdom.ub;
10751 var->glbdom.ub = newbound;
10770 for(
i = 0;
i <
var->nubchginfos; ++
i )
10773 if(
var->ubchginfos[
i].oldbound >
var->glbdom.ub )
10775 SCIPsetDebugMsg(
set,
" -> adjust upper bound change <%s>: %g -> %g due to new global upper bound %g\n",
10777 var->ubchginfos[
i].oldbound =
var->glbdom.ub;
10781 var->ubchginfos[
i].newbound =
var->glbdom.ub;
10783 var->ubchginfos[
i].redundant =
TRUE;
10807 for(
i = 0;
i <
var->nparentvars; ++
i )
10809 parentvar =
var->parentvars[
i];
10822 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
10840 parentnewbound = newbound;
10853 parentnewbound = -newbound;
10956 if(
var->eventfilter !=
NULL )
10962 for(
i = 0;
i <
var->nparentvars; ++
i )
10964 parentvar =
var->parentvars[
i];
10977 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
11104 for(
i = 0;
i <
var->nparentvars; ++
i )
11106 parentvar =
var->parentvars[
i];
11119 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
11213 newbound =
MIN(newbound,
var->glbdom.ub);
11224 if(
SCIPsetIsEQ(
set,
var->glbdom.lb, newbound) && !(newbound !=
var->glbdom.lb && newbound *
var->glbdom.lb <= 0.0) )
11231 if(
var->data.original.transvar !=
NULL )
11234 cliquetable, newbound) );
11270 if(
var->data.aggregate.scalar > 0 )
11275 var->data.aggregate.var->glbdom.lb *
var->data.aggregate.scalar +
var->data.aggregate.constant));
11277 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
11279 childnewbound = newbound;
11288 var->data.aggregate.var->glbdom.ub *
var->data.aggregate.scalar +
var->data.aggregate.constant));
11290 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
11292 childnewbound = -newbound;
11300 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11308 var->data.negate.constant - newbound) );
11373 if(
var->data.original.transvar !=
NULL )
11449 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11510 newbound =
MAX(newbound,
var->glbdom.lb);
11521 if(
SCIPsetIsEQ(
set,
var->glbdom.ub, newbound) && !(newbound !=
var->glbdom.ub && newbound *
var->glbdom.ub <= 0.0) )
11528 if(
var->data.original.transvar !=
NULL )
11567 if(
var->data.aggregate.scalar > 0 )
11572 var->data.aggregate.var->glbdom.ub *
var->data.aggregate.scalar +
var->data.aggregate.constant));
11574 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
11576 childnewbound = newbound;
11585 var->data.aggregate.var->glbdom.lb *
var->data.aggregate.scalar +
var->data.aggregate.constant));
11587 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
11589 childnewbound = -newbound;
11597 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11605 var->data.negate.constant - newbound) );
11670 if(
var->data.original.transvar !=
NULL )
11747 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11789 var->lazylb = lazylb;
11812 var->lazyub = lazyub;
11834 switch( boundtype )
11863 switch( boundtype )
11891 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || newbound ==
var->glbdom.lb || (newbound != oldbound && newbound * oldbound <= 0.0));
11904 SCIPsetDebugMsg(
set,
"issue LBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
11967 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || newbound ==
var->glbdom.ub || (newbound != oldbound && newbound * oldbound <= 0.0));
11980 SCIPsetDebugMsg(
set,
"issue UBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
12076 newbound =
MIN(newbound,
var->locdom.ub);
12079 newbound =
MAX(newbound,
var->glbdom.lb);
12083 SCIPsetDebugMsg(
set,
"process changing lower bound of <%s> from %g to %g\n",
var->name,
var->locdom.lb, newbound);
12086 newbound =
var->glbdom.lb;
12087 else if(
SCIPsetIsEQ(
set, newbound,
var->locdom.lb) && !(newbound !=
var->locdom.lb && newbound *
var->locdom.lb <= 0.0) )
12091 oldbound =
var->locdom.lb;
12093 var->locdom.lb = newbound;
12095 if(
set->exact_enable )
12124 for(
i = 0;
i <
var->nparentvars; ++
i )
12126 parentvar =
var->parentvars[
i];
12139 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12148 if (!
set->exact_enable)
12174 if( parentnewbound > parentvar->
glbdom.
ub )
12178 parentnewbound = parentvar->
glbdom.
ub;
12182 parentnewbound = newbound;
12199 if( parentnewbound < parentvar->glbdom.lb )
12203 parentnewbound = parentvar->
glbdom.
lb;
12207 parentnewbound = -newbound;
12263 newbound =
MAX(newbound,
var->locdom.lb);
12266 newbound =
MIN(newbound,
var->glbdom.ub);
12270 SCIPsetDebugMsg(
set,
"process changing upper bound of <%s> from %g to %g\n",
var->name,
var->locdom.ub, newbound);
12273 newbound =
var->glbdom.ub;
12274 else if(
SCIPsetIsEQ(
set, newbound,
var->locdom.ub) && !(newbound !=
var->locdom.ub && newbound *
var->locdom.ub <= 0.0) )
12278 oldbound =
var->locdom.ub;
12280 var->locdom.ub = newbound;
12282 if(
set->exact_enable )
12311 for(
i = 0;
i <
var->nparentvars; ++
i )
12313 parentvar =
var->parentvars[
i];
12326 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12335 if( !
set->exact_enable )
12359 if( parentnewbound < parentvar->glbdom.lb )
12363 parentnewbound = parentvar->
glbdom.
lb;
12367 parentnewbound = newbound;
12383 if( parentnewbound > parentvar->
glbdom.
ub )
12387 parentnewbound = parentvar->
glbdom.
ub;
12391 parentnewbound = -newbound;
12498 for(
i = 0;
i <
var->nparentvars; ++
i )
12500 parentvar =
var->parentvars[
i];
12513 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12640 for(
i = 0;
i <
var->nparentvars; ++
i )
12642 parentvar =
var->parentvars[
i];
12655 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12746 newbound =
MIN(newbound,
var->locdom.ub);
12753 && !(newbound !=
var->locdom.lb && newbound *
var->locdom.lb <= 0.0) )
12763 if(
var->data.original.transvar !=
NULL )
12794 var->data.aggregate.var->locdom.lb *
var->data.aggregate.scalar +
var->data.aggregate.constant));
12796 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
12798 childnewbound = newbound;
12807 var->data.aggregate.var->locdom.ub *
var->data.aggregate.scalar +
var->data.aggregate.constant));
12809 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
12811 childnewbound = -newbound;
12824 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
12832 var->data.negate.constant - newbound) );
12889 if(
var->data.original.transvar !=
NULL )
12960 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13014 newbound =
MAX(newbound,
var->locdom.lb);
13021 && !(newbound !=
var->locdom.ub && newbound *
var->locdom.ub <= 0.0) )
13031 if(
var->data.original.transvar !=
NULL )
13061 var->data.aggregate.var->locdom.ub *
var->data.aggregate.scalar +
var->data.aggregate.constant));
13063 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13065 childnewbound = newbound;
13074 var->data.aggregate.var->locdom.lb *
var->data.aggregate.scalar +
var->data.aggregate.constant));
13076 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13078 childnewbound = -newbound;
13091 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13099 var->data.negate.constant - newbound) );
13156 if(
var->data.original.transvar !=
NULL )
13226 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13263 switch( boundtype )
13308 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13323 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13325 childnewbound = newbound;
13334 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13336 childnewbound = -newbound;
13347 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13395 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13407 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable\n");
13455 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13470 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13472 childnewbound = newbound;
13481 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13483 childnewbound = -newbound;
13494 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13542 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13554 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13594 lb =
var->data.multaggr.constant;
13595 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13597 aggrvar =
var->data.multaggr.vars[
i];
13598 if(
var->data.multaggr.scalars[
i] > 0.0 )
13607 lb +=
var->data.multaggr.scalars[
i] * bnd;
13618 lb +=
var->data.multaggr.scalars[
i] * bnd;
13663 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13665 aggrvar =
var->data.multaggr.vars[
i];
13706 if( posinf && !neginf )
13742 ub =
var->data.multaggr.constant;
13743 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13745 aggrvar =
var->data.multaggr.vars[
i];
13746 if(
var->data.multaggr.scalars[
i] > 0.0 )
13755 ub +=
var->data.multaggr.scalars[
i] * bnd;
13766 ub +=
var->data.multaggr.scalars[
i] * bnd;
13811 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13813 aggrvar =
var->data.multaggr.vars[
i];
13854 if( !posinf && neginf )
13890 lb =
var->data.multaggr.constant;
13891 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13893 aggrvar =
var->data.multaggr.vars[
i];
13894 if(
var->data.multaggr.scalars[
i] > 0.0 )
13903 lb +=
var->data.multaggr.scalars[
i] * bnd;
13914 lb +=
var->data.multaggr.scalars[
i] * bnd;
13956 ub =
var->data.multaggr.constant;
13957 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13959 aggrvar =
var->data.multaggr.vars[
i];
13960 if(
var->data.multaggr.scalars[
i] > 0.0 )
13969 ub +=
var->data.multaggr.scalars[
i] * bnd;
13980 ub +=
var->data.multaggr.scalars[
i] * bnd;
14091 newlb =
var->glbdom.lb;
14092 newub =
var->glbdom.ub;
14103 if(
var->eventfilter !=
NULL )
14109 for(
i = 0;
i <
var->nparentvars; ++
i )
14115 parentvar =
var->parentvars[
i];
14121 parentnewleft = left;
14122 parentnewright = right;
14129 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
14171 parentnewleft, parentnewright, &localadded) );
14215 if(
var->data.original.transvar !=
NULL )
14218 left, right, added) );
14255 childnewleft = (left -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14256 childnewright = (right -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14260 childnewright = (left -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14261 childnewleft = (right -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14269 childnewleft, childnewright, added) );
14281 childnewright = -left +
var->data.negate.constant;
14282 childnewleft = -right +
var->data.negate.constant;
14285 childnewleft, childnewright, added) );
14337 newlb =
var->locdom.lb;
14338 newub =
var->locdom.ub;
14347#ifdef SCIP_DISABLED_CODE
14356 for(
i = 0;
i <
var->nparentvars; ++
i )
14362 parentvar =
var->parentvars[
i];
14368 parentnewleft = left;
14369 parentnewright = right;
14376 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
14418 parentnewleft, parentnewright, &localadded) );
14465 if(
var->data.original.transvar !=
NULL )
14468 left, right, added) );
14494 childnewleft = (left -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14495 childnewright = (right -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14499 childnewright = (left -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14500 childnewleft = (right -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14508 childnewleft, childnewright, added) );
14512 SCIPerrorMessage(
"cannot add domain hole to a multi-aggregated variable.\n");
14520 childnewright = -left +
var->data.negate.constant;
14521 childnewleft = -right +
var->data.negate.constant;
14681 var->closestvblpcount = -1;
14750 *infeasible =
FALSE;
14759 *infeasible =
TRUE;
14773 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, implvar, implbound,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
14780 if( nbdchgs !=
NULL )
14789 *infeasible =
TRUE;
14803 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, implvar, implbound,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
14810 if( nbdchgs !=
NULL )
14863 *infeasible =
FALSE;
14867 checkImplic(
set, implvar, impltype, implbound, &redundant, &conflict);
14868 assert(!redundant || !conflict);
14872 if(
var == implvar )
14897 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
14898 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
14920 vals[0] = varfixing;
14924 SCIP_CALL(
SCIPcliquetableAdd(cliquetable, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
14925 eventqueue, eventfilter,
vars, vals, 2,
FALSE, &conflict, nbdchgs) );
14937 isshortcut, &conflict, added) );
14940 assert(!conflict || !(*added));
14959 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 0.0,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
14964 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 1.0,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
14978 if( nbdchgs !=
NULL )
15016 varfixing ? implbound - ub : ub - implbound, varfixing ? ub : implbound) );
15024 varfixing ? implbound - lb : lb - implbound, varfixing ? lb : implbound) );
15061 *infeasible =
FALSE;
15078 while (
i >= 0 && !(*infeasible) )
15082 assert(implvars[
i] != implvar);
15089 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
15090 eventqueue, eventfilter, varfixing, implvars[
i], impltypes[
i], implbounds[
i],
TRUE, infeasible, nbdchgs, &added) );
15093 i =
MIN(
i, nimpls);
15141 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
15142 eventqueue, eventfilter, varfixing, implvar, impltype, implbound,
FALSE, infeasible, nbdchgs, &added) );
15144 if( *infeasible ||
var == implvar || !transitive || !added )
15158 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, implvarfixing, infeasible, nbdchgs) );
15161 if( !(*infeasible) )
15164 cliquetable, branchcand, eventqueue, eventfilter, !implvarfixing,
var, !varfixing, infeasible, nbdchgs) );
15190 while (
i >= 0 && !(*infeasible) )
15192 assert(vlbvars[
i] != implvar);
15217 vbimplbound = (implbound - vlbconstants[
i])/vlbcoefs[
i];
15218 if( vlbcoefs[
i] >= 0.0 )
15221 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15223 infeasible, nbdchgs, &added) );
15228 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15230 infeasible, nbdchgs, &added) );
15233 i =
MIN(
i, nvlbvars);
15260 while (
i >= 0 && !(*infeasible) )
15262 assert(vubvars[
i] != implvar);
15287 vbimplbound = (implbound - vubconstants[
i])/vubcoefs[
i];
15288 if( vubcoefs[
i] >= 0.0 )
15291 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15293 infeasible, nbdchgs, &added) );
15298 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15300 infeasible, nbdchgs, &added) );
15303 i =
MIN(
i, nvubvars);
15347 *infeasible =
FALSE;
15348 if( nbdchgs !=
NULL )
15356 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef, vlbconstant, transitive, infeasible, nbdchgs) );
15364 SCIPsetDebugMsg(
set,
" -> transformed to variable lower bound <%s> >= %g<%s> + %g\n",
15368 if(
var == vlbvar )
15374 *infeasible =
TRUE;
15390 *infeasible =
TRUE;
15407 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15414 if( nbdchgs !=
NULL )
15429 *infeasible =
TRUE;
15446 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15453 if( nbdchgs !=
NULL )
15467 *infeasible =
TRUE;
15481 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, vlbconstant,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15488 if( nbdchgs !=
NULL )
15513 if( vlbcoef >= 0.0 )
15523 *infeasible =
TRUE;
15540 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vlbvar, newzub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15548 if( nbdchgs !=
NULL )
15551 maxvlb = vlbcoef * zub + vlbconstant;
15553 minvlb = vlbcoef * zlb + vlbconstant;
15558 maxvlb = vlbcoef * zub + vlbconstant;
15560 minvlb = vlbcoef * zlb + vlbconstant;
15573 *infeasible =
TRUE;
15590 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vlbvar, newzlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15598 if( nbdchgs !=
NULL )
15601 maxvlb = vlbcoef * zlb + vlbconstant;
15603 minvlb = vlbcoef * zub + vlbconstant;
15608 maxvlb = vlbcoef * zlb + vlbconstant;
15610 minvlb = vlbcoef * zub + vlbconstant;
15613 if( maxvlb < minvlb )
15623 *infeasible =
TRUE;
15640 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, minvlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15648 if( nbdchgs !=
NULL )
15662 if( vlbcoef >= 0.0 )
15664 vlbcoef = maxvlb - minvlb;
15665 vlbconstant = minvlb;
15669 vlbcoef = minvlb - maxvlb;
15670 vlbconstant = maxvlb;
15690 cliquetable, branchcand, eventqueue, eventfilter, (vlbcoef >= 0.0),
var,
SCIP_BOUNDTYPE_LOWER, maxvlb, transitive,
15691 infeasible, nbdchgs) );
15700 implbound = -vlbconstant/vlbcoef;
15712 implbound, transitive, infeasible, nbdchgs) );
15732 if(
var->data.aggregate.var == vlbvar &&
SCIPsetIsEQ(
set,
var->data.aggregate.scalar, vlbcoef) )
15735 *infeasible =
TRUE;
15741 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef/
var->data.aggregate.scalar,
15742 (vlbconstant -
var->data.aggregate.constant)/
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
15748 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef/
var->data.aggregate.scalar,
15749 (vlbconstant -
var->data.aggregate.constant)/
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
15767 SCIP_CALL(
SCIPvarAddVub(
var->negatedvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15768 branchcand, eventqueue, eventfilter, vlbvar, -vlbcoef,
var->data.negate.constant - vlbconstant, transitive, infeasible,
15814 *infeasible =
FALSE;
15815 if( nbdchgs !=
NULL )
15823 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef, vubconstant, transitive, infeasible, nbdchgs) );
15831 SCIPsetDebugMsg(
set,
" -> transformed to variable upper bound <%s> <= %g<%s> + %g\n",
15835 if(
var == vubvar )
15841 *infeasible =
TRUE;
15857 *infeasible =
TRUE;
15874 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15881 if( nbdchgs !=
NULL )
15896 *infeasible =
TRUE;
15913 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15920 if( nbdchgs !=
NULL )
15934 *infeasible =
TRUE;
15948 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, vubconstant,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15955 if( nbdchgs !=
NULL )
15980 if( vubcoef >= 0.0 )
15990 *infeasible =
TRUE;
16007 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vubvar, newzlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
16015 if( nbdchgs !=
NULL )
16018 minvub = vubcoef * zlb + vubconstant;
16020 maxvub = vubcoef * zub + vubconstant;
16025 maxvub = vubcoef * zub + vubconstant;
16027 minvub = vubcoef * zlb + vubconstant;
16040 *infeasible =
TRUE;
16057 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vubvar, newzub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16065 if( nbdchgs !=
NULL )
16068 minvub = vubcoef * zub + vubconstant;
16070 maxvub = vubcoef * zlb + vubconstant;
16075 minvub = vubcoef * zub + vubconstant;
16077 maxvub = vubcoef * zlb + vubconstant;
16080 if( minvub > maxvub )
16090 *infeasible =
TRUE;
16107 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, maxvub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16115 if( nbdchgs !=
NULL )
16129 if( vubcoef >= 0.0 )
16131 vubcoef = maxvub - minvub;
16132 vubconstant = minvub;
16136 vubcoef = minvub - maxvub;
16137 vubconstant = maxvub;
16157 cliquetable, branchcand, eventqueue, eventfilter, (vubcoef < 0.0),
var,
SCIP_BOUNDTYPE_UPPER, minvub, transitive,
16158 infeasible, nbdchgs) );
16168 (1.0-vubconstant)/vubcoef, transitive, infeasible, nbdchgs) );
16188 if(
var->data.aggregate.var == vubvar &&
SCIPsetIsEQ(
set,
var->data.aggregate.scalar, vubcoef) )
16191 *infeasible =
TRUE;
16197 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef/
var->data.aggregate.scalar,
16198 (vubconstant -
var->data.aggregate.constant)/
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
16204 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef/
var->data.aggregate.scalar,
16205 (vubconstant -
var->data.aggregate.constant)/
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
16223 SCIP_CALL(
SCIPvarAddVlb(
var->negatedvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16224 branchcand, eventqueue, eventfilter, vubvar, -vubcoef,
var->data.negate.constant - vubconstant, transitive, infeasible,
16271 *infeasible =
FALSE;
16272 if( nbdchgs !=
NULL )
16280 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible,
16294 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
16295 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
16304 SCIP_CALL(
varAddTransitiveImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16305 branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible, nbdchgs) );
16314 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
16315 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
16335 if(
var->data.aggregate.scalar > 0 )
16338 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible,
16344 cliquetable, branchcand, eventqueue, eventfilter, !varfixing, implvar, impltype, implbound, transitive, infeasible,
16368 cliquetable, branchcand, eventqueue, eventfilter, !varfixing, implvar, impltype, implbound, transitive, infeasible, nbdchgs) );
16376 SCIP_CALL(
SCIPvarAddImplic(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16379 infeasible, nbdchgs) );
16394 cliquetable, branchcand, eventqueue, eventfilter, implvar, (impltype ==
SCIP_BOUNDTYPE_UPPER) ? 1.0 : -1.0,
16403 cliquetable, branchcand, eventqueue, eventfilter, implvar, (impltype ==
SCIP_BOUNDTYPE_UPPER) ? -1.0 : 1.0,
16413 SCIP_CALL(
SCIPvarAddVub(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16414 branchcand, eventqueue, eventfilter,
var->negatedvar, (varfixing) ? 1.0 : -1.0,
16415 (varfixing) ? 0.0 : 1.0, transitive, infeasible, nbdchgs) );
16422 SCIP_CALL(
SCIPvarAddVlb(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16423 branchcand, eventqueue, eventfilter,
var->negatedvar, (varfixing) ? -1.0 : 1.0, (varfixing) ? 1.0 : 0.0,
16424 transitive, infeasible, nbdchgs) );
16501 if( bounds ==
NULL )
16504 if( lowerpos >= 0 )
16505 *lb = bounds[lowerpos];
16507 if( upperpos >= 0 )
16508 *ub = bounds[upperpos];
16537 *infeasible =
FALSE;
16539 if( value ==
FALSE )
16541 if(
var->glbdom.lb > 0.5 )
16542 *infeasible =
TRUE;
16543 else if(
var->glbdom.ub > 0.5 )
16555 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 0.0,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16562 if( nbdchgs !=
NULL )
16568 if(
var->glbdom.ub < 0.5 )
16569 *infeasible =
TRUE;
16570 else if(
var->glbdom.lb < 0.5 )
16582 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 1.0,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
16589 if( nbdchgs !=
NULL )
16628 *infeasible =
FALSE;
16656 SCIP_CALL(
SCIPvarFixBinary(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
16657 eventqueue, eventfilter, cliquetable, !value, infeasible, nbdchgs) );
16663 if( oppositeentry )
16673 for(
i = 0;
i <
nvars && !(*infeasible); ++
i )
16678 SCIP_CALL(
SCIPvarFixBinary(
vars[
i], blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
16679 eventqueue, eventfilter, cliquetable, !values[
i], infeasible, nbdchgs) );
16707 for( v =
nvars - 1; v >= 0; --v )
16845 branchfactor =
MAX(branchfactor,
eps);
16847 SCIPsetDebugMsg(
set,
"process changing branch factor of <%s> from %f to %f\n",
var->name,
var->branchfactor, branchfactor);
16853 var->branchfactor = branchfactor;
16856 for(
i = 0;
i <
var->nparentvars; ++
i )
16858 parentvar =
var->parentvars[
i];
16871 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
16904 assert(branchfactor >= 0.0);
16906 SCIPdebugMessage(
"changing branch factor of <%s> from %g to %g\n",
var->name,
var->branchfactor, branchfactor);
16915 if(
var->data.original.transvar !=
NULL )
16922 var->branchfactor = branchfactor;
16940 for( v = 0; v <
var->data.multaggr.nvars; ++v )
16974 SCIPdebugMessage(
"process changing branch priority of <%s> from %d to %d\n",
16975 var->name,
var->branchpriority, branchpriority);
16977 if( branchpriority ==
var->branchpriority )
16981 var->branchpriority = branchpriority;
16984 for(
i = 0;
i <
var->nparentvars; ++
i )
16986 parentvar =
var->parentvars[
i];
16999 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
17029 SCIPdebugMessage(
"changing branch priority of <%s> from %d to %d\n",
var->name,
var->branchpriority, branchpriority);
17031 if(
var->branchpriority == branchpriority )
17038 if(
var->data.original.transvar !=
NULL )
17043 var->branchpriority = branchpriority;
17060 for( v = 0; v <
var->data.multaggr.nvars; ++v )
17094 SCIPdebugMessage(
"process changing branch direction of <%s> from %u to %d\n",
17095 var->name,
var->branchdirection, branchdirection);
17101 var->branchdirection = branchdirection;
17104 for(
i = 0;
i <
var->nparentvars; ++
i )
17106 parentvar =
var->parentvars[
i];
17119 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
17160 SCIPdebugMessage(
"changing branch direction of <%s> from %u to %d\n",
var->name,
var->branchdirection, branchdirection);
17169 if(
var->data.original.transvar !=
NULL )
17174 var->branchdirection = branchdirection;
17186 if(
var->data.aggregate.scalar > 0.0 )
17198 for( v = 0; v <
var->data.multaggr.nvars; ++v )
17204 if(
var->data.multaggr.scalars[v] > 0.0 )
17311 else if( obj1 > obj2 )
17353 int activevarssize;
17377 activevarssize = *
nvars;
17379 tmpvarssize = *
nvars;
17386 noldtmpvars = ntmpvars;
17389 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17390 for( v = ntmpvars - 1; v > 0; --v )
17396 tmpvars[v] = tmpvars[ntmpvars];
17400 if( noldtmpvars > ntmpvars )
17401 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17404 while( ntmpvars >= 1 )
17407 var = tmpvars[ntmpvars];
17413 if(
var->data.original.transvar ==
NULL )
17415 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17419 tmpvars[ntmpvars] =
var->data.original.transvar;
17424 tmpvars[ntmpvars] =
var->data.aggregate.var;
17429 tmpvars[ntmpvars] =
var->negatedvar;
17436 if( nactivevars >= activevarssize )
17438 activevarssize *= 2;
17440 assert(nactivevars < activevarssize);
17442 activevars[nactivevars] =
var;
17448 nmultvars =
var->data.multaggr.nvars;
17449 multvars =
var->data.multaggr.vars;
17452 if( nmultvars + ntmpvars > tmpvarssize )
17454 while( nmultvars + ntmpvars > tmpvarssize )
17457 assert(nmultvars + ntmpvars <= tmpvarssize);
17466 ntmpvars += nmultvars;
17467 noldtmpvars = ntmpvars;
17470 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17471 for( v = ntmpvars - 1; v > 0; --v )
17477 tmpvars[v] = tmpvars[ntmpvars];
17481 if( noldtmpvars > ntmpvars )
17482 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17498 SCIPsortPtr((
void**)activevars, SCIPvarComp, nactivevars);
17501 v = nactivevars - 1;
17508 activevars[v] = activevars[nactivevars];
17512 *requiredsize = nactivevars;
17514 if( varssize >= *requiredsize )
17518 *
nvars = *requiredsize;
17540 for( v =
nvars - 1; v >= 0; --v )
17572 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17626 for( v =
nvars - 1; v >= 0; --v )
17628 var = &((*vars)[v]);
17629 negated = &((*negatedarr)[v]);
17660 orignegated = *negated;
17668 if( (*var)->data.original.transvar ==
NULL )
17670 *
var = (*var)->data.original.transvar;
17681 if ( (*var)->data.multaggr.nvars == 1 )
17683 assert( (*var)->data.multaggr.vars !=
NULL );
17684 assert( (*var)->data.multaggr.scalars !=
NULL );
17686 assert(!
EPSZ((*var)->data.multaggr.scalars[0], 1e-06));
17696 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)) )
17698 assert(
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06));
17707 if( !
EPSEQ(
REALABS((*var)->data.multaggr.scalars[0]), 1.0, 1e-06) )
17717 assert(
EPSZ((*var)->data.multaggr.constant, 1e-06) ||
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06)
17718 ||
EPSZ((*var)->data.multaggr.constant + (*var)->data.multaggr.scalars[0], 1e-06)
17719 ||
EPSEQ((*var)->data.multaggr.constant + (*var)->data.multaggr.scalars[0], 1.0, 1e-06));
17721 if( !
EPSZ((*var)->data.multaggr.constant, 1e-06) && !
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06) )
17727 assert(
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06) ||
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06));
17729 if(
EPSZ((*var)->data.multaggr.constant, 1e-06) )
17735 assert(
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06) ?
17741 assert(
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06));
17743 constant += (*negated) != orignegated ? -1.0 : 1.0;
17746 *negated = !(*negated);
17748 *
var = (*var)->data.multaggr.vars[0];
17757 assert(
EPSEQ((*var)->data.aggregate.scalar, 1.0, 1e-06) ||
EPSEQ((*var)->data.aggregate.scalar, -1.0, 1e-06));
17758 assert(
EPSLE((*var)->data.aggregate.var->glbdom.ub - (*var)->data.aggregate.var->glbdom.lb, 1.0, 1e-06));
17760 constant += (*negated) != orignegated ? -(*var)->data.aggregate.constant : (*var)->data.aggregate.constant;
17763 *negated = ((*var)->data.aggregate.scalar > 0.0) ? *negated : !(*negated);
17764 *
var = (*var)->data.aggregate.var;
17770 constant += (*negated) != orignegated ? -1.0 : 1.0;
17773 *negated = !(*negated);
17774 *
var = (*var)->negatedvar;
17788 assert(
EPSZ(constant, 1e-06) == ((*negated) == orignegated));
17813 SCIPdebugMessage(
"get probvar bound %g of type %d of variable <%s>\n", *
bound, *boundtype, (*var)->name);
17818 if( (*var)->data.original.transvar ==
NULL )
17820 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17823 *
var = (*var)->data.original.transvar;
17834 if ( (*var)->data.multaggr.nvars == 1 )
17836 assert( (*var)->data.multaggr.vars !=
NULL );
17837 assert( (*var)->data.multaggr.scalars !=
NULL );
17838 assert( (*var)->data.multaggr.scalars[0] != 0.0 );
17840 (*bound) /= (*var)->data.multaggr.scalars[0];
17841 (*bound) -= (*var)->data.multaggr.constant/(*var)->data.multaggr.scalars[0];
17842 if ( (*var)->data.multaggr.scalars[0] < 0.0 )
17849 *
var = (*var)->data.multaggr.vars[0];
17856 assert((*var)->data.aggregate.scalar != 0.0);
17858 (*bound) /= (*var)->data.aggregate.scalar;
17859 (*bound) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
17860 if( (*var)->data.aggregate.scalar < 0.0 )
17867 *
var = (*var)->data.aggregate.var;
17874 assert((*var)->negatedvar->negatedvar == *
var);
17875 (*bound) = (*var)->data.negate.constant - *
bound;
17880 *
var = (*var)->negatedvar;
17911 if( (*var)->data.original.transvar ==
NULL )
17913 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17916 *
var = (*var)->data.original.transvar;
17927 if( (*var)->data.multaggr.nvars == 1 )
17929 assert( (*var)->data.multaggr.vars !=
NULL );
17930 assert( (*var)->data.multaggr.scalars !=
NULL );
17931 assert( (*var)->data.multaggr.scalars[0] != 0.0 );
17943 *
var = (*var)->data.multaggr.vars[0];
17950 assert((*var)->data.aggregate.scalar != 0.0);
17962 *
var = (*var)->data.aggregate.var;
17969 assert((*var)->negatedvar->negatedvar == *
var);
17976 *
var = (*var)->negatedvar;
18002 SCIPdebugMessage(
"get probvar hole (%g,%g) of variable <%s>\n", *left, *right, (*var)->name);
18007 if( (*var)->data.original.transvar ==
NULL )
18009 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18012 *
var = (*var)->data.original.transvar;
18024 assert((*var)->data.aggregate.scalar != 0.0);
18027 (*left) /= (*var)->data.aggregate.scalar;
18028 (*right) /= (*var)->data.aggregate.scalar;
18031 (*left) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
18032 (*right) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
18034 *
var = (*var)->data.aggregate.var;
18037 if( (*var)->data.aggregate.scalar < 0.0 )
18050 assert((*var)->negatedvar->negatedvar == *
var);
18053 (*left) = (*var)->data.negate.constant - (*left);
18054 (*right) = (*var)->data.negate.constant - (*right);
18056 *
var = (*var)->negatedvar;
18092 if( (*var)->data.original.transvar ==
NULL )
18094 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18097 *
var = (*var)->data.original.transvar;
18110 if( (*scalar) * (*var)->glbdom.lb > 0.0 )
18116 (*constant) += *scalar * (*var)->glbdom.lb;
18132 if ( (*var)->data.multaggr.nvars == 1 )
18135 assert((*var)->data.multaggr.scalars !=
NULL);
18136 assert((*var)->data.multaggr.vars[0] !=
NULL);
18146 if( (*scalar) * (*var)->data.multaggr.constant > 0 )
18159 (*constant) += *scalar * (*var)->data.multaggr.constant;
18161 (*scalar) *= (*var)->data.multaggr.scalars[0];
18162 *
var = (*var)->data.multaggr.vars[0];
18172 (*constant) += *scalar * (*var)->data.aggregate.constant;
18173 (*scalar) *= (*var)->data.aggregate.scalar;
18174 *
var = (*var)->data.aggregate.var;
18180 assert((*var)->negatedvar->negatedvar == *
var);
18184 (*constant) += *scalar * (*var)->data.negate.constant;
18186 *
var = (*var)->negatedvar;
18222 if( (*var)->data.original.transvar ==
NULL )
18224 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18227 *
var = (*var)->data.original.transvar;
18253 if ( (*var)->data.multaggr.nvars == 1 )
18256 assert((*var)->data.multaggr.scalars !=
NULL);
18257 assert((*var)->data.multaggr.vars[0] !=
NULL);
18282 *
var = (*var)->data.multaggr.vars[0];
18293 *
var = (*var)->data.aggregate.var;
18298 assert((*var)->negatedvar->negatedvar == *
var);
18303 *
var = (*var)->negatedvar;
18339 if( (*var)->nparentvars == 0 )
18345 ((*var)->negatedvar->nparentvars == 0 || (*var)->negatedvar->parentvars[0] != *
var) )
18348 *constant -= (*var)->data.negate.constant * (*scalar);
18349 *
var = (*var)->negatedvar;
18377 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
18428 if( (*var)->nparentvars == 0 )
18434 ((*var)->negatedvar->nparentvars == 0 || (*var)->negatedvar->parentvars[0] != *
var) )
18438 *
var = (*var)->negatedvar;
18466 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
18509 parentvar =
var->parentvars[0];
18549 SCIPerrorMessage(
"cannot get the objective value of a multiple aggregated variable\n");
18591 return var->locdom.lb;
18600 else if(
var->data.aggregate.scalar > 0.0 )
18605 else if(
var->data.aggregate.scalar < 0.0 )
18619 SCIPerrorMessage(
"getting the bounds of a multiple aggregated variable is not implemented yet\n");
18661 return var->locdom.ub;
18670 if(
var->data.aggregate.scalar > 0.0 )
18675 else if(
var->data.aggregate.scalar < 0.0 )
18688 SCIPerrorMessage(
"cannot get the bounds of a multi-aggregated variable.\n");
18715 if(
var->data.original.transvar ==
NULL )
18728 return var->locdom.lb;
18753 return var->data.aggregate.scalar * lpsolval +
var->data.aggregate.constant;
18767 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18795 if(
var->data.original.transvar ==
NULL )
18835 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18877 return var->nlpsol;
18887 return var->data.aggregate.scalar * solval +
var->data.aggregate.constant;
18890 solval =
var->data.multaggr.constant;
18891 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18897 return var->data.negate.constant - solval;
18920 if(
var->data.original.transvar ==
NULL )
18930 return var->locdom.lb;
18947 return var->data.aggregate.scalar * pseudosolval +
var->data.aggregate.constant;
18956 pseudosol =
var->data.multaggr.constant;
18957 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18985 if(
var->data.original.transvar ==
NULL )
18995 return var->exactdata->locdom.lb;
19072 if(
var->bestrootredcost > 0.0 )
19077 currcutoffbound = (
bound -
var->bestrootsol) *
var->bestrootredcost +
var->bestrootlpobjval;
19082 if( rootredcost > 0.0 )
19087 cutoffbound = (
bound -
rootsol) * rootredcost + rootlpobjval;
19090 if( cutoffbound > currcutoffbound )
19096 var->bestrootredcost = rootredcost;
19097 var->bestrootlpobjval = rootlpobjval;
19108 var->bestrootredcost = rootredcost;
19109 var->bestrootlpobjval = rootlpobjval;
19128 if(
var->data.original.transvar ==
NULL )
19134 return var->rootsol;
19138 return var->locdom.lb;
19162 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19230#define MAX_CLIQUELENGTH 50
19253#ifdef SCIP_MORE_DEBUG
19291 for(
c = ncliques - 1;
c >= 0; --
c )
19293 clique = cliques[
c];
19308 for( v = nclqvars - 1; v >= 0; --v )
19310 clqvar = clqvars[v];
19318 assert(0 < probindex && probindex < nentries);
19320#ifdef SCIP_DISABLED_CODE
19324 assert(!entries[probindex] || entries[probindex] == (clqvalues[v] ? probindex : -probindex));
19326 if( entries[probindex] == 0 )
19328 ids[nids] = probindex;
19332 entries[probindex] = (clqvalues[v] ? probindex : -probindex);
19342 for( v = nids - 1; v >= 0; --v )
19345 assert(0 <
id &&
id < nentries);
19346 assert(entries[
id] != 0);
19352 if( (entries[
id] > 0) != varfixing )
19358 implredcost += redcost;
19368#ifdef SCIP_MORE_DEBUG
19394 for( v =
nvars - 1; v >= 0; --v )
19422 redcost *= (lb - bounds[v]);
19424 redcost *= (bounds[v] - lb);
19432 redcost *= (bounds[v] - ub);
19434 redcost *= (ub - bounds[v]);
19448 redcost *= (lb - bounds[v]);
19450 redcost *= (bounds[v] - lb);
19458 redcost *= (bounds[v] - ub);
19460 redcost *= (ub - bounds[v]);
19466 implredcost += redcost;
19470#ifdef SCIP_MORE_DEBUG
19471 SCIPsetDebugMsg(
set,
"variable <%s> incl. cliques (%d) and implications (%d) has implied reduced cost of %g\n",
19475 return implredcost;
19493 if(
var->data.original.transvar ==
NULL )
19499 return var->bestrootsol;
19503 return var->locdom.lb;
19527 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19557 if(
var->data.original.transvar ==
NULL )
19563 return var->bestrootredcost;
19591 if(
var->data.original.transvar ==
NULL )
19597 return var->bestrootlpobjval;
19623 var->bestrootredcost = rootredcost;
19624 var->bestrootlpobjval = rootlpobjval;
19652 var->relaxsol = solval;
19658 SCIPerrorMessage(
"cannot set relaxation solution value for variable <%s> fixed to %.15g to different value %.15g\n",
19667 (solval -
var->data.aggregate.constant)/
var->data.aggregate.scalar, updateobj) );
19670 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
19710 return var->relaxsol;
19722 if(
var->data.aggregate.scalar * solval > 0.0 )
19724 if(
var->data.aggregate.scalar * solval < 0.0 )
19727 return var->data.aggregate.scalar * solval +
var->data.aggregate.constant;
19730 solvalsum =
var->data.multaggr.constant;
19731 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19736 if(
var->data.multaggr.scalars[
i] * solval > 0.0 )
19738 if(
var->data.multaggr.scalars[
i] * solval < 0.0 )
19741 solvalsum +=
var->data.multaggr.scalars[
i] * solval;
19751 return var->data.negate.constant - solval;
19768 return var->relaxsol;
19791 var->nlpsol = solval;
19797 SCIPerrorMessage(
"cannot set NLP solution value for variable <%s> fixed to %.15g to different value %.15g\n",
19810 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
19840 if(
var->data.original.transvar ==
NULL )
19846 avgsol =
var->primsolavg;
19847 avgsol =
MAX(avgsol,
var->glbdom.lb);
19848 avgsol =
MIN(avgsol,
var->glbdom.ub);
19853 return var->locdom.lb;
19859 +
var->data.aggregate.constant;
19868 avgsol =
var->data.multaggr.constant;
19869 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19907 *closestvlbidx = -1;
19925 i =
var->closestvlbidx;
19928 *closestvlbidx =
i;
19934 for(
i = 0;
i < nvlbs;
i++ )
19941 if( vlbsol > *closestvlb )
19943 *closestvlb = vlbsol;
19944 *closestvlbidx =
i;
19952 if(
var->closestvblpcount != stat->
lpcount )
19953 var->closestvubidx = -1;
19954 var->closestvlbidx = *closestvlbidx;
19981 *closestvubidx = -1;
19999 i =
var->closestvubidx;
20002 *closestvubidx =
i;
20008 for(
i = 0;
i < nvubs;
i++ )
20015 if( vubsol < *closestvub )
20017 *closestvub = vubsol;
20018 *closestvubidx =
i;
20026 if(
var->closestvblpcount != stat->
lpcount )
20027 var->closestvlbidx = -1;
20028 var->closestvubidx = *closestvubidx;
20064 if(
var->data.original.transvar ==
NULL )
20102 row,
var->data.aggregate.scalar * val) );
20113 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
20116 row,
var->data.multaggr.scalars[
i] * val) );
20165 if(
var->data.original.transvar ==
NULL )
20228 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
20266#ifdef SCIP_HISTORYTOFILE
20268const char* historypath=
".";
20297 if(
var->data.original.transvar ==
NULL )
20299 SCIPerrorMessage(
"cannot update pseudo costs of original untransformed variable\n");
20320#ifdef SCIP_HISTORYTOFILE
20323 char filename[256];
20330 f = fopen(filename,
"a");
20333 fprintf(f,
"%lld %s \t %lld \t %lld \t %lld \t %d \t %15.9f \t %.3f\n",
20349 SCIPerrorMessage(
"cannot update pseudo cost values of a fixed variable\n");
20355 solvaldelta/
var->data.aggregate.scalar, objdelta, weight) );
20359 SCIPerrorMessage(
"cannot update pseudo cost values of a multi-aggregated variable\n");
20396 if(
var->data.original.transvar ==
NULL )
20398 SCIPerrorMessage(
"cannot update ancestral pseudo costs of original untransformed variable\n");
20414 SCIPerrorMessage(
"cannot update ancestral pseudo cost values of a fixed variable\n");
20420 solvaldelta/
var->data.aggregate.scalar, objdelta, weight) );
20424 SCIPerrorMessage(
"cannot update ancestral pseudo cost values of a multi-aggregated variable\n");
20452 if(
var->data.original.transvar ==
NULL )
20499 if(
var->data.original.transvar ==
NULL )
20548 if(
var->data.original.transvar ==
NULL )
20592 if(
var->data.original.transvar ==
NULL )
20605 if(
var->data.aggregate.scalar > 0.0 )
20637 if(
var->data.original.transvar ==
NULL )
20650 if(
var->data.aggregate.scalar > 0.0 )
20682 if(
var->data.original.transvar ==
NULL )
20695 if(
var->data.aggregate.scalar > 0.0 )
20741 return MIN(upscore, downscore);
20757 if(
var->data.original.transvar ==
NULL )
20764 if( onlycurrentrun )
20773 if(
var->data.aggregate.scalar > 0.0 )
20814 if( onlycurrentrun )
20821 confidencebound /= count;
20822 confidencebound = sqrt(confidencebound);
20829 confidencebound = 0.0;
20831 return confidencebound;
20855 size =
MIN(downsize, upsize);
20865 if( downsize >= 1.9 )
20871 normval =
MAX(1.0, normval);
20873 relerrordown /= normval;
20876 relerrordown = 0.0;
20878 if( upsize >= 1.9 )
20884 normval =
MAX(1.0, normval);
20885 relerrorup /= normval;
20891 relerror =
MAX(relerrorup, relerrordown);
20893 return (relerror <= threshold);
20942 if( countx <= 1.9 || county <= 1.9 )
21039 SCIPerrorMessage(
"Confidence level set to unknown value <%d>", (
int)clevel);
21044 return (probability >= problimit);
21064 if(
var->valuehistory ==
NULL )
21089 if( !
set->history_valuebased )
21127 if(
var->data.original.transvar ==
NULL )
21129 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
21160 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21162 if(
var->data.aggregate.scalar > 0.0 )
21168 assert(
var->data.aggregate.scalar < 0.0);
21178 value = 1.0 - value;
21200 if(
var->data.original.transvar ==
NULL )
21202 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
21260 if(
var->data.original.transvar ==
NULL )
21262 SCIPerrorMessage(
"cannot update conflict score of original untransformed variable\n");
21291 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21293 if(
var->data.aggregate.scalar > 0.0 )
21299 assert(
var->data.aggregate.scalar < 0.0);
21305 SCIPerrorMessage(
"cannot update conflict score of a multi-aggregated variable\n");
21309 value = 1.0 - value;
21334 if(
var->data.original.transvar ==
NULL )
21347 if(
var->data.aggregate.scalar > 0.0 )
21381 if(
var->data.original.transvar ==
NULL )
21394 if(
var->data.aggregate.scalar > 0.0 )
21424 if(
var->data.original.transvar ==
NULL )
21436 if(
var->data.aggregate.scalar > 0.0 )
21468 if(
var->data.original.transvar ==
NULL )
21481 if(
var->data.aggregate.scalar > 0.0 )
21521 if(
var->data.original.transvar ==
NULL )
21523 SCIPerrorMessage(
"cannot update branching counter of original untransformed variable\n");
21550 SCIPerrorMessage(
"cannot update branching counter of a fixed variable\n");
21554 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21556 if(
var->data.aggregate.scalar > 0.0 )
21562 assert(
var->data.aggregate.scalar < 0.0);
21568 SCIPerrorMessage(
"cannot update branching counter of a multi-aggregated variable\n");
21572 value = 1.0 - value;
21605 if(
var->data.original.transvar ==
NULL )
21607 SCIPerrorMessage(
"cannot update inference counter of original untransformed variable\n");
21634 SCIPerrorMessage(
"cannot update inference counter of a fixed variable\n");
21638 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21640 if(
var->data.aggregate.scalar > 0.0 )
21646 assert(
var->data.aggregate.scalar < 0.0);
21652 SCIPerrorMessage(
"cannot update inference counter of a multi-aggregated variable\n");
21656 value = 1.0 - value;
21689 if(
var->data.original.transvar ==
NULL )
21691 SCIPerrorMessage(
"cannot update cutoff sum of original untransformed variable\n");
21722 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21724 if(
var->data.aggregate.scalar > 0.0 )
21730 assert(
var->data.aggregate.scalar < 0.0);
21736 SCIPerrorMessage(
"cannot update cutoff sum of a multi-aggregated variable\n");
21740 value = 1.0 - value;
21763 if(
var->data.original.transvar ==
NULL )
21776 if(
var->data.aggregate.scalar > 0.0 )
21808 if(
var->data.original.transvar ==
NULL )
21821 if(
var->data.aggregate.scalar > 0.0 )
21851 if(
var->data.original.transvar ==
NULL )
21864 if(
var->data.aggregate.scalar > 0.0 )
21896 if(
var->data.original.transvar ==
NULL )
21909 if(
var->data.aggregate.scalar > 0.0 )
21946 if(
var->data.original.transvar ==
NULL )
21960 if(
var->data.aggregate.scalar > 0.0 )
21993 SCIPerrorMessage(
"invalid branching direction %d when asking for VSIDS value\n", dir);
22000 if(
var->data.original.transvar ==
NULL )
22013 if(
var->data.aggregate.scalar > 0.0 )
22043 if(
var->data.original.transvar ==
NULL )
22056 if(
var->data.aggregate.scalar > 0.0 )
22088 if(
var->data.original.transvar ==
NULL )
22101 if(
var->data.aggregate.scalar > 0.0 )
22133 if(
var->data.original.transvar ==
NULL )
22156 if(
var->data.aggregate.scalar > 0.0 )
22190 if(
var->data.original.transvar ==
NULL )
22213 if(
var->data.aggregate.scalar > 0.0 )
22243 if(
var->data.original.transvar ==
NULL )
22256 if(
var->data.aggregate.scalar > 0.0 )
22286 if(
var->data.original.transvar ==
NULL )
22299 if(
var->data.aggregate.scalar > 0.0 )
22331 if(
var->data.original.transvar ==
NULL )
22346 if(
var->data.aggregate.scalar > 0.0 )
22378 if(
var->data.original.transvar ==
NULL )
22393 if(
var->data.aggregate.scalar > 0.0 )
22423 if(
var->data.original.transvar ==
NULL )
22465 if(
var->data.original.transvar !=
NULL )
22507 if(
var->data.original.transvar !=
NULL )
22549 if(
var->data.original.transvar !=
NULL )
22598 (*bdchginfo)->oldbound = oldbound;
22599 (*bdchginfo)->newbound = newbound;
22600 (*bdchginfo)->var =
var;
22601 (*bdchginfo)->inferencedata.var =
var;
22602 (*bdchginfo)->inferencedata.reason.prop =
NULL;
22603 (*bdchginfo)->inferencedata.info = 0;
22604 (*bdchginfo)->bdchgidx.depth = INT_MAX;
22605 (*bdchginfo)->bdchgidx.pos = -1;
22606 (*bdchginfo)->pos = 0;
22608 (*bdchginfo)->boundtype = boundtype;
22609 (*bdchginfo)->inferboundtype = boundtype;
22610 (*bdchginfo)->redundant =
FALSE;
22644 for(
i =
var->nlbchginfos-1;
i >= 0; --
i )
22651 if(
var->lbchginfos[
i].redundant )
22653 assert(
var->lbchginfos[
i].oldbound <
var->lbchginfos[
i].newbound);
22657 return &
var->lbchginfos[
i];
22662 for(
i =
var->nlbchginfos-1;
i >= 0; --
i )
22669 if(
var->lbchginfos[
i].redundant )
22671 assert(
var->lbchginfos[
i].oldbound <
var->lbchginfos[
i].newbound);
22675 return &
var->lbchginfos[
i];
22700 for(
i =
var->nubchginfos-1;
i >= 0; --
i )
22707 if(
var->ubchginfos[
i].redundant )
22709 assert(
var->ubchginfos[
i].oldbound >
var->ubchginfos[
i].newbound);
22713 return &
var->ubchginfos[
i];
22718 for(
i =
var->nubchginfos-1;
i >= 0; --
i )
22725 if(
var->ubchginfos[
i].redundant )
22727 assert(
var->ubchginfos[
i].oldbound >
var->ubchginfos[
i].newbound);
22731 return &
var->ubchginfos[
i];
22787 lbchgidx = (
var->nlbchginfos > 0 && !
var->lbchginfos[
var->nlbchginfos-1].redundant
22789 ubchgidx = (
var->nubchginfos > 0 && !
var->ubchginfos[
var->nubchginfos-1].redundant
22811 return bdchgidx->
depth;
22854 return var->ubchginfos[
i].bdchgidx.depth;
22882 return var->lbchginfos[
i].bdchgidx.depth;
22950 int* ncontimplvars,
22956 int binimplvars = 0;
22958 int intimplvars = 0;
22960 int contimplvars = 0;
22963 for( v = 0; v <
nvars; ++v )
22991 if( nbinvars !=
NULL )
22992 *nbinvars = binvars;
22993 if( nintvars !=
NULL )
22994 *nintvars = intvars;
22995 if( nbinimplvars !=
NULL )
22996 *nbinimplvars = binimplvars;
22997 if( nintimplvars !=
NULL )
22998 *nintimplvars = intimplvars;
22999 if( ncontimplvars !=
NULL )
23000 *ncontimplvars = contimplvars;
23001 if( ncontvars !=
NULL )
23002 *ncontvars = contvars;
23031#undef SCIPboundchgGetNewbound
23032#undef SCIPboundchgGetLPSolVal
23033#undef SCIPboundchgGetVar
23034#undef SCIPboundchgGetBoundchgtype
23035#undef SCIPboundchgGetBoundtype
23036#undef SCIPboundchgIsRedundant
23037#undef SCIPdomchgGetNBoundchgs
23038#undef SCIPdomchgGetBoundchg
23039#undef SCIPholelistGetLeft
23040#undef SCIPholelistGetRight
23041#undef SCIPholelistGetNext
23042#undef SCIPvarGetName
23043#undef SCIPvarGetNUses
23044#undef SCIPvarGetData
23045#undef SCIPvarSetData
23046#undef SCIPvarSetDelorigData
23047#undef SCIPvarSetTransData
23048#undef SCIPvarSetDeltransData
23049#undef SCIPvarGetStatus
23050#undef SCIPvarIsOriginal
23051#undef SCIPvarIsTransformed
23052#undef SCIPvarIsNegated
23053#undef SCIPvarGetType
23054#undef SCIPvarIsBinary
23055#undef SCIPvarIsIntegral
23056#undef SCIPvarIsImpliedIntegral
23057#undef SCIPvarIsNonimpliedIntegral
23058#undef SCIPvarIsInitial
23059#undef SCIPvarIsRemovable
23060#undef SCIPvarIsDeleted
23061#undef SCIPvarIsDeletable
23062#undef SCIPvarMarkDeletable
23063#undef SCIPvarMarkNotDeletable
23064#undef SCIPvarIsActive
23065#undef SCIPvarGetIndex
23066#undef SCIPvarGetProbindex
23067#undef SCIPvarGetTransVar
23068#undef SCIPvarGetCol
23069#undef SCIPvarIsInLP
23070#undef SCIPvarGetMinAggrCoef
23071#undef SCIPvarGetMaxAggrCoef
23072#undef SCIPvarGetAggrVar
23073#undef SCIPvarGetAggrScalar
23074#undef SCIPvarGetAggrConstant
23075#undef SCIPvarGetMultaggrNVars
23076#undef SCIPvarGetMultaggrVars
23077#undef SCIPvarGetMultaggrScalars
23078#undef SCIPvarGetMultaggrConstant
23079#undef SCIPvarGetNegatedVar
23080#undef SCIPvarGetNegationVar
23081#undef SCIPvarGetNegationConstant
23082#undef SCIPvarGetObj
23083#undef SCIPvarGetLbOriginal
23084#undef SCIPvarGetUbOriginal
23085#undef SCIPvarGetHolelistOriginal
23086#undef SCIPvarGetLbGlobal
23087#undef SCIPvarGetUbGlobal
23088#undef SCIPvarGetHolelistGlobal
23089#undef SCIPvarGetBestBoundGlobal
23090#undef SCIPvarGetWorstBoundGlobal
23091#undef SCIPvarGetLbLocal
23092#undef SCIPvarGetUbLocal
23093#undef SCIPvarGetHolelistLocal
23094#undef SCIPvarGetBestBoundLocal
23095#undef SCIPvarGetWorstBoundLocal
23096#undef SCIPvarGetBestBoundType
23097#undef SCIPvarGetWorstBoundType
23098#undef SCIPvarGetLbLazy
23099#undef SCIPvarGetUbLazy
23100#undef SCIPvarGetBranchFactor
23101#undef SCIPvarGetBranchPriority
23102#undef SCIPvarGetBranchDirection
23103#undef SCIPvarGetNVlbs
23104#undef SCIPvarGetVlbVars
23105#undef SCIPvarGetVlbCoefs
23106#undef SCIPvarGetVlbConstants
23107#undef SCIPvarGetNVubs
23108#undef SCIPvarGetVubVars
23109#undef SCIPvarGetVubCoefs
23110#undef SCIPvarGetVubConstants
23111#undef SCIPvarGetNImpls
23112#undef SCIPvarGetImplVars
23113#undef SCIPvarGetImplTypes
23114#undef SCIPvarGetImplBounds
23115#undef SCIPvarGetImplIds
23116#undef SCIPvarGetNCliques
23117#undef SCIPvarGetCliques
23118#undef SCIPvarGetLPSol
23119#undef SCIPvarGetNLPSol
23120#undef SCIPvarGetBdchgInfoLb
23121#undef SCIPvarGetNBdchgInfosLb
23122#undef SCIPvarGetBdchgInfoUb
23123#undef SCIPvarGetNBdchgInfosUb
23124#undef SCIPvarGetValuehistory
23125#undef SCIPvarGetPseudoSol
23126#undef SCIPvarCatchEvent
23127#undef SCIPvarDropEvent
23128#undef SCIPvarGetVSIDS
23129#undef SCIPvarGetCliqueComponentIdx
23130#undef SCIPvarIsRelaxationOnly
23131#undef SCIPvarMarkRelaxationOnly
23132#undef SCIPbdchgidxGetPos
23133#undef SCIPbdchgidxGetDepth
23134#undef SCIPbdchgidxIsEarlierNonNull
23135#undef SCIPbdchgidxIsEarlier
23136#undef SCIPbdchginfoGetOldbound
23137#undef SCIPbdchginfoGetNewbound
23138#undef SCIPbdchginfoGetVar
23139#undef SCIPbdchginfoGetChgtype
23140#undef SCIPbdchginfoGetBoundtype
23141#undef SCIPbdchginfoGetDepth
23142#undef SCIPbdchginfoGetPos
23143#undef SCIPbdchginfoGetIdx
23144#undef SCIPbdchginfoGetInferVar
23145#undef SCIPbdchginfoGetInferCons
23146#undef SCIPbdchginfoGetInferProp
23147#undef SCIPbdchginfoGetInferInfo
23148#undef SCIPbdchginfoGetInferBoundtype
23149#undef SCIPbdchginfoIsRedundant
23150#undef SCIPbdchginfoHasInferenceReason
23151#undef SCIPbdchginfoIsTighter
23181 return boundchg->
var;
23261 return holelist->
next;
23294 return var->vardata;
23305 var->vardata = vardata;
23317 var->vardelorig = vardelorig;
23329 var->vartrans = vartrans;
23340 var->vardeltrans = vardeltrans;
23351 var->varcopy = varcopy;
23365 var->initial = initial;
23381 var->removable = removable;
23404 return var->exactdata->varstatusexact;
23414 return (
var->exactdata !=
NULL);
23487 &&
MAX(
var->glbdom.lb,
var->lazylb) >= 0.0 &&
MIN(
var->glbdom.ub,
var->lazyub) <= 1.0));
23521 return var->initial;
23531 return var->removable;
23541 return var->deleted;
23577 var->delglobalstructs =
TRUE;
23587 return var->delglobalstructs;
23607 return var->relaxationonly;
23639 return var->deletable;
23649 return (
var->probindex >= 0);
23669 return var->probindex;
23680 return var->data.original.transvar;
23691 return var->data.col;
23703 return var->exactdata->colexact;
23723 return var->data.loose.minaggrcoef;
23733 return var->data.loose.maxaggrcoef;
23745 return var->data.aggregate.var;
23757 return var->data.aggregate.scalar;
23768 return var->exactdata->aggregate.scalar;
23780 return var->data.aggregate.constant;
23791 return var->exactdata->aggregate.constant;
23803 return var->data.multaggr.nvars;
23815 return var->data.multaggr.vars;
23827 return var->data.multaggr.scalars;
23840 return var->exactdata->multaggr.scalars;
23852 return var->data.multaggr.constant;
23865 return var->exactdata->multaggr.constant;
23875 return var->negatedvar;
23886 return var->negatedvar;
23897 return var->data.negate.constant;
23918 return var->exactdata->obj;
23929 return var->exactdata->objinterval;
23939 return var->unchangedobj;
23956 while( probvar !=
NULL )
24029 return var->data.original.origdom.lb;
24036 return var->data.negate.constant -
var->negatedvar->data.original.origdom.ub;
24050 return var->exactdata->origdom.lb;
24072 return var->data.original.origdom.ub;
24079 return var->data.negate.constant -
var->negatedvar->data.original.origdom.lb;
24093 return var->exactdata->origdom.ub;
24115 return var->data.original.origdom.holelist;
24127 return var->glbdom.lb;
24139 return var->exactdata->glbdom.lb;
24149 return var->glbdom.ub;
24161 return var->exactdata->glbdom.ub;
24171 return var->glbdom.holelist;
24181 if(
var->obj >= 0.0 )
24182 return var->glbdom.lb;
24184 return var->glbdom.ub;
24199 return var->exactdata->glbdom.lb;
24201 return var->exactdata->glbdom.ub;
24211 if(
var->obj >= 0.0 )
24212 return var->glbdom.ub;
24214 return var->glbdom.lb;
24229 return var->exactdata->glbdom.ub;
24231 return var->exactdata->glbdom.lb;
24241 return var->locdom.lb;
24253 return var->exactdata->locdom.lb;
24275 return var->locdom.ub;
24287 return var->exactdata->locdom.ub;
24309 return var->locdom.holelist;
24319 if(
var->obj >= 0.0 )
24320 return var->locdom.lb;
24322 return var->locdom.ub;
24337 return var->exactdata->locdom.lb;
24339 return var->exactdata->locdom.ub;
24349 if(
var->obj >= 0.0 )
24350 return var->locdom.ub;
24352 return var->locdom.lb;
24367 return var->exactdata->locdom.ub;
24369 return var->exactdata->locdom.lb;
24379 if(
var->obj >= 0.0 )
24407 if(
var->obj >= 0.0 )
24435 return var->lazylb;
24445 return var->lazyub;
24457 return var->branchfactor;
24469 return var->branchpriority;
24699 return var->nlpsol;
24711 assert(pos < var->nlbchginfos);
24713 return &
var->lbchginfos[pos];
24721 return var->nlbchginfos;
24731 assert(pos < var->nubchginfos);
24733 return &
var->ubchginfos[pos];
24743 return var->nubchginfos;
24753 return var->valuehistory;
24817 eventtype,
var->name, (
void*)eventhdlr, (
void*)eventdata);
24841 SCIPsetDebugMsg(
set,
"drop event of variable <%s> with handler %p and data %p\n",
var->name, (
void*)eventhdlr,
24856 return bdchgidx->
pos;
24866 return bdchgidx->
depth;
24882 return (bdchgidx1->
depth < bdchgidx2->
depth)
24883 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
24900 if( bdchgidx1 ==
NULL )
24902 else if( bdchgidx2 ==
NULL )
24905 return (bdchgidx1->
depth < bdchgidx2->
depth)
24906 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
24936 return bdchginfo->
var;
25106 return var->exactdata->certificateindex;
25119 var->exactdata->certificateindex = certidx;
25132 var->exactdata->glbdom.ubcertificateidx = certidx;
25133 var->exactdata->locdom.ubcertificateidx = certidx;
25146 var->exactdata->locdom.ubcertificateidx = certidx;
25159 var->exactdata->locdom.lbcertificateidx = certidx;
25172 var->exactdata->glbdom.lbcertificateidx = certidx;
25173 var->exactdata->locdom.lbcertificateidx = certidx;
25182 assert(
var->exactdata->locdom.lbcertificateidx != -1);
25185 return var->exactdata->locdom.lbcertificateidx;
25194 assert(
var->exactdata->locdom.ubcertificateidx != -1);
25197 return var->exactdata->locdom.ubcertificateidx;
25206 assert(
var->exactdata->glbdom.lbcertificateidx != -1);
25209 return var->exactdata->glbdom.lbcertificateidx;
25218 assert(
var->exactdata->glbdom.ubcertificateidx != -1);
25221 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)
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