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];
5464 if( tmpscalars[
var->index] != 0.0 )
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 ||
7805 scalar = -scalary / scalarx;
7806 constant = rhs / scalarx;
7834 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7835 branchcand, eventqueue, eventfilter, vary, scalar, constant, infeasible, aggregated) );
7842 SCIP_CALL(
tryAggregateIntVars(
set, blkmem, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
7843 branchcand, eventqueue, eventfilter, varx, vary, scalarx, scalary, rhs, infeasible, aggregated) );
7915 *infeasible =
FALSE;
7916 *aggregated =
FALSE;
7920 maxscalar =
MAX(maxscalar, 1.0);
7922 if( absquot > maxscalar || absquot < 1 / maxscalar )
7936 if( typex < typey ||
8034 SCIP_CALL(
SCIPvarAggregateExact(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
8035 branchcand, eventqueue, eventfilter, vary, quotyx, constant, infeasible, aggregated) );
8044 SCIP_CALL(
tryAggregateIntVarsExact(
set, blkmem, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
8045 branchcand, eventqueue, eventfilter, varx, vary, scalarx, scalary, rhs, infeasible, aggregated) );
8091 int tmprequiredsize;
8104 SCIPsetDebugMsg(
set,
"trying multi-aggregating variable <%s> == ...%d vars... %+g\n",
var->name, naggvars, constant);
8106 *infeasible =
FALSE;
8107 *aggregated =
FALSE;
8112 if(
var->data.original.transvar ==
NULL )
8114 SCIPerrorMessage(
"cannot multi-aggregate an untransformed original variable\n");
8118 reopt, lp, cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars, constant, infeasible, aggregated) );
8125 ntmpvars = naggvars;
8126 tmpvarssize = naggvars;
8127 tmpconstant = constant;
8133 if( tmprequiredsize > tmpvarssize )
8137 tmpvarssize = tmprequiredsize;
8139 assert( tmprequiredsize <= tmpvarssize );
8147 for( v = ntmpvars - 1; v >= 0; --v )
8152 if( tmpvars[v]->index ==
var->index )
8154 tmpscalar += tmpscalars[v];
8155 tmpvars[v] = tmpvars[ntmpvars - 1];
8156 tmpscalars[v] = tmpscalars[ntmpvars - 1];
8168 SCIPsetDebugMsg(
set,
"Possible multi-aggregation was completely resolved and detected to be redundant.\n");
8173 SCIPsetDebugMsg(
set,
"Multi-aggregation was completely resolved and led to infeasibility.\n");
8178 else if( ntmpvars == 1 )
8180 assert(tmpscalars[0] != 0.0);
8184 SCIP_CALL(
SCIPvarFix(tmpvars[0], blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
8185 branchcand, eventqueue, eventfilter, cliquetable, -constant/tmpscalars[0], infeasible, aggregated) );
8188 else if( ntmpvars == 2 )
8191 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %g and %g and constant %g.\n",
8195 cliquetable, branchcand, eventqueue, eventfilter, tmpvars[0], tmpvars[1], tmpscalars[0],
8196 tmpscalars[1], -tmpconstant, infeasible, aggregated) );
8207 else if( tmpscalar != 0.0 )
8209 tmpscalar = 1 - tmpscalar;
8210 tmpconstant /= tmpscalar;
8211 for( v = 0; v < ntmpvars; ++v )
8212 tmpscalars[v] /= tmpscalar;
8219 SCIP_CALL(
SCIPvarFix(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
8220 eventqueue, eventfilter, cliquetable, tmpconstant, infeasible, aggregated) );
8227 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %g and %g and constant %g.\n",
8231 cliquetable, branchcand, eventqueue, eventfilter,
var, tmpvars[0], 1.0, -tmpscalars[0], tmpconstant,
8232 infeasible, aggregated) );
8250 for( v = 0; v < ntmpvars; ++v )
8277 nlocksdown[
i] =
var->nlocksdown[
i];
8278 nlocksup[
i] =
var->nlocksup[
i];
8280 var->nlocksdown[
i] = 0;
8281 var->nlocksup[
i] = 0;
8285 for( v = 0; v < ntmpvars; ++v )
8292 var->data.multaggr.constant = tmpconstant;
8293 var->data.multaggr.nvars = ntmpvars;
8294 var->data.multaggr.varssize = ntmpvars;
8308 branchfactor =
var->branchfactor;
8309 branchpriority =
var->branchpriority;
8312 for( v = 0; v < ntmpvars; ++v )
8316 branchfactor =
MAX(tmpvars[v]->branchfactor, branchfactor);
8317 branchpriority =
MAX(tmpvars[v]->branchpriority, branchpriority);
8322 for( v = 0; v < ntmpvars; ++v )
8328 if( tmpscalars[v] >= 0.0 )
8341 if(
var->probindex != -1 )
8353 SCIP_CALL(
SCIPvarAddObj(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, eventfilter,
obj) );
8376 SCIPerrorMessage(
"cannot multi-aggregate a multiple aggregated variable again\n");
8389 for( v = 0; v < naggvars; ++v )
8393 SCIP_CALL(
SCIPvarMultiaggregate(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
8394 cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars,
8395 var->data.negate.constant - constant, infeasible, aggregated) );
8398 for( v = 0; v < naggvars; ++v )
8408 if( *infeasible || *aggregated )
8452 int tmprequiredsize;
8467 *infeasible =
FALSE;
8468 *aggregated =
FALSE;
8478 if(
var->data.original.transvar ==
NULL )
8480 SCIPerrorMessage(
"cannot multi-aggregate an untransformed original variable\n");
8484 reopt, lpexact, cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars, constant, infeasible, aggregated) );
8491 ntmpvars = naggvars;
8492 tmpvarssize = naggvars;
8499 if( tmprequiredsize > tmpvarssize )
8503 tmpvarssize = tmprequiredsize;
8505 assert( tmprequiredsize <= tmpvarssize );
8513 for( v = ntmpvars - 1; v >= 0; --v )
8518 if( tmpvars[v]->index ==
var->index )
8521 tmpvars[v] = tmpvars[ntmpvars - 1];
8534 SCIPsetDebugMsg(
set,
"Possible multi-aggregation was completely resolved and detected to be redundant.\n");
8539 SCIPsetDebugMsg(
set,
"Multi-aggregation was completely resolved and led to infeasibility.\n");
8544 else if( ntmpvars == 1 )
8553 SCIP_CALL(
SCIPvarFixExact(tmpvars[0], blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp,
8554 branchcand, eventqueue, eventfilter, cliquetable, tmpval, infeasible, aggregated) );
8557 else if( ntmpvars == 2 )
8562 SCIPrationalDebugMessage(
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %q and %q and constant %q.\n",
8566 cliquetable, branchcand, eventqueue, eventfilter, tmpvars[0], tmpvars[1], tmpscalars[0],
8567 tmpscalars[1], tmpconstant, infeasible, aggregated) );
8583 for( v = ntmpvars - 1; v >= 0; --v )
8591 SCIP_CALL(
SCIPvarFixExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp, branchcand,
8592 eventqueue, eventfilter, cliquetable, tmpconstant, infeasible, aggregated) );
8601 SCIPrationalDebugMessage(
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %f and %q and constant %q.\n",
8605 cliquetable, branchcand, eventqueue, eventfilter,
var, tmpvars[0], tmpval, tmpscalars[0], tmpconstant,
8606 infeasible, aggregated) );
8649 nlocksdown[
i] =
var->nlocksdown[
i];
8650 nlocksup[
i] =
var->nlocksup[
i];
8652 var->nlocksdown[
i] = 0;
8653 var->nlocksup[
i] = 0;
8662 for(
i = 0;
i < ntmpvars; ++
i )
8666 var->data.multaggr.nvars = ntmpvars;
8667 var->data.multaggr.varssize = ntmpvars;
8681 branchfactor =
var->branchfactor;
8682 branchpriority =
var->branchpriority;
8685 for( v = 0; v < ntmpvars; ++v )
8689 branchfactor =
MAX(tmpvars[v]->branchfactor, branchfactor);
8690 branchpriority =
MAX(tmpvars[v]->branchpriority, branchpriority);
8695 for( v = 0; v < ntmpvars; ++v )
8714 if(
var->probindex != -1 )
8726 SCIP_CALL(
SCIPvarAddObjExact(
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact->
fplp, eventqueue, eventfilter,
obj) );
8748 SCIPerrorMessage(
"cannot multi-aggregate a multiple aggregated variable again\n");
8761 for( v = 0; v < naggvars; ++v )
8767 SCIP_CALL(
SCIPvarMultiaggregateExact(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lpexact,
8768 cliquetable, branchcand, eventqueue, eventfilter, naggvars, aggvars,
scalars,
8769 tmpval, infeasible, aggregated) );
8772 for( v = 0; v < naggvars; ++v )
9014 (*negvar)->data.negate.constant = 1.0;
9016 (*negvar)->data.negate.constant =
var->glbdom.lb +
var->glbdom.ub;
9025 (*negvar)->glbdom.lb = (*negvar)->data.negate.constant -
var->glbdom.ub;
9026 (*negvar)->glbdom.ub = (*negvar)->data.negate.constant -
var->glbdom.lb;
9027 (*negvar)->locdom.lb = (*negvar)->data.negate.constant -
var->locdom.ub;
9028 (*negvar)->locdom.ub = (*negvar)->data.negate.constant -
var->locdom.lb;
9034 var->negatedvar = *negvar;
9042 (*negvar)->branchfactor =
var->branchfactor;
9043 (*negvar)->branchpriority =
var->branchpriority;
9047 (*negvar)->donotaggr =
var->donotaggr;
9048 (*negvar)->donotmultaggr =
var->donotmultaggr;
9051 (*negvar)->lazylb = (*negvar)->data.negate.constant -
var->lazyub;
9052 (*negvar)->lazyub = (*negvar)->data.negate.constant -
var->lazylb;
9056 assert((*negvar)->nuses == 1);
9061 *negvar =
var->negatedvar;
9078 var->probindex = probindex;
9082 var->data.col->var_probindex = probindex;
9110 var->name = (
char*)name;
9145 else if( !keepimplics )
9191 SCIPerrorMessage(
"cannot mark a multi-aggregated variable to not be aggregated.\n");
9227 SCIPerrorMessage(
"cannot mark a multi-aggregated variable to not be multi-aggregated.\n");
9259 if(
var->probindex >= 0 )
9261 SCIPerrorMessage(
"cannot change type of variable already in the problem\n");
9275 var->vartype = vartype;
9288 var->negatedvar->vartype = vartype;
9318 if(
var->probindex >= 0 )
9320 SCIPerrorMessage(
"cannot change type of variable already in the problem\n");
9325 var->varimpltype = impltype;
9335 var->negatedvar->varimpltype = impltype;
9443 if(
var->data.original.transvar !=
NULL )
9481 SCIPerrorMessage(
"cannot change objective value of a fixed, aggregated, multi-aggregated, or negated variable\n");
9512 if( !
set->exact_enable )
9529 if(
var->data.original.transvar !=
NULL )
9543 var->obj = newobjreal;
9544 var->unchangedobj = newobjreal;
9552 var->obj = newobjreal;
9556 var->unchangedobj = newobjreal;
9573 SCIPerrorMessage(
"cannot change objective value of a fixed, aggregated, multi-aggregated, or negated variable\n");
9620 if(
var->data.original.transvar !=
NULL )
9629 var->unchangedobj += addobj;
9642 var->unchangedobj += addobj;
9659 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9666 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9668 lp, eventqueue, eventfilter,
var->data.aggregate.scalar * addobj) );
9675 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9676 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
9679 reopt, lp, eventqueue, eventfilter,
var->data.multaggr.scalars[
i] * addobj) );
9689 SCIP_CALL(
SCIPprimalUpdateObjoffset(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9690 SCIP_CALL(
SCIPvarAddObj(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
9691 eventqueue, eventfilter, -addobj) );
9742 if(
var->data.original.transvar !=
NULL )
9746 reopt, lp, eventqueue, eventfilter, tmpobj) );
9754 var->unchangedobj =
var->obj;
9761 oldobjreal =
var->obj;
9769 var->unchangedobj =
var->obj;
9786 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9793 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9798 lp, eventqueue, eventfilter, tmpobj) );
9808 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9810 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
9814 reopt, lp, eventqueue, eventfilter, multaggrobj) );
9827 SCIP_CALL(
SCIPprimalUpdateObjoffsetExact(primal, blkmem,
set, stat, eventqueue, eventfilter, transprob, origprob, tree, reopt, lp) );
9830 SCIP_CALL(
SCIPvarAddObjExact(
var->negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
9831 eventqueue, eventfilter, tmpobj) );
9890 SCIPerrorMessage(
"cannot change diving objective value of a multi-aggregated variable\n");
10055 var->name,
var->data.original.origdom.lb, newbound);
10061 var->data.original.origdom.lb = newbound;
10070 for(
i = 0;
i <
var->nparentvars; ++
i )
10074 parentvar =
var->parentvars[
i];
10116 var->name,
var->exactdata->origdom.lb, newbound);
10139 for(
i = 0;
i <
var->nparentvars; ++
i )
10143 parentvar =
var->parentvars[
i];
10188 var->name,
var->data.original.origdom.ub, newbound);
10194 var->data.original.origdom.ub = newbound;
10203 for(
i = 0;
i <
var->nparentvars; ++
i )
10207 parentvar =
var->parentvars[
i];
10248 var->name,
var->exactdata->origdom.ub, newbound);
10271 for(
i = 0;
i <
var->nparentvars; ++
i )
10275 parentvar =
var->parentvars[
i];
10308 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || (newbound != oldbound && newbound * oldbound <= 0.0));
10321 SCIPsetDebugMsg(
set,
"issue GLBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
10385 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || (newbound != oldbound && newbound * oldbound <= 0.0));
10398 SCIPsetDebugMsg(
set,
"issue GUBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
10469 SCIPsetDebugMsg(
set,
"issue GHOLEADDED event for variable <%s>: (%.15g,%.15g)\n",
var->name, left, right);
10554 newbound =
var->glbdom.ub;
10560 SCIPsetDebugMsg(
set,
"process changing global lower bound of <%s> from %f to %f\n",
var->name,
var->glbdom.lb, newbound);
10562 if(
SCIPsetIsEQ(
set, newbound,
var->glbdom.lb) && !(newbound !=
var->glbdom.lb && newbound *
var->glbdom.lb <= 0.0) )
10569 oldbound =
var->glbdom.lb;
10571 var->glbdom.lb = newbound;
10589 for(
i = 0;
i <
var->nlbchginfos; ++
i )
10593 if(
var->lbchginfos[
i].oldbound <
var->glbdom.lb )
10595 SCIPsetDebugMsg(
set,
" -> adjust lower bound change <%s>: %g -> %g due to new global lower bound %g\n",
10597 var->lbchginfos[
i].oldbound =
var->glbdom.lb;
10601 var->lbchginfos[
i].newbound =
var->glbdom.lb;
10603 var->lbchginfos[
i].redundant =
TRUE;
10627 for(
i = 0;
i <
var->nparentvars; ++
i )
10629 parentvar =
var->parentvars[
i];
10642 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
10661 parentnewbound = newbound;
10675 parentnewbound = -newbound;
10733 newbound =
var->glbdom.lb;
10739 SCIPsetDebugMsg(
set,
"process changing global upper bound of <%s> from %f to %f\n",
var->name,
var->glbdom.ub, newbound);
10741 if(
SCIPsetIsEQ(
set, newbound,
var->glbdom.ub) && !(newbound !=
var->glbdom.ub && newbound *
var->glbdom.ub <= 0.0) )
10748 oldbound =
var->glbdom.ub;
10750 var->glbdom.ub = newbound;
10769 for(
i = 0;
i <
var->nubchginfos; ++
i )
10772 if(
var->ubchginfos[
i].oldbound >
var->glbdom.ub )
10774 SCIPsetDebugMsg(
set,
" -> adjust upper bound change <%s>: %g -> %g due to new global upper bound %g\n",
10776 var->ubchginfos[
i].oldbound =
var->glbdom.ub;
10780 var->ubchginfos[
i].newbound =
var->glbdom.ub;
10782 var->ubchginfos[
i].redundant =
TRUE;
10806 for(
i = 0;
i <
var->nparentvars; ++
i )
10808 parentvar =
var->parentvars[
i];
10821 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
10839 parentnewbound = newbound;
10852 parentnewbound = -newbound;
10955 if(
var->eventfilter !=
NULL )
10961 for(
i = 0;
i <
var->nparentvars; ++
i )
10963 parentvar =
var->parentvars[
i];
10976 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
11103 for(
i = 0;
i <
var->nparentvars; ++
i )
11105 parentvar =
var->parentvars[
i];
11118 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
11212 newbound =
MIN(newbound,
var->glbdom.ub);
11223 if(
SCIPsetIsEQ(
set,
var->glbdom.lb, newbound) && !(newbound !=
var->glbdom.lb && newbound *
var->glbdom.lb <= 0.0) )
11230 if(
var->data.original.transvar !=
NULL )
11233 cliquetable, newbound) );
11269 if(
var->data.aggregate.scalar > 0 )
11274 var->data.aggregate.var->glbdom.lb *
var->data.aggregate.scalar +
var->data.aggregate.constant));
11276 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
11278 childnewbound = newbound;
11287 var->data.aggregate.var->glbdom.ub *
var->data.aggregate.scalar +
var->data.aggregate.constant));
11289 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
11291 childnewbound = -newbound;
11299 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11307 var->data.negate.constant - newbound) );
11372 if(
var->data.original.transvar !=
NULL )
11448 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11509 newbound =
MAX(newbound,
var->glbdom.lb);
11520 if(
SCIPsetIsEQ(
set,
var->glbdom.ub, newbound) && !(newbound !=
var->glbdom.ub && newbound *
var->glbdom.ub <= 0.0) )
11527 if(
var->data.original.transvar !=
NULL )
11566 if(
var->data.aggregate.scalar > 0 )
11571 var->data.aggregate.var->glbdom.ub *
var->data.aggregate.scalar +
var->data.aggregate.constant));
11573 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
11575 childnewbound = newbound;
11584 var->data.aggregate.var->glbdom.lb *
var->data.aggregate.scalar +
var->data.aggregate.constant));
11586 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
11588 childnewbound = -newbound;
11596 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11604 var->data.negate.constant - newbound) );
11669 if(
var->data.original.transvar !=
NULL )
11746 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
11788 var->lazylb = lazylb;
11811 var->lazyub = lazyub;
11833 switch( boundtype )
11862 switch( boundtype )
11890 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || newbound ==
var->glbdom.lb || (newbound != oldbound && newbound * oldbound <= 0.0));
11903 SCIPsetDebugMsg(
set,
"issue LBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
11966 assert(!
SCIPsetIsEQ(
set, oldbound, newbound) || newbound ==
var->glbdom.ub || (newbound != oldbound && newbound * oldbound <= 0.0));
11979 SCIPsetDebugMsg(
set,
"issue UBCHANGED event for variable <%s>: %g -> %g\n",
var->name, oldbound, newbound);
12075 newbound =
MIN(newbound,
var->locdom.ub);
12078 newbound =
MAX(newbound,
var->glbdom.lb);
12082 SCIPsetDebugMsg(
set,
"process changing lower bound of <%s> from %g to %g\n",
var->name,
var->locdom.lb, newbound);
12085 newbound =
var->glbdom.lb;
12086 else if(
SCIPsetIsEQ(
set, newbound,
var->locdom.lb) && !(newbound !=
var->locdom.lb && newbound *
var->locdom.lb <= 0.0) )
12090 oldbound =
var->locdom.lb;
12092 var->locdom.lb = newbound;
12094 if(
set->exact_enable )
12123 for(
i = 0;
i <
var->nparentvars; ++
i )
12125 parentvar =
var->parentvars[
i];
12138 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12147 if (!
set->exact_enable)
12173 if( parentnewbound > parentvar->
glbdom.
ub )
12177 parentnewbound = parentvar->
glbdom.
ub;
12181 parentnewbound = newbound;
12198 if( parentnewbound < parentvar->glbdom.lb )
12202 parentnewbound = parentvar->
glbdom.
lb;
12206 parentnewbound = -newbound;
12262 newbound =
MAX(newbound,
var->locdom.lb);
12265 newbound =
MIN(newbound,
var->glbdom.ub);
12269 SCIPsetDebugMsg(
set,
"process changing upper bound of <%s> from %g to %g\n",
var->name,
var->locdom.ub, newbound);
12272 newbound =
var->glbdom.ub;
12273 else if(
SCIPsetIsEQ(
set, newbound,
var->locdom.ub) && !(newbound !=
var->locdom.ub && newbound *
var->locdom.ub <= 0.0) )
12277 oldbound =
var->locdom.ub;
12279 var->locdom.ub = newbound;
12281 if(
set->exact_enable )
12310 for(
i = 0;
i <
var->nparentvars; ++
i )
12312 parentvar =
var->parentvars[
i];
12325 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12334 if( !
set->exact_enable )
12358 if( parentnewbound < parentvar->glbdom.lb )
12362 parentnewbound = parentvar->
glbdom.
lb;
12366 parentnewbound = newbound;
12382 if( parentnewbound > parentvar->
glbdom.
ub )
12386 parentnewbound = parentvar->
glbdom.
ub;
12390 parentnewbound = -newbound;
12497 for(
i = 0;
i <
var->nparentvars; ++
i )
12499 parentvar =
var->parentvars[
i];
12512 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12639 for(
i = 0;
i <
var->nparentvars; ++
i )
12641 parentvar =
var->parentvars[
i];
12654 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12745 newbound =
MIN(newbound,
var->locdom.ub);
12752 && !(newbound !=
var->locdom.lb && newbound *
var->locdom.lb <= 0.0) )
12762 if(
var->data.original.transvar !=
NULL )
12793 var->data.aggregate.var->locdom.lb *
var->data.aggregate.scalar +
var->data.aggregate.constant));
12795 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
12797 childnewbound = newbound;
12806 var->data.aggregate.var->locdom.ub *
var->data.aggregate.scalar +
var->data.aggregate.constant));
12808 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
12810 childnewbound = -newbound;
12823 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
12831 var->data.negate.constant - newbound) );
12888 if(
var->data.original.transvar !=
NULL )
12959 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13013 newbound =
MAX(newbound,
var->locdom.lb);
13020 && !(newbound !=
var->locdom.ub && newbound *
var->locdom.ub <= 0.0) )
13030 if(
var->data.original.transvar !=
NULL )
13060 var->data.aggregate.var->locdom.ub *
var->data.aggregate.scalar +
var->data.aggregate.constant));
13062 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13064 childnewbound = newbound;
13073 var->data.aggregate.var->locdom.lb *
var->data.aggregate.scalar +
var->data.aggregate.constant));
13075 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13077 childnewbound = -newbound;
13090 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13098 var->data.negate.constant - newbound) );
13155 if(
var->data.original.transvar !=
NULL )
13225 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13262 switch( boundtype )
13307 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13322 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13324 childnewbound = newbound;
13333 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13335 childnewbound = -newbound;
13346 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13394 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13406 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable\n");
13454 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13469 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13471 childnewbound = newbound;
13480 childnewbound = (newbound -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
13482 childnewbound = -newbound;
13493 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13541 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
13553 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
13593 lb =
var->data.multaggr.constant;
13594 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13596 aggrvar =
var->data.multaggr.vars[
i];
13597 if(
var->data.multaggr.scalars[
i] > 0.0 )
13606 lb +=
var->data.multaggr.scalars[
i] * bnd;
13617 lb +=
var->data.multaggr.scalars[
i] * bnd;
13662 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13664 aggrvar =
var->data.multaggr.vars[
i];
13705 if( posinf && !neginf )
13741 ub =
var->data.multaggr.constant;
13742 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13744 aggrvar =
var->data.multaggr.vars[
i];
13745 if(
var->data.multaggr.scalars[
i] > 0.0 )
13754 ub +=
var->data.multaggr.scalars[
i] * bnd;
13765 ub +=
var->data.multaggr.scalars[
i] * bnd;
13810 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13812 aggrvar =
var->data.multaggr.vars[
i];
13853 if( !posinf && neginf )
13889 lb =
var->data.multaggr.constant;
13890 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13892 aggrvar =
var->data.multaggr.vars[
i];
13893 if(
var->data.multaggr.scalars[
i] > 0.0 )
13902 lb +=
var->data.multaggr.scalars[
i] * bnd;
13913 lb +=
var->data.multaggr.scalars[
i] * bnd;
13955 ub =
var->data.multaggr.constant;
13956 for(
i =
var->data.multaggr.nvars-1 ;
i >= 0 ; --
i )
13958 aggrvar =
var->data.multaggr.vars[
i];
13959 if(
var->data.multaggr.scalars[
i] > 0.0 )
13968 ub +=
var->data.multaggr.scalars[
i] * bnd;
13979 ub +=
var->data.multaggr.scalars[
i] * bnd;
14090 newlb =
var->glbdom.lb;
14091 newub =
var->glbdom.ub;
14102 if(
var->eventfilter !=
NULL )
14108 for(
i = 0;
i <
var->nparentvars; ++
i )
14114 parentvar =
var->parentvars[
i];
14120 parentnewleft = left;
14121 parentnewright = right;
14128 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
14170 parentnewleft, parentnewright, &localadded) );
14214 if(
var->data.original.transvar !=
NULL )
14217 left, right, added) );
14254 childnewleft = (left -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14255 childnewright = (right -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14259 childnewright = (left -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14260 childnewleft = (right -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14268 childnewleft, childnewright, added) );
14280 childnewright = -left +
var->data.negate.constant;
14281 childnewleft = -right +
var->data.negate.constant;
14284 childnewleft, childnewright, added) );
14336 newlb =
var->locdom.lb;
14337 newub =
var->locdom.ub;
14346#ifdef SCIP_DISABLED_CODE
14355 for(
i = 0;
i <
var->nparentvars; ++
i )
14361 parentvar =
var->parentvars[
i];
14367 parentnewleft = left;
14368 parentnewright = right;
14375 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
14417 parentnewleft, parentnewright, &localadded) );
14464 if(
var->data.original.transvar !=
NULL )
14467 left, right, added) );
14493 childnewleft = (left -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14494 childnewright = (right -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14498 childnewright = (left -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14499 childnewleft = (right -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
14507 childnewleft, childnewright, added) );
14511 SCIPerrorMessage(
"cannot add domain hole to a multi-aggregated variable.\n");
14519 childnewright = -left +
var->data.negate.constant;
14520 childnewleft = -right +
var->data.negate.constant;
14680 var->closestvblpcount = -1;
14749 *infeasible =
FALSE;
14758 *infeasible =
TRUE;
14772 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, implvar, implbound,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
14779 if( nbdchgs !=
NULL )
14788 *infeasible =
TRUE;
14802 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, implvar, implbound,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
14809 if( nbdchgs !=
NULL )
14862 *infeasible =
FALSE;
14866 checkImplic(
set, implvar, impltype, implbound, &redundant, &conflict);
14867 assert(!redundant || !conflict);
14871 if(
var == implvar )
14896 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
14897 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
14919 vals[0] = varfixing;
14923 SCIP_CALL(
SCIPcliquetableAdd(cliquetable, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
14924 eventqueue, eventfilter,
vars, vals, 2,
FALSE, &conflict, nbdchgs) );
14936 isshortcut, &conflict, added) );
14939 assert(!conflict || !(*added));
14958 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 0.0,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
14963 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 1.0,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
14977 if( nbdchgs !=
NULL )
15015 varfixing ? implbound - ub : ub - implbound, varfixing ? ub : implbound) );
15023 varfixing ? implbound - lb : lb - implbound, varfixing ? lb : implbound) );
15060 *infeasible =
FALSE;
15077 while (
i >= 0 && !(*infeasible) )
15081 assert(implvars[
i] != implvar);
15088 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
15089 eventqueue, eventfilter, varfixing, implvars[
i], impltypes[
i], implbounds[
i],
TRUE, infeasible, nbdchgs, &added) );
15092 i =
MIN(
i, nimpls);
15140 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
15141 eventqueue, eventfilter, varfixing, implvar, impltype, implbound,
FALSE, infeasible, nbdchgs, &added) );
15143 if( *infeasible ||
var == implvar || !transitive || !added )
15157 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, implvarfixing, infeasible, nbdchgs) );
15160 if( !(*infeasible) )
15163 cliquetable, branchcand, eventqueue, eventfilter, !implvarfixing,
var, !varfixing, infeasible, nbdchgs) );
15189 while (
i >= 0 && !(*infeasible) )
15191 assert(vlbvars[
i] != implvar);
15216 vbimplbound = (implbound - vlbconstants[
i])/vlbcoefs[
i];
15217 if( vlbcoefs[
i] >= 0.0 )
15220 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15222 infeasible, nbdchgs, &added) );
15227 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15229 infeasible, nbdchgs, &added) );
15232 i =
MIN(
i, nvlbvars);
15259 while (
i >= 0 && !(*infeasible) )
15261 assert(vubvars[
i] != implvar);
15286 vbimplbound = (implbound - vubconstants[
i])/vubcoefs[
i];
15287 if( vubcoefs[
i] >= 0.0 )
15290 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15292 infeasible, nbdchgs, &added) );
15297 SCIP_CALL(
varAddImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15299 infeasible, nbdchgs, &added) );
15302 i =
MIN(
i, nvubvars);
15346 *infeasible =
FALSE;
15347 if( nbdchgs !=
NULL )
15355 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef, vlbconstant, transitive, infeasible, nbdchgs) );
15363 SCIPsetDebugMsg(
set,
" -> transformed to variable lower bound <%s> >= %g<%s> + %g\n",
15367 if(
var == vlbvar )
15373 *infeasible =
TRUE;
15389 *infeasible =
TRUE;
15406 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15413 if( nbdchgs !=
NULL )
15428 *infeasible =
TRUE;
15445 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15452 if( nbdchgs !=
NULL )
15466 *infeasible =
TRUE;
15480 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, vlbconstant,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15487 if( nbdchgs !=
NULL )
15512 if( vlbcoef >= 0.0 )
15522 *infeasible =
TRUE;
15539 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vlbvar, newzub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15547 if( nbdchgs !=
NULL )
15550 maxvlb = vlbcoef * zub + vlbconstant;
15552 minvlb = vlbcoef * zlb + vlbconstant;
15557 maxvlb = vlbcoef * zub + vlbconstant;
15559 minvlb = vlbcoef * zlb + vlbconstant;
15572 *infeasible =
TRUE;
15589 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vlbvar, newzlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15597 if( nbdchgs !=
NULL )
15600 maxvlb = vlbcoef * zlb + vlbconstant;
15602 minvlb = vlbcoef * zub + vlbconstant;
15607 maxvlb = vlbcoef * zlb + vlbconstant;
15609 minvlb = vlbcoef * zub + vlbconstant;
15612 if( maxvlb < minvlb )
15622 *infeasible =
TRUE;
15639 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, minvlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15647 if( nbdchgs !=
NULL )
15661 if( vlbcoef >= 0.0 )
15663 vlbcoef = maxvlb - minvlb;
15664 vlbconstant = minvlb;
15668 vlbcoef = minvlb - maxvlb;
15669 vlbconstant = maxvlb;
15689 cliquetable, branchcand, eventqueue, eventfilter, (vlbcoef >= 0.0),
var,
SCIP_BOUNDTYPE_LOWER, maxvlb, transitive,
15690 infeasible, nbdchgs) );
15699 implbound = -vlbconstant/vlbcoef;
15711 implbound, transitive, infeasible, nbdchgs) );
15731 if(
var->data.aggregate.var == vlbvar &&
SCIPsetIsEQ(
set,
var->data.aggregate.scalar, vlbcoef) )
15734 *infeasible =
TRUE;
15740 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef/
var->data.aggregate.scalar,
15741 (vlbconstant -
var->data.aggregate.constant)/
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
15747 cliquetable, branchcand, eventqueue, eventfilter, vlbvar, vlbcoef/
var->data.aggregate.scalar,
15748 (vlbconstant -
var->data.aggregate.constant)/
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
15766 SCIP_CALL(
SCIPvarAddVub(
var->negatedvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
15767 branchcand, eventqueue, eventfilter, vlbvar, -vlbcoef,
var->data.negate.constant - vlbconstant, transitive, infeasible,
15813 *infeasible =
FALSE;
15814 if( nbdchgs !=
NULL )
15822 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef, vubconstant, transitive, infeasible, nbdchgs) );
15830 SCIPsetDebugMsg(
set,
" -> transformed to variable upper bound <%s> <= %g<%s> + %g\n",
15834 if(
var == vubvar )
15840 *infeasible =
TRUE;
15856 *infeasible =
TRUE;
15873 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
15880 if( nbdchgs !=
NULL )
15895 *infeasible =
TRUE;
15912 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, newub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15919 if( nbdchgs !=
NULL )
15933 *infeasible =
TRUE;
15947 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, vubconstant,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
15954 if( nbdchgs !=
NULL )
15979 if( vubcoef >= 0.0 )
15989 *infeasible =
TRUE;
16006 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vubvar, newzlb,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
16014 if( nbdchgs !=
NULL )
16017 minvub = vubcoef * zlb + vubconstant;
16019 maxvub = vubcoef * zub + vubconstant;
16024 maxvub = vubcoef * zub + vubconstant;
16026 minvub = vubcoef * zlb + vubconstant;
16039 *infeasible =
TRUE;
16056 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable, vubvar, newzub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16064 if( nbdchgs !=
NULL )
16067 minvub = vubcoef * zub + vubconstant;
16069 maxvub = vubcoef * zlb + vubconstant;
16074 minvub = vubcoef * zub + vubconstant;
16076 maxvub = vubcoef * zlb + vubconstant;
16079 if( minvub > maxvub )
16089 *infeasible =
TRUE;
16106 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, maxvub,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16114 if( nbdchgs !=
NULL )
16128 if( vubcoef >= 0.0 )
16130 vubcoef = maxvub - minvub;
16131 vubconstant = minvub;
16135 vubcoef = minvub - maxvub;
16136 vubconstant = maxvub;
16156 cliquetable, branchcand, eventqueue, eventfilter, (vubcoef < 0.0),
var,
SCIP_BOUNDTYPE_UPPER, minvub, transitive,
16157 infeasible, nbdchgs) );
16167 (1.0-vubconstant)/vubcoef, transitive, infeasible, nbdchgs) );
16187 if(
var->data.aggregate.var == vubvar &&
SCIPsetIsEQ(
set,
var->data.aggregate.scalar, vubcoef) )
16190 *infeasible =
TRUE;
16196 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef/
var->data.aggregate.scalar,
16197 (vubconstant -
var->data.aggregate.constant)/
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
16203 cliquetable, branchcand, eventqueue, eventfilter, vubvar, vubcoef/
var->data.aggregate.scalar,
16204 (vubconstant -
var->data.aggregate.constant)/
var->data.aggregate.scalar, transitive, infeasible, nbdchgs) );
16222 SCIP_CALL(
SCIPvarAddVlb(
var->negatedvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16223 branchcand, eventqueue, eventfilter, vubvar, -vubcoef,
var->data.negate.constant - vubconstant, transitive, infeasible,
16270 *infeasible =
FALSE;
16271 if( nbdchgs !=
NULL )
16279 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible,
16293 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
16294 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
16303 SCIP_CALL(
varAddTransitiveImplic(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16304 branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible, nbdchgs) );
16313 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
16314 eventfilter, cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
16334 if(
var->data.aggregate.scalar > 0 )
16337 cliquetable, branchcand, eventqueue, eventfilter, varfixing, implvar, impltype, implbound, transitive, infeasible,
16343 cliquetable, branchcand, eventqueue, eventfilter, !varfixing, implvar, impltype, implbound, transitive, infeasible,
16367 cliquetable, branchcand, eventqueue, eventfilter, !varfixing, implvar, impltype, implbound, transitive, infeasible, nbdchgs) );
16375 SCIP_CALL(
SCIPvarAddImplic(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16378 infeasible, nbdchgs) );
16393 cliquetable, branchcand, eventqueue, eventfilter, implvar, (impltype ==
SCIP_BOUNDTYPE_UPPER) ? 1.0 : -1.0,
16402 cliquetable, branchcand, eventqueue, eventfilter, implvar, (impltype ==
SCIP_BOUNDTYPE_UPPER) ? -1.0 : 1.0,
16412 SCIP_CALL(
SCIPvarAddVub(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16413 branchcand, eventqueue, eventfilter,
var->negatedvar, (varfixing) ? 1.0 : -1.0,
16414 (varfixing) ? 0.0 : 1.0, transitive, infeasible, nbdchgs) );
16421 SCIP_CALL(
SCIPvarAddVlb(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
16422 branchcand, eventqueue, eventfilter,
var->negatedvar, (varfixing) ? -1.0 : 1.0, (varfixing) ? 1.0 : 0.0,
16423 transitive, infeasible, nbdchgs) );
16500 if( bounds ==
NULL )
16503 if( lowerpos >= 0 )
16504 *lb = bounds[lowerpos];
16506 if( upperpos >= 0 )
16507 *ub = bounds[upperpos];
16536 *infeasible =
FALSE;
16538 if( value ==
FALSE )
16540 if(
var->glbdom.lb > 0.5 )
16541 *infeasible =
TRUE;
16542 else if(
var->glbdom.ub > 0.5 )
16554 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 0.0,
SCIP_BOUNDTYPE_UPPER,
FALSE) );
16561 if( nbdchgs !=
NULL )
16567 if(
var->glbdom.ub < 0.5 )
16568 *infeasible =
TRUE;
16569 else if(
var->glbdom.lb < 0.5 )
16581 tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,
var, 1.0,
SCIP_BOUNDTYPE_LOWER,
FALSE) );
16588 if( nbdchgs !=
NULL )
16627 *infeasible =
FALSE;
16655 SCIP_CALL(
SCIPvarFixBinary(
var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
16656 eventqueue, eventfilter, cliquetable, !value, infeasible, nbdchgs) );
16662 if( oppositeentry )
16672 for(
i = 0;
i <
nvars && !(*infeasible); ++
i )
16677 SCIP_CALL(
SCIPvarFixBinary(
vars[
i], blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
16678 eventqueue, eventfilter, cliquetable, !values[
i], infeasible, nbdchgs) );
16706 for( v =
nvars - 1; v >= 0; --v )
16844 branchfactor =
MAX(branchfactor,
eps);
16846 SCIPsetDebugMsg(
set,
"process changing branch factor of <%s> from %f to %f\n",
var->name,
var->branchfactor, branchfactor);
16852 var->branchfactor = branchfactor;
16855 for(
i = 0;
i <
var->nparentvars; ++
i )
16857 parentvar =
var->parentvars[
i];
16870 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
16903 assert(branchfactor >= 0.0);
16905 SCIPdebugMessage(
"changing branch factor of <%s> from %g to %g\n",
var->name,
var->branchfactor, branchfactor);
16914 if(
var->data.original.transvar !=
NULL )
16921 var->branchfactor = branchfactor;
16939 for( v = 0; v <
var->data.multaggr.nvars; ++v )
16973 SCIPdebugMessage(
"process changing branch priority of <%s> from %d to %d\n",
16974 var->name,
var->branchpriority, branchpriority);
16976 if( branchpriority ==
var->branchpriority )
16980 var->branchpriority = branchpriority;
16983 for(
i = 0;
i <
var->nparentvars; ++
i )
16985 parentvar =
var->parentvars[
i];
16998 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
17028 SCIPdebugMessage(
"changing branch priority of <%s> from %d to %d\n",
var->name,
var->branchpriority, branchpriority);
17030 if(
var->branchpriority == branchpriority )
17037 if(
var->data.original.transvar !=
NULL )
17042 var->branchpriority = branchpriority;
17059 for( v = 0; v <
var->data.multaggr.nvars; ++v )
17093 SCIPdebugMessage(
"process changing branch direction of <%s> from %u to %d\n",
17094 var->name,
var->branchdirection, branchdirection);
17100 var->branchdirection = branchdirection;
17103 for(
i = 0;
i <
var->nparentvars; ++
i )
17105 parentvar =
var->parentvars[
i];
17118 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
17159 SCIPdebugMessage(
"changing branch direction of <%s> from %u to %d\n",
var->name,
var->branchdirection, branchdirection);
17168 if(
var->data.original.transvar !=
NULL )
17173 var->branchdirection = branchdirection;
17185 if(
var->data.aggregate.scalar > 0.0 )
17197 for( v = 0; v <
var->data.multaggr.nvars; ++v )
17203 if(
var->data.multaggr.scalars[v] > 0.0 )
17310 else if( obj1 > obj2 )
17352 int activevarssize;
17376 activevarssize = *
nvars;
17378 tmpvarssize = *
nvars;
17385 noldtmpvars = ntmpvars;
17388 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17389 for( v = ntmpvars - 1; v > 0; --v )
17395 tmpvars[v] = tmpvars[ntmpvars];
17399 if( noldtmpvars > ntmpvars )
17400 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17403 while( ntmpvars >= 1 )
17406 var = tmpvars[ntmpvars];
17412 if(
var->data.original.transvar ==
NULL )
17414 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17418 tmpvars[ntmpvars] =
var->data.original.transvar;
17423 tmpvars[ntmpvars] =
var->data.aggregate.var;
17428 tmpvars[ntmpvars] =
var->negatedvar;
17435 if( nactivevars >= activevarssize )
17437 activevarssize *= 2;
17439 assert(nactivevars < activevarssize);
17441 activevars[nactivevars] =
var;
17447 nmultvars =
var->data.multaggr.nvars;
17448 multvars =
var->data.multaggr.vars;
17451 if( nmultvars + ntmpvars > tmpvarssize )
17453 while( nmultvars + ntmpvars > tmpvarssize )
17456 assert(nmultvars + ntmpvars <= tmpvarssize);
17465 ntmpvars += nmultvars;
17466 noldtmpvars = ntmpvars;
17469 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17470 for( v = ntmpvars - 1; v > 0; --v )
17476 tmpvars[v] = tmpvars[ntmpvars];
17480 if( noldtmpvars > ntmpvars )
17481 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
17497 SCIPsortPtr((
void**)activevars, SCIPvarComp, nactivevars);
17500 v = nactivevars - 1;
17507 activevars[v] = activevars[nactivevars];
17511 *requiredsize = nactivevars;
17513 if( varssize >= *requiredsize )
17517 *
nvars = *requiredsize;
17539 for( v =
nvars - 1; v >= 0; --v )
17571 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17625 for( v =
nvars - 1; v >= 0; --v )
17627 var = &((*vars)[v]);
17628 negated = &((*negatedarr)[v]);
17659 orignegated = *negated;
17667 if( (*var)->data.original.transvar ==
NULL )
17669 *
var = (*var)->data.original.transvar;
17680 if ( (*var)->data.multaggr.nvars == 1 )
17682 assert( (*var)->data.multaggr.vars !=
NULL );
17683 assert( (*var)->data.multaggr.scalars !=
NULL );
17685 assert(!
EPSZ((*var)->data.multaggr.scalars[0], 1e-06));
17695 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)) )
17697 assert(
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06));
17706 if( !
EPSEQ(
REALABS((*var)->data.multaggr.scalars[0]), 1.0, 1e-06) )
17716 assert(
EPSZ((*var)->data.multaggr.constant, 1e-06) ||
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06)
17717 ||
EPSZ((*var)->data.multaggr.constant + (*var)->data.multaggr.scalars[0], 1e-06)
17718 ||
EPSEQ((*var)->data.multaggr.constant + (*var)->data.multaggr.scalars[0], 1.0, 1e-06));
17720 if( !
EPSZ((*var)->data.multaggr.constant, 1e-06) && !
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06) )
17726 assert(
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06) ||
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06));
17728 if(
EPSZ((*var)->data.multaggr.constant, 1e-06) )
17734 assert(
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06) ?
17740 assert(
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06));
17742 constant += (*negated) != orignegated ? -1.0 : 1.0;
17745 *negated = !(*negated);
17747 *
var = (*var)->data.multaggr.vars[0];
17756 assert(
EPSEQ((*var)->data.aggregate.scalar, 1.0, 1e-06) ||
EPSEQ((*var)->data.aggregate.scalar, -1.0, 1e-06));
17757 assert(
EPSLE((*var)->data.aggregate.var->glbdom.ub - (*var)->data.aggregate.var->glbdom.lb, 1.0, 1e-06));
17759 constant += (*negated) != orignegated ? -(*var)->data.aggregate.constant : (*var)->data.aggregate.constant;
17762 *negated = ((*var)->data.aggregate.scalar > 0.0) ? *negated : !(*negated);
17763 *
var = (*var)->data.aggregate.var;
17769 constant += (*negated) != orignegated ? -1.0 : 1.0;
17772 *negated = !(*negated);
17773 *
var = (*var)->negatedvar;
17787 assert(
EPSZ(constant, 1e-06) == ((*negated) == orignegated));
17812 SCIPdebugMessage(
"get probvar bound %g of type %d of variable <%s>\n", *
bound, *boundtype, (*var)->name);
17817 if( (*var)->data.original.transvar ==
NULL )
17819 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17822 *
var = (*var)->data.original.transvar;
17833 if ( (*var)->data.multaggr.nvars == 1 )
17835 assert( (*var)->data.multaggr.vars !=
NULL );
17836 assert( (*var)->data.multaggr.scalars !=
NULL );
17837 assert( (*var)->data.multaggr.scalars[0] != 0.0 );
17839 (*bound) /= (*var)->data.multaggr.scalars[0];
17840 (*bound) -= (*var)->data.multaggr.constant/(*var)->data.multaggr.scalars[0];
17841 if ( (*var)->data.multaggr.scalars[0] < 0.0 )
17848 *
var = (*var)->data.multaggr.vars[0];
17855 assert((*var)->data.aggregate.scalar != 0.0);
17857 (*bound) /= (*var)->data.aggregate.scalar;
17858 (*bound) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
17859 if( (*var)->data.aggregate.scalar < 0.0 )
17866 *
var = (*var)->data.aggregate.var;
17873 assert((*var)->negatedvar->negatedvar == *
var);
17874 (*bound) = (*var)->data.negate.constant - *
bound;
17879 *
var = (*var)->negatedvar;
17910 if( (*var)->data.original.transvar ==
NULL )
17912 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
17915 *
var = (*var)->data.original.transvar;
17926 if( (*var)->data.multaggr.nvars == 1 )
17928 assert( (*var)->data.multaggr.vars !=
NULL );
17929 assert( (*var)->data.multaggr.scalars !=
NULL );
17930 assert( (*var)->data.multaggr.scalars[0] != 0.0 );
17942 *
var = (*var)->data.multaggr.vars[0];
17949 assert((*var)->data.aggregate.scalar != 0.0);
17961 *
var = (*var)->data.aggregate.var;
17968 assert((*var)->negatedvar->negatedvar == *
var);
17975 *
var = (*var)->negatedvar;
18001 SCIPdebugMessage(
"get probvar hole (%g,%g) of variable <%s>\n", *left, *right, (*var)->name);
18006 if( (*var)->data.original.transvar ==
NULL )
18008 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18011 *
var = (*var)->data.original.transvar;
18023 assert((*var)->data.aggregate.scalar != 0.0);
18026 (*left) /= (*var)->data.aggregate.scalar;
18027 (*right) /= (*var)->data.aggregate.scalar;
18030 (*left) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
18031 (*right) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
18033 *
var = (*var)->data.aggregate.var;
18036 if( (*var)->data.aggregate.scalar < 0.0 )
18049 assert((*var)->negatedvar->negatedvar == *
var);
18052 (*left) = (*var)->data.negate.constant - (*left);
18053 (*right) = (*var)->data.negate.constant - (*right);
18055 *
var = (*var)->negatedvar;
18091 if( (*var)->data.original.transvar ==
NULL )
18093 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18096 *
var = (*var)->data.original.transvar;
18109 if( (*scalar) * (*var)->glbdom.lb > 0.0 )
18115 (*constant) += *scalar * (*var)->glbdom.lb;
18131 if ( (*var)->data.multaggr.nvars == 1 )
18134 assert((*var)->data.multaggr.scalars !=
NULL);
18135 assert((*var)->data.multaggr.vars[0] !=
NULL);
18145 if( (*scalar) * (*var)->data.multaggr.constant > 0 )
18158 (*constant) += *scalar * (*var)->data.multaggr.constant;
18160 (*scalar) *= (*var)->data.multaggr.scalars[0];
18161 *
var = (*var)->data.multaggr.vars[0];
18171 (*constant) += *scalar * (*var)->data.aggregate.constant;
18172 (*scalar) *= (*var)->data.aggregate.scalar;
18173 *
var = (*var)->data.aggregate.var;
18179 assert((*var)->negatedvar->negatedvar == *
var);
18183 (*constant) += *scalar * (*var)->data.negate.constant;
18185 *
var = (*var)->negatedvar;
18221 if( (*var)->data.original.transvar ==
NULL )
18223 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
18226 *
var = (*var)->data.original.transvar;
18252 if ( (*var)->data.multaggr.nvars == 1 )
18255 assert((*var)->data.multaggr.scalars !=
NULL);
18256 assert((*var)->data.multaggr.vars[0] !=
NULL);
18281 *
var = (*var)->data.multaggr.vars[0];
18292 *
var = (*var)->data.aggregate.var;
18297 assert((*var)->negatedvar->negatedvar == *
var);
18302 *
var = (*var)->negatedvar;
18338 if( (*var)->nparentvars == 0 )
18344 ((*var)->negatedvar->nparentvars == 0 || (*var)->negatedvar->parentvars[0] != *
var) )
18347 *constant -= (*var)->data.negate.constant * (*scalar);
18348 *
var = (*var)->negatedvar;
18376 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
18427 if( (*var)->nparentvars == 0 )
18433 ((*var)->negatedvar->nparentvars == 0 || (*var)->negatedvar->parentvars[0] != *
var) )
18437 *
var = (*var)->negatedvar;
18465 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
18508 parentvar =
var->parentvars[0];
18548 SCIPerrorMessage(
"cannot get the objective value of a multiple aggregated variable\n");
18590 return var->locdom.lb;
18599 else if(
var->data.aggregate.scalar > 0.0 )
18604 else if(
var->data.aggregate.scalar < 0.0 )
18618 SCIPerrorMessage(
"getting the bounds of a multiple aggregated variable is not implemented yet\n");
18660 return var->locdom.ub;
18669 if(
var->data.aggregate.scalar > 0.0 )
18674 else if(
var->data.aggregate.scalar < 0.0 )
18687 SCIPerrorMessage(
"cannot get the bounds of a multi-aggregated variable.\n");
18714 if(
var->data.original.transvar ==
NULL )
18727 return var->locdom.lb;
18752 return var->data.aggregate.scalar * lpsolval +
var->data.aggregate.constant;
18766 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18794 if(
var->data.original.transvar ==
NULL )
18834 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18876 return var->nlpsol;
18886 return var->data.aggregate.scalar * solval +
var->data.aggregate.constant;
18889 solval =
var->data.multaggr.constant;
18890 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18896 return var->data.negate.constant - solval;
18919 if(
var->data.original.transvar ==
NULL )
18929 return var->locdom.lb;
18946 return var->data.aggregate.scalar * pseudosolval +
var->data.aggregate.constant;
18955 pseudosol =
var->data.multaggr.constant;
18956 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
18984 if(
var->data.original.transvar ==
NULL )
18994 return var->exactdata->locdom.lb;
19071 if(
var->bestrootredcost > 0.0 )
19076 currcutoffbound = (
bound -
var->bestrootsol) *
var->bestrootredcost +
var->bestrootlpobjval;
19081 if( rootredcost > 0.0 )
19086 cutoffbound = (
bound -
rootsol) * rootredcost + rootlpobjval;
19089 if( cutoffbound > currcutoffbound )
19095 var->bestrootredcost = rootredcost;
19096 var->bestrootlpobjval = rootlpobjval;
19107 var->bestrootredcost = rootredcost;
19108 var->bestrootlpobjval = rootlpobjval;
19127 if(
var->data.original.transvar ==
NULL )
19133 return var->rootsol;
19137 return var->locdom.lb;
19161 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19229#define MAX_CLIQUELENGTH 50
19252#ifdef SCIP_MORE_DEBUG
19290 for(
c = ncliques - 1;
c >= 0; --
c )
19292 clique = cliques[
c];
19307 for( v = nclqvars - 1; v >= 0; --v )
19309 clqvar = clqvars[v];
19317 assert(0 < probindex && probindex < nentries);
19319#ifdef SCIP_DISABLED_CODE
19323 assert(!entries[probindex] || entries[probindex] == (clqvalues[v] ? probindex : -probindex));
19325 if( entries[probindex] == 0 )
19327 ids[nids] = probindex;
19331 entries[probindex] = (clqvalues[v] ? probindex : -probindex);
19341 for( v = nids - 1; v >= 0; --v )
19344 assert(0 <
id &&
id < nentries);
19345 assert(entries[
id] != 0);
19351 if( (entries[
id] > 0) != varfixing )
19357 implredcost += redcost;
19367#ifdef SCIP_MORE_DEBUG
19393 for( v =
nvars - 1; v >= 0; --v )
19421 redcost *= (lb - bounds[v]);
19423 redcost *= (bounds[v] - lb);
19431 redcost *= (bounds[v] - ub);
19433 redcost *= (ub - bounds[v]);
19447 redcost *= (lb - bounds[v]);
19449 redcost *= (bounds[v] - lb);
19457 redcost *= (bounds[v] - ub);
19459 redcost *= (ub - bounds[v]);
19465 implredcost += redcost;
19469#ifdef SCIP_MORE_DEBUG
19470 SCIPsetDebugMsg(
set,
"variable <%s> incl. cliques (%d) and implications (%d) has implied reduced cost of %g\n",
19474 return implredcost;
19492 if(
var->data.original.transvar ==
NULL )
19498 return var->bestrootsol;
19502 return var->locdom.lb;
19526 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19556 if(
var->data.original.transvar ==
NULL )
19562 return var->bestrootredcost;
19590 if(
var->data.original.transvar ==
NULL )
19596 return var->bestrootlpobjval;
19622 var->bestrootredcost = rootredcost;
19623 var->bestrootlpobjval = rootlpobjval;
19651 var->relaxsol = solval;
19657 SCIPerrorMessage(
"cannot set relaxation solution value for variable <%s> fixed to %.15g to different value %.15g\n",
19666 (solval -
var->data.aggregate.constant)/
var->data.aggregate.scalar, updateobj) );
19669 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
19709 return var->relaxsol;
19721 if(
var->data.aggregate.scalar * solval > 0.0 )
19723 if(
var->data.aggregate.scalar * solval < 0.0 )
19726 return var->data.aggregate.scalar * solval +
var->data.aggregate.constant;
19729 solvalsum =
var->data.multaggr.constant;
19730 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19735 if(
var->data.multaggr.scalars[
i] * solval > 0.0 )
19737 if(
var->data.multaggr.scalars[
i] * solval < 0.0 )
19740 solvalsum +=
var->data.multaggr.scalars[
i] * solval;
19750 return var->data.negate.constant - solval;
19767 return var->relaxsol;
19790 var->nlpsol = solval;
19796 SCIPerrorMessage(
"cannot set NLP solution value for variable <%s> fixed to %.15g to different value %.15g\n",
19809 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
19839 if(
var->data.original.transvar ==
NULL )
19845 avgsol =
var->primsolavg;
19846 avgsol =
MAX(avgsol,
var->glbdom.lb);
19847 avgsol =
MIN(avgsol,
var->glbdom.ub);
19852 return var->locdom.lb;
19858 +
var->data.aggregate.constant;
19867 avgsol =
var->data.multaggr.constant;
19868 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
19906 *closestvlbidx = -1;
19924 i =
var->closestvlbidx;
19927 *closestvlbidx =
i;
19933 for(
i = 0;
i < nvlbs;
i++ )
19940 if( vlbsol > *closestvlb )
19942 *closestvlb = vlbsol;
19943 *closestvlbidx =
i;
19951 if(
var->closestvblpcount != stat->
lpcount )
19952 var->closestvubidx = -1;
19953 var->closestvlbidx = *closestvlbidx;
19980 *closestvubidx = -1;
19998 i =
var->closestvubidx;
20001 *closestvubidx =
i;
20007 for(
i = 0;
i < nvubs;
i++ )
20014 if( vubsol < *closestvub )
20016 *closestvub = vubsol;
20017 *closestvubidx =
i;
20025 if(
var->closestvblpcount != stat->
lpcount )
20026 var->closestvlbidx = -1;
20027 var->closestvubidx = *closestvubidx;
20063 if(
var->data.original.transvar ==
NULL )
20101 row,
var->data.aggregate.scalar * val) );
20112 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
20115 row,
var->data.multaggr.scalars[
i] * val) );
20164 if(
var->data.original.transvar ==
NULL )
20227 for(
i = 0;
i <
var->data.multaggr.nvars; ++
i )
20265#ifdef SCIP_HISTORYTOFILE
20267const char* historypath=
".";
20296 if(
var->data.original.transvar ==
NULL )
20298 SCIPerrorMessage(
"cannot update pseudo costs of original untransformed variable\n");
20319#ifdef SCIP_HISTORYTOFILE
20322 char filename[256];
20329 f = fopen(filename,
"a");
20332 fprintf(f,
"%lld %s \t %lld \t %lld \t %lld \t %d \t %15.9f \t %.3f\n",
20348 SCIPerrorMessage(
"cannot update pseudo cost values of a fixed variable\n");
20354 solvaldelta/
var->data.aggregate.scalar, objdelta, weight) );
20358 SCIPerrorMessage(
"cannot update pseudo cost values of a multi-aggregated variable\n");
20395 if(
var->data.original.transvar ==
NULL )
20397 SCIPerrorMessage(
"cannot update ancestral pseudo costs of original untransformed variable\n");
20413 SCIPerrorMessage(
"cannot update ancestral pseudo cost values of a fixed variable\n");
20419 solvaldelta/
var->data.aggregate.scalar, objdelta, weight) );
20423 SCIPerrorMessage(
"cannot update ancestral pseudo cost values of a multi-aggregated variable\n");
20451 if(
var->data.original.transvar ==
NULL )
20498 if(
var->data.original.transvar ==
NULL )
20547 if(
var->data.original.transvar ==
NULL )
20591 if(
var->data.original.transvar ==
NULL )
20604 if(
var->data.aggregate.scalar > 0.0 )
20636 if(
var->data.original.transvar ==
NULL )
20649 if(
var->data.aggregate.scalar > 0.0 )
20681 if(
var->data.original.transvar ==
NULL )
20694 if(
var->data.aggregate.scalar > 0.0 )
20740 return MIN(upscore, downscore);
20756 if(
var->data.original.transvar ==
NULL )
20763 if( onlycurrentrun )
20772 if(
var->data.aggregate.scalar > 0.0 )
20813 if( onlycurrentrun )
20820 confidencebound /= count;
20821 confidencebound = sqrt(confidencebound);
20828 confidencebound = 0.0;
20830 return confidencebound;
20854 size =
MIN(downsize, upsize);
20864 if( downsize >= 1.9 )
20870 normval =
MAX(1.0, normval);
20872 relerrordown /= normval;
20875 relerrordown = 0.0;
20877 if( upsize >= 1.9 )
20883 normval =
MAX(1.0, normval);
20884 relerrorup /= normval;
20890 relerror =
MAX(relerrorup, relerrordown);
20892 return (relerror <= threshold);
20941 if( countx <= 1.9 || county <= 1.9 )
21038 SCIPerrorMessage(
"Confidence level set to unknown value <%d>", (
int)clevel);
21043 return (probability >= problimit);
21063 if(
var->valuehistory ==
NULL )
21088 if( !
set->history_valuebased )
21126 if(
var->data.original.transvar ==
NULL )
21128 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
21159 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21161 if(
var->data.aggregate.scalar > 0.0 )
21167 assert(
var->data.aggregate.scalar < 0.0);
21177 value = 1.0 - value;
21199 if(
var->data.original.transvar ==
NULL )
21201 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
21259 if(
var->data.original.transvar ==
NULL )
21261 SCIPerrorMessage(
"cannot update conflict score of original untransformed variable\n");
21290 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21292 if(
var->data.aggregate.scalar > 0.0 )
21298 assert(
var->data.aggregate.scalar < 0.0);
21304 SCIPerrorMessage(
"cannot update conflict score of a multi-aggregated variable\n");
21308 value = 1.0 - value;
21333 if(
var->data.original.transvar ==
NULL )
21346 if(
var->data.aggregate.scalar > 0.0 )
21380 if(
var->data.original.transvar ==
NULL )
21393 if(
var->data.aggregate.scalar > 0.0 )
21423 if(
var->data.original.transvar ==
NULL )
21435 if(
var->data.aggregate.scalar > 0.0 )
21467 if(
var->data.original.transvar ==
NULL )
21480 if(
var->data.aggregate.scalar > 0.0 )
21520 if(
var->data.original.transvar ==
NULL )
21522 SCIPerrorMessage(
"cannot update branching counter of original untransformed variable\n");
21549 SCIPerrorMessage(
"cannot update branching counter of a fixed variable\n");
21553 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21555 if(
var->data.aggregate.scalar > 0.0 )
21561 assert(
var->data.aggregate.scalar < 0.0);
21567 SCIPerrorMessage(
"cannot update branching counter of a multi-aggregated variable\n");
21571 value = 1.0 - value;
21604 if(
var->data.original.transvar ==
NULL )
21606 SCIPerrorMessage(
"cannot update inference counter of original untransformed variable\n");
21633 SCIPerrorMessage(
"cannot update inference counter of a fixed variable\n");
21637 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21639 if(
var->data.aggregate.scalar > 0.0 )
21645 assert(
var->data.aggregate.scalar < 0.0);
21651 SCIPerrorMessage(
"cannot update inference counter of a multi-aggregated variable\n");
21655 value = 1.0 - value;
21688 if(
var->data.original.transvar ==
NULL )
21690 SCIPerrorMessage(
"cannot update cutoff sum of original untransformed variable\n");
21721 value = (value -
var->data.aggregate.constant)/
var->data.aggregate.scalar;
21723 if(
var->data.aggregate.scalar > 0.0 )
21729 assert(
var->data.aggregate.scalar < 0.0);
21735 SCIPerrorMessage(
"cannot update cutoff sum of a multi-aggregated variable\n");
21739 value = 1.0 - value;
21762 if(
var->data.original.transvar ==
NULL )
21775 if(
var->data.aggregate.scalar > 0.0 )
21807 if(
var->data.original.transvar ==
NULL )
21820 if(
var->data.aggregate.scalar > 0.0 )
21850 if(
var->data.original.transvar ==
NULL )
21863 if(
var->data.aggregate.scalar > 0.0 )
21895 if(
var->data.original.transvar ==
NULL )
21908 if(
var->data.aggregate.scalar > 0.0 )
21945 if(
var->data.original.transvar ==
NULL )
21959 if(
var->data.aggregate.scalar > 0.0 )
21992 SCIPerrorMessage(
"invalid branching direction %d when asking for VSIDS value\n", dir);
21999 if(
var->data.original.transvar ==
NULL )
22012 if(
var->data.aggregate.scalar > 0.0 )
22042 if(
var->data.original.transvar ==
NULL )
22055 if(
var->data.aggregate.scalar > 0.0 )
22087 if(
var->data.original.transvar ==
NULL )
22100 if(
var->data.aggregate.scalar > 0.0 )
22132 if(
var->data.original.transvar ==
NULL )
22155 if(
var->data.aggregate.scalar > 0.0 )
22189 if(
var->data.original.transvar ==
NULL )
22212 if(
var->data.aggregate.scalar > 0.0 )
22242 if(
var->data.original.transvar ==
NULL )
22255 if(
var->data.aggregate.scalar > 0.0 )
22285 if(
var->data.original.transvar ==
NULL )
22298 if(
var->data.aggregate.scalar > 0.0 )
22330 if(
var->data.original.transvar ==
NULL )
22345 if(
var->data.aggregate.scalar > 0.0 )
22377 if(
var->data.original.transvar ==
NULL )
22392 if(
var->data.aggregate.scalar > 0.0 )
22422 if(
var->data.original.transvar ==
NULL )
22464 if(
var->data.original.transvar !=
NULL )
22506 if(
var->data.original.transvar !=
NULL )
22548 if(
var->data.original.transvar !=
NULL )
22597 (*bdchginfo)->oldbound = oldbound;
22598 (*bdchginfo)->newbound = newbound;
22599 (*bdchginfo)->var =
var;
22600 (*bdchginfo)->inferencedata.var =
var;
22601 (*bdchginfo)->inferencedata.reason.prop =
NULL;
22602 (*bdchginfo)->inferencedata.info = 0;
22603 (*bdchginfo)->bdchgidx.depth = INT_MAX;
22604 (*bdchginfo)->bdchgidx.pos = -1;
22605 (*bdchginfo)->pos = 0;
22607 (*bdchginfo)->boundtype = boundtype;
22608 (*bdchginfo)->inferboundtype = boundtype;
22609 (*bdchginfo)->redundant =
FALSE;
22643 for(
i =
var->nlbchginfos-1;
i >= 0; --
i )
22650 if(
var->lbchginfos[
i].redundant )
22652 assert(
var->lbchginfos[
i].oldbound <
var->lbchginfos[
i].newbound);
22656 return &
var->lbchginfos[
i];
22661 for(
i =
var->nlbchginfos-1;
i >= 0; --
i )
22668 if(
var->lbchginfos[
i].redundant )
22670 assert(
var->lbchginfos[
i].oldbound <
var->lbchginfos[
i].newbound);
22674 return &
var->lbchginfos[
i];
22699 for(
i =
var->nubchginfos-1;
i >= 0; --
i )
22706 if(
var->ubchginfos[
i].redundant )
22708 assert(
var->ubchginfos[
i].oldbound >
var->ubchginfos[
i].newbound);
22712 return &
var->ubchginfos[
i];
22717 for(
i =
var->nubchginfos-1;
i >= 0; --
i )
22724 if(
var->ubchginfos[
i].redundant )
22726 assert(
var->ubchginfos[
i].oldbound >
var->ubchginfos[
i].newbound);
22730 return &
var->ubchginfos[
i];
22786 lbchgidx = (
var->nlbchginfos > 0 && !
var->lbchginfos[
var->nlbchginfos-1].redundant
22788 ubchgidx = (
var->nubchginfos > 0 && !
var->ubchginfos[
var->nubchginfos-1].redundant
22810 return bdchgidx->
depth;
22853 return var->ubchginfos[
i].bdchgidx.depth;
22881 return var->lbchginfos[
i].bdchgidx.depth;
22949 int* ncontimplvars,
22955 int binimplvars = 0;
22957 int intimplvars = 0;
22959 int contimplvars = 0;
22962 for( v = 0; v <
nvars; ++v )
22990 if( nbinvars !=
NULL )
22991 *nbinvars = binvars;
22992 if( nintvars !=
NULL )
22993 *nintvars = intvars;
22994 if( nbinimplvars !=
NULL )
22995 *nbinimplvars = binimplvars;
22996 if( nintimplvars !=
NULL )
22997 *nintimplvars = intimplvars;
22998 if( ncontimplvars !=
NULL )
22999 *ncontimplvars = contimplvars;
23000 if( ncontvars !=
NULL )
23001 *ncontvars = contvars;
23030#undef SCIPboundchgGetNewbound
23031#undef SCIPboundchgGetLPSolVal
23032#undef SCIPboundchgGetVar
23033#undef SCIPboundchgGetBoundchgtype
23034#undef SCIPboundchgGetBoundtype
23035#undef SCIPboundchgIsRedundant
23036#undef SCIPdomchgGetNBoundchgs
23037#undef SCIPdomchgGetBoundchg
23038#undef SCIPholelistGetLeft
23039#undef SCIPholelistGetRight
23040#undef SCIPholelistGetNext
23041#undef SCIPvarGetName
23042#undef SCIPvarGetNUses
23043#undef SCIPvarGetData
23044#undef SCIPvarSetData
23045#undef SCIPvarSetDelorigData
23046#undef SCIPvarSetTransData
23047#undef SCIPvarSetDeltransData
23048#undef SCIPvarGetStatus
23049#undef SCIPvarIsOriginal
23050#undef SCIPvarIsTransformed
23051#undef SCIPvarIsNegated
23052#undef SCIPvarGetType
23053#undef SCIPvarIsBinary
23054#undef SCIPvarIsIntegral
23055#undef SCIPvarIsImpliedIntegral
23056#undef SCIPvarIsNonimpliedIntegral
23057#undef SCIPvarIsInitial
23058#undef SCIPvarIsRemovable
23059#undef SCIPvarIsDeleted
23060#undef SCIPvarIsDeletable
23061#undef SCIPvarMarkDeletable
23062#undef SCIPvarMarkNotDeletable
23063#undef SCIPvarIsActive
23064#undef SCIPvarGetIndex
23065#undef SCIPvarGetProbindex
23066#undef SCIPvarGetTransVar
23067#undef SCIPvarGetCol
23068#undef SCIPvarIsInLP
23069#undef SCIPvarGetMinAggrCoef
23070#undef SCIPvarGetMaxAggrCoef
23071#undef SCIPvarGetAggrVar
23072#undef SCIPvarGetAggrScalar
23073#undef SCIPvarGetAggrConstant
23074#undef SCIPvarGetMultaggrNVars
23075#undef SCIPvarGetMultaggrVars
23076#undef SCIPvarGetMultaggrScalars
23077#undef SCIPvarGetMultaggrConstant
23078#undef SCIPvarGetNegatedVar
23079#undef SCIPvarGetNegationVar
23080#undef SCIPvarGetNegationConstant
23081#undef SCIPvarGetObj
23082#undef SCIPvarGetLbOriginal
23083#undef SCIPvarGetUbOriginal
23084#undef SCIPvarGetHolelistOriginal
23085#undef SCIPvarGetLbGlobal
23086#undef SCIPvarGetUbGlobal
23087#undef SCIPvarGetHolelistGlobal
23088#undef SCIPvarGetBestBoundGlobal
23089#undef SCIPvarGetWorstBoundGlobal
23090#undef SCIPvarGetLbLocal
23091#undef SCIPvarGetUbLocal
23092#undef SCIPvarGetHolelistLocal
23093#undef SCIPvarGetBestBoundLocal
23094#undef SCIPvarGetWorstBoundLocal
23095#undef SCIPvarGetBestBoundType
23096#undef SCIPvarGetWorstBoundType
23097#undef SCIPvarGetLbLazy
23098#undef SCIPvarGetUbLazy
23099#undef SCIPvarGetBranchFactor
23100#undef SCIPvarGetBranchPriority
23101#undef SCIPvarGetBranchDirection
23102#undef SCIPvarGetNVlbs
23103#undef SCIPvarGetVlbVars
23104#undef SCIPvarGetVlbCoefs
23105#undef SCIPvarGetVlbConstants
23106#undef SCIPvarGetNVubs
23107#undef SCIPvarGetVubVars
23108#undef SCIPvarGetVubCoefs
23109#undef SCIPvarGetVubConstants
23110#undef SCIPvarGetNImpls
23111#undef SCIPvarGetImplVars
23112#undef SCIPvarGetImplTypes
23113#undef SCIPvarGetImplBounds
23114#undef SCIPvarGetImplIds
23115#undef SCIPvarGetNCliques
23116#undef SCIPvarGetCliques
23117#undef SCIPvarGetLPSol
23118#undef SCIPvarGetNLPSol
23119#undef SCIPvarGetBdchgInfoLb
23120#undef SCIPvarGetNBdchgInfosLb
23121#undef SCIPvarGetBdchgInfoUb
23122#undef SCIPvarGetNBdchgInfosUb
23123#undef SCIPvarGetValuehistory
23124#undef SCIPvarGetPseudoSol
23125#undef SCIPvarCatchEvent
23126#undef SCIPvarDropEvent
23127#undef SCIPvarGetVSIDS
23128#undef SCIPvarGetCliqueComponentIdx
23129#undef SCIPvarIsRelaxationOnly
23130#undef SCIPvarMarkRelaxationOnly
23131#undef SCIPbdchgidxGetPos
23132#undef SCIPbdchgidxGetDepth
23133#undef SCIPbdchgidxIsEarlierNonNull
23134#undef SCIPbdchgidxIsEarlier
23135#undef SCIPbdchginfoGetOldbound
23136#undef SCIPbdchginfoGetNewbound
23137#undef SCIPbdchginfoGetVar
23138#undef SCIPbdchginfoGetChgtype
23139#undef SCIPbdchginfoGetBoundtype
23140#undef SCIPbdchginfoGetDepth
23141#undef SCIPbdchginfoGetPos
23142#undef SCIPbdchginfoGetIdx
23143#undef SCIPbdchginfoGetInferVar
23144#undef SCIPbdchginfoGetInferCons
23145#undef SCIPbdchginfoGetInferProp
23146#undef SCIPbdchginfoGetInferInfo
23147#undef SCIPbdchginfoGetInferBoundtype
23148#undef SCIPbdchginfoIsRedundant
23149#undef SCIPbdchginfoHasInferenceReason
23150#undef SCIPbdchginfoIsTighter
23180 return boundchg->
var;
23260 return holelist->
next;
23293 return var->vardata;
23304 var->vardata = vardata;
23316 var->vardelorig = vardelorig;
23328 var->vartrans = vartrans;
23339 var->vardeltrans = vardeltrans;
23350 var->varcopy = varcopy;
23364 var->initial = initial;
23380 var->removable = removable;
23403 return var->exactdata->varstatusexact;
23413 return (
var->exactdata !=
NULL);
23486 &&
MAX(
var->glbdom.lb,
var->lazylb) >= 0.0 &&
MIN(
var->glbdom.ub,
var->lazyub) <= 1.0));
23520 return var->initial;
23530 return var->removable;
23540 return var->deleted;
23576 var->delglobalstructs =
TRUE;
23586 return var->delglobalstructs;
23606 return var->relaxationonly;
23638 return var->deletable;
23648 return (
var->probindex >= 0);
23668 return var->probindex;
23679 return var->data.original.transvar;
23690 return var->data.col;
23702 return var->exactdata->colexact;
23722 return var->data.loose.minaggrcoef;
23732 return var->data.loose.maxaggrcoef;
23744 return var->data.aggregate.var;
23756 return var->data.aggregate.scalar;
23767 return var->exactdata->aggregate.scalar;
23779 return var->data.aggregate.constant;
23790 return var->exactdata->aggregate.constant;
23802 return var->data.multaggr.nvars;
23814 return var->data.multaggr.vars;
23826 return var->data.multaggr.scalars;
23839 return var->exactdata->multaggr.scalars;
23851 return var->data.multaggr.constant;
23864 return var->exactdata->multaggr.constant;
23874 return var->negatedvar;
23885 return var->negatedvar;
23896 return var->data.negate.constant;
23917 return var->exactdata->obj;
23928 return var->exactdata->objinterval;
23938 return var->unchangedobj;
23955 while( probvar !=
NULL )
24028 return var->data.original.origdom.lb;
24035 return var->data.negate.constant -
var->negatedvar->data.original.origdom.ub;
24049 return var->exactdata->origdom.lb;
24071 return var->data.original.origdom.ub;
24078 return var->data.negate.constant -
var->negatedvar->data.original.origdom.lb;
24092 return var->exactdata->origdom.ub;
24114 return var->data.original.origdom.holelist;
24126 return var->glbdom.lb;
24138 return var->exactdata->glbdom.lb;
24148 return var->glbdom.ub;
24160 return var->exactdata->glbdom.ub;
24170 return var->glbdom.holelist;
24180 if(
var->obj >= 0.0 )
24181 return var->glbdom.lb;
24183 return var->glbdom.ub;
24198 return var->exactdata->glbdom.lb;
24200 return var->exactdata->glbdom.ub;
24210 if(
var->obj >= 0.0 )
24211 return var->glbdom.ub;
24213 return var->glbdom.lb;
24228 return var->exactdata->glbdom.ub;
24230 return var->exactdata->glbdom.lb;
24240 return var->locdom.lb;
24252 return var->exactdata->locdom.lb;
24274 return var->locdom.ub;
24286 return var->exactdata->locdom.ub;
24308 return var->locdom.holelist;
24318 if(
var->obj >= 0.0 )
24319 return var->locdom.lb;
24321 return var->locdom.ub;
24336 return var->exactdata->locdom.lb;
24338 return var->exactdata->locdom.ub;
24348 if(
var->obj >= 0.0 )
24349 return var->locdom.ub;
24351 return var->locdom.lb;
24366 return var->exactdata->locdom.ub;
24368 return var->exactdata->locdom.lb;
24378 if(
var->obj >= 0.0 )
24406 if(
var->obj >= 0.0 )
24434 return var->lazylb;
24444 return var->lazyub;
24456 return var->branchfactor;
24468 return var->branchpriority;
24698 return var->nlpsol;
24710 assert(pos < var->nlbchginfos);
24712 return &
var->lbchginfos[pos];
24720 return var->nlbchginfos;
24730 assert(pos < var->nubchginfos);
24732 return &
var->ubchginfos[pos];
24742 return var->nubchginfos;
24752 return var->valuehistory;
24816 eventtype,
var->name, (
void*)eventhdlr, (
void*)eventdata);
24840 SCIPsetDebugMsg(
set,
"drop event of variable <%s> with handler %p and data %p\n",
var->name, (
void*)eventhdlr,
24855 return bdchgidx->
pos;
24865 return bdchgidx->
depth;
24881 return (bdchgidx1->
depth < bdchgidx2->
depth)
24882 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
24899 if( bdchgidx1 ==
NULL )
24901 else if( bdchgidx2 ==
NULL )
24904 return (bdchgidx1->
depth < bdchgidx2->
depth)
24905 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
24935 return bdchginfo->
var;
25105 return var->exactdata->certificateindex;
25118 var->exactdata->certificateindex = certidx;
25131 var->exactdata->glbdom.ubcertificateidx = certidx;
25132 var->exactdata->locdom.ubcertificateidx = certidx;
25145 var->exactdata->locdom.ubcertificateidx = certidx;
25158 var->exactdata->locdom.lbcertificateidx = certidx;
25171 var->exactdata->glbdom.lbcertificateidx = certidx;
25172 var->exactdata->locdom.lbcertificateidx = certidx;
25181 assert(
var->exactdata->locdom.lbcertificateidx != -1);
25184 return var->exactdata->locdom.lbcertificateidx;
25193 assert(
var->exactdata->locdom.ubcertificateidx != -1);
25196 return var->exactdata->locdom.ubcertificateidx;
25205 assert(
var->exactdata->glbdom.lbcertificateidx != -1);
25208 return var->exactdata->glbdom.lbcertificateidx;
25217 assert(
var->exactdata->glbdom.ubcertificateidx != -1);
25220 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