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 12792 #ifdef SCIP_MORE_DEBUG 12818 assert(prob !=
NULL);
12828 assert(cliques !=
NULL);
12830 for( c = ncliques - 1; c >= 0; --c )
12832 clique = cliques[c];
12833 assert(clique !=
NULL);
12835 assert(nclqvars > 0);
12842 assert(clqvars !=
NULL);
12843 assert(clqvalues !=
NULL);
12847 for( v = nclqvars - 1; v >= 0; --v )
12849 clqvar = clqvars[v];
12850 assert(clqvar !=
NULL);
12857 assert(0 < probindex && probindex < nentries);
12863 assert(!entries[probindex] || entries[probindex] == (clqvalues[v] ? probindex : -probindex));
12865 if( entries[probindex] == 0 )
12867 ids[nids] = probindex;
12871 entries[probindex] = (clqvalues[v] ? probindex : -probindex);
12878 assert(probvars !=
NULL);
12881 for( v = nids - 1; v >= 0; --v )
12884 assert(0 <
id &&
id < nentries);
12885 assert(entries[
id] != 0);
12886 assert(probvars[
id - 1] !=
NULL);
12891 if( (entries[
id] > 0) != varfixing )
12892 redcost =
getImplVarRedcost(probvars[
id - 1],
set, (entries[
id] < 0), stat, lp);
12894 redcost = -
getImplVarRedcost(probvars[
id - 1],
set, (entries[
id] < 0), stat, lp);
12897 implredcost += redcost;
12907 #ifdef SCIP_MORE_DEBUG 12933 for( v = nvars - 1; v >= 0; --v )
12936 assert(implvar !=
NULL);
12946 assert(col !=
NULL);
12961 redcost *= (lb - bounds[v]);
12963 redcost *= (bounds[v] - lb);
12971 redcost *= (bounds[v] - ub);
12973 redcost *= (ub - bounds[v]);
12987 redcost *= (lb - bounds[v]);
12989 redcost *= (bounds[v] - lb);
12997 redcost *= (bounds[v] - ub);
12999 redcost *= (ub - bounds[v]);
13005 implredcost += redcost;
13009 #ifdef SCIP_MORE_DEBUG 13010 SCIPsetDebugMsg(
set,
"variable <%s> incl. cliques (%d) and implications (%d) has implied reduced cost of %g\n",
13014 return implredcost;
13027 assert(var !=
NULL);
13090 assert(var !=
NULL);
13124 assert(var !=
NULL);
13158 assert(var !=
NULL);
13174 assert(var !=
NULL);
13175 assert(relaxation !=
NULL);
13176 assert(
set !=
NULL);
13177 assert(var->
scip == set->scip);
13196 SCIPerrorMessage(
"cannot set relaxation solution value for variable <%s> fixed to %.15g to different value %.15g\n",
13208 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
13236 assert(var !=
NULL);
13237 assert(
set !=
NULL);
13238 assert(var->
scip == set->scip);
13303 assert(var !=
NULL);
13316 assert(var !=
NULL);
13317 assert(
set !=
NULL);
13318 assert(var->
scip == set->scip);
13335 SCIPerrorMessage(
"cannot set NLP solution value for variable <%s> fixed to %.15g to different value %.15g\n",
13348 SCIPerrorMessage(
"cannot set solution value for multiple aggregated variable\n");
13373 assert(var !=
NULL);
13437 assert(var !=
NULL);
13438 assert(stat !=
NULL);
13439 assert(
set !=
NULL);
13440 assert(var->
scip == set->scip);
13441 assert(closestvlb !=
NULL);
13442 assert(closestvlbidx !=
NULL);
13444 *closestvlbidx = -1;
13463 assert(0 <= i && i < nvlbs);
13465 *closestvlbidx = i;
13466 *closestvlb = vlbcoefs[i] *
SCIPvarGetLPSol(vlbvars[i]) + vlbconsts[i];
13471 for( i = 0; i < nvlbs; i++ )
13478 if( vlbsol > *closestvlb )
13480 *closestvlb = vlbsol;
13481 *closestvlbidx = i;
13512 assert(var !=
NULL);
13513 assert(
set !=
NULL);
13514 assert(var->
scip == set->scip);
13515 assert(closestvub !=
NULL);
13516 assert(closestvubidx !=
NULL);
13518 *closestvubidx = -1;
13537 assert(0 <= i && i < nvubs);
13539 *closestvubidx = i;
13540 *closestvub = vubcoefs[i] *
SCIPvarGetLPSol(vubvars[i]) + vubconsts[i];
13545 for( i = 0; i < nvubs; i++ )
13552 if( vubsol < *closestvub )
13554 *closestvub = vubsol;
13555 *closestvubidx = i;
13587 assert(var !=
NULL);
13588 assert(
set !=
NULL);
13589 assert(var->
scip == set->scip);
13590 assert(row !=
NULL);
13672 #ifdef SCIP_HISTORYTOFILE 13674 const char* historypath=
".";
13691 assert(var !=
NULL);
13692 assert(
set !=
NULL);
13693 assert(var->
scip == set->scip);
13694 assert(stat !=
NULL);
13705 SCIPerrorMessage(
"cannot update pseudo costs of original untransformed variable\n");
13726 #ifdef SCIP_HISTORYTOFILE 13729 char filename[256];
13735 sprintf(filename,
"%s/%s.pse", historypath,
SCIPgetProbName(set->scip));
13736 f = fopen(filename,
"a");
13739 fprintf(f,
"%lld %s \t %lld \t %lld \t %lld \t %d \t %15.9f \t %.3f\n",
13755 SCIPerrorMessage(
"cannot update pseudo cost values of a fixed variable\n");
13765 SCIPerrorMessage(
"cannot update pseudo cost values of a multi-aggregated variable\n");
13787 assert(var !=
NULL);
13788 assert(stat !=
NULL);
13836 assert(var !=
NULL);
13837 assert(stat !=
NULL);
13880 assert(var !=
NULL);
13925 assert(var !=
NULL);
13984 solvaldeltaup =
SCIPsetCeil(
set, solval) - solval;
13991 return MIN(upscore, downscore);
14001 assert(var !=
NULL);
14014 if( onlycurrentrun )
14064 if( onlycurrentrun )
14069 assert(count >= 1.9);
14071 confidencebound /= count;
14072 confidencebound =
sqrt(confidencebound);
14079 confidencebound = 0.0;
14081 return confidencebound;
14105 size =
MIN(downsize, upsize);
14115 if( downsize >= 1.9 )
14121 normval =
MAX(1.0, normval);
14123 relerrordown /= normval;
14126 relerrordown = 0.0;
14128 if( upsize >= 1.9 )
14134 normval =
MAX(1.0, normval);
14135 relerrorup /= normval;
14141 relerror =
MAX(relerrorup, relerrordown);
14143 return (relerror <= threshold);
14193 if( countx <= 1.9 || county <= 1.9 )
14290 SCIPerrorMessage(
"Confidence level set to unknown value <%d>", (
int)clevel);
14295 return (probability >= problimit);
14308 assert(var !=
NULL);
14309 assert(blkmem !=
NULL);
14310 assert(
set !=
NULL);
14311 assert(history !=
NULL);
14337 assert(
set !=
NULL);
14340 if( !set->history_valuebased )
14365 assert(var !=
NULL);
14380 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
14397 assert(history !=
NULL);
14429 value = 1.0 - value;
14446 assert(var !=
NULL);
14453 SCIPerrorMessage(
"cannot update VSIDS of original untransformed variable\n");
14501 assert(var !=
NULL);
14513 SCIPerrorMessage(
"cannot update conflict score of original untransformed variable\n");
14530 assert(history !=
NULL);
14556 SCIPerrorMessage(
"cannot update conflict score of a multi-aggregated variable\n");
14560 value = 1.0 - value;
14578 assert(var !=
NULL);
14579 assert(stat !=
NULL);
14625 assert(var !=
NULL);
14626 assert(stat !=
NULL);
14669 assert(var !=
NULL);
14713 assert(var !=
NULL);
14761 assert(var !=
NULL);
14762 assert(stat !=
NULL);
14774 SCIPerrorMessage(
"cannot update branching counter of original untransformed variable\n");
14793 assert(history !=
NULL);
14801 SCIPerrorMessage(
"cannot update branching counter of a fixed variable\n");
14819 SCIPerrorMessage(
"cannot update branching counter of a multi-aggregated variable\n");
14823 value = 1.0 - value;
14845 assert(var !=
NULL);
14846 assert(stat !=
NULL);
14858 SCIPerrorMessage(
"cannot update inference counter of original untransformed variable\n");
14877 assert(history !=
NULL);
14885 SCIPerrorMessage(
"cannot update inference counter of a fixed variable\n");
14903 SCIPerrorMessage(
"cannot update inference counter of a multi-aggregated variable\n");
14907 value = 1.0 - value;
14929 assert(var !=
NULL);
14930 assert(stat !=
NULL);
14942 SCIPerrorMessage(
"cannot update cutoff sum of original untransformed variable\n");
14961 assert(history !=
NULL);
14987 SCIPerrorMessage(
"cannot update cutoff sum of a multi-aggregated variable\n");
14991 value = 1.0 - value;
15008 assert(var !=
NULL);
15053 assert(var !=
NULL);
15096 assert(var !=
NULL);
15141 assert(var !=
NULL);
15187 assert(var !=
NULL);
15188 assert(stat !=
NULL);
15236 assert(var !=
NULL);
15237 assert(stat !=
NULL);
15280 assert(var !=
NULL);
15325 assert(var !=
NULL);
15369 assert(var !=
NULL);
15370 assert(stat !=
NULL);
15426 assert(var !=
NULL);
15427 assert(stat !=
NULL);
15480 assert(var !=
NULL);
15523 assert(var !=
NULL);
15567 assert(var !=
NULL);
15568 assert(stat !=
NULL);
15614 assert(var !=
NULL);
15615 assert(stat !=
NULL);
15671 assert(bdchginfo !=
NULL);
15674 (*bdchginfo)->oldbound = oldbound;
15675 (*bdchginfo)->newbound = newbound;
15676 (*bdchginfo)->var = var;
15677 (*bdchginfo)->inferencedata.var = var;
15678 (*bdchginfo)->inferencedata.reason.prop =
NULL;
15679 (*bdchginfo)->inferencedata.info = 0;
15680 (*bdchginfo)->bdchgidx.depth = INT_MAX;
15681 (*bdchginfo)->bdchgidx.pos = -1;
15682 (*bdchginfo)->pos = 0;
15684 (*bdchginfo)->boundtype = boundtype;
15685 (*bdchginfo)->inferboundtype = boundtype;
15686 (*bdchginfo)->redundant =
FALSE;
15697 assert(bdchginfo !=
NULL);
15714 assert(var !=
NULL);
15770 assert(var !=
NULL);
15846 assert(var !=
NULL);
15852 if( bdchgidx ==
NULL )
15859 if( bdchginfo !=
NULL )
15867 switch( varstatus )
15939 SCIPerrorMessage(
"cannot get the bounds of a multi-aggregated variable.\n");
15970 assert(var !=
NULL);
15976 if( bdchgidx ==
NULL )
15983 if( bdchginfo !=
NULL )
15991 switch( varstatus )
16063 SCIPerrorMessage(
"cannot get the bounds of a multiple aggregated variable.\n");
16113 assert(var !=
NULL);
16137 assert(var !=
NULL);
16174 assert(bdchgidx !=
NULL);
16176 return bdchgidx->
depth;
16191 assert(var !=
NULL);
16192 assert(
set !=
NULL);
16193 assert(var->
scip == set->scip);
16263 assert(var1 !=
NULL);
16264 assert(var2 !=
NULL);
16270 assert(var1 !=
NULL);
16271 assert(var2 !=
NULL);
16318 assert(var !=
NULL);
16335 #undef SCIPboundchgGetNewbound 16336 #undef SCIPboundchgGetVar 16337 #undef SCIPboundchgGetBoundchgtype 16338 #undef SCIPboundchgGetBoundtype 16339 #undef SCIPboundchgIsRedundant 16340 #undef SCIPdomchgGetNBoundchgs 16341 #undef SCIPdomchgGetBoundchg 16342 #undef SCIPholelistGetLeft 16343 #undef SCIPholelistGetRight 16344 #undef SCIPholelistGetNext 16345 #undef SCIPvarGetName 16346 #undef SCIPvarGetNUses 16347 #undef SCIPvarGetData 16348 #undef SCIPvarSetData 16349 #undef SCIPvarSetDelorigData 16350 #undef SCIPvarSetTransData 16351 #undef SCIPvarSetDeltransData 16352 #undef SCIPvarGetStatus 16353 #undef SCIPvarIsOriginal 16354 #undef SCIPvarIsTransformed 16355 #undef SCIPvarIsNegated 16356 #undef SCIPvarGetType 16357 #undef SCIPvarIsBinary 16358 #undef SCIPvarIsIntegral 16359 #undef SCIPvarIsInitial 16360 #undef SCIPvarIsRemovable 16361 #undef SCIPvarIsDeleted 16362 #undef SCIPvarIsDeletable 16363 #undef SCIPvarMarkDeletable 16364 #undef SCIPvarMarkNotDeletable 16365 #undef SCIPvarIsActive 16366 #undef SCIPvarGetIndex 16367 #undef SCIPvarGetProbindex 16368 #undef SCIPvarGetTransVar 16369 #undef SCIPvarGetCol 16370 #undef SCIPvarIsInLP 16371 #undef SCIPvarGetAggrVar 16372 #undef SCIPvarGetAggrScalar 16373 #undef SCIPvarGetAggrConstant 16374 #undef SCIPvarGetMultaggrNVars 16375 #undef SCIPvarGetMultaggrVars 16376 #undef SCIPvarGetMultaggrScalars 16377 #undef SCIPvarGetMultaggrConstant 16378 #undef SCIPvarGetNegatedVar 16379 #undef SCIPvarGetNegationVar 16380 #undef SCIPvarGetNegationConstant 16381 #undef SCIPvarGetObj 16382 #undef SCIPvarGetLbOriginal 16383 #undef SCIPvarGetUbOriginal 16384 #undef SCIPvarGetHolelistOriginal 16385 #undef SCIPvarGetLbGlobal 16386 #undef SCIPvarGetUbGlobal 16387 #undef SCIPvarGetHolelistGlobal 16388 #undef SCIPvarGetBestBoundGlobal 16389 #undef SCIPvarGetWorstBoundGlobal 16390 #undef SCIPvarGetLbLocal 16391 #undef SCIPvarGetUbLocal 16392 #undef SCIPvarGetHolelistLocal 16393 #undef SCIPvarGetBestBoundLocal 16394 #undef SCIPvarGetWorstBoundLocal 16395 #undef SCIPvarGetBestBoundType 16396 #undef SCIPvarGetWorstBoundType 16397 #undef SCIPvarGetLbLazy 16398 #undef SCIPvarGetUbLazy 16399 #undef SCIPvarGetBranchFactor 16400 #undef SCIPvarGetBranchPriority 16401 #undef SCIPvarGetBranchDirection 16402 #undef SCIPvarGetNVlbs 16403 #undef SCIPvarGetVlbVars 16404 #undef SCIPvarGetVlbCoefs 16405 #undef SCIPvarGetVlbConstants 16406 #undef SCIPvarGetNVubs 16407 #undef SCIPvarGetVubVars 16408 #undef SCIPvarGetVubCoefs 16409 #undef SCIPvarGetVubConstants 16410 #undef SCIPvarGetNImpls 16411 #undef SCIPvarGetImplVars 16412 #undef SCIPvarGetImplTypes 16413 #undef SCIPvarGetImplBounds 16414 #undef SCIPvarGetImplIds 16415 #undef SCIPvarGetNCliques 16416 #undef SCIPvarGetCliques 16417 #undef SCIPvarGetLPSol 16418 #undef SCIPvarGetNLPSol 16419 #undef SCIPvarGetBdchgInfoLb 16420 #undef SCIPvarGetNBdchgInfosLb 16421 #undef SCIPvarGetBdchgInfoUb 16422 #undef SCIPvarGetNBdchgInfosUb 16423 #undef SCIPvarGetValuehistory 16424 #undef SCIPvarGetPseudoSol 16425 #undef SCIPvarCatchEvent 16426 #undef SCIPvarDropEvent 16427 #undef SCIPvarGetVSIDS 16428 #undef SCIPvarGetCliqueComponentIdx 16429 #undef SCIPbdchgidxGetPos 16430 #undef SCIPbdchgidxIsEarlierNonNull 16431 #undef SCIPbdchgidxIsEarlier 16432 #undef SCIPbdchginfoGetOldbound 16433 #undef SCIPbdchginfoGetNewbound 16434 #undef SCIPbdchginfoGetVar 16435 #undef SCIPbdchginfoGetChgtype 16436 #undef SCIPbdchginfoGetBoundtype 16437 #undef SCIPbdchginfoGetDepth 16438 #undef SCIPbdchginfoGetPos 16439 #undef SCIPbdchginfoGetIdx 16440 #undef SCIPbdchginfoGetInferVar 16441 #undef SCIPbdchginfoGetInferCons 16442 #undef SCIPbdchginfoGetInferProp 16443 #undef SCIPbdchginfoGetInferInfo 16444 #undef SCIPbdchginfoGetInferBoundtype 16445 #undef SCIPbdchginfoIsRedundant 16446 #undef SCIPbdchginfoHasInferenceReason 16447 #undef SCIPbdchginfoIsTighter 16455 assert(boundchg !=
NULL);
16465 assert(boundchg !=
NULL);
16467 return boundchg->
var;
16475 assert(boundchg !=
NULL);
16485 assert(boundchg !=
NULL);
16495 assert(boundchg !=
NULL);
16514 assert(domchg !=
NULL);
16525 assert(holelist !=
NULL);
16535 assert(holelist !=
NULL);
16545 assert(holelist !=
NULL);
16547 return holelist->
next;
16558 assert(var !=
NULL);
16568 assert(var !=
NULL);
16578 assert(var !=
NULL);
16589 assert(var !=
NULL);
16600 assert(var !=
NULL);
16603 var->vardelorig = vardelorig;
16612 assert(var !=
NULL);
16615 var->vartrans = vartrans;
16624 assert(var !=
NULL);
16626 var->vardeltrans = vardeltrans;
16635 assert(var !=
NULL);
16637 var->varcopy = varcopy;
16646 assert(var !=
NULL);
16662 assert(var !=
NULL);
16677 assert(var !=
NULL);
16687 assert(var !=
NULL);
16700 assert(var !=
NULL);
16713 assert(var !=
NULL);
16723 assert(var !=
NULL);
16738 assert(var !=
NULL);
16749 assert(var !=
NULL);
16759 assert(var !=
NULL);
16769 assert(var !=
NULL);
16779 assert(var !=
NULL);
16791 assert(var !=
NULL);
16802 assert(var !=
NULL);
16815 assert(var !=
NULL);
16825 assert(var !=
NULL);
16835 assert(var !=
NULL);
16845 assert(var !=
NULL);
16855 assert(var !=
NULL);
16865 assert(var !=
NULL);
16875 assert(var !=
NULL);
16886 assert(var !=
NULL);
16897 assert(var !=
NULL);
16907 assert(var !=
NULL);
16918 assert(var !=
NULL);
16929 assert(var !=
NULL);
16940 assert(var !=
NULL);
16952 assert(var !=
NULL);
16964 assert(var !=
NULL);
16976 assert(var !=
NULL);
16988 assert(var !=
NULL);
16998 assert(var !=
NULL);
17009 assert(var !=
NULL);
17020 assert(var !=
NULL);
17030 assert(var !=
NULL);
17046 assert(probvar !=
NULL);
17047 assert(aggrobj !=
NULL);
17049 while( probvar !=
NULL )
17118 assert(var !=
NULL);
17138 assert(var !=
NULL);
17158 assert(var !=
NULL);
17172 assert(var !=
NULL);
17182 assert(var !=
NULL);
17192 assert(var !=
NULL);
17202 assert(var !=
NULL);
17204 if( var->
obj >= 0.0 )
17215 assert(var !=
NULL);
17217 if( var->
obj >= 0.0 )
17228 assert(var !=
NULL);
17238 assert(var !=
NULL);
17248 assert(var !=
NULL);
17258 assert(var !=
NULL);
17260 if( var->
obj >= 0.0 )
17271 assert(var !=
NULL);
17273 if( var->
obj >= 0.0 )
17284 assert(var !=
NULL);
17286 if( var->
obj >= 0.0 )
17297 assert(var !=
NULL);
17299 if( var->
obj >= 0.0 )
17310 assert(var !=
NULL);
17320 assert(var !=
NULL);
17332 assert(var !=
NULL);
17344 assert(var !=
NULL);
17354 assert(var !=
NULL);
17364 assert(var !=
NULL);
17376 assert(var !=
NULL);
17386 assert(var !=
NULL);
17396 assert(var !=
NULL);
17406 assert(var !=
NULL);
17418 assert(var !=
NULL);
17428 assert(var !=
NULL);
17438 assert(var !=
NULL);
17451 assert(var !=
NULL);
17468 assert(var !=
NULL);
17483 assert(var !=
NULL);
17497 assert(var !=
NULL);
17513 assert(var !=
NULL);
17525 assert(var !=
NULL);
17536 assert(var !=
NULL);
17546 assert(var !=
NULL);
17559 assert(var !=
NULL);
17574 assert(pos < var->nlbchginfos);
17594 assert(pos < var->nubchginfos);
17604 assert(var !=
NULL);
17614 assert(var !=
NULL);
17624 assert(var !=
NULL);
17639 assert(var !=
NULL);
17652 assert(var !=
NULL);
17662 assert(var !=
NULL);
17678 assert(var !=
NULL);
17679 assert(
set !=
NULL);
17680 assert(var->
scip == set->scip);
17687 eventtype, var->
name, (
void*)eventhdlr, (
void*)eventdata);
17705 assert(var !=
NULL);
17706 assert(
set !=
NULL);
17707 assert(var->
scip == set->scip);
17711 SCIPsetDebugMsg(
set,
"drop event of variable <%s> with handler %p and data %p\n", var->
name, (
void*)eventhdlr,
17724 assert(bdchgidx !=
NULL);
17726 return bdchgidx->
pos;
17735 assert(bdchgidx1 !=
NULL);
17736 assert(bdchgidx1->
depth >= -2);
17737 assert(bdchgidx1->
pos >= 0);
17738 assert(bdchgidx2 !=
NULL);
17739 assert(bdchgidx2->
depth >= -2);
17740 assert(bdchgidx2->
pos >= 0);
17742 return (bdchgidx1->
depth < bdchgidx2->
depth)
17743 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
17755 assert(bdchgidx1 ==
NULL || bdchgidx1->
depth >= -2);
17756 assert(bdchgidx1 ==
NULL || bdchgidx1->
pos >= 0);
17757 assert(bdchgidx2 ==
NULL || bdchgidx2->
depth >= -2);
17758 assert(bdchgidx2 ==
NULL || bdchgidx2->
pos >= 0);
17760 if( bdchgidx1 ==
NULL )
17762 else if( bdchgidx2 ==
NULL )
17765 return (bdchgidx1->
depth < bdchgidx2->
depth)
17766 || (bdchgidx1->
depth == bdchgidx2->
depth && (bdchgidx1->
pos < bdchgidx2->
pos));
17774 assert(bdchginfo !=
NULL);
17784 assert(bdchginfo !=
NULL);
17794 assert(bdchginfo !=
NULL);
17796 return bdchginfo->
var;
17804 assert(bdchginfo !=
NULL);
17814 assert(bdchginfo !=
NULL);
17824 assert(bdchginfo !=
NULL);
17834 assert(bdchginfo !=
NULL);
17844 assert(bdchginfo !=
NULL);
17854 assert(bdchginfo !=
NULL);
17866 assert(bdchginfo !=
NULL);
17878 assert(bdchginfo !=
NULL);
17889 assert(bdchginfo !=
NULL);
17901 assert(bdchginfo !=
NULL);
17922 assert(bdchginfo !=
NULL);
17933 assert(bdchginfo !=
NULL);
17948 assert(bdchginfo1 !=
NULL);
17949 assert(bdchginfo2 !=
NULL);
17950 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_Bool SCIPlpIsDualReliable(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)
#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)
void SCIPvarMarkDeleteGlobalStructures(SCIP_VAR *var)
SCIP_BOUNDCHGTYPE SCIPbdchginfoGetChgtype(SCIP_BDCHGINFO *bdchginfo)
SCIP_RETCODE SCIPvarDelCliqueFromList(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_Bool value, SCIP_CLIQUE *clique)