linconsactive:1;
343 unsigned intimplicationadded:1;
344 unsigned intslacktypechecked:1;
349structSCIP_ConshdlrData
378 intmaxroundingrounds;
402 intmaxsepanonviolated;
431structSCIP_ConflicthdlrData
452#define SCIP_CALL_PARAM(x) do \ 454 SCIP_RETCODE _restat_; \ 455 if ( (_restat_ = (x)) != SCIP_OKAY && (_restat_ != SCIP_PARAMETERUNKNOWN) ) \ 457 SCIPerrorMessage("[%s:%d] Error <%d> in function call\n", __FILE__, __LINE__, _restat_); \
496assert(cons !=
NULL);
497assert(graph !=
NULL);
498assert(success !=
NULL);
501assert(consdata !=
NULL);
503lincons = consdata->lincons;
504assert(lincons !=
NULL);
520 for( i = 0; i < nvarslincons; ++i )
522vars[i] = linvars[i];
523vals[i] = linvals[i];
525nlocvars = nvarslincons;
547vars[0] = consdata->binvar;
563 else if( nlocvars == 1 )
584vars[0] = consdata->slackvar;
600 else if( nlocvars == 1 )
632assert( eventhdlr !=
NULL);
633assert( eventdata !=
NULL);
635assert( event !=
NULL);
638assert( cons !=
NULL);
640assert( consdata !=
NULL);
641assert( 0 <= consdata->nfixednonzero && consdata->nfixednonzero <= 2 );
642assert( consdata->linconsactive );
645assert( conshdlr !=
NULL);
647assert( conshdlrdata !=
NULL);
659++(consdata->nfixednonzero);
660#ifdef SCIP_MORE_DEBUG 661 SCIPdebugMsg(
scip,
"Changed lower bound of variable <%s> from %g to %g (nfixednonzero: %d).\n",
671++(consdata->nfixednonzero);
672#ifdef SCIP_MORE_DEBUG 673 SCIPdebugMsg(
scip,
"Changed upper bound of variable <%s> from %g to %g (nfixednonzero: %d).\n",
683--(consdata->nfixednonzero);
684#ifdef SCIP_MORE_DEBUG 685 SCIPdebugMsg(
scip,
"Changed lower bound of variable <%s> from %g to %g (nfixednonzero: %d).\n",
695--(consdata->nfixednonzero);
696#ifdef SCIP_MORE_DEBUG 697 SCIPdebugMsg(
scip,
"Changed upper bound of variable <%s> from %g to %g (nfixednonzero: %d).\n",
708assert( 0 <= consdata->nfixednonzero && consdata->nfixednonzero <= 2 );
711conshdlrdata->boundhaschanged =
TRUE;
725assert( eventhdlr !=
NULL);
726assert( eventdata !=
NULL);
728assert( event !=
NULL);
731#ifdef SCIP_MORE_DEBUG 732 SCIPdebugMsg(
scip,
"Changed upper bound of variable <%s> from %g to %g.\n",
738assert( conshdlrdata !=
NULL);
739conshdlrdata->linconsboundschanged =
TRUE;
760assert( eventhdlr !=
NULL);
761assert( eventdata !=
NULL);
763assert( event !=
NULL);
766assert( conshdlrdata !=
NULL);
767assert( conshdlrdata->forcerestart );
790 if( conshdlrdata->performedrestart )
794++(conshdlrdata->nbinvarszero);
795 SCIPdebugMsg(
scip,
"Fixed variable <%s> (nbinvarszero: %d, total: %d).\n",
802 if( conshdlrdata->nbinvarszero > (
int) ((
SCIP_Real) conshdlrdata->ninitconss * conshdlrdata->restartfrac) )
805 "Forcing restart, since %d binary variables among %d have been fixed.\n", conshdlrdata->nbinvarszero, conshdlrdata->ninitconss);
809 if( conshdlrdata->objindicatoronly )
813conshdlrdata->performedrestart =
TRUE;
820assert(
SCIPisGE(
scip, conshdlrdata->minabsobj, 1.0 ) );
825 if( ! conshdlrdata->objindicatoronly )
842conshdlrdata->performedrestart =
TRUE;
865assert( conflicthdlr !=
NULL);
890assert( conflicthdlr !=
NULL);
892assert( bdchginfos !=
NULL|| nbdchginfos == 0 );
893assert( result !=
NULL);
905assert( conflicthdlrdata !=
NULL);
915 for(i = 0; i < nbdchginfos; ++i)
917assert( bdchginfos !=
NULL);
918assert( bdchginfos[i] !=
NULL);
947 if( haveslack && i == nbdchginfos )
954 SCIPdebugMsg(
scip,
"Found conflict involving slack variables that can be remodelled.\n");
956assert( conflicthdlrdata->conshdlr !=
NULL);
964 for(i = 0; i < nbdchginfos; ++i)
966assert( bdchginfos !=
NULL);
967assert( bdchginfos[i] !=
NULL);
980 for(j = 0; j < nconss; ++j)
982assert( conss[j] !=
NULL);
984assert( slackvar !=
NULL);
987 if( slackvar == var )
1015 if( i == nbdchginfos )
1064assert( param !=
NULL);
1065assert( name !=
NULL);
1066assert( value !=
NULL);
1071 if( *value == newvalue )
1106assert( param !=
NULL);
1110assert( conshdlr !=
NULL);
1114assert( conshdlrdata !=
NULL);
1126#ifdef SCIP_ENABLE_IISCHECK 1148assert( vector !=
NULL);
1154assert( conshdlr !=
NULL);
1157assert( conshdlrdata !=
NULL);
1169 for(c = 0; c < nconss; ++c)
1173assert( consdata !=
NULL);
1196lincons = consdata->lincons;
1197assert( lincons !=
NULL);
1201slackvar = consdata->slackvar;
1202assert( slackvar !=
NULL);
1223linvals[0] = scalar;
1253 for(v = 0; v < nlinvars; ++v)
1257assert( var !=
NULL);
1260 if( var == slackvar )
1273newvars[nnewvars++] = var;
1291 for(v = 0; v < nnewvars; ++v)
1305 for(v = nnewvars - 1; v >= 0; --v)
1317 for(v = 0; v < nlinvars; ++v)
1321assert( var !=
NULL);
1324 if( var == slackvar )
1329matval[cnt] = sign * linvals[v];
1344assert( slackvar !=
NULL);
1354 if( conshdlrdata->useotherconss )
1361 for(c = 0; c < nconss; ++c)
1378assert( cons !=
NULL);
1405 for(v = 0; v < nlinvars; ++v)
1409assert( var !=
NULL);
1421newvars[nnewvars++] = var;
1439 for(v = 0; v < nnewvars; ++v)
1453 for(v = nnewvars - 1; v >= 0; --v)
1464 for(v = 0; v < nlinvars; ++v)
1468assert( var !=
NULL);
1472matval[cnt] = linvals[v];
1490 SCIPerrorMessage(
"Detected IIS is not infeasible in original problem!\n");
1545assert( conshdlr !=
NULL);
1549assert( conshdlrdata !=
NULL);
1550assert( conshdlrdata->naddlincons <= conshdlrdata->maxaddlincons );
1552 if( num > conshdlrdata->maxaddlincons )
1558conshdlrdata->maxaddlincons = newsize;
1560assert( num <= conshdlrdata->maxaddlincons );
1589assert( conshdlrdata !=
NULL);
1590assert( conshdlrdata->altlp ==
NULL);
1591assert( conshdlrdata->varhash ==
NULL);
1592assert( conshdlrdata->lbhash ==
NULL);
1593assert( conshdlrdata->ubhash ==
NULL);
1594assert( conshdlrdata->slackhash !=
NULL);
1606conshdlrdata->nrows = 1;
1640assert( lp !=
NULL);
1648 for(j = 0; j < nCols; ++j)
1649covered[j] =
FALSE;
1653 for(j = 0; j < nconss; ++j)
1658assert( conss[j] !=
NULL);
1660assert( consdata !=
NULL);
1661ind = consdata->colindex;
1665assert( ind < nCols );
1666covered[ind] =
TRUE;
1675 for(j = 0; j < nCols; ++j)
1714 int* indices =
NULL;
1718assert( lp !=
NULL);
1719assert( conss !=
NULL);
1724 for(j = 0; j < nconss; ++j)
1728assert( conss[j] !=
NULL);
1730assert( consdata !=
NULL);
1732 if( consdata->colindex >= 0 )
1738obj[cnt] = 1.0 - val;
1739indices[cnt++] = consdata->colindex;
1766 int* indices =
NULL;
1770assert( lp !=
NULL);
1771assert( conss !=
NULL);
1776 for(j = 0; j < nconss; ++j)
1780assert( conss[j] !=
NULL);
1782assert( consdata !=
NULL);
1784 if( consdata->colindex >= 0 )
1787indices[cnt++] = consdata->colindex;
1815 int* indices =
NULL;
1820assert( lp !=
NULL);
1821assert( conss !=
NULL);
1828 for(j = 0; j < nconss; ++j)
1832assert( conss[j] !=
NULL);
1834assert( consdata !=
NULL);
1836 if( consdata->colindex >= 0 )
1840indices[cnt] = consdata->colindex;
1907 int* indices =
NULL;
1912assert( lp !=
NULL);
1913assert( conss !=
NULL);
1920 for(j = 0; j < nconss; ++j)
1926assert( conss[j] !=
NULL);
1928assert( consdata !=
NULL);
1930 if( consdata->colindex >= 0 )
1932indices[cnt] = consdata->colindex;
1970assert( conshdlrdata !=
NULL);
1972altlp = conshdlrdata->altlp;
1973lbhash = conshdlrdata->lbhash;
1974ubhash = conshdlrdata->ubhash;
1975assert( lbhash !=
NULL&& ubhash !=
NULL);
1982 for(v = 0; v < nvars; ++v)
2008conshdlrdata->scaled =
FALSE;
2011 SCIPdebugMsg(
scip,
"Updated bounds of original variables: %d.\n", cnt);
2034assert( conshdlrdata !=
NULL);
2036altlp = conshdlrdata->altlp;
2037lbhash = conshdlrdata->lbhash;
2038ubhash = conshdlrdata->ubhash;
2039assert( lbhash !=
NULL&& ubhash !=
NULL);
2046 for(v = 0; v < nvars; ++v)
2069 SCIPdebugMsg(
scip,
"Updated bounds of original variables: %d.\n", cnt);
2098assert( conshdlrdata !=
NULL);
2099assert( vector !=
NULL);
2100assert( isLocal !=
NULL);
2108lbhash = conshdlrdata->lbhash;
2109ubhash = conshdlrdata->ubhash;
2110assert( lbhash !=
NULL&& ubhash !=
NULL);
2117 for(v = 0; v < nvars; ++v)
2131assert( 0 <= col && col < nCols );
2149assert( 0 <= col && col < nCols );
2176assert( conshdlrdata !=
NULL);
2178 if( ! conshdlrdata->scaled )
2189altlp = conshdlrdata->altlp;
2199 for(j = 0; j < cnt; ++j)
2203sum = -
REALABS(sum) / ((double) cnt);
2211conshdlrdata->scaled =
TRUE;
2255assert( conshdlrdata !=
NULL);
2256assert( vars !=
NULL|| nvars == 0 );
2257assert( vals !=
NULL|| nvars == 0 );
2260assert( colindex !=
NULL);
2264 if( conshdlrdata->altlp ==
NULL)
2268assert( conshdlrdata->altlp !=
NULL);
2269assert( conshdlrdata->varhash !=
NULL);
2270assert( conshdlrdata->lbhash !=
NULL);
2271assert( conshdlrdata->ubhash !=
NULL);
2272assert( conshdlrdata->slackhash !=
NULL);
2278assert( nrows == conshdlrdata->nrows );
2301matval[cnt++] = sign * rhscoef;
2305 for(v = 0; v < nvars; ++v)
2310assert( var !=
NULL);
2316 if( var != slackvar )
2322 if( ind < INT_MAX )
2330matind[cnt] = (conshdlrdata->nrows)++;
2333newrowsslack[nnewrows++] =
TRUE;
2336matval[cnt++] = sign * vals[v];
2350matind[cnt] = (conshdlrdata->nrows)++;
2353newrowsslack[nnewrows++] =
FALSE;
2354newvars[nnewvars++] = var;
2357matval[cnt++] = sign * vals[v];
2370 for(i = 0; i < nnewrows; ++i)
2372 if( newrowsslack[i] )
2390assert( slackvar ==
NULL);
2402 for(v = 0; v < nnewvars; ++v)
2405assert( var !=
NULL);
2411matbeg[nnewcols] = cnt;
2415matval[cnt++] = -val;
2420matval[cnt++] = -1.0;
2421obj[nnewcols] = 0.0;
2424++conshdlrdata->nlbbounds;
2428 SCIPdebugMsg(
scip,
"Added column for lower bound (%f) of variable <%s> to alternative polyhedron (col: %d).\n",
2437matbeg[nnewcols] = cnt;
2441matval[cnt++] = val;
2446matval[cnt++] = 1.0;
2447obj[nnewcols] = 0.0;
2450++conshdlrdata->nubbounds;
2454 SCIPdebugMsg(
scip,
"Added column for upper bound (%f) of variable <%s> to alternative polyhedron (col: %d).\n",
2468assert( cnt == ncols + nnewcols + 1 );
2480conshdlrdata->scaled =
FALSE;
2512assert( conshdlr !=
NULL);
2513assert( lincons !=
NULL);
2514assert( colindex !=
NULL);
2520assert( conshdlrdata !=
NULL);
2534 SCIPdebugMsg(
scip,
"Slack variable is aggregated (scalar: %f, constant: %f).\n", scalar, constant);
2544linvals[0] = scalar;
2567 SCIP_CALL(
addAltLPColumn(
scip, conshdlr, conshdlrdata, slackvar, nlinvars, linvars, linvals, linrhs, objcoef, 1.0,
TRUE, colindex) );
2572 SCIP_CALL(
addAltLPColumn(
scip, conshdlr, conshdlrdata, slackvar, nlinvars, linvars, linvals, linrhs, objcoef, 1.0,
FALSE, colindex) );
2578 SCIP_CALL(
addAltLPColumn(
scip, conshdlr, conshdlrdata, slackvar, nlinvars, linvars, linvals, linlhs, objcoef, -1.0,
FALSE, colindex) );
2614assert( conshdlr !=
NULL);
2615assert( row !=
NULL);
2616assert( colindex !=
NULL);
2627assert( conshdlrdata !=
NULL);
2637 for(j = 0; j < nrowcols; ++j)
2640assert( rowvars[j] !=
NULL);
2647 SCIP_CALL(
addAltLPColumn(
scip, conshdlr, conshdlrdata,
NULL, nrowcols, rowvars, rowvals, rowrhs, objcoef, 1.0,
TRUE, colindex) );
2652 SCIP_CALL(
addAltLPColumn(
scip, conshdlr, conshdlrdata,
NULL, nrowcols, rowvars, rowvals, rowrhs, objcoef, 1.0,
FALSE, colindex) );
2658 SCIP_CALL(
addAltLPColumn(
scip, conshdlr, conshdlrdata,
NULL, nrowcols, rowvars, rowvals, rowlhs, objcoef, -1.0,
FALSE, colindex) );
2683assert( conshdlr !=
NULL);
2687assert( conshdlrdata !=
NULL);
2690 if( conshdlrdata->objcutindex >= 0 )
2694 if( ! conshdlrdata->objothervarsonly )
2698 SCIPdebugMsg(
scip,
"Add objective cut to alternative LP (obj. bound: %g).\n", conshdlrdata->objupperbound);
2705 for(v = 0; v < nvars; ++v)
2711assert( var !=
NULL);
2717objvars[nobjvars] = var;
2718objvals[nobjvars++] = objval;
2723 SCIP_CALL(
addAltLPColumn(
scip, conshdlr, conshdlrdata,
NULL, nobjvars, objvars, objvals, conshdlrdata->objupperbound, 0.0, 1.0,
FALSE, &conshdlrdata->objcutindex) );
2724assert( conshdlrdata->objcutindex >= 0 );
2725conshdlrdata->objaltlpbound = conshdlrdata->objupperbound;
2748assert( conshdlr !=
NULL);
2749assert( cons !=
NULL);
2753assert( conshdlrdata !=
NULL);
2755 if( conshdlrdata->altlp !=
NULL)
2760assert( consdata !=
NULL);
2762 if( consdata->colindex >= 0 )
2766consdata->colindex = -1;
2770conshdlrdata->scaled =
FALSE;
2787assert( conshdlrdata !=
NULL);
2789 if( ! conshdlrdata->useobjectivecut )
2792 if( conshdlrdata->altlp ==
NULL)
2804 if(
SCIPisLT(
scip, objbnd, conshdlrdata->objupperbound) )
2805conshdlrdata->objupperbound = objbnd;
2812 if(
SCIPisLT(
scip, conshdlrdata->objupperbound, conshdlrdata->objaltlpbound) )
2814 SCIPdebugMsg(
scip,
"Update objective bound to %g.\n", conshdlrdata->objupperbound);
2817 if( conshdlrdata->objcutindex < 0 )
2826assert(
SCIPisEQ(
scip, oldbnd, conshdlrdata->objaltlpbound) );
2830 SCIP_CALL(
SCIPlpiChgCoef(conshdlrdata->altlp, 0, conshdlrdata->objcutindex, conshdlrdata->objupperbound) );
2831conshdlrdata->objaltlpbound = conshdlrdata->objupperbound;
2867assert( lp !=
NULL);
2868assert( infeasible !=
NULL);
2869assert( error !=
NULL);
2911 if( maxcondition > 0.0 )
2915 if( condition !=
SCIP_INVALID&& condition > maxcondition )
2917 SCIPdebugMsg(
scip,
"Estimated condition number of basis matrix (%e) exceeds maximal allowance (%e).\n", condition, maxcondition);
2925 SCIPdebugMsg(
scip,
"Estimated condition number of basis matrix (%e) is below maximal allowance (%e).\n", condition, maxcondition);
2929 SCIPdebugMsg(
scip,
"Estimated condition number of basis matrix not available.\n");
2965*infeasible =
TRUE;
2987*infeasible =
FALSE;
3024 intnnonviolated = 0;
3029assert( lp !=
NULL);
3030assert( conss !=
NULL);
3031assert( S !=
NULL);
3032assert( size !=
NULL);
3033assert( value !=
NULL);
3034assert( error !=
NULL);
3035assert( cutoff !=
NULL);
3036assert( nGen !=
NULL);
3044assert( nconss <= nCols );
3075 SCIPdebugMsg(
scip,
" size: %4d produced possible cover with indicator variable objective value %f.\n", *size, *value);
3078 if( conshdlrdata->trysolfromcover )
3088 if( heurindicator ==
NULL)
3095 SCIPdebugMsg(
scip,
"Passed feasible solution to indicator heuristic.\n");
3105 for(j = 0; j < nconss; ++j)
3111assert( consdata !=
NULL);
3112ind = consdata->colindex;
3116assert( ind < nCols );
3129 if( val < candval )
3141 if( candidate < 0 )
3147assert( candidate >= 0 );
3148assert( ! S[candidate] );
3149assert( sizeIIS > 0 );
3152 switch( conshdlrdata->normtype )
3167 SCIPerrorMessage(
"Invalid efficacy norm parameter '%c'.\n", conshdlrdata->normtype);
3172 SCIPdebugMsg(
scip,
" size: %4d, add var. %4d (obj: %-6g, alt-LP sol: %-8.4f); IIS size: %4d, eff.: %g.\n",
3173*size, candidate, candobj, primsol[
SCIPconsGetData(conss[candidate])->colindex], sizeIIS, (sum - (
SCIP_Real) (sizeIIS - 1))/norm);
3176S[candidate] =
TRUE;
3188#ifdef SCIP_ENABLE_IISCHECK 3194 if( conshdlrdata->updatebounds )
3209 for(j = 0; j < nconss; ++j)
3215ind = consdata->colindex;
3219assert( ind < nCols );
3220assert( consdata->binvar !=
NULL);
3231assert( cnt == sizeIIS );
3235 SCIP_CALL(
SCIPcreateConsLogicor(
scip, &cons, name, cnt, vars,
FALSE,
TRUE,
TRUE,
TRUE,
TRUE, isLocal,
FALSE,
TRUE, removable,
FALSE) );
3237 SCIP_CALL(
SCIPcreateConsLogicor(
scip, &cons,
"", cnt, vars,
FALSE,
TRUE,
TRUE,
TRUE,
TRUE, isLocal,
FALSE,
TRUE, removable,
FALSE) );
3246 switch( enfosepatype )
3289 for(j = 0; j < nconss; ++j)
3295ind = consdata->colindex;
3299assert( ind < nCols );
3300assert( consdata->binvar !=
NULL);
3336 if( nnonviolated > conshdlrdata->maxsepanonviolated )
3338 SCIPdebugMsg(
scip,
"Stop separation after %d non violated IISs.\n", nnonviolated);
3342 while(step < nconss);
3358 const char* consname,
3372assert( conshdlr !=
NULL);
3373assert( conshdlrdata !=
NULL);
3374assert( consdata !=
NULL);
3375assert( slackvar !=
NULL);
3376assert( eventhdlrrestart !=
NULL);
3379 if( activeone || binvar ==
NULL)
3380binvarinternal = binvar;
3389(*consdata)->nfixednonzero = 0;
3390(*consdata)->colindex = -1;
3391(*consdata)->linconsactive = linconsactive;
3392(*consdata)->binvar = binvarinternal;
3393(*consdata)->slackvar = slackvar;
3394(*consdata)->activeone = activeone;
3395(*consdata)->lessthanineq = lessthanineq;
3396(*consdata)->lincons = lincons;
3397(*consdata)->implicationadded =
FALSE;
3398(*consdata)->slacktypechecked =
FALSE;
3399(*consdata)->varswithevents =
NULL;
3400(*consdata)->eventtypes =
NULL;
3401(*consdata)->nevents = 0;
3409 if( binvarinternal !=
NULL)
3412assert( var !=
NULL);
3413(*consdata)->binvar = var;
3428 if( conshdlrdata->forcerestart )
3436++((*consdata)->nfixednonzero);
3441assert( var !=
NULL);
3442(*consdata)->slackvar = var;
3445 if( linconsactive )
3449++((*consdata)->nfixednonzero);
3455assert( lincons !=
NULL);
3456assert( consname !=
NULL);
3460 SCIPdebugMsg(
scip,
"Added column for <%s> to alternative LP with column index %d.\n", consname, (*consdata)->colindex);
3468 if( (*consdata)->nfixednonzero > 0 )
3470 SCIPdebugMsg(
scip,
"Constraint <%s> has %d variables fixed to be nonzero.\n", consname, (*consdata)->nfixednonzero);
3489 charname[50] =
"";
3493assert( conshdlrdata !=
NULL);
3494assert( ngen !=
NULL);
3499 for(c = 0; c < nconss; ++c)
3505assert( consdata !=
NULL);
3511 if( ub <= conshdlrdata->maxcouplingvalue )
3528!conshdlrdata->removeindicators, !conshdlrdata->removeindicators,
FALSE) );
3534 if( conshdlrdata->removeindicators )
3567assert( cons !=
NULL);
3568assert( consdata !=
NULL);
3569assert( cutoff !=
NULL);
3570assert( success !=
NULL);
3571assert( ndelconss !=
NULL);
3572assert( nfixedvars !=
NULL);
3573assert( consdata->binvar !=
NULL);
3574assert( consdata->slackvar !=
NULL);
3587 SCIPdebugMsg(
scip,
"The problem is infeasible: binary and slack variable are fixed to be nonzero.\n");
3593 SCIPdebugMsg(
scip,
"Fix slack variable to 0 and delete constraint.\n");
3595assert( ! infeasible );
3628 SCIPdebugMsg(
scip,
"The problem is infeasible: binary and slack variable are fixed to be nonzero.\n");
3634 SCIPdebugMsg(
scip,
"Fix binary variable to 0 and delete indicator constraint.\n");
3636assert( ! infeasible );
3652 if( dualreductions )
3658binvar = consdata->binvar;
3674assert( ! infeasible );
3693assert( ! infeasible );
3718var = consdata->binvar;
3723 if( var != consdata->binvar && ! negated )
3728assert( conshdlrdata->eventhdlrbound !=
NULL);
3735 if( conshdlrdata->forcerestart )
3737assert( conshdlrdata->eventhdlrrestart !=
NULL);
3739conshdlrdata->eventhdlrrestart, (
SCIP_EVENTDATA*) conshdlrdata, -1) );
3748consdata->binvar = var;
3756assert( var !=
NULL);
3759 if( var == consdata->slackvar )
3778var = consdata->slackvar;
3782assert( var != consdata->slackvar );
3791assert( conshdlrdata->eventhdlrbound !=
NULL);
3802consdata->slackvar = var;
3804 else if( var == consdata->binvar )
3812 SCIPdebugMsg(
scip,
"Slack variable <%s> is aggregated to negated indicator variable <%s> -> constraint redundant.\n",
3826 SCIPdebugMsg(
scip,
"Slack variable <%s> is aggregated to the indicator variable <%s> -> fix indicator variable to 0.\n",
3832assert( ! infeasible );
3872assert( cons !=
NULL);
3873assert( consdata !=
NULL);
3874assert( cutoff !=
NULL);
3875assert( nGen !=
NULL);
3881 if( ! consdata->linconsactive )
3884assert( consdata->slackvar !=
NULL);
3885assert( consdata->binvar !=
NULL);
3895 if( consdata->nfixednonzero > 1 )
3897 SCIPdebugMsg(
scip,
"The node is infeasible, both the slack variable and the binary variable are fixed to be nonzero.\n");
3922 if( consdata->nfixednonzero == 1 )
3932 SCIPdebugMsg(
scip,
"Binary variable <%s> is fixed to be nonzero, fixing slack variable <%s> to 0.\n",
3937assert( ! infeasible );
3949 SCIPdebugMsg(
scip,
"Slack variable <%s> is fixed to be nonzero, fixing binary variable <%s> to 0.\n",
3954assert( ! infeasible );
3973 if( addopposite && consdata->linconsactive )
4006assert( consdata->lincons !=
NULL);
4010slackvar = consdata->slackvar;
4011assert( slackvar !=
NULL);
4017 for(j = 0; j < nlinvars; ++j)
4019 if( linvars[j] != slackvar )
4022allintegral =
FALSE;
4024vars[nvars] = linvars[j];
4025vals[nvars++] = linvals[j];
4028assert( nlinvars == nvars + 1 );
4069 if( dualreductions )
4075binvar = consdata->binvar;
4091assert( ! infeasible );
4110assert( ! infeasible );
4163 for(j = 0; j < nlinconsvars; ++j)
4169val = linconsvals[j];
4172var = linconsvars[j];
4173assert( var !=
NULL);
4176 if( var == consdata->slackvar )
4193maxactivity += val *
bound;
4205newub = (maxactivity - rhs) / (-1.0 * coeffslack);
4214 SCIPdebugMsg(
scip,
"Adjusting upper bound of slack variable <%s> to %g for indicator constraint <%s>.\n",
4219assert( !infeasible );
4265assert( conshdlr !=
NULL);
4266assert( conss !=
NULL);
4267assert( cutoff !=
NULL);
4268assert( nGen !=
NULL);
4275assert( conshdlrdata !=
NULL);
4276lp = conshdlrdata->altlp;
4277assert( lp !=
NULL);
4284 if( conshdlrdata->updatebounds )
4299 for(j = 0; j < nconss; ++j)
4303assert( conss[j] !=
NULL);
4305assert( consdata !=
NULL);
4323 SCIP_CALL(
extendToCover(
scip, conshdlr, conshdlrdata, lp, sol, enfosepatype, conshdlrdata->removable, genlogicor, nconss, conss, S, &size, &value, &error, cutoff, &nCuts) );
4327 if( nCuts == 0 && error )
4378assert( conshdlr !=
NULL);
4379assert( conss !=
NULL);
4380assert( result !=
NULL);
4388assert( conshdlrdata !=
NULL);
4393 for(c = 0; c < nconss; ++c)
4399assert( conss[c] !=
NULL);
4401assert( consdata !=
NULL);
4402assert( consdata->lincons !=
NULL);
4405 if( ! consdata->linconsactive )
4407someLinconsNotActive =
TRUE;
4412 SCIP_CALL(
propIndicator(
scip, conss[c], consdata, conshdlrdata, dualreductions, conshdlrdata->addopposite, &cutoff, &cnt) );
4427binvar = consdata->binvar;
4435 if( valSlack > maxSlack )
4437maxSlack = valSlack;
4452 if( (someLinconsNotActive || conshdlrdata->enforcecuts) && conshdlrdata->sepaalternativelp )
4460conshdlrdata->niiscutsgen += ngen;
4467conshdlrdata->niiscutsgen += ngen;
4493 if( ! conshdlrdata->branchindicators )
4502assert( consdata !=
NULL);
4503binvar = consdata->binvar;
4504slackvar = consdata->slackvar;
4563assert( conshdlr !=
NULL);
4564assert( conss !=
NULL);
4565assert( cutoff !=
NULL);
4566assert( nGen !=
NULL);
4568 if( *nGen >= maxsepacuts )
4575assert( conshdlrdata !=
NULL);
4576lp = conshdlrdata->altlp;
4577assert( lp !=
NULL);
4586 if( conshdlrdata->updatebounds )
4604 for(threshold = conshdlrdata->roundingmaxthres;
4605rounds < conshdlrdata->maxroundingrounds && threshold >= conshdlrdata->roundingminthres && *nGen < maxsepacuts && ! (*cutoff);
4606threshold -= conshdlrdata->roundingoffset )
4621 for(j = 0; j < nconss; ++j)
4627assert( conss[j] !=
NULL);
4629assert( consdata !=
NULL);
4644assert( binvarneg !=
NULL);
4647assert( conshdlrdata->binvarhash !=
NULL);
4653 if( binvarval > binvarnegval )
4671 if( size == nconss )
4678 if( size == oldsize )
4680 SCIPdebugMsg(
scip,
"Skipping computation: size support has not changed.\n");
4686 SCIPdebugMsg(
scip,
" Vars with value 1: %d 0: %d and fractional: %d.\n", nvarsone, nvarszero, nvarsfrac);
4693 SCIP_CALL(
extendToCover(
scip, conshdlr, conshdlrdata, lp, sol, enfosepatype, conshdlrdata->removable, conshdlrdata->genlogicor,
4694nconss, conss, S, &size, &value, &error, cutoff, &nCuts) );
4770assert( conshdlr !=
NULL);
4771assert( conss !=
NULL);
4772assert( nGen !=
NULL);
4774 if( *nGen >= maxsepacuts )
4782assert( conshdlrdata !=
NULL);
4785 for(c = 0; c < nconss; ++c)
4793assert( conss[c] !=
NULL);
4795assert( consdata !=
NULL);
4796slackvar = consdata->slackvar;
4798lincons = consdata->lincons;
4799assert( lincons !=
NULL);
4801binvar = consdata->binvar;
4802assert( binvar !=
NULL);
4836cutval = binval * ypart;
4838 for(j = 0; j < nlinvars; ++j)
4848 if( linvars[j] == slackvar )
4851 if( conshdlrdata->sepapersplocal )
4870finitebound =
FALSE;
4875linval = signfactor * linvals[j];
4879dout += linval * lb;
4884dout += linval * ub;
4888xpart = linval * xval;
4891 if(
SCIPisGT(
scip, binval * din, binval * dout + xpart) )
4894cutval += binval * din;
4902cutval += binval * dout + xpart;
4904cutvars[cnt] = linvars[j];
4905cutvals[cnt++] = linval;
4909 if( ! finitebound )
4919cutvars[cnt] = binvar;
4920cutvals[cnt] = ypart;
4923 SCIPdebugMsg(
scip,
"Found cut of lhs value %f > %f.\n", cutval, cutrhs);
4924(void)
SCIPsnprintf(name, 50,
"persp%d", conshdlrdata->nperspcutsgen + *nGen);
4931assert( ! infeasible );
4937 if( *nGen >= maxsepacuts )
4970assert( conshdlr !=
NULL);
4971assert( conss !=
NULL);
4972assert( result !=
NULL);
4980assert( conshdlrdata !=
NULL);
4985maxsepacuts = conshdlrdata->maxsepacutsroot;
4987maxsepacuts = conshdlrdata->maxsepacuts;
4990 if( conshdlrdata->sepacouplingcuts )
4997 for(c = 0; c < nusefulconss && ncuts < maxsepacuts; ++c)
5003assert( conss !=
NULL);
5004assert( conss[c] !=
NULL);
5006assert( consdata !=
NULL);
5007assert( consdata->slackvar !=
NULL);
5008assert( consdata->binvar !=
NULL);
5012 if( conshdlrdata->sepacouplinglocal )
5023 if( ub <= conshdlrdata->sepacouplingvalue )
5051assert( ! infeasible );
5061 SCIPdebugMsg(
scip,
"Number of separated coupling inequalities: %d.\n", ncuts);
5070 SCIPdebugMsg(
scip,
"Separating inequalities for indicator constraints.\n");
5078 SCIPdebugMsg(
scip,
"Separated %d cuts from indicator constraints.\n", ncuts - noldcuts);
5082 else if( ncuts > noldcuts )
5084conshdlrdata->niiscutsgen += ncuts;
5087 if( conshdlrdata->genlogicor )
5099 SCIPdebugMsg(
scip,
"Separating inequalities based on perspective formulation.\n");
5107 SCIPdebugMsg(
scip,
"Separated %d cuts from perspective formulation.\n", ncuts - noldcuts);
5109 if( ncuts > noldcuts )
5111conshdlrdata->nperspcutsgen += ncuts;
5129assert( conshdlrdata !=
NULL);
5131conshdlrdata->linconsevents =
FALSE;
5132conshdlrdata->linconsboundschanged =
TRUE;
5133conshdlrdata->boundhaschanged =
TRUE;
5134conshdlrdata->removable =
TRUE;
5135conshdlrdata->scaled =
FALSE;
5136conshdlrdata->altlp =
NULL;
5137conshdlrdata->nrows = 0;
5138conshdlrdata->varhash =
NULL;
5139conshdlrdata->slackhash =
NULL;
5140conshdlrdata->lbhash =
NULL;
5141conshdlrdata->ubhash =
NULL;
5142conshdlrdata->nlbbounds = 0;
5143conshdlrdata->nubbounds = 0;
5144conshdlrdata->nslackvars = 0;
5145conshdlrdata->objcutindex = -1;
5148conshdlrdata->roundingminthres = 0.1;
5149conshdlrdata->roundingmaxthres = 0.6;
5151conshdlrdata->roundingoffset = 0.1;
5152conshdlrdata->addedcouplingcons =
FALSE;
5153conshdlrdata->ninitconss = 0;
5154conshdlrdata->nbinvarszero = 0;
5155conshdlrdata->performedrestart =
FALSE;
5156conshdlrdata->objindicatoronly =
FALSE;
5157conshdlrdata->objothervarsonly =
FALSE;
5158conshdlrdata->minabsobj = 0.0;
5159conshdlrdata->normtype =
'e';
5160conshdlrdata->niiscutsgen = 0;
5161conshdlrdata->nperspcutsgen = 0;
5186 intmaxabsvalidx = -1;
5190assert( upgdcons !=
NULL);
5204assert( conshdlr !=
NULL);
5206assert( conshdlrdata !=
NULL);
5208 if( ! conshdlrdata->upgradelinear )
5212 for(j = 0; j < nvars; ++j)
5223assert( var !=
NULL);
5228secabsval = maxabsval;
5252minactivity += val * lb;
5261maxactivity += val * ub;
5265assert( maxabsval >= 0.0 );
5266assert( 0 <= maxabsvalidx && maxabsvalidx < nvars );
5281 for(j = 0; j < nvars; ++j)
5331 if( upgdlhs || upgdrhs )
5337assert( ! upgdlhs || ! upgdrhs );
5344 for(l = 0; l < nvars; ++l)
5346 if( vars[l] == indvar )
5348indconsvars[cnt] = vars[l];
5350indconsvals[cnt] = -vals[l];
5352indconsvals[cnt] = vals[l];
5356 if( indneglhs || indnegrhs )
5410assert( conshdlr !=
NULL);
5412assert( valid !=
NULL);
5430assert( conshdlr !=
NULL);
5434assert( conshdlrdata !=
NULL);
5439 if( conshdlrdata->trysolutions && conshdlrdata->heurtrysol ==
NULL)
5458assert( conshdlr !=
NULL);
5463 if( conshdlrdata->binvarhash !=
NULL)
5466 if( conshdlrdata->binslackvarhash !=
NULL)
5470 for(i = 0; i < nconss; i++)
5473assert( consdata !=
NULL);
5475 if( consdata->varswithevents !=
NULL)
5477assert( consdata->eventtypes !=
NULL);
5478assert( consdata->lincons !=
NULL);
5480 for(j = 0; j < consdata->nevents; ++j)
5487consdata->nevents = 0;
5488assert( consdata->varswithevents ==
NULL);
5489assert( consdata->eventtypes ==
NULL);
5494conshdlrdata->maxaddlincons = 0;
5495conshdlrdata->naddlincons = 0;
5496conshdlrdata->nrows = 0;
5509assert( conshdlr !=
NULL);
5513assert( conshdlrdata !=
NULL);
5514assert( conshdlrdata->altlp ==
NULL);
5515assert( conshdlrdata->varhash ==
NULL);
5516assert( conshdlrdata->lbhash ==
NULL);
5517assert( conshdlrdata->ubhash ==
NULL);
5518assert( conshdlrdata->slackhash ==
NULL);
5520 if( conshdlrdata->maxaddlincons > 0 )
5525assert( conshdlrdata->addlincons ==
NULL);
5526conshdlrdata->naddlincons = 0;
5527conshdlrdata->maxaddlincons = 0;
5543assert( conshdlr !=
NULL);
5553assert( conshdlrdata !=
NULL);
5554assert( conshdlrdata->slackhash ==
NULL);
5556conshdlrdata->boundhaschanged =
TRUE;
5560 if( conshdlrdata->sepaalternativelp )
5564assert( conshdlrdata->slackhash !=
NULL);
5567 for(c = 0; c < nconss; ++c)
5571assert( conss !=
NULL);
5572assert( conss[c] !=
NULL);
5576assert( consdata !=
NULL);
5578assert( consdata->slackvar !=
NULL);
5583++conshdlrdata->nslackvars;
5586 if( conshdlrdata->genlogicor )
5589 intlogicorsepafreq;
5594 if( logicorconshdlr ==
NULL)
5596 SCIPerrorMessage(
"Logicor constraint handler not included, cannot generate constraints.\n");
5601 if( (sepafreq != -1 || conshdlrdata->enforcecuts) && logicorsepafreq != 1 )
5603 SCIPwarningMessage(
scip,
"For better performance set parameter 'constraints/logicor/sepafreq' to 1 if 'constraints/included/genlogicor' is true.\n");
5609conshdlrdata->objothervarsonly =
TRUE;
5610 for(c = 0; c < nconss; ++c)
5614assert( conss !=
NULL);
5615assert( conss[c] !=
NULL);
5619assert( consdata !=
NULL);
5620assert( consdata->binvar !=
NULL);
5621assert( consdata->slackvar !=
NULL);
5626conshdlrdata->objothervarsonly =
FALSE;
5629 if( ! consdata->linconsactive )
5636 if( conshdlrdata->sepaalternativelp && consdata->colindex < 0 )
5663 SCIP_CALL(
SCIPcreateNlRow(
scip, &nlrow,
SCIPconsGetName(conss[c]), 0.0, 0,
NULL,
NULL, quadexpr, 0.0, 0.0,
SCIP_EXPRCURV_UNKNOWN) );
5678 if( conshdlrdata->sepaalternativelp )
5685 if( conshdlrdata->naddlincons > 0 )
5687 for(c = 0; c < conshdlrdata->naddlincons; ++c)
5689cons = conshdlrdata->addlincons[c];
5708 SCIPdebugMsg(
scip,
"Added %d additional columns to alternative LP.\n", cnt);
5715 if( conshdlrdata->useotherconss )
5717 const char* conshdlrname;
5725 for(c = 0; c < nallconss; ++c)
5729assert( cons !=
NULL);
5747 SCIPdebugMsg(
scip,
"Added %d additional columns from linear constraints to alternative LP.\n", cnt);
5753 if( conshdlrdata->forcerestart )
5760assert( conshdlrdata->eventhdlrrestart !=
NULL);
5766conshdlrdata->nbinvarszero = 0;
5772conshdlrdata->objindicatoronly =
FALSE;
5777 for(j = 0; j < nvars; ++j)
5778covered[j] =
FALSE;
5781 for(c = 0; c < nconss; ++c)
5786assert( conss !=
NULL);
5787assert( conss[c] !=
NULL);
5794assert( consdata !=
NULL);
5795assert( consdata->binvar !=
NULL);
5806 if( probindex < 0 )
5809assert( 0 <= probindex && probindex < nvars );
5810covered[probindex] =
TRUE;
5814 for(j = 0; j < nvars; ++j)
5825 if(
REALABS(obj) < conshdlrdata->minabsobj )
5826conshdlrdata->minabsobj =
REALABS(obj);
5837assert(
SCIPisGE(
scip, conshdlrdata->minabsobj, 1.0) );
5839conshdlrdata->objindicatoronly =
TRUE;
5841assert( conshdlrdata->eventhdlrrestart !=
NULL);
5861assert( conshdlr !=
NULL);
5865assert( conshdlrdata !=
NULL);
5867 if( conshdlrdata->sepaalternativelp )
5869 if( conshdlrdata->slackhash !=
NULL)
5878 if( conshdlrdata->altlp !=
NULL)
5880assert( conshdlrdata->varhash !=
NULL);
5881assert( conshdlrdata->lbhash !=
NULL);
5882assert( conshdlrdata->ubhash !=
NULL);
5900 for(c = 0; c < nconss; ++c)
5904assert( conss !=
NULL);
5905assert( conss[c] !=
NULL);
5908assert( consdata !=
NULL);
5909consdata->colindex = -1;
5915assert( conshdlrdata->slackhash ==
NULL);
5916assert( conshdlrdata->varhash ==
NULL);
5917assert( conshdlrdata->lbhash ==
NULL);
5918assert( conshdlrdata->ubhash ==
NULL);
5930assert( conshdlr !=
NULL);
5931assert( cons !=
NULL);
5932assert( consdata !=
NULL);
5935#ifdef SCIP_MORE_DEBUG 5948assert( conshdlrdata !=
NULL);
5950 if( conshdlrdata->binslackvarhash !=
NULL)
5961assert( conshdlrdata !=
NULL);
5963 if( conshdlrdata->sepaalternativelp )
5968assert( (*consdata)->slackvar !=
NULL);
5969assert( (*consdata)->binvar !=
NULL);
5974 if( (*consdata)->linconsactive )
5976assert( conshdlrdata->eventhdlrbound !=
NULL);
5982 if( conshdlrdata->forcerestart )
5984assert( conshdlrdata->eventhdlrrestart !=
NULL);
5990 if( conshdlrdata->linconsevents && (*consdata)->linconsactive && (*consdata)->varswithevents !=
NULL)
5993assert( cons !=
NULL);
5994assert( (*consdata)->eventtypes !=
NULL);
5995assert( (*consdata)->lincons !=
NULL);
5997 for(j = 0; j < (*consdata)->nevents; ++j)
6005(*consdata)->nevents = 0;
6006assert( (*consdata)->varswithevents ==
NULL);
6007assert( (*consdata)->eventtypes ==
NULL);
6013assert( (*consdata)->lincons !=
NULL);
6042assert( conshdlr !=
NULL);
6044assert( sourcecons !=
NULL);
6045assert( targetcons !=
NULL);
6049assert( conshdlrdata !=
NULL);
6050assert( conshdlrdata->eventhdlrbound !=
NULL);
6052#ifdef SCIP_MORE_DEBUG 6058assert( sourcedata !=
NULL);
6059assert( sourcedata->binvar !=
NULL);
6062 if( sourcedata->slackvar ==
NULL)
6069 if( sourcedata->lincons ==
NULL)
6074assert( sourcedata->lincons !=
NULL);
6075assert( sourcedata->slackvar !=
NULL);
6081sourcedata->binvar,
TRUE, sourcedata->lessthanineq, sourcedata->slackvar, sourcedata->lincons, sourcedata->linconsactive) );
6082consdata->activeone = sourcedata->activeone;
6083assert( consdata !=
NULL);
6099 if( sourcedata->linconsactive )
6107 if( conshdlrdata->sepaalternativelp )
6109 if( conshdlrdata->binvarhash ==
NULL)
6115assert( conshdlrdata->binvarhash !=
NULL);
6116 if( !
SCIPhashmapExists(conshdlrdata->binvarhash, (
void*) consdata->binvar) )
6134assert( conshdlr !=
NULL);
6143 for(c = 0; c < nconss; ++c)
6147assert( conss !=
NULL);
6148assert( conss[c] !=
NULL);
6152assert( consdata !=
NULL);
6155assert( consdata->lincons !=
NULL);
6164assert( translincons !=
NULL);
6168consdata->lincons = translincons;
6173assert( conshdlrdata !=
NULL);
6176conshdlrdata->addedcouplingcons =
FALSE;
6198 SCIPdebug(
intoldnfixedvars = *nfixedvars; )
6199 SCIPdebug(
intoldndelconss = *ndelconss; )
6203assert( conshdlr !=
NULL);
6205assert( result !=
NULL);
6211assert( conshdlrdata !=
NULL);
6216 if( nrounds == 0 || nnewfixedvars > 0 || nnewchgbds > 0 || nnewaggrvars > 0 )
6221 for(c = 0; c < nconss; ++c)
6228assert( conss !=
NULL);
6229assert( conss[c] !=
NULL);
6232assert( consdata !=
NULL);
6233assert( consdata->binvar !=
NULL);
6236#ifdef SCIP_MORE_DEBUG 6241 if( ! consdata->linconsactive )
6244assert( consdata->lincons !=
NULL);
6245assert( consdata->slackvar !=
NULL);
6250 if( ! consdata->implicationadded )
6259consdata->implicationadded =
TRUE;
6268 if( ! consdata->slacktypechecked )
6270consdata->slacktypechecked =
TRUE;
6281assert( consdata->lincons !=
NULL);
6285slackvar = consdata->slackvar;
6286assert( slackvar !=
NULL);
6288 for(j = 0; j < nvars; ++j)
6290 if( vars[j] == slackvar )
6291foundslackvar =
TRUE;
6299 if( j == nvars && foundslackvar )
6317 SCIPdebugMsg(
scip,
"Cannot change type of slack variable (<%s>) to IMPLINT, since global bound is non-integral: (%g, %g).\n",
6339noReductions = nnewfixedvars == 0 && nnewaggrvars == 0 && nnewchgvartypes == 0 && nnewchgbds == 0
6340&& nnewdelconss == 0 && nnewchgcoefs == 0 && nnewchgsides == 0;
6343 if( noReductions && *result !=
SCIP_SUCCESS&& conshdlrdata->addcouplingcons && ! conshdlrdata->addedcouplingcons )
6353*nupgdconss += ngen;
6354 if( conshdlrdata->removeindicators )
6357conshdlrdata->addedcouplingcons =
TRUE;
6360 SCIPdebug(
SCIPdebugMsg(
scip,
"Presolved %d constraints (fixed %d variables, removed 0 variables, and deleted %d constraints).\n",
6361nconss, *nfixedvars - oldnfixedvars, *ndelconss - oldndelconss); )
6380assert( conshdlr !=
NULL);
6384assert( conshdlrdata !=
NULL);
6386*infeasible =
FALSE;
6389 if( ! conshdlrdata->addcoupling )
6393 if( conshdlrdata->addcouplingcons && conshdlrdata->addedcouplingcons )
6396 SCIPdebugMsg(
scip,
"Handle initial rows for %d indicator constraints.\n", nconss);
6399 for(c = 0; c < nconss && !(*infeasible); ++c)
6404assert( conss !=
NULL);
6405assert( conss[c] !=
NULL);
6407assert( consdata !=
NULL);
6410 if( ! consdata->linconsactive )
6418 if( ub <= conshdlrdata->maxcouplingvalue )
6429 if( conshdlrdata->addcouplingcons )
6433assert( ! conshdlrdata->addedcouplingcons );
6473assert( conshdlr !=
NULL);
6474assert( conss !=
NULL);
6476assert( result !=
NULL);
6490assert( conshdlr !=
NULL);
6491assert( conss !=
NULL);
6493assert( result !=
NULL);
6509assert( conshdlr !=
NULL);
6510assert( conss !=
NULL);
6512assert( result !=
NULL);
6514 if( solinfeasible )
6522assert( conshdlrdata !=
NULL);
6537assert( conshdlr !=
NULL);
6538assert( conss !=
NULL);
6540assert( result !=
NULL);
6542 if( solinfeasible )
6550assert( conshdlrdata !=
NULL);
6563assert( conshdlr !=
NULL);
6564assert( conss !=
NULL);
6566assert( result !=
NULL);
6568 if( solinfeasible )
6574 if( objinfeasible )
6597assert( conshdlr !=
NULL);
6598assert( conss !=
NULL);
6600assert( result !=
NULL);
6605assert( conshdlrdata !=
NULL);
6611assert( trysol !=
NULL);
6616changedSol =
FALSE;
6617someLinconsNotActive =
FALSE;
6618 for(c = 0; c < nconss; ++c)
6622assert( conss[c] !=
NULL);
6624assert( consdata !=
NULL);
6625assert( consdata->binvar !=
NULL);
6628 if( ! consdata->linconsactive )
6630someLinconsNotActive =
TRUE;
6634assert( consdata->slackvar !=
NULL);
6660 if( trysol !=
NULL)
6664changedSol = changedSol || changed;
6676 if( trysol !=
NULL)
6680changedSol = changedSol || changed;
6686 if( someLinconsNotActive )
6693lp = conshdlrdata->altlp;
6694assert( conshdlrdata->sepaalternativelp );
6704 if( conshdlrdata->updatebounds )
6718 for(c = 0; c < nconss; ++c)
6722assert( conss[c] !=
NULL);
6724assert( consdata !=
NULL);
6763 if( trysol !=
NULL&& changedSol )
6765assert( conshdlrdata->heurtrysol !=
NULL);
6770 if( trysol !=
NULL)
6796assert( conshdlr !=
NULL);
6797assert( conss !=
NULL);
6799assert( result !=
NULL);
6809assert( conshdlrdata !=
NULL);
6812 if( ! conshdlrdata->boundhaschanged && !
SCIPinRepropagation(
scip) && ! conshdlrdata->linconsboundschanged )
6819 if( !conshdlrdata->linconsevents )
6821 for(c = 0; c < nconss; ++c)
6828assert( conss[c] !=
NULL);
6831assert( consdata !=
NULL);
6834 if( ! consdata->linconsactive )
6845assert( consdata->lincons !=
NULL);
6849assert( consdata->slackvar !=
NULL);
6850assert( nvars != 0 );
6856 for(j = 0; j < nvars; ++j)
6858 if( vars[j] == consdata->slackvar )
6862 if( vals[j] > 0.0 )
6865consdata->varswithevents[consdata->nevents] = vars[j];
6867consdata->nevents++;
6872consdata->varswithevents[consdata->nevents] = vars[j];
6874consdata->nevents++;
6877assert( consdata->nevents == nvars - 1 );
6879conshdlrdata->linconsevents =
TRUE;
6883conshdlrdata->boundhaschanged =
FALSE;
6884conshdlrdata->linconsboundschanged =
FALSE;
6889 for(c = 0; c < nconss; ++c)
6898assert( conss[c] !=
NULL);
6901assert( consdata !=
NULL);
6903#ifdef SCIP_MORE_DEBUG 6907 SCIP_CALL(
propIndicator(
scip, cons, consdata, conshdlrdata, dualreductions, conshdlrdata->addopposite, &cutoff, &cnt) );
6937assert( cons !=
NULL);
6939assert( infervar !=
NULL);
6940assert( bdchgidx !=
NULL);
6941assert( result !=
NULL);
6947assert( consdata !=
NULL);
6948assert( inferinfo == 0 || inferinfo == 1 || inferinfo == 2 || inferinfo == 3 );
6949assert( consdata->linconsactive );
6952 if( inferinfo == 0 )
6955assert( infervar != consdata->binvar );
6959 else if( inferinfo == 1 )
6962assert( infervar != consdata->slackvar );
6968 else if( inferinfo == 2 )
6981assert( inferinfo == 3 );
6988 for(j = 0; j < nlinconsvars; ++j)
6990 if( linconsvals[j] > 0.0 )
7021assert( conshdlr !=
NULL);
7022assert( cons !=
NULL);
7025assert( consdata !=
NULL);
7026assert( consdata->binvar !=
NULL);
7028#ifdef SCIP_MORE_DEBUG 7034 if( consdata->linconsactive )
7036assert( consdata->slackvar !=
NULL);
7049assert( consdata->lincons !=
NULL);
7050assert( consdata->slackvar ==
NULL);
7058 for(j = 0; j < nlinvars; ++j)
7099assert( conshdlr !=
NULL);
7100assert( cons !=
NULL);
7104assert( consdata !=
NULL);
7105assert( consdata->binvar !=
NULL);
7107binvar = consdata->binvar;
7116assert( consdata->slackvar !=
NULL);
7117assert( consdata->lincons !=
NULL);
7135 const char* consname;
7138assert( sourcescip !=
NULL);
7139assert( sourcecons !=
NULL);
7149#ifdef SCIP_MORE_DEBUG 7150 SCIPdebugMsg(
scip,
"Copying indicator constraint <%s> ...\n", consname);
7161assert( sourceconsdata !=
NULL);
7164sourcelincons = sourceconsdata->lincons;
7178assert( sourcelincons !=
NULL);
7180assert( conshdlrlinear !=
NULL);
7190assert( translincons !=
NULL);
7193sourceconsdata->lincons = translincons;
7194sourcelincons = translincons;
7208sourcebinvar = sourceconsdata->binvar;
7209assert( sourcebinvar !=
NULL);
7219sourceslackvar = sourceconsdata->slackvar;
7220assert( sourceslackvar !=
NULL);
7228assert( targetlincons !=
NULL);
7229assert( targetbinvar !=
NULL);
7230assert( targetslackvar !=
NULL);
7235initial, separate, enforce, check, propagate, local, dynamic, removable, stickingatnode) );
7243 if( targetlincons !=
NULL)
7256 charbinvarname[1024];
7257 charslackvarname[1024];
7258 charlinconsname[1024];
7269nargs = sscanf(str,
" <%1023[^>]> = %d -> <%1023[^>]> = 0 (<%1023[^>]>)", binvarname, &zeroone, slackvarname, linconsname);
7272 if( nargs != 3 && nargs != 4 )
7279 if( zeroone != 0 && zeroone != 1 )
7288 if( binvar ==
NULL)
7300 if( slackvar ==
NULL)
7311 if( lincons ==
NULL)
7326 const char* posstr;
7329assert( nargs == 3 );
7332posstr = strstr(slackvarname,
"indslack");
7333 if( posstr ==
NULL)
7341(void)
SCIPsnprintf(binvarname, 1023,
"indlin%s", posstr+8);
7344 if( lincons ==
NULL)
7347(void)
SCIPsnprintf(binvarname, 1023,
"%s", posstr+9);
7350 if( lincons ==
NULL)
7353(void)
SCIPsnprintf(binvarname, 1023,
"%s", posstr+16);
7356 if( lincons ==
NULL)
7359name, posstr+8, posstr+9, posstr+16);
7366assert( lincons !=
NULL);
7378initial, separate, enforce, check, propagate, local, dynamic, removable, stickingatnode) );
7392assert( conshdlr !=
NULL);
7393assert( cons !=
NULL);
7396#ifdef SCIP_MORE_DEBUG 7401assert( conshdlrdata !=
NULL);
7404assert( consdata !=
NULL);
7406 if( conshdlrdata->altlp !=
NULL)
7408assert( conshdlrdata->sepaalternativelp );
7410 if( consdata->colindex >= 0 )
7427assert( conshdlr !=
NULL);
7428assert( cons !=
NULL);
7431#ifdef SCIP_MORE_DEBUG 7436assert( conshdlrdata !=
NULL);
7438 if( conshdlrdata->altlp !=
NULL)
7443assert( consdata !=
NULL);
7444assert( conshdlrdata->sepaalternativelp );
7446 if( consdata->colindex >= 0 )
7464assert( cons !=
NULL);
7465assert( vars !=
NULL);
7466assert( success !=
NULL);
7470assert( varssize >= 0 );
7479assert( consdata !=
NULL);
7480assert( consdata->lincons !=
NULL);
7482 if( consdata->binvar !=
NULL)
7484assert( varssize > 0 );
7485vars[nvars++] = consdata->binvar;
7487 if( consdata->slackvar !=
NULL)
7489assert( varssize > nvars );
7490vars[nvars++] = consdata->slackvar;
7511assert( cons !=
NULL);
7512assert( nvars !=
NULL);
7513assert( success !=
NULL);
7523assert( consdata !=
NULL);
7524assert( consdata->lincons !=
NULL);
7526 if( consdata->binvar !=
NULL)
7528 if( consdata->slackvar !=
NULL)
7539assert( nlinvars >= 0 );
7559assert(conshdlr !=
NULL);
7561assert(diveset !=
NULL);
7562assert(success !=
NULL);
7563assert(infeasible !=
NULL);
7566*infeasible =
FALSE;
7572 for(c = 0; c < nindconss; ++c)
7590&score, &roundup) );
7593 if( score > bestscore )
7598bestvarroundup = roundup;
7604assert(! *success || bestvar !=
NULL);
7650conshdlrdata->eventhdlrbound =
NULL;
7652eventExecIndicatorBound,
NULL) );
7653assert(conshdlrdata->eventhdlrbound !=
NULL);
7656conshdlrdata->eventhdlrlinconsbound =
NULL;
7658eventExecIndicatorLinconsBound,
NULL) );
7659assert(conshdlrdata->eventhdlrlinconsbound !=
NULL);
7662conshdlrdata->eventhdlrrestart =
NULL;
7664eventExecIndicatorRestart,
NULL) );
7665assert( conshdlrdata->eventhdlrrestart !=
NULL);
7667conshdlrdata->heurtrysol =
NULL;
7671conshdlrdata->binvarhash =
NULL;
7672conshdlrdata->binslackvarhash =
NULL;
7680conshdlrdata->addlincons =
NULL;
7681conshdlrdata->naddlincons = 0;
7682conshdlrdata->maxaddlincons = 0;
7687consEnfolpIndicator, consEnfopsIndicator, consCheckIndicator, consLockIndicator,
7690assert( conshdlr !=
NULL);
7729conflicthdlrdata->conshdlrdata = conshdlrdata;
7730conflicthdlrdata->conshdlr = conshdlr;
7731assert( conflicthdlrdata->conshdlr !=
NULL);
7735conflictExecIndicator, conflicthdlrdata) );
7741 "constraints/indicator/branchindicators",
7742 "Branch on indicator constraints in enforcing?",
7746 "constraints/indicator/genlogicor",
7747 "Generate logicor constraints instead of cuts?",
7751 "constraints/indicator/addcoupling",
7752 "Add coupling constraints or rows if big-M is small enough?",
7756 "constraints/indicator/maxcouplingvalue",
7757 "maximum coefficient for binary variable in coupling constraint",
7761 "constraints/indicator/addcouplingcons",
7762 "Add initial variable upper bound constraints, if 'addcoupling' is true?",
7766 "constraints/indicator/sepacouplingcuts",
7767 "Should the coupling inequalities be separated dynamically?",
7771 "constraints/indicator/sepacouplinglocal",
7772 "Allow to use local bounds in order to separate coupling inequalities?",
7776 "constraints/indicator/sepacouplingvalue",
7777 "maximum coefficient for binary variable in separated coupling constraint",
7781 "constraints/indicator/sepaperspective",
7782 "Separate cuts based on perspective formulation?",
7786 "constraints/indicator/sepapersplocal",
7787 "Allow to use local bounds in order to separate perspective cuts?",
7791 "constraints/indicator/maxsepanonviolated",
7792 "maximal number of separated non violated IISs, before separation is stopped",
7796 "constraints/indicator/updatebounds",
7797 "Update bounds of original variables for separation?",
7801 "constraints/indicator/maxconditionaltlp",
7802 "maximum estimated condition of the solution basis matrix of the alternative LP to be trustworthy (0.0 to disable check)",
7806 "constraints/indicator/maxsepacuts",
7807 "maximal number of cuts separated per separation round",
7811 "constraints/indicator/maxsepacutsroot",
7812 "maximal number of cuts separated per separation round in the root node",
7816 "constraints/indicator/removeindicators",
7817 "Remove indicator constraint if corresponding variable bound constraint has been added?",
7821 "constraints/indicator/generatebilinear",
7822 "Do not generate indicator constraint, but a bilinear constraint instead?",
7826 "constraints/indicator/scaleslackvar",
7827 "Scale slack variable coefficient at construction time?",
7831 "constraints/indicator/trysolutions",
7832 "Try to make solutions feasible by setting indicator variables?",
7836 "constraints/indicator/enforcecuts",
7837 "In enforcing try to generate cuts (only if sepaalternativelp is true)?",
7841 "constraints/indicator/dualreductions",
7842 "Should dual reduction steps be performed?",
7846 "constraints/indicator/addopposite",
7847 "Add opposite inequality in nodes in which the binary variable has been fixed to 0?",
7851 "constraints/indicator/conflictsupgrade",
7852 "Try to upgrade bounddisjunction conflicts by replacing slack variables?",
7856 "constraints/indicator/restartfrac",
7857 "fraction of binary variables that need to be fixed before restart occurs (in forcerestart)",
7861 "constraints/indicator/useotherconss",
7862 "Collect other constraints to alternative LP?",
7866 "constraints/indicator/useobjectivecut",
7867 "Use objective cut with current best solution to alternative LP?",
7871 "constraints/indicator/trysolfromcover",
7872 "Try to construct a feasible solution from a cover?",
7876 "constraints/indicator/upgradelinear",
7877 "Try to upgrade linear constraints to indicator constraints?",
7881 "constraints/indicator/usesameslackvar",
7882 "Use same slack variable for indicator constraints with common binary variable?",
7887 "constraints/indicator/sepaalternativelp",
7888 "Separate using the alternative LP?",
7892 "constraints/indicator/forcerestart",
7893 "Force restart if absolute gap is 1 or enough binary variables have been fixed?",
7897 "constraints/indicator/nolinconscont",
7898 "Decompose problem (do not generate linear constraint if all variables are continuous)?",
7941 return SCIPcreateConsIndicatorGeneric(
scip, cons, name, binvar, nvars, vars, vals, rhs,
TRUE,
TRUE, initial,
7942separate, enforce, check, propagate, local, dynamic, removable, stickingatnode);
8000 SCIPerrorMessage(
"Indicator constraint <%s> needs nonnegative number of variables in linear constraint.\n", name);
8006 if( conshdlr ==
NULL)
8013assert( conshdlrdata !=
NULL);
8015 if( conshdlrdata->nolinconscont && ! conshdlrdata->sepaalternativelp )
8017 SCIPerrorMessage(
"constraint handler <%s>: need parameter <sepaalternativelp> to be true if parameter <nolinconscont> is true.\n",
CONSHDLR_NAME);
8021 if( conshdlrdata->nolinconscont && conshdlrdata->generatebilinear )
8034 for(j = 0; j < nvars; ++j)
8035valscopy[j] = -vals[j];
8038assert( nvars == 0 || valscopy !=
NULL);
8042 for(j = 0; j < nvars; ++j)
8044 if( conshdlrdata->scaleslackvar )
8045absvalsum +=
REALABS(valscopy[j]);
8049 if( ! conshdlrdata->scaleslackvar )
8055 if( activeone || binvar ==
NULL)
8056binvarinternal = binvar;
8065 if( binvarinternal !=
NULL)
8068 if( conshdlrdata->usesameslackvar && conshdlrdata->binslackvarhash ==
NULL)
8073 if( conshdlrdata->binslackvarhash !=
NULL&&
SCIPhashmapExists(conshdlrdata->binslackvarhash, (
void*) binvarinternal) )
8083assert( ! infeasible );
8100 if( conshdlrdata->binslackvarhash !=
NULL)
8118assert( slackvar !=
NULL);
8121 if( conshdlrdata->nolinconscont )
8125assert( ! conshdlrdata->generatebilinear );
8128 for(j = 0; j < nvars; ++j)
8141linconsactive =
FALSE;
8148 if( linconsactive )
8161 if( ! lessthanineq )
8169 if( conshdlrdata->scaleslackvar && nvars > 0 )
8171absvalsum = absvalsum/((
SCIP_Real) nvars);
8185 if( conshdlrdata->generatebilinear )
8190 SCIP_CALL(
SCIPcreateConsQuadraticNonlinear(
scip, cons, name, 0,
NULL,
NULL, 1, &binvarinternal, &slackvar, &val, 0.0, 0.0,
8197binvar, activeone, lessthanineq, slackvar, lincons, linconsactive) );
8198assert( consdata !=
NULL);
8202 SCIP_CALL(
SCIPcreateCons(
scip, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,
8203local, modifiable, dynamic, removable, stickingatnode) );
8208 if( linconsactive )
8215 if( conshdlrdata->sepaalternativelp )
8217 if( conshdlrdata->binvarhash ==
NULL)
8223assert( conshdlrdata->binvarhash !=
NULL);
8312assert( lincons !=
NULL);
8313assert( binvar !=
NULL);
8314assert( slackvar !=
NULL);
8326 if( conshdlr ==
NULL)
8333assert( conshdlrdata !=
NULL);
8335 if( conshdlrdata->nolinconscont && ! conshdlrdata->sepaalternativelp )
8337 SCIPerrorMessage(
"constraint handler <%s>: need parameter <sepaalternativelp> to be true if parameter <nolinconscont> is true.\n",
CONSHDLR_NAME);
8345 if( conshdlrdata->nolinconscont )
8356 for(v = 0; v < nvars; ++v)
8369linconsactive =
FALSE;
8377 if( conshdlrdata->generatebilinear )
8384binvarinternal = binvar;
8392 SCIP_CALL(
SCIPcreateConsQuadraticNonlinear(
scip, cons, name, 0,
NULL,
NULL, 1, &binvarinternal, &slackvar, &val, 0.0, 0.0,
8399binvar, activeone,
TRUE, slackvar, lincons, linconsactive) );
8400assert( consdata !=
NULL);
8403 SCIP_CALL(
SCIPcreateCons(
scip, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,
8404local, modifiable, dynamic, removable, stickingatnode) );
8460enforce, check, propagate, local, dynamic, removable, stickingatnode);
8557assert( lincons !=
NULL);
8558assert( binvar !=
NULL);
8570 if( conshdlr ==
NULL)
8577assert( conshdlrdata !=
NULL);
8579 if( conshdlrdata->nolinconscont && ! conshdlrdata->sepaalternativelp )
8581 SCIPerrorMessage(
"constraint handler <%s>: need parameter <sepaalternativelp> to be true if parameter <nolinconscont> is true.\n",
CONSHDLR_NAME);
8598 for(j = 0; j < nvars; ++j)
8618binvarinternal = binvar;
8627 if( conshdlrdata->usesameslackvar && conshdlrdata->binslackvarhash ==
NULL)
8632 if( conshdlrdata->binslackvarhash !=
NULL&&
SCIPhashmapExists(conshdlrdata->binslackvarhash, (
void*) binvarinternal) )
8643assert( ! infeasible );
8659 if( conshdlrdata->binslackvarhash !=
NULL)
8664assert( slackvar !=
NULL);
8667 if( conshdlrdata->nolinconscont )
8675 for(j = 0; j < nvars; ++j)
8688linconsactive =
FALSE;
8704 if( conshdlrdata->generatebilinear )
8709 SCIP_CALL(
SCIPcreateConsQuadraticNonlinear(
scip, cons, name, 0,
NULL,
NULL, 1, &binvarinternal, &slackvar, &val, 0.0, 0.0,
8716binvar, activeone,
TRUE, slackvar, lincons, linconsactive) );
8717assert( consdata !=
NULL);
8720 SCIP_CALL(
SCIPcreateCons(
scip, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,
8721local, modifiable, dynamic, removable, stickingatnode) );
8775enforce, check, propagate, local, dynamic, removable, stickingatnode);
8789assert( cons !=
NULL);
8793assert( consdata !=
NULL);
8796 if( !consdata->lessthanineq )
8807assert( ! infeasible );
8821assert( cons !=
NULL);
8825assert( consdata !=
NULL);
8827 returnconsdata->lincons;
8848assert( cons !=
NULL);
8853assert( conshdlrdata !=
NULL);
8856assert( consdata !=
NULL);
8859assert( consdata->lincons !=
NULL);
8863assert( lincons !=
NULL);
8864consdata->lincons = lincons;
8865consdata->linconsactive =
TRUE;
8869 if( conshdlrdata->nolinconscont )
8879assert( vars !=
NULL);
8882 for(v = 0; v < nvars; ++v)
8895consdata->linconsactive =
FALSE;
8908assert( cons !=
NULL);
8912assert( consdata !=
NULL);
8914 returnconsdata->activeone;
8925assert( cons !=
NULL);
8929assert( consdata !=
NULL);
8931 returnconsdata->binvar;
8942assert(cons !=
NULL);
8946assert(consdata !=
NULL);
8947binvar = consdata->binvar;
8949 if( ! consdata->activeone )
8951assert(binvar !=
NULL);
8965assert( cons !=
NULL);
8966assert( binvar !=
NULL);
8970assert( consdata !=
NULL);
8980 if( consdata->binvar !=
NULL)
8997assert( var !=
NULL);
8998 if( ! consdata->activeone )
9001consdata->binvar = var;
9004assert( conshdlr !=
NULL);
9007assert( conshdlrdata !=
NULL);
9008assert( conshdlrdata->eventhdlrbound !=
NULL);
9009assert( conshdlrdata->eventhdlrrestart !=
NULL);
9012 if( consdata->linconsactive )
9018 if( conshdlrdata->forcerestart )
9025++(consdata->nfixednonzero);
9029 if( ! consdata->activeone )
9031consdata->binvar = binvar;
9044assert( cons !=
NULL);
9048assert( consdata !=
NULL);
9050 returnconsdata->slackvar;
9072assert( cons !=
NULL);
9076assert( consdata !=
NULL);
9081assert( consdata->slackvar !=
NULL);
9097assert( cons !=
NULL);
9104assert( consdata !=
NULL);
9106 if( consdata->linconsactive )
9108assert( consdata->slackvar !=
NULL);
9109assert( consdata->binvar !=
NULL);
9164assert( cons !=
NULL);
9166assert( sol !=
NULL);
9167assert( changed !=
NULL);
9175assert( cons !=
NULL);
9177assert( consdata !=
NULL);
9180 if( ! consdata->linconsactive )
9183lincons = consdata->lincons;
9184assert( lincons !=
NULL);
9189slackvar = consdata->slackvar;
9190binvar = consdata->binvar;
9191assert( slackvar !=
NULL);
9192assert( binvar !=
NULL);
9201 for(v = 0; v < nlinvars; ++v)
9205 if( var != slackvar )
9208slackcoef = linvals[v];
9216assert( slackcoef != 0.0 );
9229val = (val - sum)/slackcoef;
9232 if( slackcoef < 0 )
9330assert( conshdlr !=
NULL);
9332assert( sol !=
NULL);
9333assert( changed !=
NULL);
9344 for(c = 0; c < nconss; ++c)
9348assert( conss[c] !=
NULL);
9351assert( consdata !=
NULL);
9354 if( ! consdata->linconsactive )
9358*changed = *changed || chg;
9374assert( lincons !=
NULL);
9382assert( conshdlrdata !=
NULL);
9385assert( conshdlrdata->naddlincons+1 <= conshdlrdata->maxaddlincons );
9387conshdlrdata->addlincons[conshdlrdata->naddlincons++] = lincons;
9406assert( row !=
NULL);
9415assert( conshdlrdata !=
NULL);
9418 if( ! conshdlrdata->sepaalternativelp )
static SCIP_RETCODE branchCons(SCIP *scip, SCIP_CONS *cons, SCIP_RESULT *result)
#define DEFAULT_FORCERESTART
static SCIP_DECL_CONSCHECK(consCheckIndicator)
#define DEFAULT_TRYSOLUTIONS
#define EVENTHDLR_RESTART_NAME
static SCIP_RETCODE addAltLPRow(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_ROW *row, SCIP_Real objcoef, int *colindex)
#define CONSHDLR_NEEDSCONS
#define CONSHDLR_SEPAFREQ
#define CONFLICTHDLR_PRIORITY
#define SCIP_CALL_PARAM(x)
static SCIP_DECL_CONSCOPY(consCopyIndicator)
static SCIP_DECL_CONSSEPALP(consSepalpIndicator)
static SCIP_DECL_CONSPARSE(consParseIndicator)
#define CONFLICTHDLR_NAME
static SCIP_DECL_CONSENFOPS(consEnfopsIndicator)
#define CONSHDLR_CHECKPRIORITY
#define DEFAULT_ADDCOUPLINGCONS
#define MAXROUNDINGROUNDS
#define DEFAULT_ADDOPPOSITE
static SCIP_RETCODE checkLPBoundsClean(SCIP *scip, SCIP_LPI *lp, int nconss, SCIP_CONS **conss)
static SCIP_DECL_CONSPRINT(consPrintIndicator)
static SCIP_RETCODE propIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_CONSDATA *consdata, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_Bool dualreductions, SCIP_Bool addopposite, SCIP_Bool *cutoff, int *nGen)
static SCIP_RETCODE updateFirstRowGlobal(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata)
static SCIP_DECL_CONSEXIT(consExitIndicator)
static SCIP_RETCODE fixAltLPVariables(SCIP *scip, SCIP_LPI *lp, int nconss, SCIP_CONS **conss, SCIP_Bool *S)
static SCIP_RETCODE createVarUbs(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_CONS **conss, int nconss, int *ngen)
static SCIP_DECL_CONSEXITSOL(consExitsolIndicator)
#define CONSHDLR_PROP_TIMING
#define DEFAULT_USEOBJECTIVECUT
static SCIP_RETCODE addAltLPConstraint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *lincons, SCIP_VAR *slackvar, SCIP_Real objcoef, int *colindex)
static SCIP_RETCODE extendToCover(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_LPI *lp, SCIP_SOL *sol, SCIP_ENFOSEPATYPE enfosepatype, SCIP_Bool removable, SCIP_Bool genlogicor, int nconss, SCIP_CONS **conss, SCIP_Bool *S, int *size, SCIP_Real *value, SCIP_Bool *error, SCIP_Bool *cutoff, int *nGen)
#define CONFLICTHDLR_DESC
static SCIP_RETCODE scaleFirstRow(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata)
static SCIP_RETCODE separateIISRounding(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, SCIP_ENFOSEPATYPE enfosepatype, int nconss, SCIP_CONS **conss, int maxsepacuts, SCIP_Bool *cutoff, int *nGen)
static SCIP_DECL_CONSFREE(consFreeIndicator)
static SCIP_DECL_CONSGETNVARS(consGetNVarsIndicator)
static SCIP_Real varGetObjDelta(SCIP_VAR *var)
#define CONSHDLR_MAXPREROUNDS
static SCIP_RETCODE addAltLPColumn(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_VAR *slackvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhscoef, SCIP_Real objcoef, SCIP_Real sign, SCIP_Bool colfree, int *colindex)
#define DEFAULT_MAXCONDITIONALTLP
static SCIP_RETCODE presolRoundIndicator(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_CONS *cons, SCIP_CONSDATA *consdata, SCIP_Bool dualreductions, SCIP_Bool *cutoff, SCIP_Bool *success, int *ndelconss, int *nfixedvars)
#define DEFAULT_SCALESLACKVAR
static SCIP_RETCODE checkAltLPInfeasible(SCIP *scip, SCIP_LPI *lp, SCIP_Real maxcondition, SCIP_Bool primal, SCIP_Bool *infeasible, SCIP_Bool *error)
static SCIP_DECL_CONSDISABLE(consDisableIndicator)
#define CONSHDLR_SEPAPRIORITY
static SCIP_RETCODE setAltLPObj(SCIP *scip, SCIP_LPI *lp, SCIP_SOL *sol, int nconss, SCIP_CONS **conss)
static SCIP_RETCODE checkIISlocal(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_Real *vector, SCIP_Bool *isLocal)
#define DEFAULT_USESAMESLACKVAR
static SCIP_DECL_CONSSEPASOL(consSepasolIndicator)
static SCIP_DECL_LINCONSUPGD(linconsUpgdIndicator)
#define DEFAULT_SEPAPERSPLOCAL
static SCIP_DECL_CONSDELETE(consDeleteIndicator)
static SCIP_DECL_CONFLICTFREE(conflictFreeIndicator)
static SCIP_RETCODE unfixAltLPVariables(SCIP *scip, SCIP_LPI *lp, int nconss, SCIP_CONS **conss, SCIP_Bool *S)
static SCIP_RETCODE separatePerspective(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, int nconss, SCIP_CONS **conss, int maxsepacuts, int *nGen)
#define DEFAULT_SEPAPERSPECTIVE
static SCIP_DECL_CONSGETVARS(consGetVarsIndicator)
static SCIP_RETCODE enforceCuts(SCIP *scip, SCIP_CONSHDLR *conshdlr, int nconss, SCIP_CONS **conss, SCIP_SOL *sol, SCIP_ENFOSEPATYPE enfosepatype, SCIP_Bool genlogicor, SCIP_Bool *cutoff, int *nGen)
#define DEFAULT_CONFLICTSUPGRADE
static SCIP_RETCODE initAlternativeLP(SCIP *scip, SCIP_CONSHDLR *conshdlr)
#define DEFAULT_MAXCOUPLINGVALUE
#define DEFAULT_SEPACOUPLINGVALUE
static SCIP_DECL_CONSINITSOL(consInitsolIndicator)
static SCIP_RETCODE addSymmetryInformation(SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
#define DEFAULT_REMOVEINDICATORS
#define DEFAULT_UPGRADELINEAR
static SCIP_DECL_CONSLOCK(consLockIndicator)
#define EVENTHDLR_LINCONSBOUND_DESC
#define DEFAULT_MAXSEPACUTSROOT
static SCIP_DECL_CONSINITPRE(consInitpreIndicator)
static SCIP_DECL_CONSTRANS(consTransIndicator)
static SCIP_RETCODE updateObjUpperbound(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata)
static SCIP_RETCODE checkTransferBoolParam(SCIP *scip, SCIP_PARAM *param, const char *name, SCIP_Bool newvalue, SCIP_Bool *value)
#define EVENTHDLR_BOUND_DESC
static SCIP_RETCODE separateIndicators(SCIP *scip, SCIP_CONSHDLR *conshdlr, int nconss, int nusefulconss, SCIP_CONS **conss, SCIP_SOL *sol, SCIP_ENFOSEPATYPE enfosepatype, SCIP_RESULT *result)
static SCIP_RETCODE fixAltLPVariable(SCIP_LPI *lp, int ind)
enum SCIP_enfosepatype SCIP_ENFOSEPATYPE
#define DEFAULT_SEPACOUPLINGLOCAL
#define EVENTHDLR_LINCONSBOUND_NAME
#define DEFAULT_UPDATEBOUNDS
static SCIP_DECL_CONSINITLP(consInitlpIndicator)
#define DEFAULT_RESTARTFRAC
static SCIP_RETCODE enforceIndicators(SCIP *scip, SCIP_CONSHDLR *conshdlr, int nconss, SCIP_CONS **conss, SCIP_SOL *sol, SCIP_ENFOSEPATYPE enfosepatype, SCIP_Bool genlogicor, SCIP_RESULT *result)
#define CONSHDLR_PROPFREQ
#define DEFAULT_SEPAALTERNATIVELP
static void initConshdlrData(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata)
#define DEFAULT_ENFORCECUTS
#define CONSHDLR_PRESOLTIMING
static SCIP_RETCODE unfixAltLPVariable(SCIP_LPI *lp, int ind)
static SCIP_RETCODE consdataEnsureAddLinConsSize(SCIP *scip, SCIP_CONSHDLR *conshdlr, int num)
static SCIP_DECL_CONSHDLRCOPY(conshdlrCopyIndicator)
#define DEFAULT_MAXSEPACUTS
static SCIP_RETCODE setAltLPObjZero(SCIP *scip, SCIP_LPI *lp, int nconss, SCIP_CONS **conss)
#define EVENTHDLR_BOUND_NAME
#define DEFAULT_BRANCHINDICATORS
static SCIP_DECL_CONSGETPERMSYMGRAPH(consGetPermsymGraphIndicator)
#define CONSHDLR_EAGERFREQ
static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(consGetSignedPermsymGraphIndicator)
static SCIP_RETCODE consdataCreate(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata, const char *consname, SCIP_CONSDATA **consdata, SCIP_EVENTHDLR *eventhdlrrestart, SCIP_VAR *binvar, SCIP_Bool activeone, SCIP_Bool lessthanineq, SCIP_VAR *slackvar, SCIP_CONS *lincons, SCIP_Bool linconsactive)
static SCIP_DECL_CONSRESPROP(consRespropIndicator)
static SCIP_DECL_CONSGETDIVEBDCHGS(consGetDiveBdChgsIndicator)
#define DEFAULT_USEOTHERCONSS
#define CONSHDLR_ENFOPRIORITY
#define DEFAULT_DUALREDUCTIONS
static SCIP_DECL_CONSENABLE(consEnableIndicator)
static SCIP_RETCODE deleteAltLPConstraint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
#define LINCONSUPGD_PRIORITY
#define DEFAULT_GENERATEBILINEAR
#define CONSHDLR_DELAYSEPA
static SCIP_RETCODE addObjcut(SCIP *scip, SCIP_CONSHDLR *conshdlr)
#define DEFAULT_GENLOGICOR
#define DEFAULT_TRYSOLFROMCOVER
static SCIP_DECL_CONSENFOLP(consEnfolpIndicator)
static SCIP_DECL_CONSENFORELAX(consEnforelaxIndicator)
#define EVENTHDLR_RESTART_DESC
static SCIP_DECL_CONSPROP(consPropIndicator)
static SCIP_DECL_CONSPRESOL(consPresolIndicator)
static SCIP_DECL_EVENTEXEC(eventExecIndicatorBound)
#define DEFAULT_MAXSEPANONVIOLATED
#define DEFAULT_ADDCOUPLING
#define DEFAULT_SEPACOUPLINGCUTS
static SCIP_RETCODE updateFirstRow(SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata)
static SCIP_DECL_PARAMCHGD(paramChangedIndicator)
static SCIP_DECL_CONSINIT(consInitIndicator)
#define CONSHDLR_DELAYPROP
#define DEFAULT_NOLINCONSCONT
static SCIP_DECL_CONFLICTEXEC(conflictExecIndicator)
constraint handler for indicator constraints
Constraint handler for linear constraints in their most general form, .
Constraint handler for logicor constraints (equivalent to set covering, but algorithms are suited fo...
constraint handler for nonlinear constraints specified by algebraic expressions
Constraint handler for variable bound constraints .
#define SCIP_LONGINT_FORMAT
product expression handler
variable expression handler
SCIP_RETCODE SCIPcreateConsIndicatorGenericLinConsPure(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_Bool activeone, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsIndicatorLinCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPincludeLinconsUpgrade(SCIP *scip, SCIP_DECL_LINCONSUPGD((*linconsupgd)), int priority, const char *conshdlrname)
SCIP_RETCODE SCIPcreateConsBasicIndicator(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs)
SCIP_VAR * SCIPgetBinaryVarIndicatorGeneric(SCIP_CONS *cons)
SCIP_RETCODE SCIPsetSlackVarUb(SCIP *scip, SCIP_CONS *cons, SCIP_Real ub)
SCIP_Real SCIPgetRhsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVarsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddCoefLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPaddRowIndicator(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_ROW *row)
SCIP_Real SCIPgetLhsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsIndicatorGeneric(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs, SCIP_Bool activeone, SCIP_Bool lessthanineq, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
int SCIPgetNVarsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddLinearConsIndicator(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *lincons)
SCIP_RETCODE SCIPsetLinearConsIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_CONS *lincons)
SCIP_RETCODE SCIPcreateConsIndicator(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_Real * SCIPgetValsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcreateConsIndicatorGenericLinCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar, SCIP_Bool activeone, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsBasicIndicatorLinCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar)
SCIP_RETCODE SCIPmakeIndicatorsFeasible(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, SCIP_Bool *changed)
SCIP_VAR * SCIPgetBinaryVarIndicator(SCIP_CONS *cons)
SCIP_VAR * SCIPgetSlackVarIndicator(SCIP_CONS *cons)
SCIP_CONS * SCIPgetLinearConsIndicator(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_RETCODE SCIPcreateConsLogicor(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 SCIPsetBinaryVarIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *binvar)
SCIP_RETCODE SCIPmakeIndicatorFeasible(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *changed)
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 SCIPcreateConsQuadraticNonlinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadterms, SCIP_VAR **quadvars1, SCIP_VAR **quadvars2, SCIP_Real *quadcoefs, 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_RETCODE SCIPcreateConsIndicatorLinConsPure(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_Bool SCIPisViolatedIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
SCIP_RETCODE SCIPaddVarIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_Bool SCIPgetActiveOnIndicator(SCIP_CONS *cons)
SCIP_RETCODE SCIPincludeConshdlrIndicator(SCIP *scip)
SCIP_RETCODE SCIPgetConsCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_CONS *sourcecons, SCIP_CONS **targetcons, SCIP_CONSHDLR *sourceconshdlr, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *name, 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_RETCODE SCIPgetVarCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR *sourcevar, SCIP_VAR **targetvar, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *success)
SCIP_RETCODE SCIPcreateExprVar(SCIP *scip, SCIP_EXPR **expr, SCIP_VAR *var, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_RETCODE SCIPcreateExprProduct(SCIP *scip, SCIP_EXPR **expr, int nchildren, SCIP_EXPR **children, SCIP_Real coefficient, SCIP_DECL_EXPR_OWNERCREATE((*ownercreate)), void *ownercreatedata)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
int SCIPgetNIntVars(SCIP *scip)
SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
SCIP_CONS ** SCIPgetConss(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNConss(SCIP *scip)
SCIP_VAR ** SCIPgetVars(SCIP *scip)
int SCIPgetNOrigVars(SCIP *scip)
int SCIPgetNBinVars(SCIP *scip)
SCIP_Bool SCIPisObjIntegral(SCIP *scip)
SCIP_VAR * SCIPfindVar(SCIP *scip, const char *name)
SCIP_CONS * SCIPfindCons(SCIP *scip, const char *name)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void SCIPhashmapPrintStatistics(SCIP_HASHMAP *hashmap, SCIP_MESSAGEHDLR *messagehdlr)
int SCIPhashmapGetImageInt(SCIP_HASHMAP *hashmap, void *origin)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsert(SCIP_HASHMAP *hashmap, void *origin, void *image)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsertInt(SCIP_HASHMAP *hashmap, void *origin, int image)
SCIP_RETCODE SCIPhashmapSetImageInt(SCIP_HASHMAP *hashmap, void *origin, int image)
SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs)
SCIP_Real SCIPlpiInfinity(SCIP_LPI *lpi)
SCIP_Bool SCIPlpiIsInfinity(SCIP_LPI *lpi, SCIP_Real val)
SCIP_Bool SCIPlpiExistsPrimalRay(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiAddRows(SCIP_LPI *lpi, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)
SCIP_RETCODE SCIPlpiWriteLP(SCIP_LPI *lpi, const char *fname)
SCIP_RETCODE SCIPlpiGetBounds(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lbs, SCIP_Real *ubs)
int SCIPlpiGetInternalStatus(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub)
SCIP_Bool SCIPlpiIsPrimalUnbounded(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiFree(SCIP_LPI **lpi)
SCIP_RETCODE SCIPlpiGetCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real *val)
SCIP_RETCODE SCIPlpiGetRealSolQuality(SCIP_LPI *lpi, SCIP_LPSOLQUALITY qualityindicator, SCIP_Real *quality)
SCIP_RETCODE SCIPlpiSetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int ival)
SCIP_RETCODE SCIPlpiGetRows(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhs, SCIP_Real *rhs, int *nnonz, int *beg, int *ind, SCIP_Real *val)
SCIP_Bool SCIPlpiIsOptimal(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost)
SCIP_Bool SCIPlpiIsPrimalInfeasible(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiSolveDual(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiAddCols(SCIP_LPI *lpi, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)
SCIP_RETCODE SCIPlpiSolvePrimal(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)
SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *obj)
SCIP_Bool SCIPlpiIsStable(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetNCols(SCIP_LPI *lpi, int *ncols)
SCIP_RETCODE SCIPlpiGetNRows(SCIP_LPI *lpi, int *nrows)
SCIP_RETCODE SCIPlpiChgCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real newval)
SCIP_RETCODE SCIPdelConsLocal(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPaddConflict(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons, SCIP_NODE *validnode, SCIP_CONFTYPE conftype, SCIP_Bool iscutoffinvolved)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPheurPassSolTrySol(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *sol)
SCIP_RETCODE SCIPheurPassIndicator(SCIP *scip, SCIP_HEUR *heur, int nindconss, SCIP_CONS **indconss, SCIP_Bool *solcand, SCIP_Real obj)
SCIP_Bool SCIPisParamFixed(SCIP *scip, const char *name)
SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
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 SCIPsetIntParam(SCIP *scip, const char *name, int value)
SCIP_RETCODE SCIPchgBoolParam(SCIP *scip, SCIP_PARAM *param, SCIP_Bool value)
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 SCIPgetCharParam(SCIP *scip, const char *name, char *value)
SCIP_BRANCHRULE * SCIPfindBranchrule(SCIP *scip, const char *name)
SCIP_Real SCIPcalcChildEstimate(SCIP *scip, SCIP_VAR *var, SCIP_Real targetvalue)
SCIP_RETCODE SCIPcreateChild(SCIP *scip, SCIP_NODE **node, SCIP_Real nodeselprio, SCIP_Real estimate)
SCIP_VAR * SCIPcolGetVar(SCIP_COL *col)
SCIP_BOUNDTYPE SCIPboundtypeOpposite(SCIP_BOUNDTYPE boundtype)
SCIP_RETCODE SCIPaddConflictLb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
SCIP_RETCODE SCIPinitConflictAnalysis(SCIP *scip, SCIP_CONFTYPE conftype, SCIP_Bool iscutoffinvolved)
SCIP_CONFLICTHDLRDATA * SCIPconflicthdlrGetData(SCIP_CONFLICTHDLR *conflicthdlr)
SCIP_RETCODE SCIPaddConflictUb(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
const char * SCIPconflicthdlrGetName(SCIP_CONFLICTHDLR *conflicthdlr)
SCIP_Bool SCIPisConflictAnalysisApplicable(SCIP *scip)
SCIP_RETCODE SCIPaddConflictBinvar(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPanalyzeConflictCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
SCIP_RETCODE SCIPincludeConflicthdlrBasic(SCIP *scip, SCIP_CONFLICTHDLR **conflicthdlrptr, const char *name, const char *desc, int priority, SCIP_DECL_CONFLICTEXEC((*conflictexec)), SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
SCIP_RETCODE SCIPsetConflicthdlrFree(SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTFREE((*conflictfree)))
SCIP_RETCODE SCIPsetConshdlrParse(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
SCIP_RETCODE SCIPsetConshdlrEnable(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENABLE((*consenable)))
SCIP_RETCODE SCIPsetConshdlrPresol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
SCIP_RETCODE SCIPsetConshdlrInit(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINIT((*consinit)))
SCIP_RETCODE SCIPsetConshdlrGetVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
SCIP_RETCODE SCIPsetConshdlrInitpre(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITPRE((*consinitpre)))
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 SCIPsetConshdlrDisable(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDISABLE((*consdisable)))
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)))
int SCIPconshdlrGetNConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrGetDiveBdChgs(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)))
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrExit(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXIT((*consexit)))
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)))
int SCIPconshdlrGetSepaFreq(SCIP_CONSHDLR *conshdlr)
SCIP_CONS ** SCIPconshdlrGetConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
SCIP_RETCODE SCIPgetConsNVars(SCIP *scip, SCIP_CONS *cons, int *nvars, SCIP_Bool *success)
SCIP_CONSDATA * SCIPconsGetData(SCIP_CONS *cons)
SCIP_RETCODE SCIPenfopsCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_RESULT *result)
void SCIPconsAddUpgradeLocks(SCIP_CONS *cons, int nlocks)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_RETCODE SCIPenfolpCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool solinfeasible, SCIP_RESULT *result)
SCIP_RETCODE SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)
int SCIPconsGetNUpgradeLocks(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)
SCIP_RETCODE SCIPsepalpCons(SCIP *scip, SCIP_CONS *cons, SCIP_RESULT *result)
SCIP_Bool SCIPconsIsTransformed(SCIP_CONS *cons)
SCIP_RETCODE SCIPgetConsVars(SCIP *scip, SCIP_CONS *cons, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
SCIP_Bool SCIPconsIsEnforced(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)
SCIP_Bool SCIPconsIsEnabled(SCIP_CONS *cons)
SCIP_RETCODE SCIPdisableCons(SCIP *scip, SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_RETCODE SCIPresetConsAge(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsModifiable(SCIP_CONS *cons)
SCIP_RETCODE SCIPgetTransformedCons(SCIP *scip, SCIP_CONS *cons, SCIP_CONS **transcons)
SCIP_RETCODE SCIPenforelaxCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool solinfeasible, SCIP_RESULT *result)
SCIP_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)
SCIP_RETCODE SCIPsepasolCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_RESULT *result)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_RETCODE SCIPcaptureCons(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPincConsAge(SCIP *scip, SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
SCIP_RETCODE SCIPaddPoolCut(SCIP *scip, SCIP_ROW *row)
SCIP_Bool SCIPisEfficacious(SCIP *scip, SCIP_Real efficacy)
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)
const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
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)
SCIP_Real SCIPeventGetOldbound(SCIP_EVENT *event)
SCIP_VAR * SCIPeventGetVar(SCIP_EVENT *event)
SCIP_Real SCIPeventGetNewbound(SCIP_EVENT *event)
SCIP_RETCODE SCIPcatchEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPdropEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_RETCODE SCIPreleaseExpr(SCIP *scip, SCIP_EXPR **expr)
SCIP_HEUR * SCIPfindHeur(SCIP *scip, const char *name)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
int SCIPcalcMemGrowSize(SCIP *scip, int num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_RETCODE SCIPaddNlRow(SCIP *scip, SCIP_NLROW *nlrow)
SCIP_Bool SCIPisNLPConstructed(SCIP *scip)
SCIP_RETCODE SCIPreleaseNlRow(SCIP *scip, 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_RETCODE SCIPgetDivesetScore(SCIP *scip, SCIP_DIVESET *diveset, SCIP_DIVETYPE divetype, SCIP_VAR *divecand, SCIP_Real divecandsol, SCIP_Real divecandfrac, SCIP_Real *candscore, SCIP_Bool *roundup)
SCIP_Bool SCIPinProbing(SCIP *scip)
SCIP_RETCODE SCIPaddDiveBoundChange(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Bool preferred)
SCIP_Real SCIProwGetLhs(SCIP_ROW *row)
SCIP_RETCODE SCIPcacheRowExtensions(SCIP *scip, SCIP_ROW *row)
int SCIProwGetNNonz(SCIP_ROW *row)
SCIP_COL ** SCIProwGetCols(SCIP_ROW *row)
SCIP_Real SCIProwGetRhs(SCIP_ROW *row)
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 SCIPflushRowExtensions(SCIP *scip, SCIP_ROW *row)
SCIP_Bool SCIProwIsLocal(SCIP_ROW *row)
SCIP_RETCODE SCIPcreateEmptyRowConshdlr(SCIP *scip, SCIP_ROW **row, SCIP_CONSHDLR *conshdlr, 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)
const char * SCIProwGetName(SCIP_ROW *row)
SCIP_Real SCIPgetRowSolFeasibility(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)
SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
SCIP_Real SCIProwGetConstant(SCIP_ROW *row)
SCIP_RETCODE SCIPaddVarsToRow(SCIP *scip, SCIP_ROW *row, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_Real * SCIProwGetVals(SCIP_ROW *row)
SCIP_RETCODE SCIPcreateSolCopy(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol)
SCIP_RETCODE SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
void SCIPupdateSolConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
SCIP_RETCODE SCIPsetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real val)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
SCIP_RETCODE SCIPrestartSolve(SCIP *scip)
SCIP_Real SCIPgetPrimalbound(SCIP *scip)
SCIP_Real SCIPgetUpperbound(SCIP *scip)
SCIP_Real SCIPgetDualbound(SCIP *scip)
int SCIPgetNRuns(SCIP *scip)
SCIP_Longint SCIPgetNConflictConssApplied(SCIP *scip)
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_Bool SCIPisInfinity(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 SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisNegative(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPceil(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPcutoffbounddelta(SCIP *scip)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasPositive(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPinRepropagation(SCIP *scip)
int SCIPgetDepth(SCIP *scip)
SCIP_RETCODE SCIPvarGetProbvarBound(SCIP_VAR **var, SCIP_Real *bound, SCIP_BOUNDTYPE *boundtype)
SCIP_Bool SCIPvarIsDeleted(SCIP_VAR *var)
SCIP_RETCODE SCIPlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Bool SCIPdoNotMultaggrVar(SCIP *scip, SCIP_VAR *var)
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_RETCODE SCIPchgVarUbNode(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_Real SCIPvarGetAggrScalar(SCIP_VAR *var)
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 SCIPaddVarLocksType(SCIP *scip, SCIP_VAR *var, SCIP_LOCKTYPE locktype, int nlocksdown, int nlocksup)
SCIP_RETCODE SCIPunlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)
SCIP_Real SCIPgetVarUbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_VAR * SCIPbdchginfoGetVar(SCIP_BDCHGINFO *bdchginfo)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_Real SCIPadjustedVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real ub)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarType(SCIP *scip, SCIP_VAR *var, SCIP_VARTYPE vartype, SCIP_Bool *infeasible)
SCIP_Real SCIPgetVarSol(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
SCIP_RETCODE SCIPaddVarImplication(SCIP *scip, SCIP_VAR *var, SCIP_Bool varfixing, SCIP_VAR *implvar, SCIP_BOUNDTYPE impltype, SCIP_Real implbound, SCIP_Bool *infeasible, int *nbdchgs)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)
SCIP_VAR * SCIPvarGetNegationVar(SCIP_VAR *var)
SCIP_RETCODE SCIPcreateVar(SCIP *scip, SCIP_VAR **var, 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 SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPmarkDoNotMultaggrVar(SCIP *scip, 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)
SCIP_Real SCIPgetVarLbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_RETCODE SCIPchgVarLbNode(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPvarGetProbvarBinary(SCIP_VAR **var, SCIP_Bool *negated)
SCIP_BOUNDTYPE SCIPbdchginfoGetBoundtype(SCIP_BDCHGINFO *bdchginfo)
SCIP_Real SCIPbdchginfoGetNewbound(SCIP_BDCHGINFO *bdchginfo)
int SCIPvarGetNLocksDownType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)
SCIP_Bool SCIPallowWeakDualReds(SCIP *scip)
SCIP_RETCODE SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
SCIP_Bool SCIPallowStrongDualReds(SCIP *scip)
SCIP_VAR * SCIPvarGetAggrVar(SCIP_VAR *var)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_RETCODE SCIPaddSymgraphEdge(SCIP *scip, SYM_GRAPH *graph, int first, int second, SCIP_Bool hasval, SCIP_Real val)
SCIP_RETCODE SCIPaddSymgraphOpnode(SCIP *scip, SYM_GRAPH *graph, int op, int *nodeidx)
SCIP_RETCODE SCIPgetSymActiveVariables(SCIP *scip, SYM_SYMTYPE symtype, SCIP_VAR ***vars, SCIP_Real **scalars, int *nvars, SCIP_Real *constant, SCIP_Bool transformed)
int SCIPgetSymgraphVarnodeidx(SCIP *scip, SYM_GRAPH *graph, SCIP_VAR *var)
SCIP_RETCODE SCIPaddSymgraphConsnode(SCIP *scip, SYM_GRAPH *graph, SCIP_CONS *cons, SCIP_Real lhs, SCIP_Real rhs, int *nodeidx)
SCIP_RETCODE SCIPaddSymgraphVarAggregation(SCIP *scip, SYM_GRAPH *graph, int rootidx, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Real constant)
int SCIPgetSymgraphNegatedVarnodeidx(SCIP *scip, SYM_GRAPH *graph, SCIP_VAR *var)
handle partial solutions for linear problems with indicators and otherwise continuous variables
primal heuristic that tries a given solution
interface methods for specific LP solvers
static const char * paramname[]
memory allocation routines
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
const char * SCIPparamGetName(SCIP_PARAM *param)
SCIP_PARAMTYPE SCIPparamGetType(SCIP_PARAM *param)
public methods for conflict analysis handlers
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
public methods for handling parameter settings
public methods for problem variables
public methods for branching rule plugins and branching
public methods for conflict handler plugins and conflict analysis
public methods for constraint handler plugins and constraints
public methods for problem copies
public methods for cuts and aggregation rows
public methods for event handler plugins and event handlers
public methods for primal heuristic plugins and divesets
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 querying solving statistics
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_ConflicthdlrData SCIP_CONFLICTHDLRDATA
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
struct SCIP_ConsData SCIP_CONSDATA
#define SCIP_EVENTTYPE_BOUNDCHANGED
#define SCIP_EVENTTYPE_GUBCHANGED
#define SCIP_EVENTTYPE_GBDCHANGED
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_EVENTTYPE_UBTIGHTENED
#define SCIP_EVENTTYPE_LBRELAXED
#define SCIP_EVENTTYPE_BESTSOLFOUND
#define SCIP_EVENTTYPE_GLBCHANGED
#define SCIP_EVENTTYPE_LBTIGHTENED
#define SCIP_EVENTTYPE_UBRELAXED
#define SCIP_DIVETYPE_INTEGRALITY
@ SCIP_BRANCHDIR_DOWNWARDS
enum SCIP_BoundType SCIP_BOUNDTYPE
type definitions for specific LP solvers interface
@ SCIP_LPSOLQUALITY_ESTIMCONDITION
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STAGE_INITPRESOLVE
@ SCIP_STAGE_TRANSFORMING
enum SYM_Symtype SYM_SYMTYPE
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_VARSTATUS_MULTAGGR
@ SCIP_VARSTATUS_AGGREGATED
enum SCIP_Vartype SCIP_VARTYPE
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