A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://scip.zib.de/doc/html/cons__indicator_8c_source.php below:

SCIP Doxygen Documentation: cons_indicator.c Source File

251#define CONSHDLR_NAME "indicator" 252#define CONSHDLR_DESC "indicator constraint handler" 253#define CONSHDLR_SEPAPRIORITY 10 254#define CONSHDLR_ENFOPRIORITY -100 255#define CONSHDLR_CHECKPRIORITY -6000000 256#define CONSHDLR_SEPAFREQ 10 257#define CONSHDLR_PROPFREQ 1 258#define CONSHDLR_EAGERFREQ 100 260#define CONSHDLR_MAXPREROUNDS -1 261#define CONSHDLR_DELAYSEPA FALSE 262#define CONSHDLR_DELAYPROP FALSE 263#define CONSHDLR_NEEDSCONS TRUE 265#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_FAST 266#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP 270#define EVENTHDLR_BOUND_NAME "indicatorbound" 271#define EVENTHDLR_BOUND_DESC "bound change event handler for indicator constraints" 273#define EVENTHDLR_LINCONSBOUND_NAME "indicatorlinconsbound" 274#define EVENTHDLR_LINCONSBOUND_DESC "bound change event handler for lincons of indicator constraints" 276#define EVENTHDLR_RESTART_NAME "indicatorrestart" 277#define EVENTHDLR_RESTART_DESC "force restart if absolute gap is 1 or enough binary variables have been fixed" 281#define CONFLICTHDLR_NAME "indicatorconflict" 282#define CONFLICTHDLR_DESC "replace slack variables and generate logicor constraints" 283#define CONFLICTHDLR_PRIORITY 200000 286#define LINCONSUPGD_PRIORITY +100000 289#define DEFAULT_BRANCHINDICATORS FALSE 290#define DEFAULT_GENLOGICOR FALSE 291#define DEFAULT_ADDCOUPLING TRUE 292#define DEFAULT_MAXCOUPLINGVALUE 1e4 293#define DEFAULT_ADDCOUPLINGCONS FALSE 294#define DEFAULT_SEPACOUPLINGCUTS TRUE 295#define DEFAULT_SEPACOUPLINGLOCAL FALSE 296#define DEFAULT_SEPACOUPLINGVALUE 1e4 297#define DEFAULT_SEPAALTERNATIVELP FALSE 298#define DEFAULT_SEPAPERSPECTIVE FALSE 299#define DEFAULT_SEPAPERSPLOCAL TRUE 300#define DEFAULT_MAXSEPANONVIOLATED 3 301#define DEFAULT_TRYSOLFROMCOVER FALSE 302#define DEFAULT_UPGRADELINEAR FALSE 303#define DEFAULT_USEOTHERCONSS FALSE 304#define DEFAULT_USEOBJECTIVECUT FALSE 305#define DEFAULT_UPDATEBOUNDS FALSE 306#define DEFAULT_MAXCONDITIONALTLP 0.0 307#define DEFAULT_MAXSEPACUTS 100 308#define DEFAULT_MAXSEPACUTSROOT 2000 309#define DEFAULT_REMOVEINDICATORS FALSE 310#define DEFAULT_GENERATEBILINEAR FALSE 311#define DEFAULT_SCALESLACKVAR FALSE 312#define DEFAULT_NOLINCONSCONT FALSE 313#define DEFAULT_TRYSOLUTIONS TRUE 314#define DEFAULT_ENFORCECUTS FALSE 315#define DEFAULT_DUALREDUCTIONS TRUE 316#define DEFAULT_ADDOPPOSITE FALSE 317#define DEFAULT_CONFLICTSUPGRADE FALSE 318#define DEFAULT_FORCERESTART FALSE 319#define DEFAULT_RESTARTFRAC 0.9 320#define DEFAULT_USESAMESLACKVAR FALSE 324#define OBJEPSILON 0.001 325#define SEPAALTTHRESHOLD 10 326#define MAXROUNDINGROUNDS 1 342 unsigned int

linconsactive:1;

343 unsigned int

implicationadded:1;

344 unsigned int

slacktypechecked:1;

349struct

SCIP_ConshdlrData

378 int

maxroundingrounds;

402 int

maxsepanonviolated;

431struct

SCIP_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_); \

496

assert(cons !=

NULL

);

497

assert(graph !=

NULL

);

498

assert(success !=

NULL

);

501

assert(consdata !=

NULL

);

503

lincons = consdata->lincons;

504

assert(lincons !=

NULL

);

520 for

( i = 0; i < nvarslincons; ++i )

522

vars[i] = linvars[i];

523

vals[i] = linvals[i];

525

nlocvars = nvarslincons;

547

vars[0] = consdata->binvar;

563 else if

( nlocvars == 1 )

584

vars[0] = consdata->slackvar;

600 else if

( nlocvars == 1 )

632

assert( eventhdlr !=

NULL

);

633

assert( eventdata !=

NULL

);

635

assert( event !=

NULL

);

638

assert( cons !=

NULL

);

640

assert( consdata !=

NULL

);

641

assert( 0 <= consdata->nfixednonzero && consdata->nfixednonzero <= 2 );

642

assert( consdata->linconsactive );

645

assert( conshdlr !=

NULL

);

647

assert( 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"

,

708

assert( 0 <= consdata->nfixednonzero && consdata->nfixednonzero <= 2 );

711

conshdlrdata->boundhaschanged =

TRUE

;

725

assert( eventhdlr !=

NULL

);

726

assert( eventdata !=

NULL

);

728

assert( event !=

NULL

);

731#ifdef SCIP_MORE_DEBUG 732 SCIPdebugMsg

(

scip

,

"Changed upper bound of variable <%s> from %g to %g.\n"

,

738

assert( conshdlrdata !=

NULL

);

739

conshdlrdata->linconsboundschanged =

TRUE

;

760

assert( eventhdlr !=

NULL

);

761

assert( eventdata !=

NULL

);

763

assert( event !=

NULL

);

766

assert( conshdlrdata !=

NULL

);

767

assert( 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 )

813

conshdlrdata->performedrestart =

TRUE

;

820

assert(

SCIPisGE

(

scip

, conshdlrdata->minabsobj, 1.0 ) );

825 if

( ! conshdlrdata->objindicatoronly )

842

conshdlrdata->performedrestart =

TRUE

;

865

assert( conflicthdlr !=

NULL

);

890

assert( conflicthdlr !=

NULL

);

892

assert( bdchginfos !=

NULL

|| nbdchginfos == 0 );

893

assert( result !=

NULL

);

905

assert( conflicthdlrdata !=

NULL

);

915 for

(i = 0; i < nbdchginfos; ++i)

917

assert( bdchginfos !=

NULL

);

918

assert( bdchginfos[i] !=

NULL

);

947 if

( haveslack && i == nbdchginfos )

954 SCIPdebugMsg

(

scip

,

"Found conflict involving slack variables that can be remodelled.\n"

);

956

assert( conflicthdlrdata->conshdlr !=

NULL

);

964 for

(i = 0; i < nbdchginfos; ++i)

966

assert( bdchginfos !=

NULL

);

967

assert( bdchginfos[i] !=

NULL

);

980 for

(j = 0; j < nconss; ++j)

982

assert( conss[j] !=

NULL

);

984

assert( slackvar !=

NULL

);

987 if

( slackvar == var )

1015 if

( i == nbdchginfos )

1064

assert( param !=

NULL

);

1065

assert( name !=

NULL

);

1066

assert( value !=

NULL

);

1071 if

( *value == newvalue )

1106

assert( param !=

NULL

);

1110

assert( conshdlr !=

NULL

);

1114

assert( conshdlrdata !=

NULL

);

1126#ifdef SCIP_ENABLE_IISCHECK 1148

assert( vector !=

NULL

);

1154

assert( conshdlr !=

NULL

);

1157

assert( conshdlrdata !=

NULL

);

1169 for

(c = 0; c < nconss; ++c)

1173

assert( consdata !=

NULL

);

1196

lincons = consdata->lincons;

1197

assert( lincons !=

NULL

);

1201

slackvar = consdata->slackvar;

1202

assert( slackvar !=

NULL

);

1223

linvals[0] = scalar;

1253 for

(v = 0; v < nlinvars; ++v)

1257

assert( var !=

NULL

);

1260 if

( var == slackvar )

1273

newvars[nnewvars++] = var;

1291 for

(v = 0; v < nnewvars; ++v)

1305 for

(v = nnewvars - 1; v >= 0; --v)

1317 for

(v = 0; v < nlinvars; ++v)

1321

assert( var !=

NULL

);

1324 if

( var == slackvar )

1329

matval[cnt] = sign * linvals[v];

1344

assert( slackvar !=

NULL

);

1354 if

( conshdlrdata->useotherconss )

1361 for

(c = 0; c < nconss; ++c)

1378

assert( cons !=

NULL

);

1405 for

(v = 0; v < nlinvars; ++v)

1409

assert( var !=

NULL

);

1421

newvars[nnewvars++] = var;

1439 for

(v = 0; v < nnewvars; ++v)

1453 for

(v = nnewvars - 1; v >= 0; --v)

1464 for

(v = 0; v < nlinvars; ++v)

1468

assert( var !=

NULL

);

1472

matval[cnt] = linvals[v];

1490 SCIPerrorMessage

(

"Detected IIS is not infeasible in original problem!\n"

);

1545

assert( conshdlr !=

NULL

);

1549

assert( conshdlrdata !=

NULL

);

1550

assert( conshdlrdata->naddlincons <= conshdlrdata->maxaddlincons );

1552 if

( num > conshdlrdata->maxaddlincons )

1558

conshdlrdata->maxaddlincons = newsize;

1560

assert( num <= conshdlrdata->maxaddlincons );

1589

assert( conshdlrdata !=

NULL

);

1590

assert( conshdlrdata->altlp ==

NULL

);

1591

assert( conshdlrdata->varhash ==

NULL

);

1592

assert( conshdlrdata->lbhash ==

NULL

);

1593

assert( conshdlrdata->ubhash ==

NULL

);

1594

assert( conshdlrdata->slackhash !=

NULL

);

1606

conshdlrdata->nrows = 1;

1640

assert( lp !=

NULL

);

1648 for

(j = 0; j < nCols; ++j)

1649

covered[j] =

FALSE

;

1653 for

(j = 0; j < nconss; ++j)

1658

assert( conss[j] !=

NULL

);

1660

assert( consdata !=

NULL

);

1661

ind = consdata->colindex;

1665

assert( ind < nCols );

1666

covered[ind] =

TRUE

;

1675 for

(j = 0; j < nCols; ++j)

1714 int

* indices =

NULL

;

1718

assert( lp !=

NULL

);

1719

assert( conss !=

NULL

);

1724 for

(j = 0; j < nconss; ++j)

1728

assert( conss[j] !=

NULL

);

1730

assert( consdata !=

NULL

);

1732 if

( consdata->colindex >= 0 )

1738

obj[cnt] = 1.0 - val;

1739

indices[cnt++] = consdata->colindex;

1766 int

* indices =

NULL

;

1770

assert( lp !=

NULL

);

1771

assert( conss !=

NULL

);

1776 for

(j = 0; j < nconss; ++j)

1780

assert( conss[j] !=

NULL

);

1782

assert( consdata !=

NULL

);

1784 if

( consdata->colindex >= 0 )

1787

indices[cnt++] = consdata->colindex;

1815 int

* indices =

NULL

;

1820

assert( lp !=

NULL

);

1821

assert( conss !=

NULL

);

1828 for

(j = 0; j < nconss; ++j)

1832

assert( conss[j] !=

NULL

);

1834

assert( consdata !=

NULL

);

1836 if

( consdata->colindex >= 0 )

1840

indices[cnt] = consdata->colindex;

1907 int

* indices =

NULL

;

1912

assert( lp !=

NULL

);

1913

assert( conss !=

NULL

);

1920 for

(j = 0; j < nconss; ++j)

1926

assert( conss[j] !=

NULL

);

1928

assert( consdata !=

NULL

);

1930 if

( consdata->colindex >= 0 )

1932

indices[cnt] = consdata->colindex;

1970

assert( conshdlrdata !=

NULL

);

1972

altlp = conshdlrdata->altlp;

1973

lbhash = conshdlrdata->lbhash;

1974

ubhash = conshdlrdata->ubhash;

1975

assert( lbhash !=

NULL

&& ubhash !=

NULL

);

1982 for

(v = 0; v < nvars; ++v)

2008

conshdlrdata->scaled =

FALSE

;

2011 SCIPdebugMsg

(

scip

,

"Updated bounds of original variables: %d.\n"

, cnt);

2034

assert( conshdlrdata !=

NULL

);

2036

altlp = conshdlrdata->altlp;

2037

lbhash = conshdlrdata->lbhash;

2038

ubhash = conshdlrdata->ubhash;

2039

assert( lbhash !=

NULL

&& ubhash !=

NULL

);

2046 for

(v = 0; v < nvars; ++v)

2069 SCIPdebugMsg

(

scip

,

"Updated bounds of original variables: %d.\n"

, cnt);

2098

assert( conshdlrdata !=

NULL

);

2099

assert( vector !=

NULL

);

2100

assert( isLocal !=

NULL

);

2108

lbhash = conshdlrdata->lbhash;

2109

ubhash = conshdlrdata->ubhash;

2110

assert( lbhash !=

NULL

&& ubhash !=

NULL

);

2117 for

(v = 0; v < nvars; ++v)

2131

assert( 0 <= col && col < nCols );

2149

assert( 0 <= col && col < nCols );

2176

assert( conshdlrdata !=

NULL

);

2178 if

( ! conshdlrdata->scaled )

2189

altlp = conshdlrdata->altlp;

2199 for

(j = 0; j < cnt; ++j)

2203

sum = -

REALABS

(sum) / ((double) cnt);

2211

conshdlrdata->scaled =

TRUE

;

2255

assert( conshdlrdata !=

NULL

);

2256

assert( vars !=

NULL

|| nvars == 0 );

2257

assert( vals !=

NULL

|| nvars == 0 );

2260

assert( colindex !=

NULL

);

2264 if

( conshdlrdata->altlp ==

NULL

)

2268

assert( conshdlrdata->altlp !=

NULL

);

2269

assert( conshdlrdata->varhash !=

NULL

);

2270

assert( conshdlrdata->lbhash !=

NULL

);

2271

assert( conshdlrdata->ubhash !=

NULL

);

2272

assert( conshdlrdata->slackhash !=

NULL

);

2278

assert( nrows == conshdlrdata->nrows );

2301

matval[cnt++] = sign * rhscoef;

2305 for

(v = 0; v < nvars; ++v)

2310

assert( var !=

NULL

);

2316 if

( var != slackvar )

2322 if

( ind < INT_MAX )

2330

matind[cnt] = (conshdlrdata->nrows)++;

2333

newrowsslack[nnewrows++] =

TRUE

;

2336

matval[cnt++] = sign * vals[v];

2350

matind[cnt] = (conshdlrdata->nrows)++;

2353

newrowsslack[nnewrows++] =

FALSE

;

2354

newvars[nnewvars++] = var;

2357

matval[cnt++] = sign * vals[v];

2370 for

(i = 0; i < nnewrows; ++i)

2372 if

( newrowsslack[i] )

2390

assert( slackvar ==

NULL

);

2402 for

(v = 0; v < nnewvars; ++v)

2405

assert( var !=

NULL

);

2411

matbeg[nnewcols] = cnt;

2415

matval[cnt++] = -val;

2420

matval[cnt++] = -1.0;

2421

obj[nnewcols] = 0.0;

2424

++conshdlrdata->nlbbounds;

2428 SCIPdebugMsg

(

scip

,

"Added column for lower bound (%f) of variable <%s> to alternative polyhedron (col: %d).\n"

,

2437

matbeg[nnewcols] = cnt;

2441

matval[cnt++] = val;

2446

matval[cnt++] = 1.0;

2447

obj[nnewcols] = 0.0;

2450

++conshdlrdata->nubbounds;

2454 SCIPdebugMsg

(

scip

,

"Added column for upper bound (%f) of variable <%s> to alternative polyhedron (col: %d).\n"

,

2468

assert( cnt == ncols + nnewcols + 1 );

2480

conshdlrdata->scaled =

FALSE

;

2512

assert( conshdlr !=

NULL

);

2513

assert( lincons !=

NULL

);

2514

assert( colindex !=

NULL

);

2520

assert( conshdlrdata !=

NULL

);

2534 SCIPdebugMsg

(

scip

,

"Slack variable is aggregated (scalar: %f, constant: %f).\n"

, scalar, constant);

2544

linvals[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) );

2614

assert( conshdlr !=

NULL

);

2615

assert( row !=

NULL

);

2616

assert( colindex !=

NULL

);

2627

assert( conshdlrdata !=

NULL

);

2637 for

(j = 0; j < nrowcols; ++j)

2640

assert( 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) );

2683

assert( conshdlr !=

NULL

);

2687

assert( 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)

2711

assert( var !=

NULL

);

2717

objvars[nobjvars] = var;

2718

objvals[nobjvars++] = objval;

2723 SCIP_CALL

(

addAltLPColumn

(

scip

, conshdlr, conshdlrdata,

NULL

, nobjvars, objvars, objvals, conshdlrdata->objupperbound, 0.0, 1.0,

FALSE

, &conshdlrdata->objcutindex) );

2724

assert( conshdlrdata->objcutindex >= 0 );

2725

conshdlrdata->objaltlpbound = conshdlrdata->objupperbound;

2748

assert( conshdlr !=

NULL

);

2749

assert( cons !=

NULL

);

2753

assert( conshdlrdata !=

NULL

);

2755 if

( conshdlrdata->altlp !=

NULL

)

2760

assert( consdata !=

NULL

);

2762 if

( consdata->colindex >= 0 )

2766

consdata->colindex = -1;

2770

conshdlrdata->scaled =

FALSE

;

2787

assert( conshdlrdata !=

NULL

);

2789 if

( ! conshdlrdata->useobjectivecut )

2792 if

( conshdlrdata->altlp ==

NULL

)

2804 if

(

SCIPisLT

(

scip

, objbnd, conshdlrdata->objupperbound) )

2805

conshdlrdata->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 )

2826

assert(

SCIPisEQ

(

scip

, oldbnd, conshdlrdata->objaltlpbound) );

2830 SCIP_CALL

(

SCIPlpiChgCoef

(conshdlrdata->altlp, 0, conshdlrdata->objcutindex, conshdlrdata->objupperbound) );

2831

conshdlrdata->objaltlpbound = conshdlrdata->objupperbound;

2867

assert( lp !=

NULL

);

2868

assert( infeasible !=

NULL

);

2869

assert( 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 int

nnonviolated = 0;

3029

assert( lp !=

NULL

);

3030

assert( conss !=

NULL

);

3031

assert( S !=

NULL

);

3032

assert( size !=

NULL

);

3033

assert( value !=

NULL

);

3034

assert( error !=

NULL

);

3035

assert( cutoff !=

NULL

);

3036

assert( nGen !=

NULL

);

3044

assert( 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)

3111

assert( consdata !=

NULL

);

3112

ind = consdata->colindex;

3116

assert( ind < nCols );

3129 if

( val < candval )

3141 if

( candidate < 0 )

3147

assert( candidate >= 0 );

3148

assert( ! S[candidate] );

3149

assert( 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);

3176

S[candidate] =

TRUE

;

3188#ifdef SCIP_ENABLE_IISCHECK 3194 if

( conshdlrdata->updatebounds )

3209 for

(j = 0; j < nconss; ++j)

3215

ind = consdata->colindex;

3219

assert( ind < nCols );

3220

assert( consdata->binvar !=

NULL

);

3231

assert( 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)

3295

ind = consdata->colindex;

3299

assert( ind < nCols );

3300

assert( 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,

3372

assert( conshdlr !=

NULL

);

3373

assert( conshdlrdata !=

NULL

);

3374

assert( consdata !=

NULL

);

3375

assert( slackvar !=

NULL

);

3376

assert( eventhdlrrestart !=

NULL

);

3379 if

( activeone || binvar ==

NULL

)

3380

binvarinternal = 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

)

3412

assert( var !=

NULL

);

3413

(*consdata)->binvar = var;

3428 if

( conshdlrdata->forcerestart )

3436

++((*consdata)->nfixednonzero);

3441

assert( var !=

NULL

);

3442

(*consdata)->slackvar = var;

3445 if

( linconsactive )

3449

++((*consdata)->nfixednonzero);

3455

assert( lincons !=

NULL

);

3456

assert( 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 char

name[50] =

""

;

3493

assert( conshdlrdata !=

NULL

);

3494

assert( ngen !=

NULL

);

3499 for

(c = 0; c < nconss; ++c)

3505

assert( consdata !=

NULL

);

3511 if

( ub <= conshdlrdata->maxcouplingvalue )

3528

!conshdlrdata->removeindicators, !conshdlrdata->removeindicators,

FALSE

) );

3534 if

( conshdlrdata->removeindicators )

3567

assert( cons !=

NULL

);

3568

assert( consdata !=

NULL

);

3569

assert( cutoff !=

NULL

);

3570

assert( success !=

NULL

);

3571

assert( ndelconss !=

NULL

);

3572

assert( nfixedvars !=

NULL

);

3573

assert( consdata->binvar !=

NULL

);

3574

assert( 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"

);

3595

assert( ! 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"

);

3636

assert( ! infeasible );

3652 if

( dualreductions )

3658

binvar = consdata->binvar;

3674

assert( ! infeasible );

3693

assert( ! infeasible );

3718

var = consdata->binvar;

3723 if

( var != consdata->binvar && ! negated )

3728

assert( conshdlrdata->eventhdlrbound !=

NULL

);

3735 if

( conshdlrdata->forcerestart )

3737

assert( conshdlrdata->eventhdlrrestart !=

NULL

);

3739

conshdlrdata->eventhdlrrestart, (

SCIP_EVENTDATA

*) conshdlrdata, -1) );

3748

consdata->binvar = var;

3756

assert( var !=

NULL

);

3759 if

( var == consdata->slackvar )

3778

var = consdata->slackvar;

3782

assert( var != consdata->slackvar );

3791

assert( conshdlrdata->eventhdlrbound !=

NULL

);

3802

consdata->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"

,

3832

assert( ! infeasible );

3872

assert( cons !=

NULL

);

3873

assert( consdata !=

NULL

);

3874

assert( cutoff !=

NULL

);

3875

assert( nGen !=

NULL

);

3881 if

( ! consdata->linconsactive )

3884

assert( consdata->slackvar !=

NULL

);

3885

assert( 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"

,

3937

assert( ! infeasible );

3949 SCIPdebugMsg

(

scip

,

"Slack variable <%s> is fixed to be nonzero, fixing binary variable <%s> to 0.\n"

,

3954

assert( ! infeasible );

3973 if

( addopposite && consdata->linconsactive )

4006

assert( consdata->lincons !=

NULL

);

4010

slackvar = consdata->slackvar;

4011

assert( slackvar !=

NULL

);

4017 for

(j = 0; j < nlinvars; ++j)

4019 if

( linvars[j] != slackvar )

4022

allintegral =

FALSE

;

4024

vars[nvars] = linvars[j];

4025

vals[nvars++] = linvals[j];

4028

assert( nlinvars == nvars + 1 );

4069 if

( dualreductions )

4075

binvar = consdata->binvar;

4091

assert( ! infeasible );

4110

assert( ! infeasible );

4163 for

(j = 0; j < nlinconsvars; ++j)

4169

val = linconsvals[j];

4172

var = linconsvars[j];

4173

assert( var !=

NULL

);

4176 if

( var == consdata->slackvar )

4193

maxactivity += val *

bound

;

4205

newub = (maxactivity - rhs) / (-1.0 * coeffslack);

4214 SCIPdebugMsg

(

scip

,

"Adjusting upper bound of slack variable <%s> to %g for indicator constraint <%s>.\n"

,

4219

assert( !infeasible );

4265

assert( conshdlr !=

NULL

);

4266

assert( conss !=

NULL

);

4267

assert( cutoff !=

NULL

);

4268

assert( nGen !=

NULL

);

4275

assert( conshdlrdata !=

NULL

);

4276

lp = conshdlrdata->altlp;

4277

assert( lp !=

NULL

);

4284 if

( conshdlrdata->updatebounds )

4299 for

(j = 0; j < nconss; ++j)

4303

assert( conss[j] !=

NULL

);

4305

assert( 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 )

4378

assert( conshdlr !=

NULL

);

4379

assert( conss !=

NULL

);

4380

assert( result !=

NULL

);

4388

assert( conshdlrdata !=

NULL

);

4393 for

(c = 0; c < nconss; ++c)

4399

assert( conss[c] !=

NULL

);

4401

assert( consdata !=

NULL

);

4402

assert( consdata->lincons !=

NULL

);

4405 if

( ! consdata->linconsactive )

4407

someLinconsNotActive =

TRUE

;

4412 SCIP_CALL

(

propIndicator

(

scip

, conss[c], consdata, conshdlrdata, dualreductions, conshdlrdata->addopposite, &cutoff, &cnt) );

4427

binvar = consdata->binvar;

4435 if

( valSlack > maxSlack )

4437

maxSlack = valSlack;

4452 if

( (someLinconsNotActive || conshdlrdata->enforcecuts) && conshdlrdata->sepaalternativelp )

4460

conshdlrdata->niiscutsgen += ngen;

4467

conshdlrdata->niiscutsgen += ngen;

4493 if

( ! conshdlrdata->branchindicators )

4502

assert( consdata !=

NULL

);

4503

binvar = consdata->binvar;

4504

slackvar = consdata->slackvar;

4563

assert( conshdlr !=

NULL

);

4564

assert( conss !=

NULL

);

4565

assert( cutoff !=

NULL

);

4566

assert( nGen !=

NULL

);

4568 if

( *nGen >= maxsepacuts )

4575

assert( conshdlrdata !=

NULL

);

4576

lp = conshdlrdata->altlp;

4577

assert( lp !=

NULL

);

4586 if

( conshdlrdata->updatebounds )

4604 for

(threshold = conshdlrdata->roundingmaxthres;

4605

rounds < conshdlrdata->maxroundingrounds && threshold >= conshdlrdata->roundingminthres && *nGen < maxsepacuts && ! (*cutoff);

4606

threshold -= conshdlrdata->roundingoffset )

4621 for

(j = 0; j < nconss; ++j)

4627

assert( conss[j] !=

NULL

);

4629

assert( consdata !=

NULL

);

4644

assert( binvarneg !=

NULL

);

4647

assert( 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,

4694

nconss, conss, S, &size, &value, &error, cutoff, &nCuts) );

4770

assert( conshdlr !=

NULL

);

4771

assert( conss !=

NULL

);

4772

assert( nGen !=

NULL

);

4774 if

( *nGen >= maxsepacuts )

4782

assert( conshdlrdata !=

NULL

);

4785 for

(c = 0; c < nconss; ++c)

4793

assert( conss[c] !=

NULL

);

4795

assert( consdata !=

NULL

);

4796

slackvar = consdata->slackvar;

4798

lincons = consdata->lincons;

4799

assert( lincons !=

NULL

);

4801

binvar = consdata->binvar;

4802

assert( binvar !=

NULL

);

4836

cutval = binval * ypart;

4838 for

(j = 0; j < nlinvars; ++j)

4848 if

( linvars[j] == slackvar )

4851 if

( conshdlrdata->sepapersplocal )

4870

finitebound =

FALSE

;

4875

linval = signfactor * linvals[j];

4879

dout += linval * lb;

4884

dout += linval * ub;

4888

xpart = linval * xval;

4891 if

(

SCIPisGT

(

scip

, binval * din, binval * dout + xpart) )

4894

cutval += binval * din;

4902

cutval += binval * dout + xpart;

4904

cutvars[cnt] = linvars[j];

4905

cutvals[cnt++] = linval;

4909 if

( ! finitebound )

4919

cutvars[cnt] = binvar;

4920

cutvals[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);

4931

assert( ! infeasible );

4937 if

( *nGen >= maxsepacuts )

4970

assert( conshdlr !=

NULL

);

4971

assert( conss !=

NULL

);

4972

assert( result !=

NULL

);

4980

assert( conshdlrdata !=

NULL

);

4985

maxsepacuts = conshdlrdata->maxsepacutsroot;

4987

maxsepacuts = conshdlrdata->maxsepacuts;

4990 if

( conshdlrdata->sepacouplingcuts )

4997 for

(c = 0; c < nusefulconss && ncuts < maxsepacuts; ++c)

5003

assert( conss !=

NULL

);

5004

assert( conss[c] !=

NULL

);

5006

assert( consdata !=

NULL

);

5007

assert( consdata->slackvar !=

NULL

);

5008

assert( consdata->binvar !=

NULL

);

5012 if

( conshdlrdata->sepacouplinglocal )

5023 if

( ub <= conshdlrdata->sepacouplingvalue )

5051

assert( ! 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 )

5084

conshdlrdata->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 )

5111

conshdlrdata->nperspcutsgen += ncuts;

5129

assert( conshdlrdata !=

NULL

);

5131

conshdlrdata->linconsevents =

FALSE

;

5132

conshdlrdata->linconsboundschanged =

TRUE

;

5133

conshdlrdata->boundhaschanged =

TRUE

;

5134

conshdlrdata->removable =

TRUE

;

5135

conshdlrdata->scaled =

FALSE

;

5136

conshdlrdata->altlp =

NULL

;

5137

conshdlrdata->nrows = 0;

5138

conshdlrdata->varhash =

NULL

;

5139

conshdlrdata->slackhash =

NULL

;

5140

conshdlrdata->lbhash =

NULL

;

5141

conshdlrdata->ubhash =

NULL

;

5142

conshdlrdata->nlbbounds = 0;

5143

conshdlrdata->nubbounds = 0;

5144

conshdlrdata->nslackvars = 0;

5145

conshdlrdata->objcutindex = -1;

5148

conshdlrdata->roundingminthres = 0.1;

5149

conshdlrdata->roundingmaxthres = 0.6;

5151

conshdlrdata->roundingoffset = 0.1;

5152

conshdlrdata->addedcouplingcons =

FALSE

;

5153

conshdlrdata->ninitconss = 0;

5154

conshdlrdata->nbinvarszero = 0;

5155

conshdlrdata->performedrestart =

FALSE

;

5156

conshdlrdata->objindicatoronly =

FALSE

;

5157

conshdlrdata->objothervarsonly =

FALSE

;

5158

conshdlrdata->minabsobj = 0.0;

5159

conshdlrdata->normtype =

'e'

;

5160

conshdlrdata->niiscutsgen = 0;

5161

conshdlrdata->nperspcutsgen = 0;

5186 int

maxabsvalidx = -1;

5190

assert( upgdcons !=

NULL

);

5204

assert( conshdlr !=

NULL

);

5206

assert( conshdlrdata !=

NULL

);

5208 if

( ! conshdlrdata->upgradelinear )

5212 for

(j = 0; j < nvars; ++j)

5223

assert( var !=

NULL

);

5228

secabsval = maxabsval;

5252

minactivity += val * lb;

5261

maxactivity += val * ub;

5265

assert( maxabsval >= 0.0 );

5266

assert( 0 <= maxabsvalidx && maxabsvalidx < nvars );

5281 for

(j = 0; j < nvars; ++j)

5331 if

( upgdlhs || upgdrhs )

5337

assert( ! upgdlhs || ! upgdrhs );

5344 for

(l = 0; l < nvars; ++l)

5346 if

( vars[l] == indvar )

5348

indconsvars[cnt] = vars[l];

5350

indconsvals[cnt] = -vals[l];

5352

indconsvals[cnt] = vals[l];

5356 if

( indneglhs || indnegrhs )

5410

assert( conshdlr !=

NULL

);

5412

assert( valid !=

NULL

);

5430

assert( conshdlr !=

NULL

);

5434

assert( conshdlrdata !=

NULL

);

5439 if

( conshdlrdata->trysolutions && conshdlrdata->heurtrysol ==

NULL

)

5458

assert( conshdlr !=

NULL

);

5463 if

( conshdlrdata->binvarhash !=

NULL

)

5466 if

( conshdlrdata->binslackvarhash !=

NULL

)

5470 for

(i = 0; i < nconss; i++)

5473

assert( consdata !=

NULL

);

5475 if

( consdata->varswithevents !=

NULL

)

5477

assert( consdata->eventtypes !=

NULL

);

5478

assert( consdata->lincons !=

NULL

);

5480 for

(j = 0; j < consdata->nevents; ++j)

5487

consdata->nevents = 0;

5488

assert( consdata->varswithevents ==

NULL

);

5489

assert( consdata->eventtypes ==

NULL

);

5494

conshdlrdata->maxaddlincons = 0;

5495

conshdlrdata->naddlincons = 0;

5496

conshdlrdata->nrows = 0;

5509

assert( conshdlr !=

NULL

);

5513

assert( conshdlrdata !=

NULL

);

5514

assert( conshdlrdata->altlp ==

NULL

);

5515

assert( conshdlrdata->varhash ==

NULL

);

5516

assert( conshdlrdata->lbhash ==

NULL

);

5517

assert( conshdlrdata->ubhash ==

NULL

);

5518

assert( conshdlrdata->slackhash ==

NULL

);

5520 if

( conshdlrdata->maxaddlincons > 0 )

5525

assert( conshdlrdata->addlincons ==

NULL

);

5526

conshdlrdata->naddlincons = 0;

5527

conshdlrdata->maxaddlincons = 0;

5543

assert( conshdlr !=

NULL

);

5553

assert( conshdlrdata !=

NULL

);

5554

assert( conshdlrdata->slackhash ==

NULL

);

5556

conshdlrdata->boundhaschanged =

TRUE

;

5560 if

( conshdlrdata->sepaalternativelp )

5564

assert( conshdlrdata->slackhash !=

NULL

);

5567 for

(c = 0; c < nconss; ++c)

5571

assert( conss !=

NULL

);

5572

assert( conss[c] !=

NULL

);

5576

assert( consdata !=

NULL

);

5578

assert( consdata->slackvar !=

NULL

);

5583

++conshdlrdata->nslackvars;

5586 if

( conshdlrdata->genlogicor )

5589 int

logicorsepafreq;

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"

);

5609

conshdlrdata->objothervarsonly =

TRUE

;

5610 for

(c = 0; c < nconss; ++c)

5614

assert( conss !=

NULL

);

5615

assert( conss[c] !=

NULL

);

5619

assert( consdata !=

NULL

);

5620

assert( consdata->binvar !=

NULL

);

5621

assert( consdata->slackvar !=

NULL

);

5626

conshdlrdata->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)

5689

cons = 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)

5729

assert( cons !=

NULL

);

5747 SCIPdebugMsg

(

scip

,

"Added %d additional columns from linear constraints to alternative LP.\n"

, cnt);

5753 if

( conshdlrdata->forcerestart )

5760

assert( conshdlrdata->eventhdlrrestart !=

NULL

);

5766

conshdlrdata->nbinvarszero = 0;

5772

conshdlrdata->objindicatoronly =

FALSE

;

5777 for

(j = 0; j < nvars; ++j)

5778

covered[j] =

FALSE

;

5781 for

(c = 0; c < nconss; ++c)

5786

assert( conss !=

NULL

);

5787

assert( conss[c] !=

NULL

);

5794

assert( consdata !=

NULL

);

5795

assert( consdata->binvar !=

NULL

);

5806 if

( probindex < 0 )

5809

assert( 0 <= probindex && probindex < nvars );

5810

covered[probindex] =

TRUE

;

5814 for

(j = 0; j < nvars; ++j)

5825 if

(

REALABS

(obj) < conshdlrdata->minabsobj )

5826

conshdlrdata->minabsobj =

REALABS

(obj);

5837

assert(

SCIPisGE

(

scip

, conshdlrdata->minabsobj, 1.0) );

5839

conshdlrdata->objindicatoronly =

TRUE

;

5841

assert( conshdlrdata->eventhdlrrestart !=

NULL

);

5861

assert( conshdlr !=

NULL

);

5865

assert( conshdlrdata !=

NULL

);

5867 if

( conshdlrdata->sepaalternativelp )

5869 if

( conshdlrdata->slackhash !=

NULL

)

5878 if

( conshdlrdata->altlp !=

NULL

)

5880

assert( conshdlrdata->varhash !=

NULL

);

5881

assert( conshdlrdata->lbhash !=

NULL

);

5882

assert( conshdlrdata->ubhash !=

NULL

);

5900 for

(c = 0; c < nconss; ++c)

5904

assert( conss !=

NULL

);

5905

assert( conss[c] !=

NULL

);

5908

assert( consdata !=

NULL

);

5909

consdata->colindex = -1;

5915

assert( conshdlrdata->slackhash ==

NULL

);

5916

assert( conshdlrdata->varhash ==

NULL

);

5917

assert( conshdlrdata->lbhash ==

NULL

);

5918

assert( conshdlrdata->ubhash ==

NULL

);

5930

assert( conshdlr !=

NULL

);

5931

assert( cons !=

NULL

);

5932

assert( consdata !=

NULL

);

5935#ifdef SCIP_MORE_DEBUG 5948

assert( conshdlrdata !=

NULL

);

5950 if

( conshdlrdata->binslackvarhash !=

NULL

)

5961

assert( conshdlrdata !=

NULL

);

5963 if

( conshdlrdata->sepaalternativelp )

5968

assert( (*consdata)->slackvar !=

NULL

);

5969

assert( (*consdata)->binvar !=

NULL

);

5974 if

( (*consdata)->linconsactive )

5976

assert( conshdlrdata->eventhdlrbound !=

NULL

);

5982 if

( conshdlrdata->forcerestart )

5984

assert( conshdlrdata->eventhdlrrestart !=

NULL

);

5990 if

( conshdlrdata->linconsevents && (*consdata)->linconsactive && (*consdata)->varswithevents !=

NULL

)

5993

assert( cons !=

NULL

);

5994

assert( (*consdata)->eventtypes !=

NULL

);

5995

assert( (*consdata)->lincons !=

NULL

);

5997 for

(j = 0; j < (*consdata)->nevents; ++j)

6005

(*consdata)->nevents = 0;

6006

assert( (*consdata)->varswithevents ==

NULL

);

6007

assert( (*consdata)->eventtypes ==

NULL

);

6013

assert( (*consdata)->lincons !=

NULL

);

6042

assert( conshdlr !=

NULL

);

6044

assert( sourcecons !=

NULL

);

6045

assert( targetcons !=

NULL

);

6049

assert( conshdlrdata !=

NULL

);

6050

assert( conshdlrdata->eventhdlrbound !=

NULL

);

6052#ifdef SCIP_MORE_DEBUG 6058

assert( sourcedata !=

NULL

);

6059

assert( sourcedata->binvar !=

NULL

);

6062 if

( sourcedata->slackvar ==

NULL

)

6069 if

( sourcedata->lincons ==

NULL

)

6074

assert( sourcedata->lincons !=

NULL

);

6075

assert( sourcedata->slackvar !=

NULL

);

6081

sourcedata->binvar,

TRUE

, sourcedata->lessthanineq, sourcedata->slackvar, sourcedata->lincons, sourcedata->linconsactive) );

6082

consdata->activeone = sourcedata->activeone;

6083

assert( consdata !=

NULL

);

6099 if

( sourcedata->linconsactive )

6107 if

( conshdlrdata->sepaalternativelp )

6109 if

( conshdlrdata->binvarhash ==

NULL

)

6115

assert( conshdlrdata->binvarhash !=

NULL

);

6116 if

( !

SCIPhashmapExists

(conshdlrdata->binvarhash, (

void

*) consdata->binvar) )

6134

assert( conshdlr !=

NULL

);

6143 for

(c = 0; c < nconss; ++c)

6147

assert( conss !=

NULL

);

6148

assert( conss[c] !=

NULL

);

6152

assert( consdata !=

NULL

);

6155

assert( consdata->lincons !=

NULL

);

6164

assert( translincons !=

NULL

);

6168

consdata->lincons = translincons;

6173

assert( conshdlrdata !=

NULL

);

6176

conshdlrdata->addedcouplingcons =

FALSE

;

6198 SCIPdebug

(

int

oldnfixedvars = *nfixedvars; )

6199 SCIPdebug

(

int

oldndelconss = *ndelconss; )

6203

assert( conshdlr !=

NULL

);

6205

assert( result !=

NULL

);

6211

assert( conshdlrdata !=

NULL

);

6216 if

( nrounds == 0 || nnewfixedvars > 0 || nnewchgbds > 0 || nnewaggrvars > 0 )

6221 for

(c = 0; c < nconss; ++c)

6228

assert( conss !=

NULL

);

6229

assert( conss[c] !=

NULL

);

6232

assert( consdata !=

NULL

);

6233

assert( consdata->binvar !=

NULL

);

6236#ifdef SCIP_MORE_DEBUG 6241 if

( ! consdata->linconsactive )

6244

assert( consdata->lincons !=

NULL

);

6245

assert( consdata->slackvar !=

NULL

);

6250 if

( ! consdata->implicationadded )

6259

consdata->implicationadded =

TRUE

;

6268 if

( ! consdata->slacktypechecked )

6270

consdata->slacktypechecked =

TRUE

;

6281

assert( consdata->lincons !=

NULL

);

6285

slackvar = consdata->slackvar;

6286

assert( slackvar !=

NULL

);

6288 for

(j = 0; j < nvars; ++j)

6290 if

( vars[j] == slackvar )

6291

foundslackvar =

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"

,

6339

noReductions = 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 )

6357

conshdlrdata->addedcouplingcons =

TRUE

;

6360 SCIPdebug

(

SCIPdebugMsg

(

scip

,

"Presolved %d constraints (fixed %d variables, removed 0 variables, and deleted %d constraints).\n"

,

6361

nconss, *nfixedvars - oldnfixedvars, *ndelconss - oldndelconss); )

6380

assert( conshdlr !=

NULL

);

6384

assert( 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)

6404

assert( conss !=

NULL

);

6405

assert( conss[c] !=

NULL

);

6407

assert( consdata !=

NULL

);

6410 if

( ! consdata->linconsactive )

6418 if

( ub <= conshdlrdata->maxcouplingvalue )

6429 if

( conshdlrdata->addcouplingcons )

6433

assert( ! conshdlrdata->addedcouplingcons );

6473

assert( conshdlr !=

NULL

);

6474

assert( conss !=

NULL

);

6476

assert( result !=

NULL

);

6490

assert( conshdlr !=

NULL

);

6491

assert( conss !=

NULL

);

6493

assert( result !=

NULL

);

6509

assert( conshdlr !=

NULL

);

6510

assert( conss !=

NULL

);

6512

assert( result !=

NULL

);

6514 if

( solinfeasible )

6522

assert( conshdlrdata !=

NULL

);

6537

assert( conshdlr !=

NULL

);

6538

assert( conss !=

NULL

);

6540

assert( result !=

NULL

);

6542 if

( solinfeasible )

6550

assert( conshdlrdata !=

NULL

);

6563

assert( conshdlr !=

NULL

);

6564

assert( conss !=

NULL

);

6566

assert( result !=

NULL

);

6568 if

( solinfeasible )

6574 if

( objinfeasible )

6597

assert( conshdlr !=

NULL

);

6598

assert( conss !=

NULL

);

6600

assert( result !=

NULL

);

6605

assert( conshdlrdata !=

NULL

);

6611

assert( trysol !=

NULL

);

6616

changedSol =

FALSE

;

6617

someLinconsNotActive =

FALSE

;

6618 for

(c = 0; c < nconss; ++c)

6622

assert( conss[c] !=

NULL

);

6624

assert( consdata !=

NULL

);

6625

assert( consdata->binvar !=

NULL

);

6628 if

( ! consdata->linconsactive )

6630

someLinconsNotActive =

TRUE

;

6634

assert( consdata->slackvar !=

NULL

);

6660 if

( trysol !=

NULL

)

6664

changedSol = changedSol || changed;

6676 if

( trysol !=

NULL

)

6680

changedSol = changedSol || changed;

6686 if

( someLinconsNotActive )

6693

lp = conshdlrdata->altlp;

6694

assert( conshdlrdata->sepaalternativelp );

6704 if

( conshdlrdata->updatebounds )

6718 for

(c = 0; c < nconss; ++c)

6722

assert( conss[c] !=

NULL

);

6724

assert( consdata !=

NULL

);

6763 if

( trysol !=

NULL

&& changedSol )

6765

assert( conshdlrdata->heurtrysol !=

NULL

);

6770 if

( trysol !=

NULL

)

6796

assert( conshdlr !=

NULL

);

6797

assert( conss !=

NULL

);

6799

assert( result !=

NULL

);

6809

assert( conshdlrdata !=

NULL

);

6812 if

( ! conshdlrdata->boundhaschanged && !

SCIPinRepropagation

(

scip

) && ! conshdlrdata->linconsboundschanged )

6819 if

( !conshdlrdata->linconsevents )

6821 for

(c = 0; c < nconss; ++c)

6828

assert( conss[c] !=

NULL

);

6831

assert( consdata !=

NULL

);

6834 if

( ! consdata->linconsactive )

6845

assert( consdata->lincons !=

NULL

);

6849

assert( consdata->slackvar !=

NULL

);

6850

assert( nvars != 0 );

6856 for

(j = 0; j < nvars; ++j)

6858 if

( vars[j] == consdata->slackvar )

6862 if

( vals[j] > 0.0 )

6865

consdata->varswithevents[consdata->nevents] = vars[j];

6867

consdata->nevents++;

6872

consdata->varswithevents[consdata->nevents] = vars[j];

6874

consdata->nevents++;

6877

assert( consdata->nevents == nvars - 1 );

6879

conshdlrdata->linconsevents =

TRUE

;

6883

conshdlrdata->boundhaschanged =

FALSE

;

6884

conshdlrdata->linconsboundschanged =

FALSE

;

6889 for

(c = 0; c < nconss; ++c)

6898

assert( conss[c] !=

NULL

);

6901

assert( consdata !=

NULL

);

6903#ifdef SCIP_MORE_DEBUG 6907 SCIP_CALL

(

propIndicator

(

scip

, cons, consdata, conshdlrdata, dualreductions, conshdlrdata->addopposite, &cutoff, &cnt) );

6937

assert( cons !=

NULL

);

6939

assert( infervar !=

NULL

);

6940

assert( bdchgidx !=

NULL

);

6941

assert( result !=

NULL

);

6947

assert( consdata !=

NULL

);

6948

assert( inferinfo == 0 || inferinfo == 1 || inferinfo == 2 || inferinfo == 3 );

6949

assert( consdata->linconsactive );

6952 if

( inferinfo == 0 )

6955

assert( infervar != consdata->binvar );

6959 else if

( inferinfo == 1 )

6962

assert( infervar != consdata->slackvar );

6968 else if

( inferinfo == 2 )

6981

assert( inferinfo == 3 );

6988 for

(j = 0; j < nlinconsvars; ++j)

6990 if

( linconsvals[j] > 0.0 )

7021

assert( conshdlr !=

NULL

);

7022

assert( cons !=

NULL

);

7025

assert( consdata !=

NULL

);

7026

assert( consdata->binvar !=

NULL

);

7028#ifdef SCIP_MORE_DEBUG 7034 if

( consdata->linconsactive )

7036

assert( consdata->slackvar !=

NULL

);

7049

assert( consdata->lincons !=

NULL

);

7050

assert( consdata->slackvar ==

NULL

);

7058 for

(j = 0; j < nlinvars; ++j)

7099

assert( conshdlr !=

NULL

);

7100

assert( cons !=

NULL

);

7104

assert( consdata !=

NULL

);

7105

assert( consdata->binvar !=

NULL

);

7107

binvar = consdata->binvar;

7116

assert( consdata->slackvar !=

NULL

);

7117

assert( consdata->lincons !=

NULL

);

7135 const char

* consname;

7138

assert( sourcescip !=

NULL

);

7139

assert( sourcecons !=

NULL

);

7149#ifdef SCIP_MORE_DEBUG 7150 SCIPdebugMsg

(

scip

,

"Copying indicator constraint <%s> ...\n"

, consname);

7161

assert( sourceconsdata !=

NULL

);

7164

sourcelincons = sourceconsdata->lincons;

7178

assert( sourcelincons !=

NULL

);

7180

assert( conshdlrlinear !=

NULL

);

7190

assert( translincons !=

NULL

);

7193

sourceconsdata->lincons = translincons;

7194

sourcelincons = translincons;

7208

sourcebinvar = sourceconsdata->binvar;

7209

assert( sourcebinvar !=

NULL

);

7219

sourceslackvar = sourceconsdata->slackvar;

7220

assert( sourceslackvar !=

NULL

);

7228

assert( targetlincons !=

NULL

);

7229

assert( targetbinvar !=

NULL

);

7230

assert( targetslackvar !=

NULL

);

7235

initial, separate, enforce, check, propagate, local, dynamic, removable, stickingatnode) );

7243 if

( targetlincons !=

NULL

)

7256 char

binvarname[1024];

7257 char

slackvarname[1024];

7258 char

linconsname[1024];

7269

nargs = 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;

7329

assert( nargs == 3 );

7332

posstr = 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

)

7359

name, posstr+8, posstr+9, posstr+16);

7366

assert( lincons !=

NULL

);

7378

initial, separate, enforce, check, propagate, local, dynamic, removable, stickingatnode) );

7392

assert( conshdlr !=

NULL

);

7393

assert( cons !=

NULL

);

7396#ifdef SCIP_MORE_DEBUG 7401

assert( conshdlrdata !=

NULL

);

7404

assert( consdata !=

NULL

);

7406 if

( conshdlrdata->altlp !=

NULL

)

7408

assert( conshdlrdata->sepaalternativelp );

7410 if

( consdata->colindex >= 0 )

7427

assert( conshdlr !=

NULL

);

7428

assert( cons !=

NULL

);

7431#ifdef SCIP_MORE_DEBUG 7436

assert( conshdlrdata !=

NULL

);

7438 if

( conshdlrdata->altlp !=

NULL

)

7443

assert( consdata !=

NULL

);

7444

assert( conshdlrdata->sepaalternativelp );

7446 if

( consdata->colindex >= 0 )

7464

assert( cons !=

NULL

);

7465

assert( vars !=

NULL

);

7466

assert( success !=

NULL

);

7470

assert( varssize >= 0 );

7479

assert( consdata !=

NULL

);

7480

assert( consdata->lincons !=

NULL

);

7482 if

( consdata->binvar !=

NULL

)

7484

assert( varssize > 0 );

7485

vars[nvars++] = consdata->binvar;

7487 if

( consdata->slackvar !=

NULL

)

7489

assert( varssize > nvars );

7490

vars[nvars++] = consdata->slackvar;

7511

assert( cons !=

NULL

);

7512

assert( nvars !=

NULL

);

7513

assert( success !=

NULL

);

7523

assert( consdata !=

NULL

);

7524

assert( consdata->lincons !=

NULL

);

7526 if

( consdata->binvar !=

NULL

)

7528 if

( consdata->slackvar !=

NULL

)

7539

assert( nlinvars >= 0 );

7559

assert(conshdlr !=

NULL

);

7561

assert(diveset !=

NULL

);

7562

assert(success !=

NULL

);

7563

assert(infeasible !=

NULL

);

7566

*infeasible =

FALSE

;

7572 for

(c = 0; c < nindconss; ++c)

7590

&score, &roundup) );

7593 if

( score > bestscore )

7598

bestvarroundup = roundup;

7604

assert(! *success || bestvar !=

NULL

);

7650

conshdlrdata->eventhdlrbound =

NULL

;

7652

eventExecIndicatorBound,

NULL

) );

7653

assert(conshdlrdata->eventhdlrbound !=

NULL

);

7656

conshdlrdata->eventhdlrlinconsbound =

NULL

;

7658

eventExecIndicatorLinconsBound,

NULL

) );

7659

assert(conshdlrdata->eventhdlrlinconsbound !=

NULL

);

7662

conshdlrdata->eventhdlrrestart =

NULL

;

7664

eventExecIndicatorRestart,

NULL

) );

7665

assert( conshdlrdata->eventhdlrrestart !=

NULL

);

7667

conshdlrdata->heurtrysol =

NULL

;

7671

conshdlrdata->binvarhash =

NULL

;

7672

conshdlrdata->binslackvarhash =

NULL

;

7680

conshdlrdata->addlincons =

NULL

;

7681

conshdlrdata->naddlincons = 0;

7682

conshdlrdata->maxaddlincons = 0;

7687

consEnfolpIndicator, consEnfopsIndicator, consCheckIndicator, consLockIndicator,

7690

assert( conshdlr !=

NULL

);

7729

conflicthdlrdata->conshdlrdata = conshdlrdata;

7730

conflicthdlrdata->conshdlr = conshdlr;

7731

assert( conflicthdlrdata->conshdlr !=

NULL

);

7735

conflictExecIndicator, 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,

7942

separate, 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

)

8013

assert( 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)

8035

valscopy[j] = -vals[j];

8038

assert( nvars == 0 || valscopy !=

NULL

);

8042 for

(j = 0; j < nvars; ++j)

8044 if

( conshdlrdata->scaleslackvar )

8045

absvalsum +=

REALABS

(valscopy[j]);

8049 if

( ! conshdlrdata->scaleslackvar )

8055 if

( activeone || binvar ==

NULL

)

8056

binvarinternal = binvar;

8065 if

( binvarinternal !=

NULL

)

8068 if

( conshdlrdata->usesameslackvar && conshdlrdata->binslackvarhash ==

NULL

)

8073 if

( conshdlrdata->binslackvarhash !=

NULL

&&

SCIPhashmapExists

(conshdlrdata->binslackvarhash, (

void

*) binvarinternal) )

8083

assert( ! infeasible );

8100 if

( conshdlrdata->binslackvarhash !=

NULL

)

8118

assert( slackvar !=

NULL

);

8121 if

( conshdlrdata->nolinconscont )

8125

assert( ! conshdlrdata->generatebilinear );

8128 for

(j = 0; j < nvars; ++j)

8141

linconsactive =

FALSE

;

8148 if

( linconsactive )

8161 if

( ! lessthanineq )

8169 if

( conshdlrdata->scaleslackvar && nvars > 0 )

8171

absvalsum = 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,

8197

binvar, activeone, lessthanineq, slackvar, lincons, linconsactive) );

8198

assert( consdata !=

NULL

);

8202 SCIP_CALL

(

SCIPcreateCons

(

scip

, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,

8203

local, modifiable, dynamic, removable, stickingatnode) );

8208 if

( linconsactive )

8215 if

( conshdlrdata->sepaalternativelp )

8217 if

( conshdlrdata->binvarhash ==

NULL

)

8223

assert( conshdlrdata->binvarhash !=

NULL

);

8312

assert( lincons !=

NULL

);

8313

assert( binvar !=

NULL

);

8314

assert( slackvar !=

NULL

);

8326 if

( conshdlr ==

NULL

)

8333

assert( 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)

8369

linconsactive =

FALSE

;

8377 if

( conshdlrdata->generatebilinear )

8384

binvarinternal = binvar;

8392 SCIP_CALL

(

SCIPcreateConsQuadraticNonlinear

(

scip

, cons, name, 0,

NULL

,

NULL

, 1, &binvarinternal, &slackvar, &val, 0.0, 0.0,

8399

binvar, activeone,

TRUE

, slackvar, lincons, linconsactive) );

8400

assert( consdata !=

NULL

);

8403 SCIP_CALL

(

SCIPcreateCons

(

scip

, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,

8404

local, modifiable, dynamic, removable, stickingatnode) );

8460

enforce, check, propagate, local, dynamic, removable, stickingatnode);

8557

assert( lincons !=

NULL

);

8558

assert( binvar !=

NULL

);

8570 if

( conshdlr ==

NULL

)

8577

assert( 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)

8618

binvarinternal = binvar;

8627 if

( conshdlrdata->usesameslackvar && conshdlrdata->binslackvarhash ==

NULL

)

8632 if

( conshdlrdata->binslackvarhash !=

NULL

&&

SCIPhashmapExists

(conshdlrdata->binslackvarhash, (

void

*) binvarinternal) )

8643

assert( ! infeasible );

8659 if

( conshdlrdata->binslackvarhash !=

NULL

)

8664

assert( slackvar !=

NULL

);

8667 if

( conshdlrdata->nolinconscont )

8675 for

(j = 0; j < nvars; ++j)

8688

linconsactive =

FALSE

;

8704 if

( conshdlrdata->generatebilinear )

8709 SCIP_CALL

(

SCIPcreateConsQuadraticNonlinear

(

scip

, cons, name, 0,

NULL

,

NULL

, 1, &binvarinternal, &slackvar, &val, 0.0, 0.0,

8716

binvar, activeone,

TRUE

, slackvar, lincons, linconsactive) );

8717

assert( consdata !=

NULL

);

8720 SCIP_CALL

(

SCIPcreateCons

(

scip

, cons, name, conshdlr, consdata, initial, separate, enforce, check, propagate,

8721

local, modifiable, dynamic, removable, stickingatnode) );

8775

enforce, check, propagate, local, dynamic, removable, stickingatnode);

8789

assert( cons !=

NULL

);

8793

assert( consdata !=

NULL

);

8796 if

( !consdata->lessthanineq )

8807

assert( ! infeasible );

8821

assert( cons !=

NULL

);

8825

assert( consdata !=

NULL

);

8827 return

consdata->lincons;

8848

assert( cons !=

NULL

);

8853

assert( conshdlrdata !=

NULL

);

8856

assert( consdata !=

NULL

);

8859

assert( consdata->lincons !=

NULL

);

8863

assert( lincons !=

NULL

);

8864

consdata->lincons = lincons;

8865

consdata->linconsactive =

TRUE

;

8869 if

( conshdlrdata->nolinconscont )

8879

assert( vars !=

NULL

);

8882 for

(v = 0; v < nvars; ++v)

8895

consdata->linconsactive =

FALSE

;

8908

assert( cons !=

NULL

);

8912

assert( consdata !=

NULL

);

8914 return

consdata->activeone;

8925

assert( cons !=

NULL

);

8929

assert( consdata !=

NULL

);

8931 return

consdata->binvar;

8942

assert(cons !=

NULL

);

8946

assert(consdata !=

NULL

);

8947

binvar = consdata->binvar;

8949 if

( ! consdata->activeone )

8951

assert(binvar !=

NULL

);

8965

assert( cons !=

NULL

);

8966

assert( binvar !=

NULL

);

8970

assert( consdata !=

NULL

);

8980 if

( consdata->binvar !=

NULL

)

8997

assert( var !=

NULL

);

8998 if

( ! consdata->activeone )

9001

consdata->binvar = var;

9004

assert( conshdlr !=

NULL

);

9007

assert( conshdlrdata !=

NULL

);

9008

assert( conshdlrdata->eventhdlrbound !=

NULL

);

9009

assert( conshdlrdata->eventhdlrrestart !=

NULL

);

9012 if

( consdata->linconsactive )

9018 if

( conshdlrdata->forcerestart )

9025

++(consdata->nfixednonzero);

9029 if

( ! consdata->activeone )

9031

consdata->binvar = binvar;

9044

assert( cons !=

NULL

);

9048

assert( consdata !=

NULL

);

9050 return

consdata->slackvar;

9072

assert( cons !=

NULL

);

9076

assert( consdata !=

NULL

);

9081

assert( consdata->slackvar !=

NULL

);

9097

assert( cons !=

NULL

);

9104

assert( consdata !=

NULL

);

9106 if

( consdata->linconsactive )

9108

assert( consdata->slackvar !=

NULL

);

9109

assert( consdata->binvar !=

NULL

);

9164

assert( cons !=

NULL

);

9166

assert( sol !=

NULL

);

9167

assert( changed !=

NULL

);

9175

assert( cons !=

NULL

);

9177

assert( consdata !=

NULL

);

9180 if

( ! consdata->linconsactive )

9183

lincons = consdata->lincons;

9184

assert( lincons !=

NULL

);

9189

slackvar = consdata->slackvar;

9190

binvar = consdata->binvar;

9191

assert( slackvar !=

NULL

);

9192

assert( binvar !=

NULL

);

9201 for

(v = 0; v < nlinvars; ++v)

9205 if

( var != slackvar )

9208

slackcoef = linvals[v];

9216

assert( slackcoef != 0.0 );

9229

val = (val - sum)/slackcoef;

9232 if

( slackcoef < 0 )

9330

assert( conshdlr !=

NULL

);

9332

assert( sol !=

NULL

);

9333

assert( changed !=

NULL

);

9344 for

(c = 0; c < nconss; ++c)

9348

assert( conss[c] !=

NULL

);

9351

assert( consdata !=

NULL

);

9354 if

( ! consdata->linconsactive )

9358

*changed = *changed || chg;

9374

assert( lincons !=

NULL

);

9382

assert( conshdlrdata !=

NULL

);

9385

assert( conshdlrdata->naddlincons+1 <= conshdlrdata->maxaddlincons );

9387

conshdlrdata->addlincons[conshdlrdata->naddlincons++] = lincons;

9406

assert( row !=

NULL

);

9415

assert( 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