presolved:1;
137 unsigned intvarboundsadded:1;
138 unsigned intchanged:1;
139 unsigned inttightened:1;
143structSCIP_ConshdlrData
185assert(elem1 !=
NULL);
186assert(elem2 !=
NULL);
191assert(consdata1 !=
NULL);
192assert(consdata2 !=
NULL);
204&& !consdata1->changed && consdata2->changed) )
208&& (consdata1->changed == consdata2->changed) )
223assert(conshdlrdata !=
NULL);
228(*conshdlrdata)->eventhdlr = eventhdlr;
241assert(conshdlrdata !=
NULL);
242assert(*conshdlrdata !=
NULL);
259assert(cons !=
NULL);
260assert(eventhdlr !=
NULL);
262assert(consdata !=
NULL);
279assert(cons !=
NULL);
280assert(eventhdlr !=
NULL);
282assert(consdata !=
NULL);
302assert(consdata !=
NULL);
319 SCIPerrorMessage(
"left hand side of varbound constraint greater than right hand side\n");
335(*consdata)->var = var;
336(*consdata)->vbdvar = vbdvar;
337(*consdata)->vbdcoef = vbdcoef;
338(*consdata)->lhs = lhs;
339(*consdata)->rhs = rhs;
340(*consdata)->row =
NULL;
341(*consdata)->nlrow =
NULL;
342(*consdata)->presolved =
FALSE;
343(*consdata)->varboundsadded =
FALSE;
344(*consdata)->changed =
TRUE;
345(*consdata)->tightened =
FALSE;
373assert(consdata !=
NULL);
374assert(*consdata !=
NULL);
377 if( (*consdata)->row !=
NULL)
383 if( (*consdata)->nlrow !=
NULL)
407assert(consdata !=
NULL);
408assert(consdata->row ==
NULL);
431assert(consdata !=
NULL);
435 if( conshdlr ==
NULL)
442assert(conshdlrdata !=
NULL);
450 if( consdata->row ==
NULL)
454assert(consdata->row !=
NULL);
482assert(consdata !=
NULL);
484 if( consdata->nlrow ==
NULL)
489assert(consdata->lhs <= consdata->rhs);
491vars[0] = consdata->var;
492vars[1] = consdata->vbdvar;
495coefs[1] = consdata->vbdcoef;
500assert(consdata->nlrow !=
NULL);
525assert(consdata !=
NULL);
527 SCIPdebugMsg(
scip,
"checking variable bound constraint <%s> for feasibility of solution %p (lprows=%u)\n",
539absviol =
MAX(consdata->lhs - sum, sum - consdata->rhs);
542relviol =
MAX(lhsrelviol, rhsrelviol);
579assert(consdata !=
NULL);
583assert(var !=
NULL);
585vbdvar = consdata->vbdvar;
586assert(vbdvar !=
NULL);
588vbdcoef = consdata->vbdcoef;
595assert(infervar == var);
674assert(infervar == vbdvar);
783assert(infervar == var);
861assert(infervar == vbdvar);
1001 if( usebdwidening )
1010relaxedub = inferbd - 1.0;
1017assert(consdata !=
NULL);
1020assert(infervar == consdata->var);
1022abscoef =
REALABS(consdata->vbdcoef);
1042inferbd = inferbd + 1.0;
1049assert(consdata !=
NULL);
1052assert(infervar == consdata->var);
1054abscoef =
REALABS(consdata->vbdcoef);
1069 if( usebdwidening )
1080relaxedlb = inferbd + 1.0;
1087assert(consdata !=
NULL);
1090assert(infervar == consdata->var);
1092abscoef =
REALABS(consdata->vbdcoef);
1112inferbd = inferbd - 1.0;
1119assert(consdata !=
NULL);
1122assert(infervar == consdata->var);
1124abscoef =
REALABS(consdata->vbdcoef);
1164assert(cons !=
NULL);
1165assert(result !=
NULL);
1168assert(consdata !=
NULL);
1172 if( conshdlr ==
NULL)
1180var = consdata->var;
1181vbdvar = consdata->vbdvar;
1182vbdcoef = consdata->vbdcoef;
1203&cutoff, &tightened) );
1215 else if( tightened )
1234&cutoff, &tightened) );
1246 else if( tightened )
1261 if( consdata->row ==
NULL)
1265assert(consdata->row !=
NULL);
1298assert(cons !=
NULL);
1306assert(consdata !=
NULL);
1307assert(consdata->var !=
NULL&& consdata->vbdvar !=
NULL);
1314assert(consdata->row ==
NULL);
1318consdata->rhs = lhs;
1327 if( consdata->vbdcoef > 0.0 )
1341 if( consdata->vbdcoef > 0.0 )
1354consdata->varboundsadded =
FALSE;
1355consdata->tightened =
FALSE;
1360consdata->presolved =
FALSE;
1361consdata->lhs = lhs;
1362consdata->changed =
TRUE;
1378assert(cons !=
NULL);
1386assert(consdata !=
NULL);
1387assert(consdata->var !=
NULL&& consdata->vbdvar !=
NULL);
1394assert(consdata->row ==
NULL);
1398consdata->lhs = rhs;
1408 if( consdata->vbdcoef > 0.0 )
1422 if( consdata->vbdcoef > 0.0 )
1435consdata->varboundsadded =
FALSE;
1436consdata->tightened =
FALSE;
1441consdata->presolved =
FALSE;
1442consdata->rhs = rhs;
1443consdata->changed =
TRUE;
1470assert(cutoff !=
NULL);
1471assert(nchgbds !=
NULL);
1474assert(consdata !=
NULL);
1476 SCIPdebugMsg(
scip,
"propagating variable bound constraint <%s>: %.15g <= <%s>[%.9g, %.9g] + %.15g<%s>[%.9g, %.9g] <= %.15g\n",
1514tightenedround =
FALSE;
1526 if( consdata->vbdcoef > 0.0 )
1576tightenedround =
TRUE;
1590 if( consdata->vbdcoef > 0.0 )
1598 if( newlb > ylb + 0.5 )
1615tightenedround =
TRUE;
1630 if( newub < yub - 0.5 )
1649tightenedround =
TRUE;
1669 if( consdata->vbdcoef > 0.0 )
1719tightenedround =
TRUE;
1733 if( consdata->vbdcoef > 0.0 )
1741 if( newub < yub - 0.5 )
1760tightenedround =
TRUE;
1775 if( newlb > ylb + 0.5 )
1794tightenedround =
TRUE;
1805 while( tightenedround );
1812((consdata->vbdcoef > 0.0 &&
SCIPisGE(
scip, xlb + consdata->vbdcoef * ylb, consdata->lhs))
1813|| (consdata->vbdcoef < 0.0 &&
SCIPisGE(
scip, xlb + consdata->vbdcoef * yub, consdata->lhs))) )
1823((consdata->vbdcoef > 0.0 &&
SCIPisLE(
scip, xub + consdata->vbdcoef * yub, consdata->rhs))
1824|| (consdata->vbdcoef < 0.0 &&
SCIPisLE(
scip, xub + consdata->vbdcoef * ylb, consdata->rhs))) )
1834|| (consdata->vbdcoef > 0.0 &&
SCIPisGE(
scip, xlb + consdata->vbdcoef * ylb, consdata->lhs))
1835|| (consdata->vbdcoef < 0.0 &&
SCIPisGE(
scip, xlb + consdata->vbdcoef * yub, consdata->lhs)))
1837|| (consdata->vbdcoef > 0.0 &&
SCIPisLE(
scip, xub + consdata->vbdcoef * yub, consdata->rhs))
1838|| (consdata->vbdcoef < 0.0 &&
SCIPisLE(
scip, xub + consdata->vbdcoef * ylb, consdata->rhs))) )
1840 SCIPdebugMsg(
scip,
"variable bound constraint <%s> is redundant: <%s>[%.15g,%.15g], <%s>[%.15g,%.15g]\n",
1847#ifdef SCIP_DISABLED_CODE 1892 if( ndelconss !=
NULL)
1944assert(var !=
NULL);
1945assert(vbdvar !=
NULL);
1946assert(sideequal !=
NULL);
1947assert(cons0sidered !=
NULL);
1948assert(cons1sidered !=
NULL);
1949assert(coef0 * coef1 > 0.0);
1953*sideequal =
FALSE;
1957redundant0 = cons1sidered;
1958redundant1 = cons0sidered;
1962redundant0 = cons0sidered;
1963redundant1 = cons1sidered;
1976 if( !*redundant0 && !*redundant1 )
1994boundxlb1 = side0 - lbvbdvar * coef0;
1995boundxlb2 = side1 - lbvbdvar * coef1;
2012boundylb1 = (side0 - lbvar) / coef0;
2013boundylb2 = (side1 - lbvar) / coef1;
2030boundxub1 = side0 - ubvbdvar * coef0;
2031boundxub2 = side1 - ubvbdvar * coef1;
2048boundyub1 = (side0 - ubvar) / coef0;
2049boundyub2 = (side1 - ubvar) / coef1;
2054boundvaluex1 =
MAX(boundxlb1, boundxlb2);
2055boundvaluex2 =
MAX(boundxub1, boundxub2);
2059boundvaluex1 =
MIN(boundxlb1, boundxlb2);
2060boundvaluex2 =
MIN(boundxub1, boundxub2);
2066valuex1 =
MIN(boundvaluex1, ubvar);
2067valuex1 =
MAX(valuex1, lbvar);
2068valuex2 =
MAX(boundvaluex2, lbvar);
2069valuex2 =
MIN(valuex2, ubvar);
2080valuex1 =
MAX(boundvaluex1, lbvar);
2081valuex1 =
MIN(valuex1, ubvar);
2082valuex2 =
MIN(boundvaluex2, ubvar);
2083valuex2 =
MAX(valuex2, lbvar);
2099valuey1 = side0 / coef0;
2100valuey2 = side1 / coef1;
2103 else if( valuex1 > 0.0 )
2117valuey1 = (side0 - valuex1) / coef0;
2118valuey2 = (side1 - valuex1) / coef1;
2124 else if( coef0 > 0.0 )
2126 if( valuey1 < valuey2 )
2127*redundant1 =
TRUE;
2129*redundant0 =
TRUE;
2133 if( valuey1 < valuey2 )
2134*redundant0 =
TRUE;
2136*redundant1 =
TRUE;
2145valuey1 = side0 / coef0;
2146valuey2 = side1 / coef1;
2149 else if( valuex2 > 0.0 )
2163valuey1 = (side0 - valuex2) / coef0;
2164valuey2 = (side1 - valuex2) / coef1;
2173assert(!(*redundant0));
2174assert(!(*redundant1));
2178*sideequal =
FALSE;
2179*redundant1 =
TRUE;
2183*sideequal =
FALSE;
2184*redundant0 =
TRUE;
2188 else if( ( *redundant1 &&
SCIPisGT(
scip, valuey1, valuey2) )
2189|| ( *redundant0 &&
SCIPisLT(
scip, valuey1, valuey2) ) )
2191*redundant0 =
FALSE;
2192*redundant1 =
FALSE;
2201assert(!(*redundant0));
2202assert(!(*redundant1));
2206*sideequal =
FALSE;
2207*redundant0 =
TRUE;
2211*sideequal =
FALSE;
2212*redundant1 =
TRUE;
2216 else if( ( *redundant0 &&
SCIPisGT(
scip, valuey1, valuey2) )
2217|| ( *redundant1 &&
SCIPisLT(
scip, valuey1, valuey2) ) )
2219*redundant0 =
FALSE;
2220*redundant1 =
FALSE;
2224assert(*sideequal || *redundant0 || *redundant1);
2231boundvaluey1 =
MAX(boundylb1, boundylb2);
2232boundvaluey2 =
MAX(boundyub1, boundyub2);
2236boundvaluey1 =
MIN(boundylb1, boundylb2);
2237boundvaluey2 =
MIN(boundyub1, boundyub2);
2240valuey1 =
MIN(boundvaluey1, ubvbdvar);
2241valuey1 =
MAX(valuey1, lbvbdvar);
2242valuey2 =
MAX(boundvaluey2, lbvbdvar);
2243valuey2 =
MIN(valuey2, ubvbdvar);
2252boundvaluey1 =
MIN(boundylb1, boundylb2);
2253boundvaluey2 =
MIN(boundyub1, boundyub2);
2257boundvaluey1 =
MAX(boundylb1, boundylb2);
2258boundvaluey2 =
MAX(boundyub1, boundyub2);
2261valuey1 =
MAX(boundvaluey1, lbvbdvar);
2262valuey1 =
MIN(valuey1, ubvbdvar);
2263valuey2 =
MIN(boundvaluey2, ubvbdvar);
2264valuey2 =
MAX(valuey2, lbvbdvar);
2280 else if( valuey1 > 0.0 )
2294valuex1 = side0 - valuey1 * coef0;
2295valuex2 = side1 - valuey1 * coef1;
2301assert(!(*redundant0));
2302assert(!(*redundant1));
2306*sideequal =
FALSE;
2307*redundant1 =
TRUE;
2311*sideequal =
FALSE;
2312*redundant0 =
TRUE;
2315 else if( ( *redundant1 &&
SCIPisGT(
scip, valuex1, valuex2) )
2316|| ( *redundant0 &&
SCIPisLT(
scip, valuex1, valuex2) ) )
2318*redundant0 =
FALSE;
2319*redundant1 =
FALSE;
2333 else if( valuey2 > 0.0 )
2347valuex1 = side0 - valuey2 * coef0;
2348valuex2 = side1 - valuey2 * coef1;
2354assert(!(*redundant0));
2355assert(!(*redundant1));
2359*sideequal =
FALSE;
2360*redundant1 =
TRUE;
2364*sideequal =
FALSE;
2365*redundant0 =
TRUE;
2368 else if( ( *redundant1 &&
SCIPisGT(
scip, valuex1, valuex2) )
2369|| ( *redundant0 &&
SCIPisLT(
scip, valuex1, valuex2) ) )
2371*redundant0 =
FALSE;
2372*redundant1 =
FALSE;
2375assert(*redundant0 || *redundant1 || *sideequal);
2437assert(conss !=
NULL);
2438assert(cutoff !=
NULL);
2439assert(nchgbds !=
NULL);
2440assert(ndelconss !=
NULL);
2441assert(nchgcoefs !=
NULL);
2442assert(nchgsides !=
NULL);
2448 SCIPsortPtr((
void**)sortedconss, consVarboundComp, nconss);
2451 for( c = nconss - 1; c > 0 && !(*cutoff); --c )
2456cons0 = sortedconss[c];
2462assert(consdata0 !=
NULL);
2463assert(consdata0->var !=
NULL);
2464assert(consdata0->vbdvar !=
NULL);
2470 if( !consdata0->changed )
2473consdata0->changed =
FALSE;
2475 for( s = c - 1; s >= 0; --s )
2484cons1 = sortedconss[s];
2490assert(consdata1 !=
NULL);
2491assert(consdata1->var !=
NULL);
2492assert(consdata1->vbdvar !=
NULL);
2498lhs = consdata0->lhs;
2499rhs = consdata0->rhs;
2500coef = consdata0->vbdcoef;
2503 if( consdata0->var == consdata1->vbdvar && consdata0->vbdvar == consdata1->var &&
2511scalar = (1.0 - coef * consdata1->vbdcoef);
2523bnd = (lhs - coef * consdata1->rhs)/scalar;
2529bnd = (lhs - coef * consdata1->lhs)/scalar;
2578bnd = (rhs - coef * consdata1->lhs)/scalar;
2584bnd = (rhs - coef * consdata1->rhs)/scalar;
2633bnd = (consdata1->lhs - consdata1->vbdcoef * rhs)/scalar;
2639bnd = (consdata1->lhs - consdata1->vbdcoef * lhs)/scalar;
2688bnd = (consdata1->rhs - consdata1->vbdcoef * lhs)/scalar;
2694bnd = (consdata1->rhs - consdata1->vbdcoef * rhs)/scalar;
2738 if( consdata0->var != consdata1->var || consdata0->vbdvar != consdata1->vbdvar )
2742deletecons1 =
TRUE;
2747lhs =
MAX(consdata1->lhs, lhs);
2748rhs =
MIN(consdata1->rhs, rhs);
2761lhs =
MAX(consdata1->lhs, lhs);
2762coef = lhs -
MAX(consdata1->lhs - consdata1->vbdcoef, consdata0->lhs - coef);
2767rhs =
MIN(consdata1->rhs, rhs);
2768coef = rhs -
MIN(consdata1->rhs - consdata1->vbdcoef, consdata0->rhs - coef);
2790 checkRedundancySide(
scip, consdata0->var, consdata0->vbdvar, coef, consdata1->vbdcoef, lhs, consdata1->lhs, &lhsequal, &cons0lhsred, &cons1lhsred,
TRUE);
2793 checkRedundancySide(
scip, consdata0->var, consdata0->vbdvar, coef, consdata1->vbdcoef, rhs, consdata1->rhs, &rhsequal, &cons0rhsred, &cons1rhsred,
FALSE);
2796 if( (lhsequal || cons0lhsred) && (rhsequal || cons0rhsred) )
2813 else if( cons1lhsred && cons1rhsred )
2853deletecons1 =
FALSE;
2879deletecons1 =
FALSE;
2932rhs = (lhs + rhs)/2;
2989 if( consdata0->vbdcoef * coef < 0.0 )
2996 if( consdata0->vbdcoef > 0.0 )
3018consdata0->varboundsadded =
FALSE;
3019consdata0->tightened =
FALSE;
3020consdata0->presolved =
FALSE;
3021consdata0->changed =
FALSE;
3023consdata0->vbdcoef = coef;
3078assert(conss !=
NULL|| nconss == 0);
3079assert(nchgcoefs !=
NULL);
3080assert(nchgsides !=
NULL);
3086 for( c = nconss - 1; c >= 0; --c )
3088assert(conss !=
NULL);
3094assert(consdata !=
NULL);
3118success =
SCIPrealToRational(consdata->vbdcoef, -epsilon, epsilon , maxmult, &numerator, &denominator);
3125denominator /= numerator;
3129success = success && (denominator <= maxmult);
3132 if( success &&
ABS(denominator) > 1 && numerator == 1 )
3139assert(
SCIPisEQ(
scip, consdata->vbdcoef * denominator, 1.0));
3142 if( consdata->vbdcoef < 0 )
3144assert(denominator < 0);
3151consdata->lhs = consdata->rhs * denominator;
3159consdata->rhs = consdata->lhs * denominator;
3169tmp = consdata->lhs;
3170consdata->lhs = consdata->rhs * denominator;
3171consdata->rhs = tmp * denominator;
3172consdata->tightened =
FALSE;
3182assert(denominator > 0);
3187consdata->lhs *= denominator;
3195consdata->rhs *= denominator;
3200assert(
SCIPisGE(
scip, consdata->rhs, consdata->lhs));
3204swapvar = consdata->var;
3205consdata->var = consdata->vbdvar;
3206consdata->vbdvar = swapvar;
3209consdata->vbdcoef = (
SCIP_Real)denominator;
3213consdata->varboundsadded =
FALSE;
3214consdata->tightened =
FALSE;
3249assert(cons !=
NULL);
3250assert(cutoff !=
NULL);
3251assert(nchgbds !=
NULL);
3252assert(ndelconss !=
NULL);
3253assert(naddconss !=
NULL);
3260assert(consdata !=
NULL);
3263var = consdata->var;
3267vbdvar = consdata->vbdvar;
3269vbdvarconstant = 0.0;
3271varschanged = (var != consdata->var || vbdvar != consdata->vbdvar);
3279 SCIPdebugMsg(
scip,
"variable bound constraint <%s> has equal variable and vbd variable <%s>\n",
3285scalar = varscalar + consdata->vbdcoef * vbdvarscalar;
3286constant = varconstant + consdata->vbdcoef * vbdvarconstant;
3296 else if( scalar > 0.0 )
3302newbnd = (consdata->lhs - constant) / scalar;
3319newbnd = (consdata->rhs - constant) / scalar;
3339newbnd = (consdata->lhs - constant) / scalar;
3356newbnd = (consdata->rhs - constant) / scalar;
3390 SCIP_Realactivity = varconstant + consdata->vbdcoef * vbdvarconstant;
3392 SCIPdebugMsg(
scip,
"variable bound constraint <%s>: variable <%s> is fixed to %.15g\n",
3404assert( consdata->vbdcoef != 0.0 );
3405assert( vbdvarscalar != 0.0 );
3410 if( consdata->vbdcoef > 0.0 )
3414newbnd = (consdata->lhs - varconstant) / consdata->vbdcoef;
3420 else if( tightened )
3430newbnd = (consdata->lhs - varconstant) / consdata->vbdcoef;
3436 else if( tightened )
3445 if( consdata->vbdcoef > 0.0 )
3449newbnd = (consdata->rhs - varconstant) / consdata->vbdcoef;
3455 else if( tightened )
3465newbnd = (consdata->rhs - varconstant) / consdata->vbdcoef;
3471 else if( tightened )
3481 else if( var != consdata->var )
3489 if( consdata->vbdcoef > 0.0 )
3501 if( varscalar > 0.0 )
3508consdata->lhs = (consdata->lhs - varconstant)/varscalar;
3510consdata->rhs = (consdata->rhs - varconstant)/varscalar;
3511consdata->vbdcoef /= varscalar;
3517consdata->tightened =
FALSE;
3523assert(varscalar != 0.0);
3529lhs = consdata->lhs;
3530consdata->lhs = -consdata->rhs;
3531consdata->rhs = -lhs;
3533consdata->lhs = (consdata->lhs + varconstant)/(-varscalar);
3535consdata->rhs = (consdata->rhs + varconstant)/(-varscalar);
3536consdata->vbdcoef /= varscalar;
3542consdata->tightened =
FALSE;
3545consdata->var = var;
3553 if( consdata->vbdcoef > 0.0 )
3568 SCIPdebugMsg(
scip,
"variable bound constraint <%s>: vbd variable <%s> is fixed to %.15g\n",
3582newbnd = consdata->lhs - consdata->vbdcoef * vbdvarconstant;
3588 else if( tightened )
3598newbnd = consdata->rhs - consdata->vbdcoef * vbdvarconstant;
3604 else if( tightened )
3613 else if( !(*cutoff) && vbdvar != consdata->vbdvar )
3616 if( consdata->vbdcoef > 0.0 )
3638consdata->lhs -= consdata->vbdcoef * vbdvarconstant;
3640consdata->rhs -= consdata->vbdcoef * vbdvarconstant;
3642consdata->tightened =
FALSE;
3643consdata->vbdcoef *= vbdvarscalar;
3644consdata->vbdvar = vbdvar;
3648 if( consdata->vbdcoef > 0.0 )
3676consdata->changed =
TRUE;
3686lhs = consdata->lhs;
3687rhs = consdata->rhs;
3697 if( var != consdata->var )
3717assert(var == consdata->var);
3723 if( vbdvar != consdata->vbdvar )
3743assert(vbdvar == consdata->vbdvar);
3791assert(nchgcoefs !=
NULL);
3792assert(nchgsides !=
NULL);
3793assert(ndelconss !=
NULL);
3796assert(consdata !=
NULL);
3799 if( consdata->tightened )
3804consdata->tightened =
TRUE;
3815consdata->changed =
TRUE;
3821consdata->changed =
TRUE;
3829oldnchgcoefs = *nchgcoefs;
3830oldnchgsides = *nchgsides;
3831oldcoef = consdata->vbdcoef;
3917 else if( (
SCIPisInfinity(
scip, -consdata->lhs) ||
SCIPisFeasGE(
scip, consdata->vbdcoef -
SCIPfeasFloor(
scip, consdata->vbdcoef), consdata->lhs -
SCIPfeasFloor(
scip, consdata->lhs))) && (
SCIPisInfinity(
scip, consdata->rhs) ||
SCIPisFeasGT(
scip, consdata->vbdcoef -
SCIPfeasFloor(
scip, consdata->vbdcoef), consdata->rhs -
SCIPfeasFloor(
scip, consdata->rhs))) )
3938 else if( (
SCIPisInfinity(
scip, -consdata->lhs) ||
SCIPisFeasLT(
scip, consdata->vbdcoef -
SCIPfeasFloor(
scip, consdata->vbdcoef), consdata->lhs -
SCIPfeasFloor(
scip, consdata->lhs))) && (
SCIPisInfinity(
scip, consdata->rhs) ||
SCIPisFeasLE(
scip, consdata->vbdcoef -
SCIPfeasFloor(
scip, consdata->vbdcoef), consdata->rhs -
SCIPfeasFloor(
scip, consdata->rhs))) )
4038consdata->vbdcoef = oldcoef;
4066oldrhs = consdata->rhs;
4072newcoef =
MAX(consdata->vbdcoef - consdata->rhs + xub, consdata->lhs - xlb);
4086newrhs = consdata->rhs - consdata->vbdcoef + newcoef;
4089 "tighten varbound %.15g <= <%s>[%.15g,%.15g] %+.15g<%s> <= %.15g to %.15g <= <%s> %+.15g<%s> <= %.15g\n",
4090consdata->lhs,
SCIPvarGetName(consdata->var), xlb, xub, consdata->vbdcoef,
4096assert(consdata->vbdcoef * newcoef > 0);
4098consdata->vbdcoef = newcoef;
4099consdata->rhs =
MAX(newrhs, consdata->lhs);
4109consdata->tightened =
FALSE;
4111assert(consdata->tightened);
4124oldlhs = consdata->lhs;
4130newcoef =
MIN(consdata->vbdcoef - consdata->lhs + xlb, consdata->rhs - xub);
4144newlhs = consdata->lhs - consdata->vbdcoef + newcoef;
4147 "tighten varbound %.15g <= <%s>[%.15g,%.15g] %+.15g<%s> <= %.15g to %.15g <= <%s> %+.15g<%s> <= %.15g\n",
4148consdata->lhs,
SCIPvarGetName(consdata->var), xlb, xub, consdata->vbdcoef,
4154assert(consdata->vbdcoef * newcoef > 0);
4156consdata->vbdcoef = newcoef;
4157consdata->lhs =
MIN(newlhs, consdata->rhs);
4167consdata->tightened =
FALSE;
4169assert(consdata->tightened);
4180 if( consdata->vbdcoef > 0.0 &&
SCIPisFeasGT(
scip, xlb, consdata->lhs - consdata->vbdcoef) )
4188newcoef = consdata->lhs - xlb;
4201 SCIPdebugMsg(
scip,
"tighten binary VLB <%s>[%.15g,%.15g] %+.15g<%s> >= %.15g to <%s> %+.15g<%s> >= %.15g\n",
4208assert(consdata->vbdcoef * newcoef > 0);
4210consdata->vbdcoef = newcoef;
4214 else if( consdata->vbdcoef < 0.0 &&
SCIPisFeasGT(
scip, xlb, consdata->lhs) )
4222newcoef = consdata->vbdcoef - consdata->lhs + xlb;
4235 SCIPdebugMsg(
scip,
"tighten binary VLB <%s>[%.15g,%.15g] %+.15g<%s> >= %.15g to <%s> %+.15g<%s> >= %.15g\n",
4238 SCIPvarGetName(consdata->var), consdata->vbdcoef - consdata->lhs + xlb,
4242assert(consdata->vbdcoef * newcoef > 0);
4244consdata->vbdcoef = newcoef;
4245consdata->lhs = xlb;
4254 if( consdata->vbdcoef > 0.0 &&
SCIPisFeasLT(
scip, xub, consdata->rhs) )
4262newcoef = consdata->vbdcoef - consdata->rhs + xub;
4275 SCIPdebugMsg(
scip,
"tighten binary VUB <%s>[%.15g,%.15g] %+.15g<%s> <= %.15g to <%s> %+.15g<%s> <= %.15g\n",
4278 SCIPvarGetName(consdata->var), consdata->vbdcoef - consdata->rhs + xub,
4282assert(consdata->vbdcoef * newcoef > 0);
4284consdata->vbdcoef = newcoef;
4285consdata->rhs = xub;
4290 else if( consdata->vbdcoef < 0.0 &&
SCIPisFeasLT(
scip, xub, consdata->rhs - consdata->vbdcoef) )
4298newcoef = consdata->rhs - xub;
4311 SCIPdebugMsg(
scip,
"tighten binary VUB <%s>[%.15g,%.15g] %+.15g<%s> <= %.15g to <%s> %+.15g<%s> <= %.15g\n",
4316assert(consdata->vbdcoef * newcoef > 0);
4318consdata->vbdcoef = newcoef;
4327 if( *nchgcoefs > oldnchgcoefs || *nchgsides > oldnchgsides )
4329consdata->varboundsadded =
FALSE;
4330consdata->changed =
TRUE;
4361assert(conshdlrdata !=
NULL);
4362assert(conss !=
NULL|| nconss == 0);
4363assert(cutoff !=
NULL);
4364assert(naggrvars !=
NULL);
4365assert(nchgbds !=
NULL);
4366assert(nchgcoefs !=
NULL);
4367assert(nchgsides !=
NULL);
4368assert(ndelconss !=
NULL);
4369assert(naddconss !=
NULL);
4378assert(conss !=
NULL);
4380 for( c = nconss - 1; c >= 0; --c )
4383assert(cons !=
NULL);
4389assert(consdata !=
NULL);
4390assert(
SCIPisLE(
scip, consdata->lhs, consdata->rhs));
4392 if( !consdata->presolved )
4414 if( !consdata->tightened )
4424assert(
SCIPisLE(
scip, consdata->lhs, consdata->rhs));
4437 if( consdata->vbdcoef > 0.0 )
4448 SCIPdebugMsg(
scip,
"varbound constraint <%s>: aggregate <%s> + <%s> == 1\n",
4453assert(!infeasible);
4461assert(consdata->lhs < 0.5);
4463vars[0] = consdata->var;
4464vars[1] = consdata->vbdvar;
4487 SCIPdebugMsg(
scip,
"varbound constraint <%s>: aggregate <%s> - <%s> == 0\n",
4492assert(!infeasible);
4500assert(consdata->lhs < -0.5);
4502vars[0] = consdata->var;
4511vars[1] = consdata->vbdvar;
4550assert(upgdcons !=
NULL);
4557upgrade = (nvars == 2) && (nposbin + nnegbin <= 1) && (nposcont + nnegcont <= 1);
4588var = vars[1-vbdind];
4589vbdvar = vars[vbdind];
4592vbdcoef = vals[vbdind]/vals[1-vbdind];
4594 if( vals[1-vbdind] > 0.0 )
4636assert(cons !=
NULL);
4637assert(graph !=
NULL);
4638assert(success !=
NULL);
4657cons, lhs, rhs, success) );
4678assert(conshdlr !=
NULL);
4696assert(conshdlr !=
NULL);
4701assert(conshdlrdata !=
NULL);
4718 for( c = 0; c < nconss; ++c )
4735 for( c = 0; c < nconss; ++c )
4738assert(consdata !=
NULL);
4740 if( consdata->row !=
NULL)
4745 if( consdata->nlrow !=
NULL)
4762assert(conshdlrdata !=
NULL);
4784assert(conshdlr !=
NULL);
4787assert(conshdlrdata !=
NULL);
4790assert(sourcedata !=
NULL);
4794sourcedata->var, sourcedata->vbdvar, sourcedata->vbdcoef, sourcedata->lhs, sourcedata->rhs) );
4816*infeasible =
FALSE;
4818 for( i = 0; i < nconss && !(*infeasible); i++ )
4835assert(conshdlr !=
NULL);
4838assert(conshdlrdata !=
NULL);
4843 for( i = 0; i < nusefulconss; ++i )
4849 for( i = nusefulconss; i < nconss && *result ==
SCIP_DIDNOTFIND; ++i )
4865assert(conshdlr !=
NULL);
4868assert(conshdlrdata !=
NULL);
4873 for( i = 0; i < nusefulconss; ++i )
4879 for( i = nusefulconss; i < nconss && *result ==
SCIP_DIDNOTFIND; ++i )
4895assert(conshdlr !=
NULL);
4898assert(conshdlrdata !=
NULL);
4902 for( i = 0; i < nconss; i++ )
4935assert(conshdlr !=
NULL);
4938assert(conshdlrdata !=
NULL);
4942 for( i = 0; i < nconss; i++ )
4974 for( i = 0; i < nconss; i++ )
5003 for( i = 0; i < nconss && (*result ==
SCIP_FEASIBLE|| completely); i++ )
5015assert( consdata !=
NULL);
5048assert(conshdlr !=
NULL);
5051assert(conshdlrdata !=
NULL);
5055 SCIPdebugMsg(
scip,
"propagating %d variable bound constraints\n", nmarkedconss);
5058 for( i = 0; i < nmarkedconss && !cutoff; i++ )
5065 else if( nchgbds > 0 )
5091assert(conshdlr !=
NULL);
5093assert(result !=
NULL);
5097assert(conshdlrdata !=
NULL);
5100oldnchgbds = *nchgbds;
5101oldndelconss = *ndelconss;
5102oldnaddconss = *naddconss;
5103oldnchgcoefs = *nchgcoefs;
5104oldnchgsides = *nchgsides;
5105oldnaggrvars = *naggrvars;
5107 for( i = 0; i < nconss; i++ )
5110assert(cons !=
NULL);
5115assert(consdata !=
NULL);
5122consdata->presolved =
FALSE;
5124 if( consdata->presolved )
5126consdata->presolved =
TRUE;
5152 if( !consdata->varboundsadded )
5156 intlocaloldnchgbds;
5158localoldnchgbds = *nchgbds;
5163 SCIPdebugMsg(
scip,
"adding variable lower bound <%s> >= %g<%s> + %g (and potentially also <%s> %s %g<%s> + %g)\n",
5165 SCIPvarGetName(consdata->vbdvar), (consdata->vbdcoef > 0 ?
">=":
"<="), 1.0/-consdata->vbdcoef,
5166 SCIPvarGetName(consdata->var), consdata->lhs/consdata->vbdcoef);
5169&infeasible, &nlocalchgbds) );
5170assert(!infeasible);
5172*nchgbds += nlocalchgbds;
5178 SCIPdebugMsg(
scip,
"adding variable upper bound <%s> <= %g<%s> + %g (and potentially also <%s> %s %g<%s> + %g)\n",
5180 SCIPvarGetName(consdata->vbdvar), (consdata->vbdcoef > 0 ?
"<=":
">="), 1.0/-consdata->vbdcoef,
5181 SCIPvarGetName(consdata->var), consdata->rhs/consdata->vbdcoef);
5184&infeasible, &nlocalchgbds) );
5185assert(!infeasible);
5187*nchgbds += nlocalchgbds;
5189consdata->varboundsadded =
TRUE;
5191 if( *nchgbds > localoldnchgbds )
5207 SCIP_CALL(
upgradeConss(
scip, conshdlrdata, conss, nconss, &cutoff, naggrvars, nchgbds, nchgcoefs, nchgsides, ndelconss, naddconss) );
5219 else if( *nchgbds > oldnchgbds || *ndelconss > oldndelconss || *naddconss > oldnaddconss
5220|| *nchgcoefs > oldnchgcoefs || *nchgsides > oldnchgsides || *naggrvars > oldnaggrvars )
5235assert(conshdlr !=
NULL);
5238assert(conshdlrdata !=
NULL);
5255assert(consdata !=
NULL);
5260 if( consdata->vbdcoef > 0.0 )
5273 if( consdata->vbdcoef > 0.0 )
5304assert(cons !=
NULL);
5307assert(consdata !=
NULL);
5327assert(conshdlr !=
NULL);
5328assert(cons !=
NULL);
5331assert(consdata !=
NULL);
5368 const char* consname;
5387initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode, global, valid) );
5408assert(success !=
NULL);
5409assert(str !=
NULL);
5410assert(name !=
NULL);
5411assert(cons !=
NULL);
5417(*success) =
FALSE;
5426 if( isdigit(str[0]) || ((str[0] ==
'-'|| str[0] ==
'+') && isdigit(str[1])) )
5437 if( endstr[0] !=
'<'|| endstr[1] !=
'=')
5439 SCIPerrorMessage(
"missing \"<=\" after left hand side(, found %c%c)\n", endstr[0], endstr[1]);
5456 if( requiredsize == 2 && *success )
5470 if( *str !=
'\0'&& *(str+1) !=
'\0'&&
SCIPparseReal(
scip, str+2, &value, &endstr) )
5476assert(str[1] ==
'=');
5480assert(str[1] ==
'=');
5486assert(str[1] ==
'=');
5495 else if( strncmp(str,
"[free]", 6) != 0 )
5502initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode) );
5516assert( success !=
NULL);
5519(*success) =
FALSE;
5523assert(cons !=
NULL);
5524assert(vars !=
NULL);
5527assert(consdata !=
NULL);
5529vars[0] = consdata->var;
5530vars[1] = consdata->vbdvar;
5576assert(event !=
NULL);
5578assert(cons !=
NULL);
5580assert(consdata !=
NULL);
5584consdata->presolved =
FALSE;
5590consdata->presolved =
FALSE;
5591consdata->tightened =
FALSE;
5613eventExecVarbound,
NULL) );
5621consEnfolpVarbound, consEnfopsVarbound, consCheckVarbound, consLockVarbound,
5623assert(conshdlr !=
NULL);
5658 "should pairwise constraint comparison be performed in presolving?",
5662 "maximum coefficient in varbound constraint to be added as a row into LP",
5665 "constraints/" CONSHDLR_NAME "/usebdwidening",
"should bound widening be used in conflict analysis?",
5715 if( conshdlr ==
NULL)
5722assert(conshdlrdata !=
NULL);
5728 SCIP_CALL(
SCIPcreateCons(
scip, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,
5729local, modifiable, dynamic, removable, stickingatnode) );
5780assert(consdata !=
NULL);
5782 returnconsdata->lhs;
5803assert(consdata !=
NULL);
5805 returnconsdata->rhs;
5826assert(consdata !=
NULL);
5828 returnconsdata->var;
5849assert(consdata !=
NULL);
5851 returnconsdata->vbdvar;
5872assert(consdata !=
NULL);
5874 returnconsdata->vbdcoef;
5895assert(consdata !=
NULL);
5897 if( consdata->row !=
NULL)
5921assert(consdata !=
NULL);
5923 if( consdata->row !=
NULL)
5949assert(consdata !=
NULL);
5951 returnconsdata->row;
5972 if( conshdlr ==
NULL)
5975assert(infeasible !=
NULL);
5976*infeasible =
FALSE;
5978assert(naddconss !=
NULL);
5979assert(ndelconss !=
NULL);
5980assert(nchgbds !=
NULL);
5983assert(conshdlrdata !=
NULL);
5985eventhdlr = conshdlrdata->eventhdlr;
5990 for( i = nconss - 1; i >= 0; --i )
Constraint handler for linear constraints in their most general form, .
Constraint handler for the set partitioning / packing / covering constraints .
static SCIP_DECL_CONSCHECK(consCheckVarbound)
static SCIP_RETCODE addRelaxation(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible)
static SCIP_DECL_CONSRESPROP(consRespropVarbound)
static SCIP_DECL_SORTPTRCOMP(consVarboundComp)
static SCIP_RETCODE dropEvents(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr)
#define DEFAULT_USEBDWIDENING
#define CONSHDLR_NEEDSCONS
#define CONSHDLR_SEPAFREQ
static SCIP_DECL_EVENTEXEC(eventExecVarbound)
static SCIP_DECL_CONSGETPERMSYMGRAPH(consGetPermsymGraphVarbound)
static SCIP_DECL_CONSACTIVE(consActiveVarbound)
#define CONSHDLR_CHECKPRIORITY
static SCIP_DECL_CONSINITSOL(consInitsolVarbound)
static SCIP_DECL_CONSPROP(consPropVarbound)
static SCIP_DECL_CONSLOCK(consLockVarbound)
static SCIP_RETCODE upgradeConss(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_CONS **conss, int nconss, SCIP_Bool *cutoff, int *naggrvars, int *nchgbds, int *nchgcoefs, int *nchgsides, int *ndelconss, int *naddconss)
static SCIP_RETCODE applyFixings(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, int *nchgbds, int *ndelconss, int *naddconss)
static SCIP_DECL_CONSPRESOL(consPresolVarbound)
static SCIP_DECL_CONSGETNVARS(consGetNVarsVarbound)
static SCIP_RETCODE consdataCreate(SCIP *scip, SCIP_CONSDATA **consdata, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real vbdcoef, SCIP_Real lhs, SCIP_Real rhs)
static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(consGetSignedPermsymGraphVarbound)
static SCIP_RETCODE tightenCoefs(SCIP *scip, SCIP_CONS *cons, int *nchgcoefs, int *nchgsides, int *ndelconss, SCIP_Bool *cutoff, int *nchgbds)
static SCIP_RETCODE createRelaxation(SCIP *scip, SCIP_CONS *cons)
static SCIP_DECL_CONSEXITSOL(consExitsolVarbound)
#define CONSHDLR_PROP_TIMING
static void checkRedundancySide(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real coef0, SCIP_Real coef1, SCIP_Real side0, SCIP_Real side1, SCIP_Bool *sideequal, SCIP_Bool *cons0sidered, SCIP_Bool *cons1sidered, SCIP_Bool islhs)
static void conshdlrdataFree(SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata)
static SCIP_DECL_CONSGETVARS(consGetVarsVarbound)
static SCIP_DECL_CONSCOPY(consCopyVarbound)
#define CONSHDLR_MAXPREROUNDS
static SCIP_Bool checkCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checklprows)
#define DEFAULT_PRESOLPAIRWISE
static SCIP_DECL_CONSSEPASOL(consSepasolVarbound)
static SCIP_DECL_CONSFREE(consFreeVarbound)
#define CONSHDLR_SEPAPRIORITY
#define DEFAULT_MAXLPCOEF
static SCIP_DECL_CONSPRINT(consPrintVarbound)
static void prettifyConss(SCIP *scip, SCIP_CONS **conss, int nconss, int *nchgcoefs, int *nchgsides)
static SCIP_RETCODE addSymmetryInformation(SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
static SCIP_RETCODE preprocessConstraintPairs(SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool *cutoff, int *nchgbds, int *ndelconss, int *nchgcoefs, int *nchgsides)
static SCIP_RETCODE chgLhs(SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
static SCIP_DECL_CONSDEACTIVE(consDeactiveVarbound)
static SCIP_DECL_CONSSEPALP(consSepalpVarbound)
static SCIP_DECL_CONSDELETE(consDeleteVarbound)
static SCIP_RETCODE analyzeConflict(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, SCIP_Real inferbd, PROPRULE proprule, SCIP_BOUNDTYPE boundtype, SCIP_Bool usebdwidening)
static SCIP_DECL_CONSTRANS(consTransVarbound)
static SCIP_RETCODE chgRhs(SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
#define CONSHDLR_PROPFREQ
static SCIP_DECL_CONSPARSE(consParseVarbound)
static SCIP_DECL_CONSENFOPS(consEnfopsVarbound)
static SCIP_RETCODE resolvePropagation(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, PROPRULE proprule, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real inferbd, SCIP_Bool usebdwidening)
static SCIP_DECL_CONSENFORELAX(consEnforelaxVarbound)
static SCIP_RETCODE propagateCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool usebdwidening, SCIP_Bool *cutoff, int *nchgbds, int *nchgsides, int *ndelconss)
#define CONSHDLR_PRESOLTIMING
static SCIP_RETCODE consdataFree(SCIP *scip, SCIP_CONSDATA **consdata)
static SCIP_DECL_LINCONSUPGD(linconsUpgdVarbound)
static SCIP_DECL_CONSINITLP(consInitlpVarbound)
static SCIP_RETCODE addNlrow(SCIP *scip, SCIP_CONS *cons)
#define CONSHDLR_EAGERFREQ
static SCIP_RETCODE conshdlrdataCreate(SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr)
static SCIP_DECL_CONSENFOLP(consEnfolpVarbound)
#define CONSHDLR_ENFOPRIORITY
static SCIP_DECL_CONSHDLRCOPY(conshdlrCopyVarbound)
static SCIP_RETCODE catchEvents(SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr)
#define LINCONSUPGD_PRIORITY
static SCIP_RETCODE separateCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool usebdwidening, SCIP_SOL *sol, SCIP_RESULT *result)
#define CONSHDLR_DELAYSEPA
#define CONSHDLR_DELAYPROP
Constraint handler for variable bound constraints .
defines macros for basic operations in double-double arithmetic giving roughly twice the precision of...
#define SCIPquadprecDivQD(r, a, b)
#define SCIPquadprecProdDD(r, a, b)
#define SCIPquadprecProdQD(r, a, b)
#define SCIPquadprecSumQD(r, a, b)
#define QUAD_ASSIGN(a, constant)
#define SCIPquadprecSumDD(r, a, b)
#define SCIPquadprecSumQQ(r, a, b)
#define SCIP_VARTYPE_INTEGER_CHAR
#define SCIP_VARTYPE_IMPLINT_CHAR
#define SCIP_VARTYPE_BINARY_CHAR
#define SCIP_VARTYPE_CONTINUOUS_CHAR
SCIP_RETCODE SCIPincludeLinconsUpgrade(SCIP *scip, SCIP_DECL_LINCONSUPGD((*linconsupgd)), int priority, const char *conshdlrname)
SCIP_Real SCIPgetVbdcoefVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPchgRhsLinear(SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
SCIP_Real SCIPgetDualfarkasVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddCoefLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPcreateConsBasicVarbound(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real vbdcoef, SCIP_Real lhs, SCIP_Real rhs)
SCIP_ROW * SCIPgetRowVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR * SCIPgetVbdvarVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsSetpack(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcleanupConssVarbound(SCIP *scip, SCIP_Bool onlychecked, SCIP_Bool *infeasible, int *naddconss, int *ndelconss, int *nchgbds)
SCIP_VAR * SCIPgetVarVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcopyConsLinear(SCIP *scip, SCIP_CONS **cons, SCIP *sourcescip, const char *name, int nvars, SCIP_VAR **sourcevars, SCIP_Real *sourcecoefs, SCIP_Real lhs, SCIP_Real rhs, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool global, SCIP_Bool *valid)
SCIP_Real SCIPgetLhsVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_Real SCIPgetRhsVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_Real SCIPgetDualsolVarbound(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsVarbound(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real vbdcoef, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPchgLhsLinear(SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
SCIP_RETCODE SCIPincludeConshdlrVarbound(SCIP *scip)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_Bool SCIPisStopped(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
int SCIPgetNIntVars(SCIP *scip)
int SCIPgetNImplVars(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNBinVars(SCIP *scip)
SCIP_RETCODE SCIPdelConsLocal(SCIP *scip, SCIP_CONS *cons)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
SCIP_Bool SCIPrealToRational(SCIP_Real val, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Longint *numerator, SCIP_Longint *denominator)
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPaddRealParam(SCIP *scip, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPaddConflictLb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
SCIP_RETCODE SCIPinitConflictAnalysis(SCIP *scip, SCIP_CONFTYPE conftype, SCIP_Bool iscutoffinvolved)
SCIP_RETCODE SCIPaddConflictUb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
SCIP_RETCODE SCIPaddConflictRelaxedLb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedlb)
SCIP_RETCODE SCIPaddConflictRelaxedUb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedub)
SCIP_Bool SCIPisConflictAnalysisApplicable(SCIP *scip)
SCIP_Real SCIPgetConflictVarUb(SCIP *scip, SCIP_VAR *var)
SCIP_Real SCIPgetConflictVarLb(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPanalyzeConflictCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
int SCIPconshdlrGetNCheckConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrParse(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
void SCIPconshdlrSetData(SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata)
SCIP_CONS ** SCIPconshdlrGetCheckConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrPresol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
SCIP_RETCODE SCIPsetConshdlrGetVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
SCIP_RETCODE SCIPsetConshdlrSepa(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), int sepafreq, int sepapriority, SCIP_Bool delaysepa)
SCIP_RETCODE SCIPsetConshdlrProp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPROP((*consprop)), int propfreq, SCIP_Bool delayprop, SCIP_PROPTIMING proptiming)
SCIP_RETCODE SCIPincludeConshdlrBasic(SCIP *scip, SCIP_CONSHDLR **conshdlrptr, const char *name, const char *desc, int enfopriority, int chckpriority, int eagerfreq, SCIP_Bool needscons, SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_CONSHDLRDATA *conshdlrdata)
SCIP_RETCODE SCIPsetConshdlrDeactive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDEACTIVE((*consdeactive)))
SCIP_RETCODE SCIPsetConshdlrGetPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)))
SCIP_RETCODE SCIPsetConshdlrDelete(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))
SCIP_RETCODE SCIPsetConshdlrFree(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))
SCIP_RETCODE SCIPsetConshdlrEnforelax(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENFORELAX((*consenforelax)))
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrCopy(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetConshdlrGetSignedPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)))
SCIP_RETCODE SCIPsetConshdlrExitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
SCIP_RETCODE SCIPsetConshdlrInitlp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
SCIP_RETCODE SCIPsetConshdlrInitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
SCIP_CONSHDLRDATA * SCIPconshdlrGetData(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrTrans(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
SCIP_RETCODE SCIPsetConshdlrResprop(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
int SCIPconshdlrGetNActiveConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrGetNVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
SCIP_CONS ** SCIPconshdlrGetConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrActive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
SCIP_CONSDATA * SCIPconsGetData(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_RETCODE SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)
SCIP_Bool SCIPconsIsMarkedPropagate(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsTransformed(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsEnforced(SCIP_CONS *cons)
SCIP_RETCODE SCIPunmarkConsPropagate(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_CONSHDLR *conshdlr, SCIP_CONSDATA *consdata, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_Bool SCIPconsIsPropagated(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsLocal(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_RETCODE SCIPresetConsAge(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPmarkConsPropagate(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsModifiable(SCIP_CONS *cons)
SCIP_RETCODE SCIPupdateConsFlags(SCIP *scip, SCIP_CONS *cons0, SCIP_CONS *cons1)
SCIP_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_RETCODE SCIPincConsAge(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
SCIP_RETCODE SCIPincludeEventhdlrBasic(SCIP *scip, SCIP_EVENTHDLR **eventhdlrptr, const char *name, const char *desc, SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
SCIP_RETCODE SCIPcatchVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPdropVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPduplicateBufferArray(scip, ptr, source, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_RETCODE SCIPdelNlRow(SCIP *scip, SCIP_NLROW *nlrow)
SCIP_RETCODE SCIPaddNlRow(SCIP *scip, SCIP_NLROW *nlrow)
SCIP_Bool SCIPisNLPConstructed(SCIP *scip)
SCIP_RETCODE SCIPreleaseNlRow(SCIP *scip, SCIP_NLROW **nlrow)
SCIP_Bool SCIPnlrowIsInNLP(SCIP_NLROW *nlrow)
SCIP_RETCODE SCIPcreateNlRow(SCIP *scip, SCIP_NLROW **nlrow, const char *name, SCIP_Real constant, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, SCIP_EXPR *expr, SCIP_Real lhs, SCIP_Real rhs, SCIP_EXPRCURV curvature)
SCIP_Bool SCIPinProbing(SCIP *scip)
SCIP_RETCODE SCIPcreateEmptyRowCons(SCIP *scip, SCIP_ROW **row, SCIP_CONS *cons, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_RETCODE SCIPaddVarToRow(SCIP *scip, SCIP_ROW *row, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPprintRow(SCIP *scip, SCIP_ROW *row, FILE *file)
SCIP_Real SCIPgetRowSolFeasibility(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)
SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
SCIP_Real SCIProwGetDualfarkas(SCIP_ROW *row)
SCIP_Bool SCIProwIsInLP(SCIP_ROW *row)
SCIP_Real SCIProwGetDualsol(SCIP_ROW *row)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
void SCIPupdateSolLPConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
SCIP_Bool SCIPisFeasGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisIntegral(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisPositive(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPfeasCeil(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPfeasFloor(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPround(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPfeastol(SCIP *scip)
SCIP_Real SCIPgetHugeValue(SCIP *scip)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPepsilon(SCIP *scip)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasPositive(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPparseReal(SCIP *scip, const char *str, SCIP_Real *value, char **endptr)
SCIP_Bool SCIPinRepropagation(SCIP *scip)
SCIP_RETCODE SCIPtightenVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_RETCODE SCIPtightenVarUbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPchgVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPaggregateVars(SCIP *scip, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *redundant, SCIP_Bool *aggregated)
SCIP_RETCODE SCIPinferVarUbCons(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_CONS *infercons, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPchgVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetProbvar(SCIP_VAR *var)
SCIP_RETCODE SCIPtightenVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_RETCODE SCIPgetProbvarSum(SCIP *scip, SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarVub(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vubvar, SCIP_Real vubcoef, SCIP_Real vubconstant, SCIP_Bool *infeasible, int *nbdchgs)
int SCIPvarGetIndex(SCIP_VAR *var)
SCIP_RETCODE SCIPaddVarLocksType(SCIP *scip, SCIP_VAR *var, SCIP_LOCKTYPE locktype, int nlocksdown, int nlocksup)
SCIP_RETCODE SCIPaddVarVlb(SCIP *scip, SCIP_VAR *var, SCIP_VAR *vlbvar, SCIP_Real vlbcoef, SCIP_Real vlbconstant, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_RETCODE SCIPunlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_Real SCIPadjustedVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real ub)
SCIP_RETCODE SCIPparseVarsLinearsum(SCIP *scip, const char *str, SCIP_VAR **vars, SCIP_Real *vals, int *nvars, int varssize, int *requiredsize, char **endptr, SCIP_Bool *success)
SCIP_Real SCIPadjustedVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real lb)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPfixVar(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)
SCIP_RETCODE SCIPinferVarLbCons(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_CONS *infercons, int inferinfo, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
int SCIPvarGetNLocksDownType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_RETCODE SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPtightenVarLbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
void SCIPsortPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
SCIP_RETCODE SCIPskipSpace(char **s)
SCIP_RETCODE SCIPgetSymActiveVariables(SCIP *scip, SYM_SYMTYPE symtype, SCIP_VAR ***vars, SCIP_Real **scalars, int *nvars, SCIP_Real *constant, SCIP_Bool transformed)
SCIP_RETCODE SCIPextendPermsymDetectionGraphLinear(SCIP *scip, SYM_GRAPH *graph, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_CONS *cons, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool *success)
memory allocation routines
public methods for managing constraints
public methods for managing events
public methods for LP management
public methods for message output
#define SCIPdebugPrintCons(x, y, z)
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for problem variables
public methods for conflict handler plugins and conflict analysis
public methods for constraint handler plugins and constraints
public methods for cuts and aggregation rows
public methods for event handler plugins and event handlers
public methods for the LP relaxation, rows and columns
public methods for memory management
public methods for message handling
public methods for nonlinear relaxation
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for global and local (sub)problems
public methods for the probing mode
public methods for solutions
public methods for the branch-and-bound tree
public methods for SCIP variables
structs for symmetry computations
methods for dealing with symmetry detection graphs
@ SCIP_CONFTYPE_PROPAGATION
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
struct SCIP_ConsData SCIP_CONSDATA
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_EVENTTYPE_VARFIXED
#define SCIP_EVENTTYPE_BOUNDTIGHTENED
enum SCIP_BoundType SCIP_BOUNDTYPE
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
enum SYM_Symtype SYM_SYMTYPE
#define SCIP_PRESOLTIMING_MEDIUM
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_VARSTATUS_MULTAGGR
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4