63 #define MAXIMPLSCLOSURE 100 65 #define MAXABSVBCOEF 1e+5 81 assert(holelist !=
NULL);
82 assert(blkmem !=
NULL);
85 SCIPsetDebugMsg(
set,
"create hole list element (%.15g,%.15g) in blkmem %p\n", left, right, (
void*)blkmem);
88 (*holelist)->hole.left = left;
89 (*holelist)->hole.right = right;
90 (*holelist)->next =
NULL;
102 assert(holelist !=
NULL);
103 assert(blkmem !=
NULL);
105 while( *holelist !=
NULL )
110 (*holelist)->hole.left, (*holelist)->hole.right, (
void*)blkmem);
112 next = (*holelist)->
next;
114 assert(*holelist ==
NULL);
118 assert(*holelist ==
NULL);
130 assert(target !=
NULL);
132 while( source !=
NULL )
136 source = source->
next;
137 target = &(*target)->
next;
158 assert(added !=
NULL);
162 while( *insertpos !=
NULL && (*insertpos)->hole.left < left )
163 insertpos = &(*insertpos)->
next;
166 if( *insertpos !=
NULL && (*insertpos)->hole.left == left && (*insertpos)->hole.right >= right )
168 SCIPsetDebugMsg(
set,
"new hole (%.15g,%.15g) is redundant through known hole (%.15g,%.15g)\n",
169 left, right, (*insertpos)->hole.left, (*insertpos)->hole.right);
179 (*insertpos)->next = next;
213 while( *holelistptr !=
NULL )
215 if( (*holelistptr)->next !=
NULL )
217 assert(
SCIPsetIsLE(
set, lastleft, (*holelistptr)->hole.left) );
218 lastleft = (*holelistptr)->hole.left;
221 holelistptr = &(*holelistptr)->
next;
229 lastrightptr = &dom->
lb;
230 lastnextptr = holelistptr;
232 while( *holelistptr !=
NULL )
234 SCIPsetDebugMsg(
set,
"check hole (%.15g,%.15g) last right interval was <%.15g>\n", (*holelistptr)->hole.left, (*holelistptr)->hole.right, *lastrightptr);
237 assert(
SCIPsetIsLT(
set, (*holelistptr)->hole.left, (*holelistptr)->hole.right));
242 SCIPsetDebugMsg(
set,
"remove remaining hole since upper bound <%.15g> is less then the left hand side of the current hole\n", dom->
ub);
244 assert(*holelistptr ==
NULL);
249 else if(
SCIPsetIsGT(
set, (*holelistptr)->hole.right, dom->
ub) )
252 SCIPsetDebugMsg(
set,
"upper bound <%.15g> lays in current hole; store new upper bound and remove this and all remaining holes\n", dom->
ub);
254 assert(
SCIPsetIsLT(
set, (*holelistptr)->hole.left, dom->
ub));
257 dom->
ub = (*holelistptr)->hole.left;
260 *newub = (*holelistptr)->hole.left;
264 assert(*holelistptr ==
NULL);
269 else if(
SCIPsetIsGT(
set, *lastrightptr, (*holelistptr)->hole.left) )
279 SCIPsetDebugMsg(
set,
"lower bound <%.15g> lays in current hole; store new lower bound and remove hole\n", dom->
lb);
280 *lastrightptr =
MAX(*lastrightptr, (*holelistptr)->hole.right);
283 dom->
lb = *lastrightptr;
286 *newlb = *lastrightptr;
290 SCIPsetDebugMsg(
set,
"current hole overlaps with the previous one (...,%.15g); merge to (...,%.15g)\n",
291 *lastrightptr,
MAX(*lastrightptr, (*holelistptr)->hole.right) );
292 *lastrightptr =
MAX(*lastrightptr, (*holelistptr)->hole.right);
294 nextholelist = (*holelistptr)->
next;
299 *lastnextptr = nextholelist;
302 *holelistptr = nextholelist;
307 lastrightptr = &(*holelistptr)->
hole.
right;
308 lastnextptr = &(*holelistptr)->
next;
311 holelistptr = &(*holelistptr)->
next;
323 while( *holelistptr !=
NULL )
326 assert(
SCIPsetIsLE(
set, lastright, (*holelistptr)->hole.left) );
329 assert(
SCIPsetIsLT(
set, (*holelistptr)->hole.left, (*holelistptr)->hole.right) );
330 lastright = (*holelistptr)->hole.right;
333 holelistptr = &(*holelistptr)->
next;
367 assert(num <= var->lbchginfossize);
393 assert(num <= var->ubchginfossize);
426 SCIPsetDebugMsg(
set,
"adding lower bound change info to var <%s>[%g,%g]: depth=%d, pos=%d, infer%s=<%s>, inferinfo=%d, %g -> %g\n",
448 switch( boundchgtype )
453 assert(infercons !=
NULL);
501 SCIPsetDebugMsg(
set,
"adding upper bound change info to var <%s>[%g,%g]: depth=%d, pos=%d, infer%s=<%s>, inferinfo=%d, %g -> %g\n",
523 switch( boundchgtype )
528 assert(infercons !=
NULL);
564 assert(boundchg !=
NULL);
565 assert(stat !=
NULL);
568 assert(cutoff !=
NULL);
594 SCIPsetDebugMsg(
set,
" -> branching: new lower bound of <%s>[%g,%g]: %g\n",
605 SCIPsetDebugMsg(
set,
" -> constraint <%s> inference: new lower bound of <%s>[%g,%g]: %g\n",
615 SCIPsetDebugMsg(
set,
" -> propagator <%s> inference: new lower bound of <%s>[%g,%g]: %g\n",
635 SCIPsetDebugMsg(
set,
" -> cutoff: new lower bound of <%s>[%g,%g]: %g\n",
644 SCIPsetDebugMsg(
set,
" -> inactive %s: new lower bound of <%s>[%g,%g]: %g\n",
661 SCIPsetDebugMsg(
set,
" -> branching: new upper bound of <%s>[%g,%g]: %g\n",
672 SCIPsetDebugMsg(
set,
" -> constraint <%s> inference: new upper bound of <%s>[%g,%g]: %g\n",
682 SCIPsetDebugMsg(
set,
" -> propagator <%s> inference: new upper bound of <%s>[%g,%g]: %g\n",
702 SCIPsetDebugMsg(
set,
" -> cutoff: new upper bound of <%s>[%g,%g]: %g\n",
711 SCIPsetDebugMsg(
set,
" -> inactive %s: new upper bound of <%s>[%g,%g]: %g\n",
726 assert(var == boundchg->
var);
758 assert(boundchg !=
NULL);
759 assert(stat !=
NULL);
779 SCIPsetDebugMsg(
set,
"removed lower bound change info of var <%s>[%g,%g]: depth=%d, pos=%d, %g -> %g\n",
800 SCIPsetDebugMsg(
set,
"removed upper bound change info of var <%s>[%g,%g]: depth=%d, pos=%d, %g -> %g\n",
847 assert(boundchg !=
NULL);
848 assert(cutoff !=
NULL);
871 SCIPsetDebugMsg(
set,
"applying global bound change: <%s>[%g,%g] %s %g\n",
895 assert(boundchg !=
NULL);
932 assert(boundchg !=
NULL);
966 assert(domchg !=
NULL);
967 assert(blkmem !=
NULL);
971 (*domchg)->domchgdyn.nboundchgs = 0;
972 (*domchg)->domchgdyn.boundchgs =
NULL;
973 (*domchg)->domchgdyn.nholechgs = 0;
974 (*domchg)->domchgdyn.holechgs =
NULL;
975 (*domchg)->domchgdyn.boundchgssize = 0;
976 (*domchg)->domchgdyn.holechgssize = 0;
990 assert(domchg !=
NULL);
991 assert(blkmem !=
NULL);
993 if( *domchg !=
NULL )
998 for( i = 0; i < (int)(*domchg)->domchgbound.nboundchgs; ++i )
1004 switch( (*domchg)->domchgdyn.domchgtype )
1036 assert(domchg !=
NULL);
1037 assert(blkmem !=
NULL);
1039 SCIPdebugMessage(
"making domain change data %p pointing to %p dynamic\n", (
void*)domchg, (
void*)*domchg);
1041 if( *domchg ==
NULL )
1047 switch( (*domchg)->domchgdyn.domchgtype )
1051 (*domchg)->domchgdyn.nholechgs = 0;
1052 (*domchg)->domchgdyn.holechgs =
NULL;
1053 (*domchg)->domchgdyn.boundchgssize = (*domchg)->domchgdyn.nboundchgs;
1054 (*domchg)->domchgdyn.holechgssize = 0;
1059 (*domchg)->domchgdyn.boundchgssize = (*domchg)->domchgdyn.nboundchgs;
1060 (*domchg)->domchgdyn.holechgssize = (*domchg)->domchgdyn.nholechgs;
1073 for( i = 0; i < (int)(*domchg)->domchgbound.nboundchgs; ++i )
1075 ||
EPSISINT((*domchg)->domchgbound.boundchgs[i].newbound, 1e-06));
1091 assert(domchg !=
NULL);
1092 assert(blkmem !=
NULL);
1094 SCIPsetDebugMsg(
set,
"making domain change data %p pointing to %p static\n", (
void*)domchg, (
void*)*domchg);
1096 if( *domchg !=
NULL )
1098 switch( (*domchg)->domchgdyn.domchgtype )
1101 if( (*domchg)->domchgbound.nboundchgs == 0 )
1107 if( (*domchg)->domchgboth.nholechgs == 0 )
1109 if( (*domchg)->domchgbound.nboundchgs == 0 )
1121 if( (*domchg)->domchgboth.nholechgs == 0 )
1123 if( (*domchg)->domchgbound.nboundchgs == 0 )
1131 (*domchg)->domchgdyn.boundchgssize, (*domchg)->domchgdyn.nboundchgs) );
1143 (*domchg)->domchgdyn.boundchgssize, (*domchg)->domchgdyn.nboundchgs) );
1145 (*domchg)->domchgdyn.holechgssize, (*domchg)->domchgdyn.nholechgs) );
1157 if( *domchg !=
NULL )
1160 for( i = 0; i < (int)(*domchg)->domchgbound.nboundchgs; ++i )
1179 assert(domchg !=
NULL);
1190 assert(num <= domchg->domchgdyn.boundchgssize);
1204 assert(domchg !=
NULL);
1215 assert(num <= domchg->domchgdyn.holechgssize);
1235 assert(cutoff !=
NULL);
1239 SCIPsetDebugMsg(
set,
"applying domain changes at %p in depth %d\n", (
void*)domchg, depth);
1241 if( domchg ==
NULL )
1248 branchcand, eventqueue, depth, i, cutoff) );
1282 SCIPsetDebugMsg(
set,
"undoing domain changes at %p\n", (
void*)domchg);
1283 if( domchg ==
NULL )
1319 assert(cutoff !=
NULL);
1323 if( domchg ==
NULL )
1326 SCIPsetDebugMsg(
set,
"applying domain changes at %p to the global problem\n", (
void*)domchg);
1332 branchcand, eventqueue, cliquetable, cutoff) );
1362 assert(domchg !=
NULL);
1363 assert(var !=
NULL);
1371 SCIPsetDebugMsg(
set,
"adding %s bound change <%s: %g> of variable <%s> to domain change at %p pointing to %p\n",
1373 newbound, var->
name, (
void*)domchg, (
void*)*domchg);
1378 if( *domchg ==
NULL )
1392 boundchg = &(*domchg)->domchgdyn.boundchgs[(*domchg)->domchgdyn.nboundchgs];
1393 boundchg->
var = var;
1394 switch( boundchgtype )
1400 assert(infercons !=
NULL);
1421 (*domchg)->domchgdyn.nboundchgs++;
1426 #ifdef SCIP_DISABLED_CODE 1427 #ifdef SCIP_MORE_DEBUG 1430 for( i = 0; i < (int)(*domchg)->domchgbound.nboundchgs; ++i )
1452 assert(domchg !=
NULL);
1453 assert(ptr !=
NULL);
1458 if( *domchg ==
NULL )
1472 holechg = &(*domchg)->domchgdyn.holechgs[(*domchg)->domchgdyn.nholechgs];
1476 (*domchg)->domchgdyn.nholechgs++;
1544 assert(var !=
NULL);
1551 SCIPsetDebugMsg(
set,
"removing %s implications and vbounds of %s<%s>[%g,%g]\n",
1552 onlyredundant ?
"redundant" :
"all", irrelevantvar ?
"irrelevant " :
"",
SCIPvarGetName(var), lb, ub);
1555 if( var->
implics !=
NULL && (!onlyredundant || lb > 0.5 || ub < 0.5) )
1573 for( i = 0; i < nimpls; i++ )
1578 implvar = implvars[i];
1579 impltype = impltypes[i];
1580 assert(implvar != var);
1591 SCIPsetDebugMsg(
set,
"deleting variable bound: <%s> == %u ==> <%s> <= %g\n",
1603 SCIPsetDebugMsg(
set,
"deleting variable bound: <%s> == %u ==> <%s> >= %g\n",
1612 varfixing = !varfixing;
1614 while( varfixing ==
TRUE );
1643 for( i = 0; i < nvbds; i++ )
1648 assert(newnvbds <= i);
1651 assert(implvar !=
NULL);
1669 vars[newnvbds] = implvar;
1670 coefs[newnvbds] = coef;
1671 constants[newnvbds] = constants[i];
1682 SCIPsetDebugMsg(
set,
"deleting implication: <%s> == %d ==> <%s> >= %g\n",
1686 if( coef > 0.0 && implvar->
vubs !=
NULL )
1688 SCIPsetDebugMsg(
set,
"deleting variable upper bound from <%s> involving variable %s\n",
1694 else if( coef < 0.0 && implvar->vlbs !=
NULL )
1696 SCIPsetDebugMsg(
set,
"deleting variable lower bound from <%s> involving variable %s\n",
1737 for( i = 0; i < nvbds; i++ )
1742 assert(newnvbds <= i);
1745 assert(implvar !=
NULL);
1763 vars[newnvbds] = implvar;
1764 coefs[newnvbds] = coefs[i];
1765 constants[newnvbds] = constants[i];
1776 SCIPsetDebugMsg(
set,
"deleting implication: <%s> == %d ==> <%s> <= %g\n",
1780 if( coef < 0.0 && implvar->vubs !=
NULL )
1782 SCIPsetDebugMsg(
set,
"deleting variable upper bound from <%s> involving variable %s\n",
1788 else if( coef > 0.0 && implvar->
vlbs !=
NULL )
1790 SCIPsetDebugMsg(
set,
"deleting variable lower bound from <%s> involving variable %s\n",
1829 assert(blkmem !=
NULL);
1830 assert(var !=
NULL);
1836 assert(stat !=
NULL);
1873 assert(var !=
NULL);
1874 assert(blkmem !=
NULL);
1875 assert(stat !=
NULL);
1892 SCIPerrorMessage(
"invalid bounds [%.2g,%.2g] for binary variable <%s>\n", lb, ub, name);
1906 (*var)->scip =
set->scip;
1909 (*var)->unchangedobj = obj;
1910 (*var)->branchfactor = 1.0;
1911 (*var)->rootsol = 0.0;
1912 (*var)->bestrootsol = 0.0;
1913 (*var)->bestrootredcost = 0.0;
1915 (*var)->relaxsol = 0.0;
1916 (*var)->nlpsol = 0.0;
1917 (*var)->primsolavg = 0.5 * (lb + ub);
1920 (*var)->conflictrelaxedlb = (*var)->conflictlb;
1921 (*var)->conflictrelaxedub = (*var)->conflictub;
1924 (*var)->glbdom.holelist =
NULL;
1925 (*var)->glbdom.lb = lb;
1926 (*var)->glbdom.ub = ub;
1927 (*var)->locdom.holelist =
NULL;
1928 (*var)->locdom.lb = lb;
1929 (*var)->locdom.ub = ub;
1930 (*var)->varcopy = varcopy;
1931 (*var)->vardelorig = vardelorig;
1932 (*var)->vartrans = vartrans;
1933 (*var)->vardeltrans = vardeltrans;
1934 (*var)->vardata = vardata;
1935 (*var)->parentvars =
NULL;
1936 (*var)->negatedvar =
NULL;
1937 (*var)->vlbs =
NULL;
1938 (*var)->vubs =
NULL;
1939 (*var)->implics =
NULL;
1940 (*var)->cliquelist =
NULL;
1941 (*var)->eventfilter =
NULL;
1942 (*var)->lbchginfos =
NULL;
1943 (*var)->ubchginfos =
NULL;
1944 (*var)->index = stat->
nvaridx;
1945 (*var)->probindex = -1;
1946 (*var)->pseudocandindex = -1;
1947 (*var)->eventqueueindexobj = -1;
1948 (*var)->eventqueueindexlb = -1;
1949 (*var)->eventqueueindexub = -1;
1950 (*var)->parentvarssize = 0;
1951 (*var)->nparentvars = 0;
1953 (*var)->nlocksdown = 0;
1954 (*var)->nlocksup = 0;
1955 (*var)->branchpriority = 0;
1957 (*var)->lbchginfossize = 0;
1958 (*var)->nlbchginfos = 0;
1959 (*var)->ubchginfossize = 0;
1960 (*var)->nubchginfos = 0;
1961 (*var)->conflictlbcount = 0;
1962 (*var)->conflictubcount = 0;
1963 (*var)->closestvlbidx = -1;
1964 (*var)->closestvubidx = -1;
1965 (*var)->closestvblpcount = -1;
1966 (*var)->initial = initial;
1967 (*var)->removable = removable;
1968 (*var)->deleted =
FALSE;
1969 (*var)->donotmultaggr =
FALSE;
1970 (*var)->vartype = vartype;
1971 (*var)->pseudocostflag =
FALSE;
1972 (*var)->eventqueueimpl =
FALSE;
1973 (*var)->deletable =
FALSE;
1974 (*var)->delglobalstructs =
FALSE;
1975 (*var)->clqcomponentidx = -1;
1984 (*var)->valuehistory =
NULL;
2011 assert(var !=
NULL);
2012 assert(blkmem !=
NULL);
2013 assert(stat !=
NULL);
2016 SCIP_CALL(
varCreate(var, blkmem,
set, stat, name, lb, ub, obj, vartype, initial, removable,
2017 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
2021 (*var)->data.original.origdom.holelist =
NULL;
2022 (*var)->data.original.origdom.lb = lb;
2023 (*var)->data.original.origdom.ub = ub;
2024 (*var)->data.original.transvar =
NULL;
2054 assert(var !=
NULL);
2055 assert(blkmem !=
NULL);
2058 SCIP_CALL(
varCreate(var, blkmem,
set, stat, name, lb, ub, obj, vartype, initial, removable,
2059 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
2096 assert(
set !=
NULL);
2097 assert(blkmem !=
NULL);
2098 assert(stat !=
NULL);
2099 assert(sourcescip !=
NULL);
2100 assert(sourcevar !=
NULL);
2101 assert(var !=
NULL);
2103 assert(varmap !=
NULL);
2104 assert(consmap !=
NULL);
2129 assert(*var !=
NULL);
2141 SCIP_CALL( sourcevar->varcopy(set->scip, sourcescip, sourcevar, sourcevar->
vardata,
2142 varmap, consmap, (*var), &targetdata, &result) );
2147 SCIPerrorMessage(
"variable data copying method returned invalid result <%d>\n", result);
2156 (*var)->varcopy = sourcevar->varcopy;
2157 (*var)->vardelorig = sourcevar->vardelorig;
2158 (*var)->vartrans = sourcevar->vartrans;
2159 (*var)->vardeltrans = sourcevar->vardeltrans;
2165 if( set->history_allowtransfer )
2175 (*var)->varcopy = sourcevar->varcopy;
2176 (*var)->vardelorig = sourcevar->vardelorig;
2177 (*var)->vartrans = sourcevar->vartrans;
2178 (*var)->vardeltrans = sourcevar->vardeltrans;
2197 if( strncmp(str,
"+inf", 4) == 0 )
2200 (*endptr) = (
char*)str + 4;
2202 else if( strncmp(str,
"-inf", 4) == 0 )
2205 (*endptr) = (
char*)str + 4;
2233 if ( strncmp(type,
"original", 8) != 0 && strncmp(type,
"global", 6) != 0 && strncmp(type,
"local", 5) != 0 && strncmp(type,
"lazy", 4) != 0 )
2253 while ( **endptr !=
'\0' && (**endptr ==
']' || **endptr ==
',') )
2285 assert(obj !=
NULL);
2286 assert(vartype !=
NULL);
2287 assert(lazylb !=
NULL);
2288 assert(lazyub !=
NULL);
2289 assert(success !=
NULL);
2295 assert(str != *endptr);
2299 if( strncmp(token,
"binary", 3) == 0 )
2301 else if( strncmp(token,
"integer", 3) == 0 )
2303 else if( strncmp(token,
"implicit", 3) == 0 )
2305 else if( strncmp(token,
"continuous", 3) == 0 )
2319 assert(endptr !=
NULL);
2342 assert(strncmp(token,
"global", 6) == 0 || strncmp(token,
"original", 8) == 0);
2352 for( i = 0; i < 2 && *endptr !=
NULL && **endptr !=
'\0'; ++i )
2361 if( *endptr ==
NULL )
2364 if( strncmp(token,
"local", 5) == 0 && local )
2369 else if( strncmp(token,
"lazy", 4) == 0 )
2377 if ( *endptr ==
NULL )
2385 SCIPerrorMessage(
"Parsed invalid bounds for binary variable <%s>: [%f, %f].\n", name, *lb, *ub);
2391 SCIPerrorMessage(
"Parsed invalid lazy bounds for binary variable <%s>: [%f, %f].\n", name, *lazylb, *lazyub);
2429 assert(var !=
NULL);
2430 assert(blkmem !=
NULL);
2431 assert(stat !=
NULL);
2432 assert(endptr !=
NULL);
2433 assert(success !=
NULL);
2436 SCIP_CALL(
varParse(
set, messagehdlr, str, name, &lb, &ub, &obj, &vartype, &lazylb, &lazyub,
FALSE, endptr, success) );
2441 SCIP_CALL(
varCreate(var, blkmem,
set, stat, name, lb, ub, obj, vartype, initial, removable,
2442 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
2446 (*var)->data.original.origdom.holelist =
NULL;
2447 (*var)->data.original.origdom.lb = lb;
2448 (*var)->data.original.origdom.ub = ub;
2449 (*var)->data.original.transvar =
NULL;
2452 (*var)->lazylb = lazylb;
2453 (*var)->lazyub = lazyub;
2493 assert(var !=
NULL);
2494 assert(blkmem !=
NULL);
2495 assert(endptr !=
NULL);
2496 assert(success !=
NULL);
2499 SCIP_CALL(
varParse(
set, messagehdlr, str, name, &lb, &ub, &obj, &vartype, &lazylb, &lazyub,
TRUE, endptr, success) );
2504 SCIP_CALL(
varCreate(var, blkmem,
set, stat, name, lb, ub, obj, vartype, initial, removable,
2505 varcopy, vardelorig, vartrans, vardeltrans, vardata) );
2514 (*var)->lazylb = lazylb;
2515 (*var)->lazyub = lazyub;
2543 assert(num <= var->parentvarssize);
2557 assert(var !=
NULL);
2558 assert(parentvar !=
NULL);
2563 SCIPsetDebugMsg(
set,
"adding parent <%s>[%p] to variable <%s>[%p] in slot %d\n",
2568 var->parentvars[var->nparentvars] = parentvar;
2592 for( i = 0; i < (*var)->nparentvars; ++i )
2594 assert((*var)->parentvars !=
NULL);
2596 assert(parentvar !=
NULL);
2618 assert(v < parentvar->data.multaggr.nvars && parentvar->
data.
multaggr.
vars[v] == *var);
2619 if( v < parentvar->data.multaggr.nvars-1 )
2630 assert((*var)->negatedvar == parentvar);
2632 (*var)->negatedvar =
NULL;
2636 SCIPerrorMessage(
"parent variable is neither ORIGINAL, AGGREGATED nor NEGATED\n");
2659 assert(var !=
NULL);
2660 assert(*var !=
NULL);
2662 assert((*var)->nuses == 0);
2663 assert((*var)->probindex == -1);
2670 assert((*var)->data.original.transvar ==
NULL);
2671 holelistFree(&(*var)->data.original.origdom.holelist, blkmem);
2672 assert((*var)->data.original.origdom.holelist ==
NULL);
2699 if( (*var)->vardelorig !=
NULL )
2706 if( (*var)->vardeltrans !=
NULL )
2713 if( (*var)->eventfilter !=
NULL )
2717 assert((*var)->eventfilter ==
NULL);
2722 assert((*var)->glbdom.holelist ==
NULL);
2723 assert((*var)->locdom.holelist ==
NULL);
2756 assert(var !=
NULL);
2757 assert(var->
nuses >= 0);
2772 assert(var !=
NULL);
2773 assert(*var !=
NULL);
2774 assert((*var)->nuses >= 1);
2775 assert(blkmem !=
NULL);
2776 assert((*var)->scip == set->scip);
2778 SCIPsetDebugMsg(
set,
"release variable <%s> with nuses=%d\n", (*var)->name, (*var)->nuses);
2780 if( (*var)->nuses == 0 )
2797 assert(name !=
NULL);
2813 assert(var !=
NULL);
2831 assert(
set !=
NULL);
2861 if( holelist ==
NULL )
2871 while(holelist !=
NULL )
2897 assert(var !=
NULL);
2898 assert(var->
scip == set->scip);
2933 printBounds(
set, messagehdlr, file, lb, ub,
"original bounds");
2941 printBounds(
set, messagehdlr, file, lb, ub,
"lazy bounds");
2944 printHolelist(
set, messagehdlr, file, holelist,
"original holes");
2951 printBounds(
set, messagehdlr, file, lb, ub,
"global bounds");
2956 printBounds(
set, messagehdlr, file, lb, ub,
"local bounds");
2964 printBounds(
set, messagehdlr, file, lb, ub,
"lazy bounds");
2968 printHolelist(
set, messagehdlr, file, holelist,
"global holes");
2972 printHolelist(
set, messagehdlr, file, holelist,
"local holes");
3034 assert(var !=
NULL);
3036 assert(var->
scip == set->scip);
3057 assert(var !=
NULL);
3060 assert(var->
scip == set->scip);
3062 if( addnlocksdown == 0 && addnlocksup == 0 )
3065 SCIPsetDebugMsg(
set,
"add rounding locks %d/%d to variable <%s> (locks=%d/%d)\n",
3072 assert(lockvar !=
NULL);
3110 int tmp = addnlocksup;
3112 addnlocksup = addnlocksdown;
3113 addnlocksdown = tmp;
3141 int tmp = addnlocksup;
3147 addnlocksup = addnlocksdown;
3148 addnlocksdown = tmp;
3168 assert(var !=
NULL);
3223 assert(var !=
NULL);
3300 assert(origvar !=
NULL);
3301 assert(origvar->
scip == set->scip);
3307 assert(transvar !=
NULL);
3322 origvar->vardelorig, origvar->vartrans, origvar->vardeltrans, origvar->varcopy,
NULL) );
3338 (*transvar)->nlocksdown = origvar->
nlocksdown;
3339 (*transvar)->nlocksup = origvar->
nlocksup;
3340 assert((*transvar)->nlocksdown >= 0);
3341 assert((*transvar)->nlocksup >= 0);
3347 (*transvar)->lazylb = origvar->
lazylb;
3348 (*transvar)->lazyub = origvar->
lazyub;
3356 if( origvar->vartrans !=
NULL )
3361 (*transvar)->vardata = origvar->
vardata;
3364 SCIPsetDebugMsg(
set,
"transformed variable: <%s>[%p] -> <%s>[%p]\n", origvar->
name, (
void*)origvar, (*transvar)->
name, (
void*)*transvar);
3378 assert(origvar !=
NULL);
3380 assert(origvar->
scip == set->scip);
3410 assert(var !=
NULL);
3412 assert(var->
scip == set->scip);
3444 assert(var !=
NULL);
3446 assert(var->
scip == set->scip);
3490 assert(var !=
NULL);
3491 assert(var->
scip == set->scip);
3492 assert(0 <= fixeventtype && fixeventtype <= 2);
3505 switch( fixeventtype )
3593 assert(var !=
NULL);
3594 assert(var->
scip == set->scip);
3597 assert(infeasible !=
NULL);
3598 assert(fixed !=
NULL);
3602 *infeasible =
FALSE;
3608 SCIPsetDebugMsg(
set,
" -> variable already fixed to %g (fixedval=%g): infeasible=%u\n", var->
locdom.
lb, fixedval, *infeasible);
3629 lp, branchcand, eventqueue, cliquetable, fixedval, infeasible, fixed) );
3679 SCIP_CALL(
SCIPvarAddObj(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, obj) );
3704 SCIP_CALL(
SCIPvarFix(var->
data.
aggregate.
var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
3705 branchcand, eventqueue, cliquetable, childfixedval, infeasible, fixed) );
3719 SCIP_CALL(
SCIPvarFix(var->
negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
3720 branchcand, eventqueue, cliquetable, var->
data.
negate.
constant - fixedval, infeasible, fixed) );
3782 assert(
set !=
NULL);
3783 assert(nvars !=
NULL);
3784 assert(scalars !=
NULL || *nvars == 0);
3785 assert(constant !=
NULL);
3786 assert(requiredsize !=
NULL);
3787 assert(*nvars <= varssize);
3794 assert(vars !=
NULL);
3805 activeconstant = 0.0;
3806 activeconstantinf =
FALSE;
3807 activevarssize = (*nvars) * 2;
3809 tmpvarssize = *nvars;
3824 for( v = ntmpvars - 1; v >= 0; --v )
3827 scalar = tmpscalars[v];
3829 assert(var !=
NULL);
3835 assert(var !=
NULL);
3848 tmpscalars[v] = scalar;
3850 noldtmpvars = ntmpvars;
3854 for( v = ntmpvars - 1; v > 0; --v )
3859 tmpscalars[v - 1] += tmpscalars[v];
3861 tmpvars[v] = tmpvars[ntmpvars];
3862 tmpscalars[v] = tmpscalars[ntmpvars];
3866 if( noldtmpvars > ntmpvars )
3870 while( ntmpvars >= 1 )
3874 var = tmpvars[ntmpvars];
3875 scalar = tmpscalars[ntmpvars];
3877 assert(var !=
NULL);
3893 if( nactivevars >= activevarssize )
3895 activevarssize *= 2;
3898 assert(nactivevars < activevarssize);
3900 activevars[nactivevars] = var;
3901 activescalars[nactivevars] = scalar;
3911 if( nmultvars + ntmpvars > tmpvarssize )
3913 while( nmultvars + ntmpvars > tmpvarssize )
3917 assert(nmultvars + ntmpvars <= tmpvarssize);
3920 if( nmultvars > tmpvarssize2 )
3922 while( nmultvars > tmpvarssize2 )
3926 assert(nmultvars <= tmpvarssize2);
3931 for( ; nmultvars >= 0; --nmultvars )
3933 multvar = multvars[nmultvars];
3934 multscalar = multscalars[nmultvars];
3937 assert(multvar !=
NULL);
3939 assert(multvar !=
NULL);
3946 if( !activeconstantinf )
3952 assert(scalar != 0.0);
3953 if( scalar * multconstant > 0.0 )
3956 activeconstantinf =
TRUE;
3961 activeconstantinf =
TRUE;
3965 activeconstant += scalar * multconstant;
3970 assert(!
SCIPsetIsInfinity(
set, activeconstant) || !(scalar * multconstant < 0.0 &&
3972 assert(!
SCIPsetIsInfinity(
set, -activeconstant) || !(scalar * multconstant > 0.0 &&
3980 tmpscalars[pos] += scalar * multscalar;
3984 tmpvars2[ntmpvars2] = multvar;
3985 tmpscalars2[ntmpvars2] = scalar * multscalar;
3987 assert(ntmpvars2 <= tmpvarssize2);
3992 SCIPsortPtrReal((
void**)tmpvars2, tmpscalars2, SCIPvarComp, ntmpvars2);
3993 for( v = ntmpvars2 - 1; v > 0; --v )
3998 tmpscalars2[v - 1] += tmpscalars2[v];
4000 tmpvars2[v] = tmpvars2[ntmpvars2];
4001 tmpscalars2[v] = tmpscalars2[ntmpvars2];
4005 for( v = 0; v < ntmpvars2; ++v )
4007 tmpvars[ntmpvars] = tmpvars2[v];
4008 tmpscalars[ntmpvars] = tmpscalars2[v];
4010 assert(ntmpvars <= tmpvarssize);
4014 if( !activeconstantinf )
4022 assert(scalar != 0.0);
4023 if( scalar * multconstant > 0.0 )
4026 activeconstantinf =
TRUE;
4031 activeconstantinf =
TRUE;
4035 activeconstant += scalar * multconstant;
4041 assert(!
SCIPsetIsInfinity(
set, activeconstant) || !(scalar * multconstant < 0.0 &&
4043 assert(!
SCIPsetIsInfinity(
set, -activeconstant) || !(scalar * multconstant > 0.0 &&
4062 if( mergemultiples )
4065 SCIPsortPtrReal((
void**)activevars, activescalars, SCIPvarComp, nactivevars);
4068 v = nactivevars - 1;
4074 if( activescalars[v - 1] + activescalars[v] != 0.0 )
4076 activescalars[v - 1] += activescalars[v];
4078 activevars[v] = activevars[nactivevars];
4079 activescalars[v] = activescalars[nactivevars];
4084 activevars[v] = activevars[nactivevars];
4085 activescalars[v] = activescalars[nactivevars];
4088 activevars[v] = activevars[nactivevars];
4089 activescalars[v] = activescalars[nactivevars];
4095 *requiredsize = nactivevars;
4097 if( varssize >= *requiredsize )
4099 assert(vars !=
NULL);
4101 *nvars = *requiredsize;
4106 if( activeconstantinf )
4107 (*constant) = activeconstant;
4109 (*constant) += activeconstant;
4120 for( v = 0; v < *nvars; ++v )
4122 vars[v] = activevars[v];
4123 scalars[v] = activescalars[v];
4151 int multrequiredsize;
4153 assert( var !=
NULL );
4155 assert(var->
scip == set->scip);
4163 if( multrequiredsize > multvarssize )
4167 multvarssize = multrequiredsize;
4169 assert( multrequiredsize <= multvarssize );
4258 assert(var !=
NULL);
4259 assert(var->
scip == set->scip);
4260 assert(aggvar !=
NULL);
4262 assert(infeasible !=
NULL);
4263 assert(fixed !=
NULL);
4265 *infeasible =
FALSE;
4268 SCIPsetDebugMsg(
set,
"updating bounds of variables in aggregation <%s> == %g*<%s> %+g\n", var->
name, scalar, aggvar->
name, constant);
4275 aggvarbdschanged =
FALSE;
4283 varlb = aggvar->
glbdom.
lb * scalar + constant;
4287 varub = aggvar->
glbdom.
ub * scalar + constant;
4294 varub = aggvar->
glbdom.
lb * scalar + constant;
4298 varlb = aggvar->
glbdom.
ub * scalar + constant;
4315 SCIP_CALL(
SCIPvarFix(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
4316 eventqueue, cliquetable, varlb, infeasible, fixed) );
4317 if( !(*infeasible) )
4321 SCIP_CALL(
SCIPvarFix(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
4322 eventqueue, cliquetable, (varlb-constant)/scalar, infeasible, &aggfixed) );
4323 assert(*fixed == aggfixed);
4348 aggvarlb = (var->
glbdom.
lb - constant) / scalar;
4352 aggvarub = (var->
glbdom.
ub - constant) / scalar;
4359 aggvarub = (var->
glbdom.
lb - constant) / scalar;
4363 aggvarlb = (var->
glbdom.
ub - constant) / scalar;
4380 SCIP_CALL(
SCIPvarFix(aggvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
4381 eventqueue, cliquetable, aggvarlb, infeasible, fixed) );
4382 if( !(*infeasible) )
4386 SCIP_CALL(
SCIPvarFix(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
4387 eventqueue, cliquetable, aggvarlb * scalar + constant, infeasible, &varfixed) );
4388 assert(*fixed == varfixed);
4412 while( aggvarbdschanged );
4455 assert(var !=
NULL);
4456 assert(aggvar !=
NULL);
4457 assert(var->
scip == set->scip);
4462 assert(infeasible !=
NULL);
4463 assert(aggregated !=
NULL);
4465 *infeasible =
FALSE;
4466 *aggregated =
FALSE;
4474 SCIP_CALL(
SCIPvarFix(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue,
4475 cliquetable, constant, infeasible, aggregated) );
4503 SCIP_CALL(
SCIPvarFix(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
4504 eventqueue, cliquetable, constant/(1.0-scalar), infeasible, aggregated) );
4510 SCIP_CALL(
varUpdateAggregationBounds(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
4511 branchcand, eventqueue, cliquetable, aggvar, scalar, constant, infeasible, &fixed) );
4512 if( *infeasible || fixed )
4514 *aggregated = fixed;
4584 for( i = 0; i < nvbds && !(*infeasible); ++i )
4586 SCIP_CALL(
SCIPvarAddVlb(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
4587 eventqueue, vars[i], coefs[i], constants[i],
FALSE, infeasible,
NULL) );
4596 for( i = 0; i < nvbds && !(*infeasible); ++i )
4598 SCIP_CALL(
SCIPvarAddVub(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
4599 eventqueue, vars[i], coefs[i], constants[i],
FALSE, infeasible,
NULL) );
4612 for( i = 0; i < 2; ++i )
4624 for( j = 0; j < nimpls && !(*infeasible); ++j )
4629 SCIP_CALL(
SCIPvarAddImplic(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
4630 branchcand, eventqueue, (
SCIP_Bool)i, implvars[j], impltypes[j], implbounds[j],
FALSE, infeasible,
4696 SCIP_CALL(
SCIPvarAddObj(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, obj) );
4754 #define MAXDNOM 1000000LL 4756 assert(
set !=
NULL);
4757 assert(blkmem !=
NULL);
4758 assert(stat !=
NULL);
4759 assert(transprob !=
NULL);
4760 assert(origprob !=
NULL);
4761 assert(tree !=
NULL);
4763 assert(cliquetable !=
NULL);
4764 assert(branchcand !=
NULL);
4765 assert(eventqueue !=
NULL);
4766 assert(varx !=
NULL);
4767 assert(vary !=
NULL);
4768 assert(varx != vary);
4769 assert(infeasible !=
NULL);
4770 assert(aggregated !=
NULL);
4779 *infeasible =
FALSE;
4780 *aggregated =
FALSE;
4788 assert(scalarxd >= 1);
4789 assert(scalaryd >= 1);
4793 a = (scm/scalarxd)*scalarxn;
4794 b = (scm/scalaryd)*scalaryn;
4818 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
4819 branchcand, eventqueue, vary, (
SCIP_Real)(-b/a), (
SCIP_Real)(c/a), infeasible, aggregated) );
4820 assert(*aggregated);
4827 SCIP_CALL(
SCIPvarAggregate(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
4828 branchcand, eventqueue, varx, (
SCIP_Real)(-a/b), (
SCIP_Real)(c/b), infeasible, aggregated) );
4829 assert(*aggregated);
4860 if( currentclass < 0 )
4862 assert(0 <= currentclass && currentclass < a);
4868 assert(0 <= classstep && classstep < a);
4870 while( currentclass != 0 )
4872 assert(0 <= currentclass && currentclass < a);
4873 currentclass += classstep;
4874 if( currentclass >= a )
4879 assert(((c - b*ysol)%a) == 0);
4881 xsol = (c - b*ysol)/a;
4906 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
4907 branchcand, eventqueue, aggvar, (
SCIP_Real)(-b), (
SCIP_Real)xsol, infeasible, aggregated) );
4908 assert(*aggregated || *infeasible);
4910 if( !(*infeasible) )
4912 SCIP_CALL(
SCIPvarAggregate(vary, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
4913 branchcand, eventqueue, aggvar, (
SCIP_Real)a, (
SCIP_Real)ysol, infeasible, aggregated) );
4914 assert(*aggregated || *infeasible);
4963 assert(
set !=
NULL);
4964 assert(blkmem !=
NULL);
4965 assert(stat !=
NULL);
4966 assert(transprob !=
NULL);
4967 assert(origprob !=
NULL);
4968 assert(tree !=
NULL);
4970 assert(cliquetable !=
NULL);
4971 assert(branchcand !=
NULL);
4972 assert(eventqueue !=
NULL);
4973 assert(varx !=
NULL);
4974 assert(vary !=
NULL);
4975 assert(varx != vary);
4976 assert(infeasible !=
NULL);
4977 assert(aggregated !=
NULL);
4984 *infeasible =
FALSE;
4985 *aggregated =
FALSE;
4987 absquot =
REALABS(scalarx / scalary);
4989 maxscalar =
MAX(maxscalar, 1.0);
4991 if( absquot > maxscalar || absquot < 1 / maxscalar )
5065 scalar = -scalary/scalarx;
5066 constant = rhs/scalarx;
5083 SCIP_CALL(
SCIPvarAggregate(varx, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
5084 branchcand, eventqueue, vary, scalar, constant, infeasible, aggregated) );
5085 assert(*aggregated || *infeasible);
5091 SCIP_CALL(
tryAggregateIntVars(
set, blkmem, stat, transprob, origprob, primal, tree, reopt, lp, cliquetable,
5092 branchcand, eventfilter, eventqueue, varx, vary, scalarx, scalary, rhs, infeasible, aggregated) );
5135 int tmprequiredsize;
5137 assert(var !=
NULL);
5138 assert(var->
scip == set->scip);
5141 assert(naggvars == 0 || aggvars !=
NULL);
5143 assert(infeasible !=
NULL);
5144 assert(aggregated !=
NULL);
5146 SCIPsetDebugMsg(
set,
"trying multi-aggregating variable <%s> == ...%d vars... %+g\n", var->
name, naggvars, constant);
5148 *infeasible =
FALSE;
5149 *aggregated =
FALSE;
5156 SCIPerrorMessage(
"cannot multi-aggregate an untransformed original variable\n");
5160 reopt, lp, cliquetable, branchcand, eventfilter, eventqueue, naggvars, aggvars,
scalars, constant, infeasible, aggregated) );
5167 ntmpvars = naggvars;
5168 tmpvarssize = naggvars;
5169 tmpconstant = constant;
5175 if( tmprequiredsize > tmpvarssize )
5179 tmpvarssize = tmprequiredsize;
5181 assert( tmprequiredsize <= tmpvarssize );
5189 for( v = ntmpvars - 1; v >= 0; --v )
5191 assert(tmpvars[v] !=
NULL);
5194 if( tmpvars[v]->index == var->
index )
5196 tmpscalar += tmpscalars[v];
5197 tmpvars[v] = tmpvars[ntmpvars - 1];
5198 tmpscalars[v] = tmpscalars[ntmpvars - 1];
5210 SCIPsetDebugMsg(
set,
"Possible multi-aggregation was completely resolved and detected to be redundant.\n");
5215 SCIPsetDebugMsg(
set,
"Multi-aggregation was completely resolved and led to infeasibility.\n");
5220 else if( ntmpvars == 1 )
5222 assert(tmpscalars[0] != 0.0);
5223 assert(tmpvars[0] !=
NULL);
5225 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to fixing of variable <%s> to %g.\n",
SCIPvarGetName(tmpvars[0]), -constant/tmpscalars[0]);
5226 SCIP_CALL(
SCIPvarFix(tmpvars[0], blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
5227 branchcand, eventqueue, cliquetable, -constant/tmpscalars[0], infeasible, aggregated) );
5230 else if( ntmpvars == 2 )
5234 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %g and %g and constant %g.\n",
5238 cliquetable, branchcand, eventfilter, eventqueue, tmpvars[0], tmpvars[1], tmpscalars[0],
5239 tmpscalars[1], -tmpconstant, infeasible, aggregated) );
5252 tmpscalar = 1 - tmpscalar;
5253 tmpconstant /= tmpscalar;
5254 for( v = ntmpvars - 1; v >= 0; --v )
5255 tmpscalars[v] /= tmpscalar;
5262 SCIP_CALL(
SCIPvarFix(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, branchcand,
5263 eventqueue, cliquetable, tmpconstant, infeasible, aggregated) );
5270 SCIPsetDebugMsg(
set,
"Possible multi-aggregation led to aggregation of variables <%s> and <%s> with scalars %g and %g and constant %g.\n",
5274 cliquetable, branchcand, eventfilter, eventqueue, var, tmpvars[0], 1.0, -tmpscalars[0], tmpconstant,
5275 infeasible, aggregated) );
5288 SCIPsetDebugMsg(
set,
"variable is not allowed to be multi-aggregated.\n");
5340 for( v = 0; v < ntmpvars; ++v )
5342 assert(tmpvars[v] !=
NULL);
5344 branchfactor =
MAX(tmpvars[v]->branchfactor, branchfactor);
5345 branchpriority =
MAX(tmpvars[v]->branchpriority, branchpriority);
5350 for( v = 0; v < ntmpvars; ++v )
5356 if( tmpscalars[v] >= 0.0 )
5381 SCIP_CALL(
SCIPvarAddObj(var, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp, eventqueue, obj) );
5404 SCIPerrorMessage(
"cannot multi-aggregate a multiple aggregated variable again\n");
5417 for( v = 0; v < naggvars; ++v )
5421 SCIP_CALL(
SCIPvarMultiaggregate(var->
negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
5422 cliquetable, branchcand, eventfilter, eventqueue, naggvars, aggvars,
scalars,
5426 for( v = 0; v < naggvars; ++v )
5448 assert(var !=
NULL);
5456 assert(retvar !=
NULL);
5497 assert(var !=
NULL);
5500 assert(retvar !=
NULL);
5534 assert(var !=
NULL);
5535 assert(var->
scip == set->scip);
5536 assert(negvar !=
NULL);
5561 (*negvar)->data.negate.constant = 1.0;
5572 (*negvar)->glbdom.lb = (*negvar)->data.negate.constant - var->
glbdom.
ub;
5573 (*negvar)->glbdom.ub = (*negvar)->data.negate.constant - var->
glbdom.
lb;
5574 (*negvar)->locdom.lb = (*negvar)->data.negate.constant - var->
locdom.
ub;
5575 (*negvar)->locdom.ub = (*negvar)->data.negate.constant - var->
locdom.
lb;
5595 (*negvar)->lazylb = (*negvar)->data.negate.constant - var->
lazyub;
5596 (*negvar)->lazyub = (*negvar)->data.negate.constant - var->
lazylb;
5600 assert((*negvar)->nuses == 1);
5620 assert(var !=
NULL);
5621 assert(probindex >= 0 || var->
vlbs ==
NULL);
5622 assert(probindex >= 0 || var->
vubs ==
NULL);
5639 assert(var !=
NULL);
5640 assert(probindex >= 0);
5654 assert(var !=
NULL);
5655 assert(name !=
NULL);
5657 var->
name = (
char*)name;
5676 assert(var->
scip == set->scip);
5707 assert(var !=
NULL);
5720 assert(var !=
NULL);
5723 assert(retvar !=
NULL);
5735 SCIPerrorMessage(
"cannot mark a multi-aggregated variable to not be multi-aggregated.\n");
5754 assert(var !=
NULL);
5760 SCIPerrorMessage(
"cannot change type of variable already in the problem\n");
5786 assert(var !=
NULL);
5787 assert(var->
scip == set->scip);
5813 assert(var !=
NULL);
5814 assert(
set !=
NULL);
5815 assert(var->
scip == set->scip);
5862 SCIPerrorMessage(
"cannot change objective value of a fixed, aggregated, multi-aggregated, or negated variable\n");
5890 assert(var !=
NULL);
5891 assert(
set !=
NULL);
5892 assert(var->
scip == set->scip);
5974 SCIP_CALL(
SCIPvarAddObj(var->
negatedvar, blkmem,
set, stat, transprob, origprob, primal, tree, reopt, lp,
5975 eventqueue, -addobj) );
5995 assert(var !=
NULL);
5996 assert(
set !=
NULL);
5997 assert(var->
scip == set->scip);
6000 SCIPsetDebugMsg(
set,
"changing objective of <%s> to %g in current dive\n", var->
name, newobj);
6031 SCIPerrorMessage(
"cannot change diving objective value of a multi-aggregated variable\n");
6057 assert(var !=
NULL);
6058 assert(
set !=
NULL);
6059 assert(var->
scip == set->scip);
6074 assert(var !=
NULL);
6075 assert(
set !=
NULL);
6076 assert(var->
scip == set->scip);
6109 assert(var !=
NULL);
6112 assert(
set !=
NULL);
6113 assert(var->
scip == set->scip);
6127 SCIPsetDebugMsg(
set,
"changing original lower bound of <%s> from %g to %g\n",
6148 assert(parentvar !=
NULL);
6168 assert(var !=
NULL);
6171 assert(
set !=
NULL);
6172 assert(var->
scip == set->scip);
6186 SCIPsetDebugMsg(
set,
"changing original upper bound of <%s> from %g to %g\n",
6207 assert(parentvar !=
NULL);
6231 assert(var !=
NULL);
6235 assert(
set !=
NULL);
6236 assert(var->
scip == set->scip);
6247 SCIPsetDebugMsg(
set,
"issue GLBCHANGED event for variable <%s>: %g -> %g\n", var->
name, oldbound, newbound);
6269 assert(var !=
NULL);
6273 assert(
set !=
NULL);
6274 assert(var->
scip == set->scip);
6285 SCIPsetDebugMsg(
set,
"issue GUBCHANGED event for variable <%s>: %g -> %g\n", var->
name, oldbound, newbound);
6305 assert(var !=
NULL);
6308 assert(
set !=
NULL);
6309 assert(var->
scip == set->scip);
6317 SCIPsetDebugMsg(
set,
"issue GHOLEADDED event for variable <%s>: (%.15g,%.15g)\n", var->
name, left, right);
6334 assert(var !=
NULL);
6335 assert(
set !=
NULL);
6336 assert(var->
scip == set->scip);
6337 assert(stat !=
NULL);
6385 assert(var !=
NULL);
6389 assert(blkmem !=
NULL);
6390 assert(
set !=
NULL);
6391 assert(var->
scip == set->scip);
6392 assert(stat !=
NULL);
6441 SCIPsetDebugMsg(
set,
" -> adjust lower bound change <%s>: %g -> %g due to new global lower bound %g\n",
6476 assert(parentvar !=
NULL);
6488 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
6505 parentnewbound = newbound;
6521 parentnewbound = -newbound;
6561 assert(var !=
NULL);
6565 assert(blkmem !=
NULL);
6566 assert(
set !=
NULL);
6567 assert(var->
scip == set->scip);
6568 assert(stat !=
NULL);
6616 SCIPsetDebugMsg(
set,
" -> adjust upper bound change <%s>: %g -> %g due to new global upper bound %g\n",
6651 assert(parentvar !=
NULL);
6663 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
6679 parentnewbound = newbound;
6694 parentnewbound = -newbound;
6731 assert(var !=
NULL);
6732 assert(blkmem !=
NULL);
6733 assert(
set !=
NULL);
6734 assert(var->
scip == set->scip);
6774 cliquetable, newbound) );
6813 childnewbound = newbound;
6828 childnewbound = -newbound;
6840 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
6874 assert(var !=
NULL);
6875 assert(blkmem !=
NULL);
6876 assert(
set !=
NULL);
6877 assert(var->
scip == set->scip);
6956 childnewbound = newbound;
6971 childnewbound = -newbound;
6983 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
7009 assert(var !=
NULL);
7013 assert(
set !=
NULL);
7014 assert(var->
scip == set->scip);
7032 assert(var !=
NULL);
7036 assert(
set !=
NULL);
7037 assert(var->
scip == set->scip);
7069 return SCIPvarChgLbGlobal(var, blkmem,
set, stat, lp, branchcand, eventqueue, cliquetable, newbound);
7071 return SCIPvarChgUbGlobal(var, blkmem,
set, stat, lp, branchcand, eventqueue, cliquetable, newbound);
7091 assert(var !=
NULL);
7095 assert(
set !=
NULL);
7096 assert(var->
scip == set->scip);
7107 SCIPsetDebugMsg(
set,
"issue LBCHANGED event for variable <%s>: %g -> %g\n", var->
name, oldbound, newbound);
7129 assert(var !=
NULL);
7133 assert(
set !=
NULL);
7134 assert(var->
scip == set->scip);
7145 SCIPsetDebugMsg(
set,
"issue UBCHANGED event for variable <%s>: %g -> %g\n", var->
name, oldbound, newbound);
7186 assert(var !=
NULL);
7187 assert(
set !=
NULL);
7188 assert(var->
scip == set->scip);
7243 assert(parentvar !=
NULL);
7255 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
7276 if( parentnewbound > parentvar->
glbdom.
ub )
7280 parentnewbound = parentvar->
glbdom.
ub;
7284 parentnewbound = newbound;
7304 if( parentnewbound < parentvar->glbdom.lb )
7308 parentnewbound = parentvar->
glbdom.
lb;
7312 parentnewbound = -newbound;
7351 assert(var !=
NULL);
7352 assert(
set !=
NULL);
7353 assert(var->
scip == set->scip);
7408 assert(parentvar !=
NULL);
7420 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
7440 if( parentnewbound < parentvar->glbdom.lb )
7444 parentnewbound = parentvar->
glbdom.
lb;
7448 parentnewbound = newbound;
7467 if( parentnewbound > parentvar->
glbdom.
ub )
7471 parentnewbound = parentvar->
glbdom.
ub;
7475 parentnewbound = -newbound;
7511 assert(var !=
NULL);
7512 assert(blkmem !=
NULL);
7513 assert(
set !=
NULL);
7514 assert(var->
scip == set->scip);
7577 childnewbound = newbound;
7592 childnewbound = -newbound;
7604 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
7637 assert(var !=
NULL);
7638 assert(blkmem !=
NULL);
7639 assert(
set !=
NULL);
7640 assert(var->
scip == set->scip);
7702 childnewbound = newbound;
7717 childnewbound = -newbound;
7729 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
7767 return SCIPvarChgLbLocal(var, blkmem,
set, stat, lp, branchcand, eventqueue, newbound);
7769 return SCIPvarChgUbLocal(var, blkmem,
set, stat, lp, branchcand, eventqueue, newbound);
7784 assert(var !=
NULL);
7785 assert(
set !=
NULL);
7786 assert(var->
scip == set->scip);
7793 SCIPsetDebugMsg(
set,
"changing lower bound of <%s> to %g in current dive\n", var->
name, newbound);
7809 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
7826 childnewbound = newbound;
7837 childnewbound = -newbound;
7848 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
7874 assert(var !=
NULL);
7875 assert(
set !=
NULL);
7876 assert(var->
scip == set->scip);
7883 SCIPsetDebugMsg(
set,
"changing upper bound of <%s> to %g in current dive\n", var->
name, newbound);
7899 SCIPerrorMessage(
"cannot change variable's bounds in dive for LOOSE variables\n");
7916 childnewbound = newbound;
7927 childnewbound = -newbound;
7938 SCIPerrorMessage(
"cannot change the bounds of a multi-aggregated variable.\n");
7974 assert(var !=
NULL);
7975 assert(
set !=
NULL);
7976 assert(var->
scip == set->scip);
8040 assert(var !=
NULL);
8041 assert(
set !=
NULL);
8042 assert(var->
scip == set->scip);
8106 assert(var !=
NULL);
8107 assert(
set !=
NULL);
8108 assert(var->
scip == set->scip);
8172 assert(var !=
NULL);
8173 assert(
set !=
NULL);
8174 assert(var->
scip == set->scip);
8231 assert(var !=
NULL);
8235 assert(
set !=
NULL);
8236 assert(var->
scip == set->scip);
8289 assert(var !=
NULL);
8290 assert(added !=
NULL);
8291 assert(blkmem !=
NULL);
8339 assert(parentvar !=
NULL);
8344 parentnewleft = left;
8345 parentnewright = right;
8352 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
8391 assert(blkmem !=
NULL);
8392 assert(
SCIPsetIsLT(
set, parentnewleft, parentnewright));
8394 parentnewleft, parentnewright, &localadded) );
8416 assert(var !=
NULL);
8418 assert(blkmem !=
NULL);
8419 assert(added !=
NULL);
8441 left, right, added) );
8492 childnewleft, childnewright, added) );
8508 childnewleft, childnewright, added) );
8537 assert(var !=
NULL);
8538 assert(added !=
NULL);
8539 assert(blkmem !=
NULL);
8575 SCIP_CALL( varEventLholeAdded(var, blkmem,
set, lp, branchcand, eventqueue, left, right) );
8587 assert(parentvar !=
NULL);
8592 parentnewleft = left;
8593 parentnewright = right;
8600 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
8639 assert(blkmem !=
NULL);
8640 assert(
SCIPsetIsLT(
set, parentnewleft, parentnewright));
8642 parentnewleft, parentnewright, &localadded) );
8664 assert(var !=
NULL);
8668 assert(
set !=
NULL);
8669 assert(var->
scip == set->scip);
8671 assert(blkmem !=
NULL);
8672 assert(added !=
NULL);
8692 left, right, added) );
8732 childnewleft, childnewright, added) );
8736 SCIPerrorMessage(
"cannot add domain hole to a multi-aggregated variable.\n");
8766 assert(var !=
NULL);
8767 assert(
set !=
NULL);
8768 assert(var->
scip == set->scip);
8801 assert(var !=
NULL);
8852 assert(
SCIPsetIsGE(
set, lb, lb * vbcoef + vbconstant) );
8853 assert(
SCIPsetIsGE(
set, ub, ub * vbcoef + vbconstant) );
8857 assert(
SCIPsetIsGE(
set, lb, ub * vbcoef + vbconstant) );
8858 assert(
SCIPsetIsGE(
set, ub, lb * vbcoef + vbconstant) );
8866 assert(
SCIPsetIsLE(
set, lb, lb * vbcoef + vbconstant) );
8867 assert(
SCIPsetIsLE(
set, ub, ub * vbcoef + vbconstant) );
8871 assert(
SCIPsetIsLE(
set, lb, ub * vbcoef + vbconstant) );
8872 assert(
SCIPsetIsLE(
set, ub, lb * vbcoef + vbconstant) );
8876 SCIPsetDebugMsg(
set,
"redundant variable bound: <%s> %s %g<%s> %+g\n",
8922 assert(redundant !=
NULL);
8923 assert(infeasible !=
NULL);
8963 assert(infeasible !=
NULL);
8965 *infeasible =
FALSE;
8983 assert(tree !=
NULL);
8984 assert(transprob !=
NULL);
8995 if( nbdchgs !=
NULL )
9013 assert(tree !=
NULL);
9014 assert(transprob !=
NULL);
9025 if( nbdchgs !=
NULL )
9066 assert(var !=
NULL);
9071 assert(infeasible !=
NULL);
9072 assert(added !=
NULL);
9077 *infeasible =
FALSE;
9081 checkImplic(
set, implvar, impltype, implbound, &redundant, &conflict);
9082 assert(!redundant || !conflict);
9086 if( var == implvar )
9111 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
9112 cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
9134 vals[0] = varfixing;
9138 SCIP_CALL(
SCIPcliquetableAdd(cliquetable, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
9139 eventqueue, vars, vals, 2,
FALSE, &conflict, nbdchgs) );
9147 SCIPsetDebugMsg(
set,
"adding implication: <%s> == %u ==> <%s> %s %g\n",
9151 isshortcut, &conflict, added) );
9154 assert(!conflict || !(*added));
9166 assert(tree !=
NULL);
9167 assert(transprob !=
NULL);
9192 if( nbdchgs !=
NULL )
9230 varfixing ? implbound - ub : ub - implbound, varfixing ? ub : implbound) );
9238 varfixing ? implbound - lb : lb - implbound, varfixing ? lb : implbound) );
9274 *infeasible =
FALSE;
9291 while ( i >= 0 && !(*infeasible) )
9295 assert(implvars[i] != implvar);
9302 SCIP_CALL(
varAddImplic(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
9303 eventqueue, varfixing, implvars[i], impltypes[i], implbounds[i],
TRUE, infeasible, nbdchgs, &added) );
9345 assert(var !=
NULL);
9348 assert(implvar !=
NULL);
9350 assert(infeasible !=
NULL);
9353 SCIP_CALL(
varAddImplic(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable, branchcand,
9354 eventqueue, varfixing, implvar, impltype, implbound,
FALSE, infeasible, nbdchgs, &added) );
9356 if( *infeasible || var == implvar || !transitive || !added )
9370 cliquetable, branchcand, eventqueue, varfixing, implvar, implvarfixing, infeasible, nbdchgs) );
9373 if( !(*infeasible) )
9376 cliquetable, branchcand, eventqueue, !implvarfixing, var, !varfixing, infeasible, nbdchgs) );
9402 while ( i >= 0 && !(*infeasible) )
9404 assert(vlbvars[i] != implvar);
9429 vbimplbound = (implbound - vlbconstants[i])/vlbcoefs[i];
9430 if( vlbcoefs[i] >= 0.0 )
9433 SCIP_CALL(
varAddImplic(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
9435 infeasible, nbdchgs, &added) );
9440 SCIP_CALL(
varAddImplic(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
9442 infeasible, nbdchgs, &added) );
9445 i =
MIN(i, nvlbvars);
9472 while ( i >= 0 && !(*infeasible) )
9474 assert(vubvars[i] != implvar);
9499 vbimplbound = (implbound - vubconstants[i])/vubcoefs[i];
9500 if( vubcoefs[i] >= 0.0 )
9503 SCIP_CALL(
varAddImplic(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
9505 infeasible, nbdchgs, &added) );
9510 SCIP_CALL(
varAddImplic(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
9512 infeasible, nbdchgs, &added) );
9515 i =
MIN(i, nvubvars);
9550 assert(var !=
NULL);
9551 assert(
set !=
NULL);
9552 assert(var->
scip == set->scip);
9554 assert(infeasible !=
NULL);
9558 *infeasible =
FALSE;
9559 if( nbdchgs !=
NULL )
9567 cliquetable, branchcand, eventqueue, vlbvar, vlbcoef, vlbconstant, transitive, infeasible, nbdchgs) );
9589 assert(tree !=
NULL);
9590 assert(transprob !=
NULL);
9601 if( nbdchgs !=
NULL )
9615 assert(vlbcoef != 0.0);
9626 if( vlbcoef >= 0.0 )
9633 newzub = (xub - vlbconstant)/vlbcoef;
9654 assert(tree !=
NULL);
9655 assert(transprob !=
NULL);
9667 if( nbdchgs !=
NULL )
9670 maxvlb = vlbcoef * zub + vlbconstant;
9672 minvlb = vlbcoef * zlb + vlbconstant;
9677 maxvlb = vlbcoef * zub + vlbconstant;
9679 minvlb = vlbcoef * zlb + vlbconstant;
9689 newzlb = (xub - vlbconstant)/vlbcoef;
9710 assert(tree !=
NULL);
9711 assert(transprob !=
NULL);
9723 if( nbdchgs !=
NULL )
9726 maxvlb = vlbcoef * zlb + vlbconstant;
9728 minvlb = vlbcoef * zub + vlbconstant;
9733 maxvlb = vlbcoef * zlb + vlbconstant;
9735 minvlb = vlbcoef * zub + vlbconstant;
9738 if( maxvlb < minvlb )
9762 assert(tree !=
NULL);
9763 assert(transprob !=
NULL);
9775 if( nbdchgs !=
NULL )
9789 if( vlbcoef >= 0.0 )
9791 vlbcoef = maxvlb - minvlb;
9792 vlbconstant = minvlb;
9796 vlbcoef = minvlb - maxvlb;
9797 vlbconstant = maxvlb;
9817 cliquetable, branchcand, eventqueue, (vlbcoef >= 0.0), var,
SCIP_BOUNDTYPE_LOWER, maxvlb, transitive,
9818 infeasible, nbdchgs) );
9827 implbound = -vlbconstant/vlbcoef;
9839 implbound, transitive, infeasible, nbdchgs) );
9884 SCIP_CALL(
SCIPvarAddVub(var->
negatedvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
9885 branchcand, eventqueue, vlbvar, -vlbcoef, var->
data.
negate.
constant - vlbconstant, transitive, infeasible,
9922 assert(var !=
NULL);
9923 assert(
set !=
NULL);
9924 assert(var->
scip == set->scip);
9926 assert(infeasible !=
NULL);
9930 *infeasible =
FALSE;
9931 if( nbdchgs !=
NULL )
9939 cliquetable, branchcand, eventqueue, vubvar, vubcoef, vubconstant, transitive, infeasible, nbdchgs) );
9947 SCIPsetDebugMsg(
set,
" -> transformed to variable upper bound <%s> <= %g<%s> + %g\n",
9962 assert(tree !=
NULL);
9963 assert(transprob !=
NULL);
9974 if( nbdchgs !=
NULL )
9988 assert(vubcoef != 0.0);
9999 if( vubcoef >= 0.0 )
10006 newzlb = (xlb - vubconstant)/vubcoef;
10009 *infeasible =
TRUE;
10022 assert(tree !=
NULL);
10023 assert(transprob !=
NULL);
10035 if( nbdchgs !=
NULL )
10038 minvub = vubcoef * zlb + vubconstant;
10040 maxvub = vubcoef * zub + vubconstant;
10045 maxvub = vubcoef * zub + vubconstant;
10047 minvub = vubcoef * zlb + vubconstant;
10057 newzub = (xlb - vubconstant)/vubcoef;
10060 *infeasible =
TRUE;
10073 assert(tree !=
NULL);
10074 assert(transprob !=
NULL);
10086 if( nbdchgs !=
NULL )
10089 minvub = vubcoef * zub + vubconstant;
10091 maxvub = vubcoef * zlb + vubconstant;
10096 minvub = vubcoef * zub + vubconstant;
10098 maxvub = vubcoef * zlb + vubconstant;
10102 if( minvub > maxvub )
10112 *infeasible =
TRUE;
10126 assert(tree !=
NULL);
10127 assert(transprob !=
NULL);
10139 if( nbdchgs !=
NULL )
10153 if( vubcoef >= 0.0 )
10155 vubcoef = maxvub - minvub;
10156 vubconstant = minvub;
10160 vubcoef = minvub - maxvub;
10161 vubconstant = maxvub;
10181 cliquetable, branchcand, eventqueue, (vubcoef < 0.0), var,
SCIP_BOUNDTYPE_UPPER, minvub, transitive,
10182 infeasible, nbdchgs) );
10192 (1.0-vubconstant)/vubcoef, transitive, infeasible, nbdchgs) );
10237 SCIP_CALL(
SCIPvarAddVlb(var->
negatedvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
10238 branchcand, eventqueue, vubvar, -vubcoef, var->
data.
negate.
constant - vubconstant, transitive, infeasible,
10278 assert(var !=
NULL);
10279 assert(
set !=
NULL);
10280 assert(var->
scip == set->scip);
10282 assert(infeasible !=
NULL);
10284 *infeasible =
FALSE;
10285 if( nbdchgs !=
NULL )
10293 cliquetable, branchcand, eventqueue, varfixing, implvar, impltype, implbound, transitive, infeasible,
10307 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
10308 cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
10317 SCIP_CALL(
varAddTransitiveImplic(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
10318 branchcand, eventqueue, varfixing, implvar, impltype, implbound, transitive, infeasible, nbdchgs) );
10327 SCIP_CALL(
applyImplic(blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,
10328 cliquetable, implvar, impltype, implbound, infeasible, nbdchgs) );
10351 cliquetable, branchcand, eventqueue, varfixing, implvar, impltype, implbound, transitive, infeasible,
10357 cliquetable, branchcand, eventqueue, !varfixing, implvar, impltype, implbound, transitive, infeasible,
10381 cliquetable, branchcand, eventqueue, !varfixing, implvar, impltype, implbound, transitive, infeasible, nbdchgs) );
10389 SCIP_CALL(
SCIPvarAddImplic(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
10392 infeasible, nbdchgs) );
10407 cliquetable, branchcand, eventqueue, implvar, (impltype ==
SCIP_BOUNDTYPE_UPPER) ? 1.0 : -1.0,
10416 cliquetable, branchcand, eventqueue, implvar, (impltype ==
SCIP_BOUNDTYPE_UPPER) ? -1.0 : 1.0,
10426 SCIP_CALL(
SCIPvarAddVub(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
10427 branchcand, eventqueue, var->
negatedvar, (varfixing) ? 1.0 : -1.0,
10428 (varfixing) ? 0.0 : 1.0, transitive, infeasible, nbdchgs) );
10435 SCIP_CALL(
SCIPvarAddVlb(implvar, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, cliquetable,
10436 branchcand, eventqueue, var->
negatedvar, (varfixing) ? -1.0 : 1.0, (varfixing) ? 1.0 : 0.0,
10437 transitive, infeasible, nbdchgs) );
10462 assert(var !=
NULL);
10463 assert(implvar !=
NULL);
10506 assert(var !=
NULL);
10507 assert(
set !=
NULL);
10508 assert(var->
scip == set->scip);
10509 assert(infeasible !=
NULL);
10511 *infeasible =
FALSE;
10513 if( value ==
FALSE )
10516 *infeasible =
TRUE;
10524 assert(tree !=
NULL);
10525 assert(transprob !=
NULL);
10536 if( nbdchgs !=
NULL )
10543 *infeasible =
TRUE;
10551 assert(tree !=
NULL);
10552 assert(transprob !=
NULL);
10563 if( nbdchgs !=
NULL )
10598 assert(var !=
NULL);
10599 assert(
set !=
NULL);
10600 assert(var->
scip == set->scip);
10602 assert(infeasible !=
NULL);
10604 *infeasible =
FALSE;
10632 SCIP_CALL(
SCIPvarFixBinary(var, blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
10633 eventqueue, cliquetable, !value, infeasible, nbdchgs) );
10639 if( oppositeentry )
10649 for( i = 0; i < nvars && !(*infeasible); ++i )
10651 if( vars[i] == var )
10654 SCIP_CALL(
SCIPvarFixBinary(vars[i], blkmem,
set, stat, transprob, origprob, tree, reopt, lp, branchcand,
10655 eventqueue, cliquetable, !values[i], infeasible, nbdchgs) );
10676 assert(vars !=
NULL);
10677 assert(values !=
NULL);
10679 assert(
set !=
NULL);
10680 assert(blkmem !=
NULL);
10681 assert(clique !=
NULL);
10683 for( v = nvars - 1; v >= 0; --v )
10710 assert(var !=
NULL);
10731 assert(var !=
NULL);
10749 assert(var !=
NULL);
10792 assert(var1 !=
NULL);
10793 assert(var2 !=
NULL);
10815 assert(var !=
NULL);
10816 assert(
set !=
NULL);
10817 assert(var->
scip == set->scip);
10821 branchfactor =
MAX(branchfactor, eps);
10835 assert(parentvar !=
NULL);
10847 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
10877 assert(var !=
NULL);
10878 assert(
set !=
NULL);
10879 assert(var->
scip == set->scip);
10880 assert(branchfactor >= 0.0);
10947 assert(var !=
NULL);
10949 SCIPdebugMessage(
"process changing branch priority of <%s> from %d to %d\n",
10962 assert(parentvar !=
NULL);
10974 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
11002 assert(var !=
NULL);
11066 assert(var !=
NULL);
11068 SCIPdebugMessage(
"process changing branch direction of <%s> from %u to %d\n",
11081 assert(parentvar !=
NULL);
11093 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
11132 assert(var !=
NULL);
11215 assert(var1 !=
NULL);
11216 assert(var2 !=
NULL);
11225 assert(var1 !=
NULL);
11226 assert(var2 !=
NULL);
11233 assert(var1 == var2);
11253 assert(var1 !=
NULL);
11254 assert(var2 !=
NULL);
11262 assert(var1 == var2);
11284 else if( obj1 > obj2 )
11326 int activevarssize;
11338 assert(
set !=
NULL);
11339 assert(nvars !=
NULL);
11340 assert(vars !=
NULL || *nvars == 0);
11341 assert(varssize >= *nvars);
11342 assert(requiredsize !=
NULL);
11350 activevarssize = *nvars;
11352 tmpvarssize = *nvars;
11358 noldtmpvars = ntmpvars;
11361 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
11362 for( v = ntmpvars - 1; v > 0; --v )
11368 tmpvars[v] = tmpvars[ntmpvars];
11372 if( noldtmpvars > ntmpvars )
11373 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
11376 while( ntmpvars >= 1 )
11379 var = tmpvars[ntmpvars];
11380 assert( var !=
NULL );
11387 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
11408 if( nactivevars >= activevarssize )
11410 activevarssize *= 2;
11412 assert(nactivevars < activevarssize);
11414 activevars[nactivevars] = var;
11424 if( nmultvars + ntmpvars > tmpvarssize )
11426 while( nmultvars + ntmpvars > tmpvarssize )
11429 assert(nmultvars + ntmpvars <= tmpvarssize);
11438 ntmpvars += nmultvars;
11439 noldtmpvars = ntmpvars;
11442 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
11443 for( v = ntmpvars - 1; v > 0; --v )
11449 tmpvars[v] = tmpvars[ntmpvars];
11453 if( noldtmpvars > ntmpvars )
11454 SCIPsortPtr((
void**)tmpvars, SCIPvarComp, ntmpvars);
11470 SCIPsortPtr((
void**)activevars, SCIPvarComp, nactivevars);
11473 v = nactivevars - 1;
11480 activevars[v] = activevars[nactivevars];
11484 *requiredsize = nactivevars;
11486 if( varssize >= *requiredsize )
11488 assert(vars !=
NULL);
11490 *nvars = *requiredsize;
11510 assert(vars !=
NULL || nvars == 0);
11512 for( v = nvars - 1; v >= 0; --v )
11514 assert(vars !=
NULL);
11515 assert(vars[v] !=
NULL);
11518 assert(vars[v] !=
NULL);
11529 assert(var !=
NULL);
11537 assert(retvar !=
NULL);
11544 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
11593 assert(vars !=
NULL);
11594 assert(*vars !=
NULL || nvars == 0);
11595 assert(negatedarr !=
NULL);
11596 assert(*negatedarr !=
NULL || nvars == 0);
11598 for( v = nvars - 1; v >= 0; --v )
11600 var = &((*vars)[v]);
11601 negated = &((*negatedarr)[v]);
11626 assert(var !=
NULL);
11627 assert(*var !=
NULL);
11628 assert(negated !=
NULL);
11632 orignegated = *negated;
11640 if( (*var)->data.original.transvar ==
NULL )
11653 if ( (*var)->data.multaggr.nvars == 1 )
11655 assert( (*var)->data.multaggr.vars !=
NULL );
11656 assert( (*var)->data.multaggr.scalars !=
NULL );
11658 assert(!
EPSZ((*var)->data.multaggr.scalars[0], 1e-06));
11668 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)) )
11670 assert(
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06));
11679 if( !
EPSEQ(
REALABS((*var)->data.multaggr.scalars[0]), 1.0, 1e-06) )
11689 assert(
EPSZ((*var)->data.multaggr.constant, 1e-06) ||
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06)
11690 ||
EPSZ((*var)->data.multaggr.constant + (*var)->data.multaggr.scalars[0], 1e-06)
11691 ||
EPSEQ((*var)->data.multaggr.constant + (*var)->data.multaggr.scalars[0], 1.0, 1e-06));
11693 if( !
EPSZ((*var)->data.multaggr.constant, 1e-06) && !
EPSEQ((*var)->data.multaggr.constant, 1.0, 1e-06) )
11699 assert(
EPSEQ((*var)->data.multaggr.scalars[0], 1.0, 1e-06) ||
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06));
11701 if(
EPSZ((*var)->data.multaggr.constant, 1e-06) )
11707 assert(
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06) ?
11713 assert(
EPSEQ((*var)->data.multaggr.scalars[0], -1.0, 1e-06));
11715 constant += (*negated) != orignegated ? -1.0 : 1.0;
11718 *negated = !(*negated);
11728 assert((*var)->data.aggregate.var !=
NULL);
11729 assert(
EPSEQ((*var)->data.aggregate.scalar, 1.0, 1e-06) ||
EPSEQ((*var)->data.aggregate.scalar, -1.0, 1e-06));
11730 assert(
EPSLE((*var)->data.aggregate.var->glbdom.ub - (*var)->data.aggregate.var->glbdom.lb, 1.0, 1e-06));
11732 constant += (*negated) != orignegated ? -(*var)->data.aggregate.constant : (*var)->data.aggregate.constant;
11735 *negated = ((*var)->data.aggregate.scalar > 0.0) ? *negated : !(*negated);
11740 assert((*var)->negatedvar !=
NULL);
11742 constant += (*negated) != orignegated ? -1.0 : 1.0;
11745 *negated = !(*negated);
11759 assert(
EPSZ(constant, 1e-06) ||
EPSEQ(constant, 1.0, 1e-06));
11760 assert(
EPSZ(constant, 1e-06) == ((*negated) == orignegated));
11780 assert(var !=
NULL);
11781 assert(*var !=
NULL);
11783 assert(boundtype !=
NULL);
11785 SCIPdebugMessage(
"get probvar bound %g of type %d of variable <%s>\n", *
bound, *boundtype, (*var)->name);
11790 if( (*var)->data.original.transvar ==
NULL )
11792 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
11806 if ( (*var)->data.multaggr.nvars == 1 )
11808 assert( (*var)->data.multaggr.vars !=
NULL );
11809 assert( (*var)->data.multaggr.scalars !=
NULL );
11810 assert( (*var)->data.multaggr.scalars[0] != 0.0 );
11812 (*bound) /= (*var)->data.multaggr.scalars[0];
11813 (*bound) -= (*var)->data.multaggr.constant/(*var)->data.multaggr.scalars[0];
11814 if ( (*var)->data.multaggr.scalars[0] < 0.0 )
11827 assert((*var)->data.aggregate.var !=
NULL);
11828 assert((*var)->data.aggregate.scalar != 0.0);
11830 (*bound) /= (*var)->data.aggregate.scalar;
11831 (*bound) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
11832 if( (*var)->data.aggregate.scalar < 0.0 )
11844 assert((*var)->negatedvar !=
NULL);
11846 assert((*var)->negatedvar->negatedvar == *var);
11847 (*bound) = (*var)->data.negate.constant - *
bound;
11873 assert(var !=
NULL);
11874 assert(*var !=
NULL);
11875 assert(left !=
NULL);
11876 assert(right !=
NULL);
11878 SCIPdebugMessage(
"get probvar hole (%g,%g) of variable <%s>\n", *left, *right, (*var)->name);
11883 if( (*var)->data.original.transvar ==
NULL )
11885 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
11899 assert((*var)->data.aggregate.var !=
NULL);
11900 assert((*var)->data.aggregate.scalar != 0.0);
11903 (*left) /= (*var)->data.aggregate.scalar;
11904 (*right) /= (*var)->data.aggregate.scalar;
11907 (*left) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
11908 (*right) -= (*var)->data.aggregate.constant/(*var)->data.aggregate.scalar;
11913 if( (*var)->data.aggregate.scalar < 0.0 )
11924 assert((*var)->negatedvar !=
NULL);
11926 assert((*var)->negatedvar->negatedvar == *var);
11929 (*left) = (*var)->data.negate.constant - (*left);
11930 (*right) = (*var)->data.negate.constant - (*right);
11959 assert(var !=
NULL);
11960 assert(scalar !=
NULL);
11961 assert(constant !=
NULL);
11963 while( *var !=
NULL )
11968 if( (*var)->data.original.transvar ==
NULL )
11970 SCIPerrorMessage(
"original variable has no transformed variable attached\n");
11985 assert(*scalar != 0.0);
11986 if( (*scalar) * (*var)->glbdom.lb > 0.0 )
11992 (*constant) += *scalar * (*var)->glbdom.lb;
11997 assert(!
SCIPsetIsInfinity(
set, (*constant)) || !((*scalar) * (*var)->glbdom.lb < 0.0 &&
11999 assert(!
SCIPsetIsInfinity(
set, -(*constant)) || !((*scalar) * (*var)->glbdom.lb > 0.0 &&
12008 if ( (*var)->data.multaggr.nvars == 1 )
12010 assert((*var)->data.multaggr.vars !=
NULL);
12011 assert((*var)->data.multaggr.scalars !=
NULL);
12012 assert((*var)->data.multaggr.vars[0] !=
NULL);
12022 if( (*scalar) * (*var)->data.multaggr.constant > 0 )
12035 (*constant) += *scalar * (*var)->data.multaggr.constant;
12037 (*scalar) *= (*var)->data.multaggr.scalars[0];
12044 assert((*var)->data.aggregate.var !=
NULL);
12048 (*constant) += *scalar * (*var)->data.aggregate.constant;
12049 (*scalar) *= (*var)->data.aggregate.scalar;
12054 assert((*var)->negatedvar !=
NULL);
12056 assert((*var)->negatedvar->negatedvar == *var);
12060 (*constant) += *scalar * (*var)->data.negate.constant;
12087 assert(var !=
NULL);
12088 assert(*var !=
NULL);
12089 assert(scalar !=
NULL);
12090 assert(constant !=
NULL);
12097 if( (*var)->nparentvars == 0 )
12103 ((*var)->negatedvar->nparentvars == 0 || (*var)->negatedvar->parentvars[0] != *var) )
12106 *constant -= (*var)->data.negate.constant * (*scalar);
12124 assert(parentvar !=
NULL);
12135 SCIPerrorMessage(
"column, loose, fixed or multi-aggregated variable cannot be the parent of a variable\n");
12158 assert( parentvar !=
NULL );
12171 assert(var !=
NULL);
12178 assert(parentvar !=
NULL);
12183 assert( parentvar !=
NULL );
12195 assert(var !=
NULL);
12217 SCIPerrorMessage(
"cannot get the objective value of a multiple aggregated variable\n");
12242 assert(var !=
NULL);
12243 assert(
set !=
NULL);
12244 assert(var->
scip == set->scip);
12287 SCIPerrorMessage(
"getting the bounds of a multiple aggregated variable is not implemented yet\n");
12312 assert(var !=
NULL);
12313 assert(
set !=
NULL);
12314 assert(var->
scip == set->scip);
12356 SCIPerrorMessage(
"cannot get the bounds of a multi-aggregated variable.\n");
12378 assert(var !=
NULL);
12453 assert(var !=
NULL);
12501 assert(var !=
NULL);
12577 assert(var !=
NULL);
12591 assert(var !=
NULL);
12592 assert(
set !=
NULL);
12593 assert(var->
scip == set->scip);
12619 if( rootredcost > 0.0 )
12624 cutoffbound = (bound - rootsol) * rootredcost + rootlpobjval;
12627 if( cutoffbound > currcutoffbound )
12629 SCIPsetDebugMsg(
set,
"-> <%s> update potential cutoff bound <%g> -> <%g>\n",
12660 assert(var !=
NULL);
12733 assert(col !=
NULL);
12766 #define MAX_CLIQUELENGTH 50 12789 #ifdef SCIP_MORE_DEBUG 12815 assert(prob !=
NULL);
12825 assert(cliques !=
NULL);
12827 for( c = ncliques - 1; c >= 0; --c )
12829 clique = cliques[c];
12830 assert(clique !=
NULL);
12832 assert(nclqvars > 0);
12839 assert(clqvars !=
NULL);
12840 assert(clqvalues !=
NULL);
12844 for( v = nclqvars - 1; v >= 0; --v )
12846 clqvar = clqvars[v];
12847 assert(clqvar !=
NULL);
12854 assert(0 < probindex && probindex < nentries);
12860 assert(!entries[probindex] || entries[probindex] == (clqvalues[v] ? probindex : -probindex));
12862 if( entries[probindex] == 0 )
12864 ids[nids] = probindex;
12868 entries[probindex] = (clqvalues[v] ? probindex : -probindex);
12875 assert(probvars !=
NULL);
12878 for( v = nids - 1; v >= 0; --v )
12881 assert(0 <
id &&
id < nentries);
12882 assert(entries[
id] != 0);
12883 assert(probvars[
id - 1] !=
NULL);
12888 if( (entries[
id] > 0) != varfixing )
12889 redcost =
getImplVarRedcost(probvars[
id - 1],
set, (entries[
id] < 0), stat, lp);
12891 redcost = -
getImplVarRedcost(probvars[
id - 1],
set, (entries[
id] < 0), stat, lp);
12894 implredcost += redcost;
12904 #ifdef SCIP_MORE_DEBUG 12930 for( v = nvars - 1; v >= 0; --v )
12933 assert(implvar !=
NULL);
12943 assert(col !=
NULL);
12958 redcost *= (lb - bounds[v]);
12960 redcost *= (bounds[v] - lb);
12968 redcost *= (bounds[v] - ub);
12970 redcost *= (ub - bounds[v]);
12984 redcost *= (lb - bounds[v]);
12986 redcost *= (bounds[v] - lb);
12994 redcost *= (bounds[v] - ub);
12996 redcost *= (ub - bounds[v]);
13002 implredcost += redcost;
13006 #ifdef SCIP_MORE_DEBUG 13007 SCIPsetDebugMsg(
set,
"variable <%s> incl. cliques (%d) and implications (%d) has implied reduced cost of %g\n",
13011 return implredcost;
13024 assert(var !=
NULL);
13087 assert(var !=
NULL);
13121 assert(var !=
NULL);
13155 assert(var !=
NULL);
13171 assert(var !=
NULL);
13172 assert(relaxation !=
NULL);
13173 assert(
set !=
NULL);
13174 assert(var->
scip == set->scip);
13193 SCIPerrorMessage(
"cannot set relaxation solution value for variable <%s> fixed to %.15g to different value %.15g\n",
13205 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
13233 assert(var !=
NULL);
13234 assert(
set !=
NULL);
13235 assert(var->
scip == set->scip);
13300 assert(var !=
NULL);
13313 assert(var !=
NULL);
13314 assert(
set !=
NULL);
13315 assert(var->
scip == set->scip);
13332 SCIPerrorMessage(
"cannot set NLP solution value for variable <%s> fixed to %.15g to different value %.15g\n",
13345 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
13370 assert(var !=
NULL);
13434 assert(var !=
NULL);
13435 assert(stat !=
NULL);
13436 assert(
set !=
NULL);
13437 assert(var->
scip == set->scip);
13438 assert(closestvlb !=
NULL);
13439 assert(closestvlbidx !=
NULL);
13441 *closestvlbidx = -1;
13460 assert(0 <= i && i < nvlbs);
13462 *closestvlbidx = i;
13463 *closestvlb = vlbcoefs[i] *
SCIPvarGetLPSol(vlbvars[i]) + vlbconsts[i];
13468 for( i = 0; i < nvlbs; i++ )
13475 if( vlbsol > *closestvlb )
13477 *closestvlb = vlbsol;
13478 *closestvlbidx = i;
13509 assert(var !=
NULL);
13510 assert(
set !=
NULL);
13511 assert(var->
scip == set->scip);
13512 assert(closestvub !=
NULL);
13513 assert(closestvubidx !=
NULL);
13515 *closestvubidx = -1;
13534 assert(0 <= i && i < nvubs);
13536 *closestvubidx = i;
13537 *closestvub = vubcoefs[i] *
SCIPvarGetLPSol(vubvars[i]) + vubconsts[i];
13542 for( i = 0; i < nvubs; i++ )
13549 if( vubsol < *closestvub )
13551 *closestvub = vubsol;
13552 *closestvubidx = i;
13584 assert(var !=
NULL);
13585 assert(
set !=
NULL);
13586 assert(var->
scip == set->scip);
13587 assert(row !=
NULL);
13669 #ifdef SCIP_HISTORYTOFILE 13671 const char* historypath=
".";
13688 assert(var !=
NULL);
13689 assert(
set !=
NULL);
13690 assert(var->
scip == set->scip);
13691 assert(stat !=
NULL);
13702 SCIPerrorMessage(
"cannot update pseudo costs of original untransformed variable\n");
13723 #ifdef SCIP_HISTORYTOFILE 13726 char filename[256];
13732 sprintf(filename,
"%s/%s.pse", historypath,
SCIPgetProbName(set->scip));
13733 f = fopen(filename,
"a");
13736 fprintf(f,
"%lld %s \t %lld \t %lld \t %lld \t %d \t %15.9f \t %.3f\n",
13752 SCIPerrorMessage(
"cannot update pseudo cost values of a fixed variable\n");
13762 SCIPerrorMessage(
"cannot update pseudo cost values of a multi-aggregated variable\n");
13784 assert(var !=
NULL);
13785 assert(stat !=
NULL);
13833 assert(var !=
NULL);
13834 assert(stat !=
NULL);
13877 assert(var !=
NULL);
13922 assert(var !=
NULL);
13981 solvaldeltaup =
SCIPsetCeil(
set, solval) - solval;
13988 return MIN(upscore, downscore);
13998 assert(var !=
NULL);
14011 if( onlycurrentrun )
14061 if( onlycurrentrun )
14066 assert(count >= 1.9);
14068 confidencebound /= count;
14069 confidencebound =
sqrt(confidencebound);
14076 confidencebound = 0.0;
14078 return confidencebound;
14102 size =
MIN(downsize, upsize);
14112 if( downsize >= 1.9 )
14118 normval =
MAX(1.0, normval);
14120 relerrordown /= normval;
14123 relerrordown = 0.0;
14125 if( upsize >= 1.9 )
14131 normval =
MAX(1.0, normval);
14132 relerrorup /= normval;
14138 relerror =
MAX(relerrorup, relerrordown);
14140 return (relerror <= threshold);
14190 if( countx <= 1.9 || county <= 1.9 )
14287 SCIPerrorMessage(
"Confidence level set to unknown value <%d>", (
int)clevel);
14292 return (probability >= problimit);
14305 assert(var !=
NULL);
14306 assert(blkmem !=
NULL);
14307 assert(
set !=
NULL);
14308 assert(history !=
NULL);
14334 assert(
set !=
NULL);
14337 if( !set->history_valuebased )
14362 assert(var !=
NULL);
14377 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
14394 assert(history !=
NULL);
14426 value = 1.0 - value;
14443 assert(var !=
NULL);
14450 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
14498 assert(var !=
NULL);
14510 SCIPerrorMessage(
"cannot update conflict score of original untransformed variable\n");
14527 assert(history !=
NULL);
14553 SCIPerrorMessage(
"cannot update conflict score of a multi-aggregated variable\n");
14557 value = 1.0 - value;
14575 assert(var !=
NULL);
14576 assert(stat !=
NULL);
14622 assert(var !=
NULL);
14623 assert(stat !=
NULL);
14666 assert(var !=
NULL);
14710 assert(var !=
NULL);
14758 assert(var !=
NULL);
14759 assert(stat !=
NULL);
14771 SCIPerrorMessage(
"cannot update branching counter of original untransformed variable\n");
14790 assert(history !=
NULL);
14798 SCIPerrorMessage(
"cannot update branching counter of a fixed variable\n");
14816 SCIPerrorMessage(
"cannot update branching counter of a multi-aggregated variable\n");
14820 value = 1.0 - value;
14842 assert(var !=
NULL);
14843 assert(stat !=
NULL);
14855 SCIPerrorMessage(
"cannot update inference counter of original untransformed variable\n");
14874 assert(history !=
NULL);
14882 SCIPerrorMessage(
"cannot update inference counter of a fixed variable\n");
14900 SCIPerrorMessage(
"cannot update inference counter of a multi-aggregated variable\n");
14904 value = 1.0 - value;
14926 assert(var !=
NULL);
14927 assert(stat !=
NULL);
14939 SCIPerrorMessage(
"cannot update cutoff sum of original untransformed variable\n");
14958 assert(history !=
NULL);
14984 SCIPerrorMessage(
"cannot update cutoff sum of a multi-aggregated variable\n");
14988 value = 1.0 - value;
15005 assert(var !=
NULL);
15050 assert(var !=
NULL);
15093 assert(var !=
NULL);
15138 assert(var !=
NULL);
15184 assert(var !=
NULL);
15185 assert(stat !=
NULL);
15233 assert(var !=
NULL);
15234 assert(stat !=
NULL);
15277 assert(var !=
NULL);
15322 assert(var !=
NULL);
15366 assert(var !=
NULL);
15367 assert(stat !=
NULL);
15423 assert(var !=
NULL);
15424 assert(stat !=
NULL);
15477 assert(var !=
NULL);
15520 assert(var !=
NULL);
15564 assert(var !=
NULL);
15565 assert(stat !=
NULL);
15611 assert(var !=
NULL);
15612 assert(stat !=
NULL);
15668 assert(bdchginfo !=
NULL);
15671 (*bdchginfo)->oldbound = oldbound;
15672 (*bdchginfo)->newbound = newbound;
15673 (*bdchginfo)->var = var;
15674 (*bdchginfo)->inferencedata.var = var;
15675 (*bdchginfo)->inferencedata.reason.prop =
NULL;
15676 (*bdchginfo)->inferencedata.info = 0;
15677 (*bdchginfo)->bdchgidx.depth = INT_MAX;
15678 (*bdchginfo)->bdchgidx.pos = -1;
15679 (*bdchginfo)->pos = 0;
15681 (*bdchginfo)->boundtype = boundtype;
15682 (*bdchginfo)->inferboundtype = boundtype;
15683 (*bdchginfo)->redundant =
FALSE;
15694 assert(bdchginfo !=
NULL);
15711 assert(var !=
NULL);
15767 assert(var !=
NULL);
15843 assert(var !=
NULL);
15849 if( bdchgidx ==
NULL )
15856 if( bdchginfo !=
NULL )
15864 switch( varstatus )
15936 SCIPerrorMessage(
"cannot get the bounds of a multi-aggregated variable.\n");
15967 assert(var !=
NULL);
15973 if( bdchgidx ==
NULL )
15980 if( bdchginfo !=
NULL )
15988 switch( varstatus )
16060 SCIPerrorMessage(
"cannot get the bounds of a multiple aggregated variable.\n");
16110 assert(var !=
NULL);
16134 assert(var !=
NULL);
16171 assert(bdchgidx !=
NULL);
16173 return bdchgidx->
depth;
16188 assert(var !=
NULL);
16189 assert(
set !=
NULL);
16190 assert(var->
scip == set->scip);
16260 assert(var1 !=
NULL);
16261 assert(var2 !=
NULL);
16267 assert(var1 !=
NULL);
16268 assert(var2 !=
NULL);
16315 assert(var !=
NULL);
16332 #undef SCIPboundchgGetNewbound 16333 #undef SCIPboundchgGetVar 16334 #undef SCIPboundchgGetBoundchgtype 16335 #undef SCIPboundchgGetBoundtype 16336 #undef SCIPboundchgIsRedundant 16337 #undef SCIPdomchgGetNBoundchgs 16338 #undef SCIPdomchgGetBoundchg 16339 #undef SCIPholelistGetLeft 16340 #undef SCIPholelistGetRight 16341 #undef SCIPholelistGetNext 16342 #undef SCIPvarGetName 16343 #undef SCIPvarGetNUses 16344 #undef SCIPvarGetData 16345 #undef SCIPvarSetData 16346 #undef SCIPvarSetDelorigData 16347 #undef SCIPvarSetTransData 16348 #undef SCIPvarSetDeltransData 16349 #undef SCIPvarGetStatus 16350 #undef SCIPvarIsOriginal 16351 #undef SCIPvarIsTransformed 16352 #undef SCIPvarIsNegated 16353 #undef SCIPvarGetType 16354 #undef SCIPvarIsBinary 16355 #undef SCIPvarIsIntegral 16356 #undef SCIPvarIsInitial 16357 #undef SCIPvarIsRemovable 16358 #undef SCIPvarIsDeleted 16359 #undef SCIPvarIsDeletable 16360 #undef SCIPvarMarkDeletable 16361 #undef SCIPvarMarkNotDeletable 16362 #undef SCIPvarIsActive 16363 #undef SCIPvarGetIndex 16364 #undef SCIPvarGetProbindex 16365 #undef SCIPvarGetTransVar 16366 #undef SCIPvarGetCol 16367 #undef SCIPvarIsInLP 16368 #undef SCIPvarGetAggrVar 16369 #undef SCIPvarGetAggrScalar 16370 #undef SCIPvarGetAggrConstant 16371 #undef SCIPvarGetMultaggrNVars 16372 #undef SCIPvarGetMultaggrVars 16373 #undef SCIPvarGetMultaggrScalars 16374 #undef SCIPvarGetMultaggrConstant 16375 #undef SCIPvarGetNegatedVar 16376 #undef SCIPvarGetNegationVar 16377 #undef SCIPvarGetNegationConstant 16378 #undef SCIPvarGetObj 16379 #undef SCIPvarGetLbOriginal 16380 #undef SCIPvarGetUbOriginal 16381 #undef SCIPvarGetHolelistOriginal 16382 #undef SCIPvarGetLbGlobal 16383 #undef SCIPvarGetUbGlobal 16384 #undef SCIPvarGetHolelistGlobal 16385 #undef SCIPvarGetBestBoundGlobal 16386 #undef SCIPvarGetWorstBoundGlobal 16387 #undef SCIPvarGetLbLocal 16388 #undef SCIPvarGetUbLocal 16389 #undef SCIPvarGetHolelistLocal 16390 #undef SCIPvarGetBestBoundLocal 16391 #undef SCIPvarGetWorstBoundLocal 16392 #undef SCIPvarGetBestBoundType 16393 #undef SCIPvarGetWorstBoundType 16394 #undef SCIPvarGetLbLazy 16395 #undef SCIPvarGetUbLazy 16396 #undef SCIPvarGetBranchFactor 16397 #undef SCIPvarGetBranchPriority 16398 #undef SCIPvarGetBranchDirection 16399 #undef SCIPvarGetNVlbs 16400 #undef SCIPvarGetVlbVars 16401 #undef SCIPvarGetVlbCoefs 16402 #undef SCIPvarGetVlbConstants 16403 #undef SCIPvarGetNVubs 16404 #undef SCIPvarGetVubVars 16405 #undef SCIPvarGetVubCoefs 16406 #undef SCIPvarGetVubConstants 16407 #undef SCIPvarGetNImpls 16408 #undef SCIPvarGetImplVars 16409 #undef SCIPvarGetImplTypes 16410 #undef SCIPvarGetImplBounds 16411 #undef SCIPvarGetImplIds 16412 #undef SCIPvarGetNCliques 16413 #undef SCIPvarGetCliques 16414 #undef SCIPvarGetLPSol 16415 #undef SCIPvarGetNLPSol 16416 #undef SCIPvarGetBdchgInfoLb 16417 #undef SCIPvarGetNBdchgInfosLb 16418 #undef SCIPvarGetBdchgInfoUb 16419 #undef SCIPvarGetNBdchgInfosUb 16420 #undef SCIPvarGetValuehistory 16421 #undef SCIPvarGetPseudoSol 16422 #undef SCIPvarCatchEvent 16423 #undef SCIPvarDropEvent 16424 #undef SCIPvarGetVSIDS 16425 #undef SCIPvarGetCliqueComponentIdx 16426 #undef SCIPbdchgidxGetPos 16427 #undef SCIPbdchgidxIsEarlierNonNull 16428 #undef SCIPbdchgidxIsEarlier 16429 #undef SCIPbdchginfoGetOldbound 16430 #undef SCIPbdchginfoGetNewbound 16431 #undef SCIPbdchginfoGetVar 16432 #undef SCIPbdchginfoGetChgtype 16433 #undef SCIPbdchginfoGetBoundtype 16434 #undef SCIPbdchginfoGetDepth 16435 #undef SCIPbdchginfoGetPos 16436 #undef SCIPbdchginfoGetIdx 16437 #undef SCIPbdchginfoGetInferVar 16438 #undef SCIPbdchginfoGetInferCons 16439 #undef SCIPbdchginfoGetInferProp 16440 #undef SCIPbdchginfoGetInferInfo 16441 #undef SCIPbdchginfoGetInferBoundtype 16442 #undef SCIPbdchginfoIsRedundant 16443 #undef SCIPbdchginfoHasInferenceReason 16444 #undef SCIPbdchginfoIsTighter 16452 assert(boundchg !=
NULL);
16462 assert(boundchg !=
NULL);
16464 return boundchg->
var;
16472 assert(boundchg !=
NULL);
16482 assert(boundchg !=
NULL);
16492 assert(boundchg !=
NULL);
16511 assert(domchg !=
NULL);
16522 assert(holelist !=
NULL);
16532 assert(holelist !=
NULL);
16542 assert(holelist !=
NULL);
16544 return holelist->
next;
16555 assert(var !=
NULL);
16565 assert(var !=
NULL);
16575 assert(var !=
NULL);
16586 assert(var !=
NULL);
16597 assert(var !=
NULL);
16600 var->vardelorig = vardelorig;
16609 assert(var !=
NULL);
16612 var->vartrans = vartrans;
16621 assert(var !=
NULL);
16623 var->vardeltrans = vardeltrans;
16632 assert(var !=
NULL);
16634 var->varcopy = varcopy;
16643 assert(var !=
NULL);
16659 assert(var !=
NULL);
16674 assert(var !=
NULL);
16684 assert(var !=
NULL);
16697 assert(var !=
NULL);
16710 assert(var !=
NULL);
16720 assert(var !=
NULL);
16735 assert(var !=
NULL);
16746 assert(var !=
NULL);
16756 assert(var !=
NULL);
16766 assert(var !=
NULL);
16776 assert(var !=
NULL);
16788 assert(var !=
NULL);
16799 assert(var !=
NULL);
16812 assert(var !=
NULL);
16822 assert(var !=
NULL);
16832 assert(var !=
NULL);
16842 assert(var !=
NULL);
16852 assert(var !=
NULL);
16862 assert(var !=
NULL);
16872 assert(var !=
NULL);
16883 assert(var !=
NULL);
16894 assert(var !=
NULL);
16904 assert(var !=
NULL);
16915 assert(var !=
NULL);
16926 assert(var !=
NULL);
16937 assert(var !=
NULL);
16949 assert(var !=
NULL);
16961 assert(var !=
NULL);
16973 assert(var !=
NULL);
16985 assert(var !=
NULL);
16995 assert(var !=
NULL);
17006 assert(var !=
NULL);
17017 assert(var !=
NULL);
17027 assert(var !=
NULL);
17043 assert(probvar !=
NULL);
17044 assert(aggrobj !=
NULL);
17046 while( probvar !=
NULL )
17115 assert(var !=
NULL);
17135 assert(var !=
NULL);
17155 assert(var !=
NULL);
17169 assert(var !=
NULL);
17179 assert(var !=
NULL);
17189 assert(var !=
NULL);
17199 assert(var !=
NULL);
17201 if( var->
obj >= 0.0 )
17212 assert(var !=
NULL);
17214 if( var->
obj >= 0.0 )
17225 assert(var !=
NULL);
17235 assert(var !=
NULL);
17245 assert(var !=
NULL);
17255 assert(var !=
NULL);
17257 if( var->
obj >= 0.0 )
17268 assert(var !=
NULL);
17270 if( var->
obj >= 0.0 )
17281 assert(var !=
NULL);
17283 if( var->
obj >= 0.0 )
17294 assert(var !=
NULL);
17296 if( var->
obj >= 0.0 )
17307 assert(var !=
NULL);
17317 assert(var !=
NULL);
17329 assert(var !=
NULL);
17341 assert(var !=
NULL);
17351 assert(var !=
NULL);
17361 assert(var !=
NULL);
17373 assert(var !=
NULL);
17383 assert(var !=
NULL);
17393 assert(var !=
NULL);
17403 assert(var !=
NULL);
17415 assert(var !=
NULL);
17425 assert(var !=
NULL);
17435 assert(var !=
NULL);
17448 assert(var !=
NULL);
17465 assert(var !=
NULL);
17480 assert(var !=
NULL);
17494 assert(var !=
NULL);
17510 assert(var !=
NULL);
17522 assert(var !=
NULL);
17533 assert(var !=
NULL);
17543 assert(var !=
NULL);
17556 assert(var !=
NULL);
17571 assert(pos < var->nlbchginfos);
17591 assert(pos < var->nubchginfos);
17601 assert(var !=
NULL);
17611 assert(var !=
NULL);
17621 assert(var !=
NULL);
17636 assert(var !=
NULL);
17649 assert(var !=
NULL);
17659 assert(var !=
NULL);
17675 assert(var !=
NULL);
17676 assert(
set !=
NULL);
17677 assert(var->
scip == set->scip);
17684 eventtype, var->
name, (
void*)eventhdlr, (
void*)eventdata);
17702 assert(var !=
NULL);
17703 assert(
set !=
NULL);
17704 assert(var->
scip == set->scip);
17708 SCIPsetDebugMsg(
set,
"drop event of variable <%s> with handler %p and data %p\n", var->
name, (
void*)eventhdlr,
17721 assert(bdchgidx !=
NULL);
17723 return bdchgidx->
pos;
17732 assert(bdchgidx1 !=
NULL);
17733 assert(bdchgidx1->
depth >= -2);
17734 assert(bdchgidx1->
pos >= 0);
17735 assert(bdchgidx2 !=
NULL);
17736 assert(bdchgidx2->
depth >= -2);
17737 assert(bdchgidx2->
pos >= 0);
17739 return (bdchgidx1->
depth < bdchgidx2->
depth)
17740 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
17752 assert(bdchgidx1 ==
NULL || bdchgidx1->
depth >= -2);
17753 assert(bdchgidx1 ==
NULL || bdchgidx1->
pos >= 0);
17754 assert(bdchgidx2 ==
NULL || bdchgidx2->
depth >= -2);
17755 assert(bdchgidx2 ==
NULL || bdchgidx2->
pos >= 0);
17757 if( bdchgidx1 ==
NULL )
17759 else if( bdchgidx2 ==
NULL )
17762 return (bdchgidx1->
depth < bdchgidx2->
depth)
17763 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
17771 assert(bdchginfo !=
NULL);
17781 assert(bdchginfo !=
NULL);
17791 assert(bdchginfo !=
NULL);
17793 return bdchginfo->
var;
17801 assert(bdchginfo !=
NULL);
17811 assert(bdchginfo !=
NULL);
17821 assert(bdchginfo !=
NULL);
17831 assert(bdchginfo !=
NULL);
17841 assert(bdchginfo !=
NULL);
17851 assert(bdchginfo !=
NULL);
17863 assert(bdchginfo !=
NULL);
17875 assert(bdchginfo !=
NULL);
17886 assert(bdchginfo !=
NULL);
17898 assert(bdchginfo !=
NULL);
17919 assert(bdchginfo !=
NULL);
17930 assert(bdchginfo !=
NULL);
17945 assert(bdchginfo1 !=
NULL);
17946 assert(bdchginfo2 !=
NULL);
17947 assert(bdchginfo1->
var == bdchginfo2->
var);
enum SCIP_Result SCIP_RESULT
SCIP_Real SCIPhistoryGetAvgConflictlength(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
enum SCIP_BoundType SCIP_BOUNDTYPE
SCIP_RETCODE SCIPeventfilterCreate(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem)
SCIP_Real SCIPbdchginfoGetRelaxedBound(SCIP_BDCHGINFO *bdchginfo)
void SCIPcliquelistRemoveFromCliques(SCIP_CLIQUELIST *cliquelist, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Bool irrelevantvar)
static SCIP_Real adjustedUb(SCIP_SET *set, SCIP_VARTYPE vartype, SCIP_Real ub)
SCIP_Real SCIPvarGetAvgConflictlengthCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Real SCIPvarGetWorstBoundLocal(SCIP_VAR *var)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
SCIP_Real * SCIPvarGetVlbCoefs(SCIP_VAR *var)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
void SCIPvarGetClosestVlb(SCIP_VAR *var, SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *closestvlb, int *closestvlbidx)
internal methods for managing events
static SCIP_RETCODE boundchgReleaseData(SCIP_BOUNDCHG *boundchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_BOUNDTYPE SCIPvarGetWorstBoundType(SCIP_VAR *var)
static void checkImplic(SCIP_SET *set, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool *redundant, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPvarIncInferenceSum(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Real weight)
SCIP_Bool SCIPvarsHaveCommonClique(SCIP_VAR *var1, SCIP_Bool value1, SCIP_VAR *var2, SCIP_Bool value2, SCIP_Bool regardimplics)
SCIP_BRANCHINGDATA branchingdata
void SCIPhistoryIncNBranchings(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, int depth)
SCIP_VAR ** SCIPcliqueGetVars(SCIP_CLIQUE *clique)
SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsFeasZero(SCIP_SET *set, SCIP_Real val)
internal methods for storing primal CIP solutions
void SCIPhistoryIncVSIDS(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)
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 varEventImplAdded(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
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_VAR *vubvar, SCIP_Real vubcoef, SCIP_Real vubconstant, SCIP_Bool transitive, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_Real SCIPvarGetBdAtIndex(SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_PROP * SCIPbdchginfoGetInferProp(SCIP_BDCHGINFO *bdchginfo)
void SCIPvarMarkNotDeletable(SCIP_VAR *var)
void SCIPvarUpdateBestRootSol(SCIP_VAR *var, SCIP_SET *set, SCIP_Real rootsol, SCIP_Real rootredcost, SCIP_Real rootlpobjval)
SCIP_RETCODE SCIPvarSetNLPSol(SCIP_VAR *var, SCIP_SET *set, SCIP_Real solval)
public methods for branching and inference history structure
SCIP_Bool SCIPlpDiving(SCIP_LP *lp)
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_Real addobj)
SCIP_BDCHGINFO * SCIPvarGetBdchgInfoLb(SCIP_VAR *var, int pos)
SCIP_Real * SCIPvarGetMultaggrScalars(SCIP_VAR *var)
internal methods for branch and bound tree
SCIP_Longint SCIPgetNLPIterations(SCIP *scip)
void SCIPhistoryIncCutoffSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)
SCIP_Real SCIPvarGetAvgCutoffsCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvaluehistoryCreate(SCIP_VALUEHISTORY **valuehistory, BMS_BLKMEM *blkmem)
SCIP_Real SCIPsetFeastol(SCIP_SET *set)
SCIP_Real SCIPvarGetBranchFactor(SCIP_VAR *var)
unsigned int inferboundtype
SCIP_Real SCIPbdchginfoGetOldbound(SCIP_BDCHGINFO *bdchginfo)
static SCIP_RETCODE domchgCreate(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem)
unsigned int boundchgtype
SCIP_BRANCHDIR SCIPvarGetBranchDirection(SCIP_VAR *var)
union SCIP_BoundChg::@11 data
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_Real SCIPvarGetUbLazy(SCIP_VAR *var)
SCIP_Real SCIPsetFloor(SCIP_SET *set, SCIP_Real val)
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_Bool SCIPsetIsFeasEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
int SCIPvarGetNVlbs(SCIP_VAR *var)
SCIP_VAR * SCIPbdchginfoGetVar(SCIP_BDCHGINFO *bdchginfo)
#define SCIPsetDuplicateBufferArray(set, ptr, source, num)
SCIP_Real SCIPvarGetWorstBoundGlobal(SCIP_VAR *var)
#define SCIP_DECL_VARTRANS(x)
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)
enum SCIP_BaseStat SCIP_BASESTAT
SCIP_Bool SCIPvarDoNotMultaggr(SCIP_VAR *var)
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_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_Real SCIPvarGetPseudocostCountCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
methods for implications, variable bounds, and cliques
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_VAR *aggvar, SCIP_Real scalar, SCIP_Real constant, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
int SCIPvarGetLastBdchgDepth(SCIP_VAR *var)
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_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_Real SCIPvarGetAvgBranchdepth(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarGetProbvarBinary(SCIP_VAR **var, SCIP_Bool *negated)
SCIP_RETCODE SCIPdomchgAddHolechg(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_HOLELIST **ptr, SCIP_HOLELIST *newlist, SCIP_HOLELIST *oldlist)
SCIP_Bool SCIPvarIsPscostRelerrorReliable(SCIP_VAR *var, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real threshold, SCIP_CONFIDENCELEVEL clevel)
SCIP_BASESTAT SCIPcolGetBasisStatus(SCIP_COL *col)
SCIP_Bool SCIPvarIsInitial(SCIP_VAR *var)
SCIP_RETCODE SCIPeventCreateImplAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_VAR ** SCIPimplicsGetVars(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
SCIP_RETCODE SCIPvarChgLbOriginal(SCIP_VAR *var, SCIP_SET *set, SCIP_Real newbound)
SCIP_BOUNDCHG * boundchgs
void SCIPhistoryIncInferenceSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)
SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)
SCIP_Real lastbranchvalue
static SCIP_RETCODE domchgMakeDynamic(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem)
SCIP_VAR ** SCIPvarGetMultaggrVars(SCIP_VAR *var)
#define SCIPdebugCheckImplic(set, var, varfixing, implvar, impltype, implbound)
#define SCIPsetAllocCleanBufferArray(set, ptr, num)
static SCIP_Real getImplVarRedcost(SCIP_VAR *var, SCIP_SET *set, SCIP_Bool varfixing, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_RETCODE SCIPbdchginfoCreate(SCIP_BDCHGINFO **bdchginfo, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPeventfilterDel(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPvarChgLbLazy(SCIP_VAR *var, SCIP_SET *set, SCIP_Real lazylb)
SCIP_RETCODE SCIPvarAddLocks(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, int addnlocksdown, int addnlocksup)
SCIP_CLIQUE ** SCIPvarGetCliques(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_RETCODE SCIPprobVarChangedStatus(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var)
SCIP_Real bestrootredcost
SCIP_Real SCIPvarGetMultaggrLbGlobal(SCIP_VAR *var, SCIP_SET *set)
SCIP_HISTORY * historycrun
SCIP_BRANCHDIR lastbranchdir
SCIP_VALUEHISTORY * SCIPvarGetValuehistory(SCIP_VAR *var)
int SCIPcliquelistGetNCliques(SCIP_CLIQUELIST *cliquelist, SCIP_Bool value)
SCIP_NODE * SCIPnodeGetParent(SCIP_NODE *node)
void SCIPprobAddObjoffset(SCIP_PROB *prob, SCIP_Real addval)
void SCIPvarSetTransData(SCIP_VAR *var, SCIP_DECL_VARTRANS((*vartrans)))
SCIP_RETCODE SCIPvarChgUbOriginal(SCIP_VAR *var, SCIP_SET *set, SCIP_Real newbound)
SCIP_Longint closestvblpcount
SCIP_RETCODE SCIPvarAddHoleGlobal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_Real left, SCIP_Real right, SCIP_Bool *added)
SCIP_RETCODE 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_Bool SCIPvarIsBinary(SCIP_VAR *var)
static SCIP_RETCODE varEventGholeAdded(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_Real left, SCIP_Real right)
SCIP_VAR ** SCIPvboundsGetVars(SCIP_VBOUNDS *vbounds)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_DOMCHGBOTH domchgboth
SCIP_RETCODE SCIPcolChgObj(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
SCIP_Real SCIPvarGetSol(SCIP_VAR *var, SCIP_Bool getlpval)
int SCIPprobGetNVars(SCIP_PROB *prob)
SCIP_BDCHGINFO * ubchginfos
SCIP_Bool SCIPbdchgidxIsEarlier(SCIP_BDCHGIDX *bdchgidx1, SCIP_BDCHGIDX *bdchgidx2)
SCIP_Bool SCIPvarWasFixedAtIndex(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_Real SCIPvarGetBestBoundLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetRootSol(SCIP_VAR *var)
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_RETCODE SCIPvarMarkDoNotMultaggr(SCIP_VAR *var)
SCIP_RETCODE SCIPvarScaleVSIDS(SCIP_VAR *var, SCIP_Real scalar)
SCIP_Real SCIPvarGetLbLP(SCIP_VAR *var, SCIP_SET *set)
static SCIP_RETCODE holelistDuplicate(SCIP_HOLELIST **target, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_HOLELIST *source)
SCIP_BOUNDTYPE SCIPboundchgGetBoundtype(SCIP_BOUNDCHG *boundchg)
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 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)
void SCIPvaluehistoryScaleVSIDS(SCIP_VALUEHISTORY *valuehistory, SCIP_Real scalar)
void SCIPvarSetProbindex(SCIP_VAR *var, int probindex)
SCIP_RETCODE SCIPhistoryCreate(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)
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_CLIQUETABLE *cliquetable, SCIP_VAR *aggvar, SCIP_Real scalar, SCIP_Real constant, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_HOLELIST * SCIPholelistGetNext(SCIP_HOLELIST *holelist)
SCIP_Bool SCIPlpIsSolBasic(SCIP_LP *lp)
SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val)
int SCIPvarGetNBdchgInfosLb(SCIP_VAR *var)
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)
struct SCIP_VarData SCIP_VARDATA
SCIP_RETCODE SCIPdomchgUndo(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
SCIP_Real SCIPcolGetUb(SCIP_COL *col)
SCIP_RETCODE SCIPboundchgUndo(SCIP_BOUNDCHG *boundchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPvarTransform(SCIP_VAR *origvar, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_OBJSENSE objsense, SCIP_VAR **transvar)
void SCIPhistoryReset(SCIP_HISTORY *history)
SCIP_Real SCIPcolGetObj(SCIP_COL *col)
static SCIP_RETCODE varEventVarUnlocked(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
SCIP_RETCODE SCIPvboundsDel(SCIP_VBOUNDS **vbounds, BMS_BLKMEM *blkmem, SCIP_VAR *vbdvar, SCIP_Bool negativecoef)
static SCIP_Bool useValuehistory(SCIP_VAR *var, SCIP_Real value, SCIP_SET *set)
SCIP_Bool SCIPvarHasImplic(SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype)
static void varSetProbindex(SCIP_VAR *var, int probindex)
SCIP_Real SCIPvarGetAvgConflictlength(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_INFERENCEDATA inferencedata
enum SCIP_Retcode SCIP_RETCODE
SCIP_Real SCIPvarGetNegationConstant(SCIP_VAR *var)
int SCIPvarGetNVubs(SCIP_VAR *var)
SCIP_RETCODE SCIPeventCreateUbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
int SCIPbdchginfoGetInferInfo(SCIP_BDCHGINFO *bdchginfo)
static SCIP_BDCHGIDX presolvebdchgidx
static void printHolelist(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_HOLELIST *holelist, const char *name)
enum SCIP_Varstatus SCIP_VARSTATUS
#define SCIPsetAllocBufferArray(set, ptr, num)
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_Bool initial, SCIP_Bool removable, SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_DECL_VARCOPY((*varcopy)), SCIP_VARDATA *vardata)
int SCIPvarGetProbindex(SCIP_VAR *var)
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_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool transitive, SCIP_Bool *infeasible, int *nbdchgs)
#define SCIP_DECL_VARCOPY(x)
SCIP_RETCODE SCIPvarChgLbDive(SCIP_VAR *var, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newbound)
void SCIPvarSetNamePointer(SCIP_VAR *var, const char *name)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
#define SCIP_EVENTTYPE_GLBCHANGED
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)
SCIP_Real SCIPvarGetAggrScalar(SCIP_VAR *var)
void SCIPvarInitSolve(SCIP_VAR *var)
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)
static GRAPHNODE ** active
SCIP_Real SCIPvarGetInferenceSum(SCIP_VAR *var, SCIP_BRANCHDIR dir)
void SCIPvarMarkDeletable(SCIP_VAR *var)
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_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 SCIPimplicsDel(SCIP_IMPLICS **implics, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype)
SCIP_Real SCIPvarGetAvgInferences(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_Real SCIPhistoryGetVSIDS(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
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_CLIQUETABLE *cliquetable, SCIP_Bool value, SCIP_CLIQUE *clique, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_VAR ** SCIPvarGetVlbVars(SCIP_VAR *var)
void SCIPprobUpdateNObjVars(SCIP_PROB *prob, SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_RETCODE SCIPvarsGetActiveVars(SCIP_SET *set, SCIP_VAR **vars, int *nvars, int varssize, int *requiredsize)
int SCIPbdchgidxGetPos(SCIP_BDCHGIDX *bdchgidx)
SCIP_CLIQUE ** SCIPcliquelistGetCliques(SCIP_CLIQUELIST *cliquelist, SCIP_Bool value)
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
SCIP_RETCODE SCIPcliquelistAdd(SCIP_CLIQUELIST **cliquelist, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Bool value, SCIP_CLIQUE *clique)
SCIP_Bool SCIPvarIsDeletable(SCIP_VAR *var)
int SCIPvarGetConflictingBdchgDepth(SCIP_VAR *var, SCIP_SET *set, SCIP_BOUNDTYPE boundtype, SCIP_Real bound)
SCIP_RETCODE SCIPvarUpdatePseudocost(SCIP_VAR *var, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
#define SCIPsetFreeBufferArray(set, ptr)
SCIP_Longint SCIPvarGetNBranchingsCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Bool SCIPvarIsRemovable(SCIP_VAR *var)
void SCIPvarAdjustLb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *lb)
static SCIP_RETCODE domchgEnsureBoundchgsSize(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
#define SCIPdebugCheckVbound(set, var, vbtype, vbvar, vbcoef, vbconstant)
SCIP_RETCODE SCIPvarChgBranchDirection(SCIP_VAR *var, SCIP_BRANCHDIR branchdirection)
SCIP_Real SCIPhistoryGetAvgCutoffs(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_VAR * SCIPvarGetNegationVar(SCIP_VAR *var)
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_RETCODE SCIPvarRemoveCliquesImplicsVbs(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_CLIQUETABLE *cliquetable, SCIP_SET *set, SCIP_Bool irrelevantvar, SCIP_Bool onlyredundant, SCIP_Bool removefromvar)
static SCIP_RETCODE boundchgCaptureData(SCIP_BOUNDCHG *boundchg)
SCIP_Real SCIPsetCeil(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPvarGetRelaxSolTransVar(SCIP_VAR *var)
#define SCIPstatIncrement(stat, set, field)
internal methods for LP management
SCIP_BDCHGIDX * SCIPvarGetLastBdchgIndex(SCIP_VAR *var)
int SCIPvarGetNCliques(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_Real SCIPvarGetLPSol_rec(SCIP_VAR *var)
SCIP_Real SCIPhistoryGetPseudocost(SCIP_HISTORY *history, SCIP_Real solvaldelta)
static void domMerge(SCIP_DOM *dom, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real *newlb, SCIP_Real *newub)
internal methods for branching and inference history
SCIP_Real SCIPvarGetCutoffSumCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
int * SCIPvarGetImplIds(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_HOLELIST * SCIPvarGetHolelistOriginal(SCIP_VAR *var)
SCIP_RETCODE SCIPeventCreateObjChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
internal methods for collecting primal CIP solutions and primal informations
SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
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_VARTYPE *vartype, SCIP_Real *lazylb, SCIP_Real *lazyub, SCIP_Bool local, char **endptr, SCIP_Bool *success)
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)
SCIP_DECL_HASHKEYVAL(SCIPvarGetHashkeyVal)
#define SCIP_EVENTTYPE_LBCHANGED
SCIP_Real SCIPvarGetUbLP(SCIP_VAR *var, SCIP_SET *set)
#define SCIP_DECL_VARDELTRANS(x)
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
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_HISTORY * glbhistorycrun
internal methods for propagators
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
const char * SCIPgetProbName(SCIP *scip)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
SCIP_Real SCIPvarGetVSIDSCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
void SCIPhistoryScaleVSIDS(SCIP_HISTORY *history, SCIP_Real scalar)
enum SCIP_BranchDir SCIP_BRANCHDIR
SCIP_Bool SCIPrealToRational(SCIP_Real val, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Longint *nominator, SCIP_Longint *denominator)
SCIP_Real SCIPvarGetNLPSol_rec(SCIP_VAR *var)
int SCIPvarGetNBdchgInfosUb(SCIP_VAR *var)
void SCIPcliquelistFree(SCIP_CLIQUELIST **cliquelist, BMS_BLKMEM *blkmem)
SCIP_Real conflictrelaxedub
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
void SCIPvarSetCliqueComponentIdx(SCIP_VAR *var, int idx)
SCIP_Bool SCIPbdchginfoIsTighter(SCIP_BDCHGINFO *bdchginfo1, SCIP_BDCHGINFO *bdchginfo2)
unsigned int inferboundtype
SCIP_RETCODE SCIPeventCreateVarFixed(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
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_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_VAR * SCIPvarGetProbvar(SCIP_VAR *var)
SCIP_Real SCIPvarGetObjLP(SCIP_VAR *var)
SCIP_RETCODE SCIPvaluehistoryFind(SCIP_VALUEHISTORY *valuehistory, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real value, SCIP_HISTORY **history)
SCIP_RETCODE SCIPvarChgType(SCIP_VAR *var, SCIP_VARTYPE vartype)
SCIP_Real SCIPvarGetBestRootLPObjval(SCIP_VAR *var)
void SCIPvarSetHistory(SCIP_VAR *var, SCIP_HISTORY *history, SCIP_STAT *stat)
static SCIP_RETCODE varProcessChgBranchFactor(SCIP_VAR *var, SCIP_SET *set, SCIP_Real branchfactor)
SCIP_Real SCIPhistoryGetPseudocostVariance(SCIP_HISTORY *history, SCIP_BRANCHDIR direction)
SCIP_Real SCIPvarGetImplRedcost(SCIP_VAR *var, SCIP_SET *set, SCIP_Bool varfixing, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp)
SCIP_RETCODE SCIPstatUpdateVarRootLPBestEstimate(SCIP_STAT *stat, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldrootpscostscore)
void SCIPvaluehistoryFree(SCIP_VALUEHISTORY **valuehistory, BMS_BLKMEM *blkmem)
SCIP_Real conflictrelaxedlb
void SCIPvarSetDelorigData(SCIP_VAR *var, SCIP_DECL_VARDELORIG((*vardelorig)))
enum SCIP_Confidencelevel SCIP_CONFIDENCELEVEL
SCIP_RETCODE SCIPvarChgBranchPriority(SCIP_VAR *var, int branchpriority)
SCIP_Real SCIPvarGetPseudocost(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real solvaldelta)
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
SCIP_Real SCIPcolGetPrimsol(SCIP_COL *col)
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 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 SCIPeventfilterAdd(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
void SCIPvarSetDeltransData(SCIP_VAR *var, SCIP_DECL_VARDELTRANS((*vardeltrans)))
SCIP_RETCODE SCIPvarChgUbLazy(SCIP_VAR *var, SCIP_SET *set, SCIP_Real lazyub)
SCIP_Real SCIPvarGetBestBoundGlobal(SCIP_VAR *var)
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)
void SCIPvarMergeHistories(SCIP_VAR *targetvar, SCIP_VAR *othervar, SCIP_STAT *stat)
void SCIPhistoryIncNActiveConflicts(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real length)
SCIP_BOUNDTYPE * SCIPimplicsGetTypes(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
internal methods for storing and manipulating the main problem
SCIP_Bool SCIPboundchgIsRedundant(SCIP_BOUNDCHG *boundchg)
void SCIPlpDecNLoosevars(SCIP_LP *lp)
SCIP_Real SCIPvarGetLbOriginal(SCIP_VAR *var)
void SCIPcliqueDelVar(SCIP_CLIQUE *clique, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Bool value)
SCIP_RETCODE SCIPdomchgMakeStatic(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_RETCODE SCIPdomchgFree(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
static SCIP_BDCHGIDX initbdchgidx
SCIP_Bool SCIPvarPscostThresholdProbabilityTest(SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_Real frac, SCIP_Real threshold, SCIP_BRANCHDIR dir, SCIP_CONFIDENCELEVEL clevel)
static SCIP_RETCODE varEnsureUbchginfosSize(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_Bool SCIPimplicsContainsImpl(SCIP_IMPLICS *implics, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype)
SCIP_Bool SCIPbdchgidxIsEarlierNonNull(SCIP_BDCHGIDX *bdchgidx1, SCIP_BDCHGIDX *bdchgidx2)
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 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)
int SCIPvarCompareActiveAndNegated(SCIP_VAR *var1, SCIP_VAR *var2)
SCIP_Real SCIPvarGetAvgBranchdepthCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarRelease(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_Real SCIPvarGetUbOriginal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsTransformedOrigvar(SCIP_VAR *var)
SCIP_Real SCIPhistoryGetAvgBranchdepth(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real bestrootlpobjval
SCIPInterval sqrt(const SCIPInterval &x)
SCIP_RETCODE SCIPvarChgObjDive(SCIP_VAR *var, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
SCIP_DECL_SORTPTRCOMP(SCIPvarCompActiveAndNegated)
SCIP_Real SCIPvarGetPseudocostCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real solvaldelta)
SCIP_Real SCIPvarGetUbAtIndex(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_Bool SCIPsortedvecFindPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), void *val, int len, int *pos)
void SCIPstrCopySection(const char *str, char startchar, char endchar, char *token, int size, char **endptr)
SCIP_Bool SCIPvarHasBinaryImplic(SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_Bool implvarfixing)
SCIP_RETCODE SCIPvarGetTransformed(SCIP_VAR *origvar, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **transvar)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_Real * SCIPvarGetVubConstants(SCIP_VAR *var)
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)
static SCIP_RETCODE varSetName(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_STAT *stat, const char *name)
SCIP_Real SCIPvarGetAggrConstant(SCIP_VAR *var)
SCIP_Real SCIPcolGetLb(SCIP_COL *col)
struct SCIP_EventData SCIP_EVENTDATA
const char * SCIPvarGetName(SCIP_VAR *var)
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_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
SCIP_Real SCIPsetFeasCeil(SCIP_SET *set, SCIP_Real val)
void SCIPhistoryUnite(SCIP_HISTORY *history, SCIP_HISTORY *addhistory, SCIP_Bool switcheddirs)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
#define SCIPsetReallocBufferArray(set, ptr, num)
SCIP_Longint SCIPhistoryGetNActiveConflicts(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPeventCreateLbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_DECL_HASHGETKEY(SCIPvarGetHashkey)
void SCIPvarGetClosestVub(SCIP_VAR *var, SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *closestvub, int *closestvubidx)
SCIP_RETCODE SCIPvarFlattenAggregationGraph(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set)
static SCIP_RETCODE holelistCreate(SCIP_HOLELIST **holelist, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real left, SCIP_Real right)
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)
SCIP_RETCODE SCIPvarSetRelaxSol(SCIP_VAR *var, SCIP_SET *set, SCIP_RELAXATION *relaxation, SCIP_Real solval, SCIP_Bool updateobj)
SCIP_HISTORY * glbhistory
SCIP_Real SCIPboundchgGetNewbound(SCIP_BOUNDCHG *boundchg)
SCIP_Real * SCIPvboundsGetCoefs(SCIP_VBOUNDS *vbounds)
SCIP_Real SCIPvarGetLPSol(SCIP_VAR *var)
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_CLIQUETABLE *cliquetable, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_HOLELIST * SCIPvarGetHolelistGlobal(SCIP_VAR *var)
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_VAR *vlbvar, SCIP_Real vlbcoef, SCIP_Real vlbconstant, SCIP_Bool transitive, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_Longint SCIPvarGetNActiveConflicts(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
void SCIPsortPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
internal methods for global SCIP settings
SCIP_RETCODE SCIPvarGetAggregatedObj(SCIP_VAR *var, SCIP_Real *aggrobj)
SCIP_Real SCIPvarCalcPscostConfidenceBound(SCIP_VAR *var, SCIP_SET *set, SCIP_BRANCHDIR dir, SCIP_Bool onlycurrentrun, SCIP_CONFIDENCELEVEL clevel)
SCIP_Bool SCIPbdchginfoHasInferenceReason(SCIP_BDCHGINFO *bdchginfo)
SCIP_Real SCIPvarGetLbLazy(SCIP_VAR *var)
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real * SCIPvarGetVlbConstants(SCIP_VAR *var)
SCIP_RETCODE SCIPvarIncNBranchings(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, int depth)
SCIP_Real SCIPvarGetMultaggrConstant(SCIP_VAR *var)
int SCIPprobGetNContVars(SCIP_PROB *prob)
SCIP_Real SCIPvarGetPseudocostCount(SCIP_VAR *var, SCIP_BRANCHDIR dir)
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_Bool varfixing, SCIP_VAR *implvar, SCIP_Bool implvarfixing, SCIP_Bool *infeasible, int *nbdchgs)
static SCIP_VAR * varGetActiveVar(SCIP_VAR *var)
SCIP_Real * SCIPvboundsGetConstants(SCIP_VBOUNDS *vbounds)
SCIP_Real SCIPvarGetCutoffSum(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Real * SCIPvarGetVubCoefs(SCIP_VAR *var)
SCIP_Bool SCIPbdchginfoIsRedundant(SCIP_BDCHGINFO *bdchginfo)
internal methods for relaxators
SCIP_Real SCIPvarGetMinPseudocostScore(SCIP_VAR *var, SCIP_STAT *stat, SCIP_SET *set, SCIP_Real solval)
SCIP_Real SCIPhistoryGetPseudocostCount(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
static SCIP_RETCODE varProcessChgBranchPriority(SCIP_VAR *var, int branchpriority)
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)
#define SCIPdebugCheckLbGlobal(scip, var, lb)
SCIP_BDCHGIDX * SCIPbdchginfoGetIdx(SCIP_BDCHGINFO *bdchginfo)
SCIP_Longint SCIPvarGetNActiveConflictsCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarPrint(SCIP_VAR *var, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
unsigned int branchdirection
SCIP_Bool SCIPcliquelistsHaveCommonClique(SCIP_CLIQUELIST *cliquelist1, SCIP_Bool value1, SCIP_CLIQUELIST *cliquelist2, SCIP_Bool value2)
SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
#define SCIPdebugCheckUbGlobal(scip, var, ub)
#define SCIP_EVENTTYPE_UBCHANGED
void SCIPvboundsShrink(SCIP_VBOUNDS **vbounds, BMS_BLKMEM *blkmem, int newnvbds)
void SCIPvarSetBestRootSol(SCIP_VAR *var, SCIP_Real rootsol, SCIP_Real rootredcost, SCIP_Real rootlpobjval)
void SCIPvarAdjustBd(SCIP_VAR *var, SCIP_SET *set, SCIP_BOUNDTYPE boundtype, SCIP_Real *bd)
#define BMSfreeBlockMemory(mem, ptr)
data structures and methods for collecting reoptimization information
internal methods for problem variables
SCIP_Bool SCIPvarIsOriginal(SCIP_VAR *var)
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)
SCIP_RETCODE SCIPvarChgBranchFactor(SCIP_VAR *var, SCIP_SET *set, SCIP_Real branchfactor)
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_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
SCIP_Bool SCIPsetIsIntegral(SCIP_SET *set, SCIP_Real val)
SCIP_BOUNDTYPE * SCIPvarGetImplTypes(SCIP_VAR *var, SCIP_Bool varfixing)
unsigned int boundchgtype
#define BMSfreeBlockMemorySize(mem, ptr, size)
SCIP_RETCODE SCIPvarIncCutoffSum(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Real weight)
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)
SCIP_INFERENCEDATA inferencedata
SCIP_Real SCIPholelistGetRight(SCIP_HOLELIST *holelist)
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)
void SCIPvarCapture(SCIP_VAR *var)
int SCIPvarGetCliqueComponentIdx(SCIP_VAR *var)
#define BMSreallocBlockMemorySize(mem, ptr, oldsize, newsize)
SCIP_BOUNDCHGTYPE SCIPboundchgGetBoundchgtype(SCIP_BOUNDCHG *boundchg)
int SCIPbdchginfoGetPos(SCIP_BDCHGINFO *bdchginfo)
enum SCIP_Objsense SCIP_OBJSENSE
SCIP_Bool SCIPvarWasFixedEarlier(SCIP_VAR *var1, SCIP_VAR *var2)
SCIP_Real SCIPvarGetInferenceSumCurrentRun(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_Bool SCIPvarIsInLP(SCIP_VAR *var)
SCIP_RETCODE SCIPvarRemove(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_CLIQUETABLE *cliquetable, SCIP_SET *set, SCIP_Bool final)
SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
void SCIPvarStoreRootSol(SCIP_VAR *var, SCIP_Bool roothaslp)
SCIP_Real SCIPvarGetNLPSol(SCIP_VAR *var)
int SCIPvarGetBranchPriority(SCIP_VAR *var)
int SCIPgetDepth(SCIP *scip)
SCIP_Real SCIPvarGetLbAtIndex(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
int SCIPvarGetNImpls(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_RETCODE SCIPvarChgUbDive(SCIP_VAR *var, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newbound)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
SCIP_RETCODE SCIPeventCreateGlbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
int * SCIPimplicsGetIds(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
SCIP_VARDATA * SCIPvarGetData(SCIP_VAR *var)
SCIP_RETCODE SCIPcolChgLb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)
int SCIPvarGetNLocksUp(SCIP_VAR *var)
SCIP_Bool SCIPstrToRealValue(const char *str, SCIP_Real *value, char **endptr)
int SCIPimplicsGetNImpls(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
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_VAR * SCIPboundchgGetVar(SCIP_BOUNDCHG *boundchg)
int SCIPvarCompare(SCIP_VAR *var1, SCIP_VAR *var2)
SCIP_Bool * SCIPcliqueGetValues(SCIP_CLIQUE *clique)
SCIP_BOUNDCHG * SCIPdomchgGetBoundchg(SCIP_DOMCHG *domchg, int pos)
SCIP_Real SCIPvarGetUnchangedObj(SCIP_VAR *var)
static SCIP_RETCODE varAddParent(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *parentvar)
SCIP_Real SCIPvarGetMultaggrUbGlobal(SCIP_VAR *var, SCIP_SET *set)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_RETCODE SCIPvarAddCliqueToList(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Bool value, SCIP_CLIQUE *clique)
SCIP_Real SCIPbdchginfoGetNewbound(SCIP_BDCHGINFO *bdchginfo)
SCIP_Real SCIPvarGetBestRootRedcost(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetAggrVar(SCIP_VAR *var)
SCIP_Real SCIPvarGetAvgInferencesCurrentRun(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
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_CLIQUETABLE *cliquetable, SCIP_Bool value, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_Real SCIPcomputeTwoSampleTTestValue(SCIP_Real meanx, SCIP_Real meany, SCIP_Real variancex, SCIP_Real variancey, SCIP_Real countx, SCIP_Real county)
SCIP_RETCODE SCIPvarDelClique(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool value, SCIP_CLIQUE *clique)
#define SCIP_EVENTTYPE_GHOLEADDED
#define BMScopyMemoryArray(ptr, source, num)
void SCIPhistoryUpdatePseudocost(SCIP_HISTORY *history, SCIP_SET *set, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
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)
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 SCIPvarGetRelaxSol(SCIP_VAR *var, SCIP_SET *set)
int SCIPvarGetMultaggrNVars(SCIP_VAR *var)
SCIP_Longint SCIPhistoryGetNBranchings(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_Real * SCIPvarGetImplBounds(SCIP_VAR *var, SCIP_Bool varfixing)
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_Bool SCIPsetIsFeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
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_VAR **vars, SCIP_Bool *values, int nvars, SCIP_Bool isequation, SCIP_Bool *infeasible, int *nbdchgs)
static SCIP_Real adjustedLb(SCIP_SET *set, SCIP_VARTYPE vartype, SCIP_Real lb)
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 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_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool isshortcut, SCIP_Bool *infeasible, int *nbdchgs, SCIP_Bool *added)
SCIP_NODE * SCIPgetFocusNode(SCIP *scip)
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_EVENTFILTER * eventfilter
static SCIP_Real SCIPvarGetPseudoSol_rec(SCIP_VAR *var)
SCIP_BDCHGINFO * SCIPvarGetLbchgInfo(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_Bool SCIPprobIsTransformed(SCIP_PROB *prob)
SCIP_BOUNDTYPE SCIPbdchginfoGetInferBoundtype(SCIP_BDCHGINFO *bdchginfo)
const char * SCIPpropGetName(SCIP_PROP *prop)
SCIP_BDCHGINFO * SCIPvarGetUbchgInfo(SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
int SCIPvboundsGetNVbds(SCIP_VBOUNDS *vbounds)
SCIP_RETCODE SCIPvarGetProbvarBound(SCIP_VAR **var, SCIP_Real *bound, SCIP_BOUNDTYPE *boundtype)
static SCIP_RETCODE parseValue(SCIP_SET *set, const char *str, SCIP_Real *value, char **endptr)
SCIP_BDCHGINFO * SCIPvarGetBdchgInfoUb(SCIP_VAR *var, int pos)
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_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool transitive, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_BDCHGINFO * SCIPvarGetBdchgInfo(SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_Bool SCIPsetIsDualfeasPositive(SCIP_SET *set, SCIP_Real val)
SCIP_VALUEHISTORY * valuehistory
static void printBounds(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file, SCIP_Real lb, SCIP_Real ub, const char *name)
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)
#define SCIP_DECL_VARDELORIG(x)
SCIP_Real SCIPhistoryGetCutoffSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
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)
SCIP_RETCODE SCIPvarLoose(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LP *lp)
static SCIP_RETCODE varEventVarFixed(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, int fixeventtype)
SCIP_BRANCHDIR SCIPbranchdirOpposite(SCIP_BRANCHDIR dir)
SCIP_VAR ** SCIPvarGetImplVars(SCIP_VAR *var, SCIP_Bool varfixing)
static SCIP_RETCODE varFreeParents(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_Real SCIPsetFeasFloor(SCIP_SET *set, SCIP_Real val)
SCIP_DOMCHGBOUND domchgbound
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)
#define SCIP_DEFAULT_INFINITY
static SCIP_RETCODE domchgEnsureHolechgsSize(SCIP_DOMCHG *domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
int SCIPvarGetNLocksDown(SCIP_VAR *var)
SCIP_Real SCIPstudentTGetCriticalValue(SCIP_CONFIDENCELEVEL clevel, int df)
void SCIPconsCapture(SCIP_CONS *cons)
SCIP_Real SCIPhistoryGetInferenceSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
#define BMSallocBlockMemorySize(mem, ptr, size)
#define SCIPsetFreeCleanBufferArray(set, ptr)
void SCIPrelaxationSolObjAdd(SCIP_RELAXATION *relaxation, SCIP_Real val)
static const SCIP_Real scalars[]
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_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, int naggvars, SCIP_VAR **aggvars, SCIP_Real *scalars, SCIP_Real constant, SCIP_Bool *infeasible, SCIP_Bool *aggregated)
SCIP_NODE * SCIPtreeGetRootNode(SCIP_TREE *tree)
int SCIPdomchgGetNBoundchgs(SCIP_DOMCHG *domchg)
SCIP_RETCODE SCIPvarColumn(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp)
SCIP_RETCODE SCIPnodeAddBoundchg(SCIP_NODE *node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_Bool probingchange)
int SCIPbdchginfoGetDepth(SCIP_BDCHGINFO *bdchginfo)
SCIP_RETCODE SCIPeventfilterFree(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set)
#define SCIP_EVENTTYPE_FORMAT
SCIP_MESSAGEHDLR * messagehdlr
SCIP_RETCODE SCIPvarGetActiveRepresentatives(SCIP_SET *set, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, int varssize, SCIP_Real *constant, int *requiredsize, SCIP_Bool mergemultiples)
SCIP_Real SCIPnormalCDF(SCIP_Real mean, SCIP_Real variance, SCIP_Real value)
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)
SCIP_DECL_HASHKEYEQ(SCIPvarIsHashkeyEq)
SCIP_Real SCIPvarGetBestRootSol(SCIP_VAR *var)
public methods for message output
void SCIPcliquelistCheck(SCIP_CLIQUELIST *cliquelist, SCIP_VAR *var)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
void SCIPvarSetCopyData(SCIP_VAR *var, SCIP_DECL_VARCOPY((*varcopy)))
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)
SCIP_Real SCIPholelistGetLeft(SCIP_HOLELIST *holelist)
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
static void holelistFree(SCIP_HOLELIST **holelist, BMS_BLKMEM *blkmem)
static SCIP_RETCODE varEnsureLbchginfosSize(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_RETCODE SCIPvarResetBounds(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
static SCIP_RETCODE domAddHole(SCIP_DOM *dom, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real left, SCIP_Real right, SCIP_Bool *added)
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_CLIQUETABLE *cliquetable, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool *infeasible, int *nbdchgs)
internal methods for problem statistics
#define SCIP_EVENTTYPE_VARCHANGED
static SCIP_RETCODE varFree(SCIP_VAR **var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
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_Longint SCIPvarGetNBranchings(SCIP_VAR *var, SCIP_BRANCHDIR dir)
SCIP_RETCODE SCIPvarsGetProbvarBinary(SCIP_VAR ***vars, SCIP_Bool **negatedarr, int nvars)
SCIP_VAR * SCIPbdchginfoGetInferVar(SCIP_BDCHGINFO *bdchginfo)
SCIP_Bool SCIPsetIsFeasPositive(SCIP_SET *set, SCIP_Real val)
SCIP_CLIQUELIST * cliquelist
SCIP_RETCODE SCIPvarSetInitial(SCIP_VAR *var, SCIP_Bool initial)
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
SCIP_RETCODE SCIPvarGetProbvarHole(SCIP_VAR **var, SCIP_Real *left, SCIP_Real *right)
SCIP_RETCODE SCIPlpUpdateVarLoose(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
SCIP_Real SCIPvarGetVSIDS(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
internal methods for constraints and constraint handlers
SCIP_RETCODE SCIPeventCreateGholeAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
void SCIPsortPtrReal(void **ptrarray, SCIP_Real *realarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
int SCIPvarGetNUses(SCIP_VAR *var)
void SCIPvarsGetProbvar(SCIP_VAR **vars, int nvars)
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)
static SCIP_RETCODE parseBounds(SCIP_SET *set, const char *str, char *type, SCIP_Real *lb, SCIP_Real *ub, char **endptr)
SCIP_VAR ** SCIPvarGetVubVars(SCIP_VAR *var)
SCIP_RETCODE SCIPeventCreateVarUnlocked(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPprimalUpdateObjoffset(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp)
unsigned int donotmultaggr
SCIP_BOUNDTYPE SCIPvarGetBestBoundType(SCIP_VAR *var)
SCIP_CONS * SCIPbdchginfoGetInferCons(SCIP_BDCHGINFO *bdchginfo)
SCIP_Bool SCIPsetIsDualfeasZero(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPvarGetAvgSol(SCIP_VAR *var)
int SCIPvarGetIndex(SCIP_VAR *var)
static SCIP_RETCODE varEnsureParentvarsSize(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_Real SCIPvarGetAvgCutoffs(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
SCIP_Bool SCIPsetIsFeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
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_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetMultaggrUbLocal(SCIP_VAR *var, SCIP_SET *set)
SCIP_RETCODE SCIPvarChgName(SCIP_VAR *var, BMS_BLKMEM *blkmem, const char *name)
SCIP_Real SCIPsetEpsilon(SCIP_SET *set)
SCIP_Real SCIPhistoryGetAvgInferences(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)
SCIP_STAGE SCIPsetGetStage(SCIP_SET *set)
enum SCIP_Vartype SCIP_VARTYPE
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_Bool collectvarhistory
SCIP_Bool SCIPvarIsMarkedDeleteGlobalStructures(SCIP_VAR *var)
SCIP_Bool SCIPcliqueIsCleanedUp(SCIP_CLIQUE *clique)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
int SCIPcliqueGetNVars(SCIP_CLIQUE *clique)
SCIP_RETCODE SCIPvarAddHoleOriginal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_Real left, SCIP_Real right)
void SCIPbdchginfoFree(SCIP_BDCHGINFO **bdchginfo, BMS_BLKMEM *blkmem)
void SCIPvarAdjustUb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *ub)
SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)
static void varIncRootboundchgs(SCIP_VAR *var, SCIP_SET *set, SCIP_STAT *stat)
#define BMSallocBlockMemory(mem, ptr)
SCIP_HOLELIST * SCIPvarGetHolelistLocal(SCIP_VAR *var)
unsigned int delglobalstructs
SCIP_Bool SCIPsetIsDualfeasNegative(SCIP_SET *set, SCIP_Real val)
SCIP_BOUNDTYPE SCIPbdchginfoGetBoundtype(SCIP_BDCHGINFO *bdchginfo)
SCIP_RETCODE SCIPvarDropEvent(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_Bool SCIPeventqueueIsDelayed(SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPhashmapInsert(SCIP_HASHMAP *hashmap, void *origin, void *image)
SCIP_RETCODE SCIPlpUpdateVarColumn(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPvarSetRemovable(SCIP_VAR *var, SCIP_Bool removable)
SCIP_Real SCIPvarGetVSIDS_rec(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)
struct BMS_BlkMem BMS_BLKMEM
SCIP_RETCODE SCIPvarGetProbvarSum(SCIP_VAR **var, SCIP_SET *set, SCIP_Real *scalar, SCIP_Real *constant)
#define SCIP_EVENTTYPE_GUBCHANGED
#define SCIP_CALL_ABORT(x)
SCIP_Real SCIPvarGetPseudoSol(SCIP_VAR *var)
enum SCIP_BoundchgType SCIP_BOUNDCHGTYPE
SCIP_Real * SCIPimplicsGetBounds(SCIP_IMPLICS *implics, SCIP_Bool varfixing)
SCIP_Real SCIPcolGetRedcost(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_VAR * SCIPvarGetTransVar(SCIP_VAR *var)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_RETCODE SCIPeventCreateGubChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
void SCIPhistoryFree(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)
SCIP_Real SCIPvarGetMultaggrLbLocal(SCIP_VAR *var, SCIP_SET *set)
SCIP_Longint SCIPcalcGreComDiv(SCIP_Longint val1, SCIP_Longint val2)
SCIP_Bool SCIPvarIsDeleted(SCIP_VAR *var)
void SCIPvboundsFree(SCIP_VBOUNDS **vbounds, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPvarsAddClique(SCIP_VAR **vars, SCIP_Bool *values, int nvars, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CLIQUE *clique)
void SCIPvarMarkDeleteGlobalStructures(SCIP_VAR *var)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
SCIP_BOUNDCHG * boundchgs
void SCIPvarMarkDeleted(SCIP_VAR *var)
void SCIPvarSetData(SCIP_VAR *var, SCIP_VARDATA *vardata)
SCIP_Bool SCIPcolIsInLP(SCIP_COL *col)
SCIP_RETCODE SCIPvarNegate(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **negvar)
SCIP_Longint SCIPcalcSmaComMul(SCIP_Longint val1, SCIP_Longint val2)
SCIP_RETCODE SCIPdomchgAddBoundchg(SCIP_DOMCHG **domchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_BOUNDCHGTYPE boundchgtype, SCIP_Real lpsolval, SCIP_VAR *infervar, SCIP_CONS *infercons, SCIP_PROP *inferprop, int inferinfo, SCIP_BOUNDTYPE inferboundtype)
SCIP_Bool SCIPvarMayRoundUp(SCIP_VAR *var)
void SCIPimplicsFree(SCIP_IMPLICS **implics, BMS_BLKMEM *blkmem)
static SCIP_RETCODE varProcessChgBranchDirection(SCIP_VAR *var, SCIP_BRANCHDIR branchdirection)
SCIP_Bool SCIPvarMayRoundDown(SCIP_VAR *var)
SCIP_RETCODE SCIPprobAddVar(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var)
SCIP_Bool SCIPsetIsFeasNegative(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIPvarGetPseudocostVariance(SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Bool onlycurrentrun)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_BDCHGINFO * lbchginfos
static SCIP_RETCODE findValuehistoryEntry(SCIP_VAR *var, SCIP_Real value, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_HISTORY **history)
SCIP_RETCODE SCIPcliquelistDel(SCIP_CLIQUELIST **cliquelist, BMS_BLKMEM *blkmem, SCIP_Bool value, SCIP_CLIQUE *clique)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
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_BOUNDCHGTYPE SCIPbdchginfoGetChgtype(SCIP_BDCHGINFO *bdchginfo)
SCIP_RETCODE SCIPvarDelCliqueFromList(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_Bool value, SCIP_CLIQUE *clique)