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__pseudoboolean_8c_source.php below:

SCIP Doxygen Documentation: cons_pseudoboolean.c Source File

73#include "scip/cons_eqknapsack.h" 77#define CONSHDLR_NAME "pseudoboolean" 78#define CONSHDLR_DESC "constraint handler dealing with pseudo Boolean constraints" 79#define CONSHDLR_ENFOPRIORITY -1000000 80#define CONSHDLR_CHECKPRIORITY -5000000 81#define CONSHDLR_EAGERFREQ 100 83#define CONSHDLR_MAXPREROUNDS -1 84#define CONSHDLR_NEEDSCONS TRUE 86#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_MEDIUM 88#define DEFAULT_DECOMPOSENORMALPBCONS FALSE 89#define DEFAULT_DECOMPOSEINDICATORPBCONS TRUE 91#define DEFAULT_SEPARATENONLINEAR TRUE 92#define DEFAULT_PROPAGATENONLINEAR TRUE 93#define DEFAULT_REMOVABLENONLINEAR TRUE 94#define NONLINCONSUPGD_PRIORITY 60000 97#undef NONLINCONSUPGD_PRIORITY 102#define HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS 500 201 unsigned int

issoftcons:1;

202 unsigned int

changed:1;

203 unsigned int

propagated:1;

204 unsigned int

presolved:1;

205 unsigned int

cliquesadded:1;

206 unsigned int

upgradetried:1;

210struct

SCIP_ConshdlrData

214 int

nallconsanddatas;

216 int

sallconsanddatas;

259 if

( varind1 == -1 && varind2 == -1 )

265 if

( varind1 < varind2 )

267 if

( varind1 > varind2 )

270 if

( varneg1 && !varneg2 )

272 if

( !varneg1 && varneg2 )

275

assert(elem1 == elem2);

289

assert(consanddata1 !=

NULL

);

290

assert(consanddata2 !=

NULL

);

301

consand1 = consanddata1->

cons

;

302

consand2 = consanddata2->

cons

;

306

consand1 = consanddata1->

origcons

;

307

consand2 = consanddata2->

origcons

;

351

assert(cdata1 !=

NULL

);

352

assert(cdata2 !=

NULL

);

354

assert(cdata1->

nvars

> 1);

356

assert(cdata2->

nvars

> 1);

360 for

( v = cdata1->

nvars

- 1; v > 0; --v )

363 for

( v = cdata2->

nvars

- 1; v > 0; --v )

376 for

( v = cdata1->

nvars

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

382 if

( cdata1->

vars

[v] != cdata2->

vars

[v] )

405

assert(cdata !=

NULL

);

407

assert(cdata->

nvars

> 1);

412 for

( v = cdata->

nvars

- 1; v > 0; --v )

420

assert(minidx >= 0 && minidx <= maxidx);

434 if

( ((*conshdlrdata)->inithashmapandtable) )

436

assert((*conshdlrdata)->hashtable !=

NULL

);

437

assert((*conshdlrdata)->hashmap !=

NULL

);

442

assert((*conshdlrdata)->hashtable ==

NULL

);

443

assert((*conshdlrdata)->hashmap ==

NULL

);

448

hashGetKeyAndConsDatas, hashKeyEqAndConsDatas, hashKeyValAndConsDatas, (

void

*)

scip

) );

454

(*conshdlrdata)->inithashmapandtable =

TRUE

;

467

assert(conshdlrdata !=

NULL

);

471

(*conshdlrdata)->allconsanddatas =

NULL

;

472

(*conshdlrdata)->nallconsanddatas = 0;

473

(*conshdlrdata)->sallconsanddatas = 10;

478

(*conshdlrdata)->inithashmapandtable =

FALSE

;

479

(*conshdlrdata)->hashtable =

NULL

;

480

(*conshdlrdata)->hashtablesize = 0;

481

(*conshdlrdata)->hashmap =

NULL

;

482

(*conshdlrdata)->hashmapsize = 0;

485

(*conshdlrdata)->nlinconss = 0;

488

(*conshdlrdata)->noriguses = 0;

502

assert(conshdlrdata !=

NULL

);

503

assert(*conshdlrdata !=

NULL

);

504

assert((*conshdlrdata)->nallconsanddatas == 0);

507 if

( (*conshdlrdata)->inithashmapandtable )

510

(*conshdlrdata)->hashmapsize = 0;

512

(*conshdlrdata)->hashtablesize = 0;

516

assert((*conshdlrdata)->hashmap ==

NULL

);

517

assert((*conshdlrdata)->hashtable ==

NULL

);

519

(*conshdlrdata)->inithashmapandtable =

FALSE

;

524

(*conshdlrdata)->allconsanddatas =

NULL

;

525

(*conshdlrdata)->nallconsanddatas = 0;

526

(*conshdlrdata)->sallconsanddatas = 0;

543

assert(cons !=

NULL

);

544

assert(nvars !=

NULL

);

562 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

563

*nvars = SCIPgetNVarsEQKnapsack(

scip

, cons);

625 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

626

*lhs = SCIPgetCapacityEQKnapsack(

scip

, cons);

654

assert(cons !=

NULL

);

655

assert(vars !=

NULL

);

656

assert(nvars !=

NULL

);

672 for

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

674

vars[v] = linvars[v];

675

coefs[v] = lincoefs[v];

680 for

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

681

vars[v] = linvars[v];

689

assert( linvars !=

NULL

);

693 for

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

695

vars[v] = linvars[v];

701 for

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

702

vars[v] = linvars[v];

712

assert( linvars !=

NULL

);

718 for

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

720

vars[v] = linvars[v];

726 for

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

727

vars[v] = linvars[v];

735

assert( linvars !=

NULL

);

739 for

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

741

vars[v] = linvars[v];

747 for

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

748

vars[v] = linvars[v];

753 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

757

*nvars = SCIPgetNVarsEQKnapsack(

scip

, cons);

758

linvars = SCIPgetVarsEQKnapsack(

scip

, cons);

759

assert( linvars !=

NULL

);

763

weights = SCIPgetWeightsEQKnapsack(

scip

, cons);

765 for

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

767

vars[v] = linvars[v];

773 for

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

774

vars[v] = linvars[v];

800 int

*

const

nlinvars,

814

assert(cons !=

NULL

);

815

assert(vars !=

NULL

);

816

assert((linvars !=

NULL

) == (nlinvars !=

NULL

));

817

assert((andress ==

NULL

) || (nandress !=

NULL

));

818

assert((andcoefs !=

NULL

) == (andnegs !=

NULL

));

819

assert((coefs !=

NULL

) == ((lincoefs !=

NULL

) || (andcoefs !=

NULL

)));

820

assert(linvars !=

NULL

|| andress !=

NULL

);

822 if

( nlinvars !=

NULL

)

824 if

( nandress !=

NULL

)

828

assert(conshdlr !=

NULL

);

830

assert(conshdlrdata !=

NULL

);

831

assert(conshdlrdata->hashmap !=

NULL

);

834 for

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

839

assert(vars[v] !=

NULL

);

841

hashmapentryexists =

SCIPhashmapExists

(conshdlrdata->hashmap, (

void

*)(vars[v]));

846

hashmapentryexists =

SCIPhashmapExists

(conshdlrdata->hashmap, (

void

*)(hashmapvar));

849

hashmapvar = vars[v];

854 if

( hashmapentryexists )

859

assert(consanddata !=

NULL

);

863 if

( hashmapentryexists )

865

assert(consanddata->

cons

!=

NULL

);

871 if

( !hashmapentryexists && linvars !=

NULL

&& nlinvars !=

NULL

)

873

linvars[*nlinvars] = vars[v];

874 if

( lincoefs !=

NULL

)

876

assert(coefs !=

NULL

);

877

lincoefs[*nlinvars] = coefs[v];

881 else if

( hashmapentryexists && nandress !=

NULL

)

883 if

( andress !=

NULL

)

885

andress[*nandress] = hashmapvar;

887 if

( andcoefs !=

NULL

)

889

assert(andnegs !=

NULL

);

890

assert(coefs !=

NULL

);

891

andcoefs[*nandress] = coefs[v];

892

andnegs[*nandress] = (vars[v] != hashmapvar);

903#ifdef CHECK_CONSISTENCY 930

assert(cons !=

NULL

);

936

assert(consdata !=

NULL

);

939

assert(consdata->lincons !=

NULL

);

942

assert(consdata->consanddatas !=

NULL

);

943

assert(consdata->nconsanddatas > 0);

944

assert(consdata->nconsanddatas <= consdata->sconsanddatas);

956

assert(nvars == consdata->nlinvars + consdata->nconsanddatas);

970

assert(nvars == 0 || (coefs !=

NULL

));

974

andress, andcoefs, andnegs, &nandress) );

975

assert(nlinvars == consdata->nlinvars);

976

assert(nandress == consdata->nconsanddatas);

978 for

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

980 SCIP_VAR

* andresultant = andress[v];

983 for

( c = consdata->nconsanddatas - 1; c >= 0; --c )

985

assert(consdata->consanddatas[c] !=

NULL

);

986 if

( consdata->consanddatas[c]->cons !=

NULL

)

989

assert(res !=

NULL

);

991 if

( res == andresultant && consdata->andnegs[c] == andnegs[v] && consdata->andcoefs[c] == andcoefs[v] )

995

assert(!alreadyfound[c]);

998

alreadyfound[c] =

TRUE

;

1004

assert(nfound == 1);

1007 for

( c = consdata->nconsanddatas - 1; c >= 0; --c )

1009

assert(alreadyfound[c]);

1023#define checkConsConsistency(scip, cons) 1043

assert(consanddata !=

NULL

);

1044

assert(conshdlrdata !=

NULL

);

1048

tmpvars = consanddata->

vars

;

1049

ntmpvars = consanddata->

nvars

;

1052 for

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

1054

assert(tmpvars[v] !=

NULL

);

1062

tmpvars = consanddata->

newvars

;

1063

ntmpvars = consanddata->

nnewvars

;

1066 for

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

1068

assert(tmpvars[v] !=

NULL

);

1077 if

( !origdata || consanddata->

nvars

== 0 )

1082

consanddata->

nuses

= 0;

1083

consanddata->

nvars

= 0;

1084

consanddata->

svars

= 0;

1099 if

( consanddata->

nvars

> 0 )

1110 if

( conshdlrdata->inithashmapandtable )

1112

assert(conshdlrdata->hashmap !=

NULL

);

1113

assert(conshdlrdata->hashtable !=

NULL

);

1126

assert(consanddata->

nuses

== 0);

1127

assert(consanddata->

nnewvars

== 0);

1128

assert(consanddata->

snewvars

== 0);

1136

assert(consanddata->

nvars

> 0);

1137

assert(consanddata->

svars

> 0);

1138

assert(consanddata->

vars

!=

NULL

);

1142 if

( conshdlrdata->inithashmapandtable )

1144

assert(conshdlrdata->hashmap !=

NULL

);

1145

assert(conshdlrdata->hashtable !=

NULL

);

1171 int const

nandconss,

1188

assert(conshdlr !=

NULL

);

1189

assert(consdata !=

NULL

);

1191

assert(nandconss == 0 || (andconss !=

NULL

&& andcoefs !=

NULL

));

1209 SCIPerrorMessage

(

"left hand side of pseudo boolean constraint greater than right hand side\n"

);

1220

(*consdata)->issoftcons = issoftcons;

1223

(*consdata)->weight = weight;

1229

(*consdata)->indvar = indvar;

1232

(*consdata)->indvar =

NULL

;

1235 if

( intvar !=

NULL

)

1242

(*consdata)->intvar = intvar;

1245

(*consdata)->intvar =

NULL

;

1248

(*consdata)->lincons = lincons;

1249

(*consdata)->linconstype = linconstype;

1258

assert((*consdata)->lincons !=

NULL

);

1261 if

( transforming || transformed )

1271

(*consdata)->nlinvars = nvars - nandconss;

1274 if

( nandconss > 0 )

1282 if

( andnegs !=

NULL

)

1290

(*consdata)->nconsanddatas = nandconss;

1291

(*consdata)->sconsanddatas = nandconss;

1297

assert(conshdlrdata !=

NULL

);

1298

assert(conshdlrdata->hashmap !=

NULL

);

1301 for

( c = nandconss - 1; c >= 0; --c )

1303

assert(andconss[c] !=

NULL

);

1306

assert(andress[c] !=

NULL

);

1309

assert((*consdata)->consanddatas[c] !=

NULL

);

1310

assert((*consdata)->consanddatas[c]->origcons == andconss[c] || (*consdata)->consanddatas[c]->cons == andconss[c]);

1315 if

( (*consdata)->consanddatas[c]->origcons !=

NULL

&& (*consdata)->consanddatas[c]->cons ==

NULL

)

1325

assert((*consdata)->consanddatas[c]->cons !=

NULL

);

1326

assert((*consdata)->consanddatas[c]->newvars ==

NULL

);

1327

assert((*consdata)->consanddatas[c]->isoriginal);

1329

(*consdata)->consanddatas[c]->istransformed =

TRUE

;

1331

vars = (*consdata)->consanddatas[c]->vars;

1332

ncvars = (*consdata)->consanddatas[c]->nvars;

1333

assert(vars !=

NULL

|| ncvars == 0);

1339 SCIPsortPtr

((

void

**)vars, SCIPvarComp, ncvars);

1342 for

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

1347 else if

( (*consdata)->consanddatas[c]->cons !=

NULL

)

1348

assert((*consdata)->consanddatas[c]->istransformed);

1350

++((*consdata)->consanddatas[c]->nuses);

1352 else if

( transformed )

1354

assert((*consdata)->consanddatas[c]->cons == andconss[c]);

1356

assert((*consdata)->consanddatas[c]->istransformed);

1361 SCIPsortPtrPtrRealBool

((

void

**)andress, (

void

**)((*consdata)->consanddatas), (*consdata)->andcoefs, (*consdata)->andnegs, resvarComp, nandconss);

1368

(*consdata)->consanddatas =

NULL

;

1369

(*consdata)->andcoefs =

NULL

;

1370

(*consdata)->andnegs =

NULL

;

1371

(*consdata)->nconsanddatas = 0;

1372

(*consdata)->sconsanddatas = 0;

1376

(*consdata)->lhs = lhs;

1377

(*consdata)->rhs = rhs;

1379

(*consdata)->changed =

TRUE

;

1380

(*consdata)->propagated =

FALSE

;

1381

(*consdata)->presolved =

FALSE

;

1382

(*consdata)->cliquesadded =

FALSE

;

1383

(*consdata)->upgradetried =

TRUE

;

1390

assert(conshdlrdata !=

NULL

);

1392

conshdlrdata->noriguses += (*consdata)->nconsanddatas;

1412

assert(consdata !=

NULL

);

1413

assert(*consdata !=

NULL

);

1414

assert((*consdata)->nconsanddatas == 0 || (*consdata)->consanddatas !=

NULL

);

1415

assert(conshdlrdata !=

NULL

);

1418 if

( (*consdata)->lincons !=

NULL

)

1423

nconsanddatas = (*consdata)->nconsanddatas;

1424

consanddatas = (*consdata)->consanddatas;

1427 for

( c = nconsanddatas - 1; c >= 0; --c )

1429

assert((consanddatas[c]->origcons ==

NULL

) == (consanddatas[c]->noriguses == 0));

1430

assert((consanddatas[c]->cons ==

NULL

) == (consanddatas[c]->nuses == 0));

1431

assert(consanddatas[c]->nuses >= 0);

1432

assert(consanddatas[c]->noriguses >= 0);

1433

assert(isorig ? consanddatas[c]->cons ==

NULL

:

TRUE

);

1436 if

( !isorig && consanddatas[c]->cons !=

NULL

)

1440

--(consanddatas[c]->

nuses

);

1443 if

( consanddatas[c]->nuses == 0 )

1445 if

( conshdlrdata->inithashmapandtable )

1447

assert(conshdlrdata->hashmap !=

NULL

);

1448

assert(conshdlrdata->hashtable !=

NULL

);

1451 if

( consanddatas[c]->origcons ==

NULL

)

1463 if

( consanddatas[c]->origcons ==

NULL

)

1467

assert(conshdlrdata->nallconsanddatas > 0);

1469 for

( d = conshdlrdata->nallconsanddatas - 1; d >= 0; --d )

1471 if

( conshdlrdata->allconsanddatas[d] == consanddatas[c] )

1473

--conshdlrdata->nallconsanddatas;

1477

conshdlrdata->allconsanddatas[d] = conshdlrdata->allconsanddatas[conshdlrdata->nallconsanddatas];

1487 else if

( isorig && consanddatas[c]->origcons !=

NULL

)

1490

assert(consanddatas[c]->nuses == 0);

1491

assert(consanddatas[c]->nnewvars == 0);

1492

assert(consanddatas[c]->snewvars == 0);

1493

assert(consanddatas[c]->newvars ==

NULL

);

1498 if

( consanddatas[c]->noriguses == 0 )

1502 if

( conshdlrdata->inithashmapandtable )

1504

assert(conshdlrdata->hashmap !=

NULL

);

1505

assert(conshdlrdata->hashtable !=

NULL

);

1514 if

( consanddatas[c]->vars !=

NULL

)

1516

assert(consanddatas[c]->nvars > 0);

1517

assert(consanddatas[c]->svars > 0);

1518

assert(consanddatas[c]->svars >= consanddatas[c]->nvars);

1521

consanddatas[c]->

nvars

= 0;

1522

consanddatas[c]->

svars

= 0;

1526

assert(consanddatas[c]->nvars == 0);

1527

assert(consanddatas[c]->svars == 0);

1531

assert(consanddatas[c]->origcons ==

NULL

);

1534

assert(conshdlrdata->nallconsanddatas > 0);

1535 for

( d = conshdlrdata->nallconsanddatas - 1; d >= 0; --d )

1537 if

( conshdlrdata->allconsanddatas[d] == consanddatas[c] )

1539

--conshdlrdata->nallconsanddatas;

1543

conshdlrdata->allconsanddatas[d] = conshdlrdata->allconsanddatas[conshdlrdata->nallconsanddatas];

1554

assert(!consanddatas[c]->istransformed);

1555

assert(consanddatas[c]->cons ==

NULL

);

1559 if

( consanddatas[c]->nuses == 0 && consanddatas[c]->istransformed )

1564 else if

( consanddatas[c]->nuses == 0 )

1570

assert(consanddatas[c]->nnewvars == 0);

1571

assert(consanddatas[c]->snewvars == 0);

1572

assert(consanddatas[c]->newvars ==

NULL

);

1574

tmpvars = consanddatas[c]->

vars

;

1575

ntmpvars = consanddatas[c]->

nvars

;

1578 for

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

1580

assert(tmpvars[v] !=

NULL

);

1587 if

( !consanddatas[c]->istransformed && consanddatas[c]->noriguses > 0 )

1589

assert(consanddatas[c]->origcons !=

NULL

);

1590

assert(consanddatas[c]->nuses == 0);

1591

assert(consanddatas[c]->nnewvars == 0);

1592

assert(consanddatas[c]->snewvars == 0);

1593

assert(consanddatas[c]->newvars ==

NULL

);

1594

assert(consanddatas[c]->nvars > 0);

1595

assert(consanddatas[c]->svars > 0);

1596

assert(consanddatas[c]->svars >= consanddatas[c]->nvars);

1597

assert(consanddatas[c]->vars !=

NULL

);

1598

assert(consanddatas[c]->isoriginal);

1604 if

( conshdlrdata->inithashmapandtable )

1606

assert(conshdlrdata->hashmap !=

NULL

);

1607

assert(conshdlrdata->hashtable !=

NULL

);

1635

assert(res !=

NULL

);

1666

assert(cons !=

NULL

);

1668

assert(consanddata !=

NULL

);

1677

vars = consanddata->

newvars

;

1682

vars = consanddata->

vars

;

1683

nvars = consanddata->

nvars

;

1687

assert(nvars == 0 || (vars !=

NULL

&& res !=

NULL

));

1698 for

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

1705 for

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

1735

assert(cons !=

NULL

);

1737

assert(consanddata !=

NULL

);

1743

vars = consanddata->

vars

;

1744

nvars = consanddata->

nvars

;

1750

assert(nvars == 0 || vars !=

NULL

);

1761 for

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

1768 for

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

1802 int

* monomialnvars;

1808

assert(cons !=

NULL

);

1811

assert(consdata !=

NULL

);

1812

assert(consdata->intvar ==

NULL

);

1813

assert(consdata->lincons !=

NULL

);

1822

assert(consdata->nlinvars + consdata->nconsanddatas >= nvars);

1839

assert(nvars == 0 || (coefs !=

NULL

));

1843

assert(conshdlr !=

NULL

);

1845

assert(conshdlrdata !=

NULL

);

1846

assert(conshdlrdata->hashmap !=

NULL

);

1850 for

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

1863

assert(!consdata->issoftcons || var != consdata->indvar);

1866 if

( consanddata !=

NULL

)

1878 while

( var != vars[v] );

1880 if

( consanddata ==

NULL

)

1882

assert(var !=

NULL

);

1883

assert(var == vars[v]);

1884

monomialvars[nmonomials] = vars + v;

1885

monomialnvars[nmonomials] = 1;

1892 if

( fixed != negated )

1907

assert(andvars !=

NULL

);

1908

monomialvars[nmonomials] = andvars;

1909

assert(nandvars >= 1);

1910

monomialnvars[nmonomials] = nandvars;

1914

monomialcoefs[nmonomials] = coefs[v];

1943 if

( consdata->issoftcons )

1948

assert(consdata->weight ==

SCIPvarGetObj

(consdata->indvar));

1995

assert(conshdlr !=

NULL

);

1996

assert(vars !=

NULL

);

1998

assert(andcons !=

NULL

);

2001

assert(conshdlrdata !=

NULL

);

2002

assert(conshdlrdata->hashtable !=

NULL

);

2009

newdata->

nvars

= nvars;

2010

newdata->

svars

= nvars;

2015

newdata->

nuses

= 0;

2028 if

( tmpdata !=

NULL

)

2036

*andcons = tmpdata->

cons

;

2038

assert(tmpdata->

nuses

> 0);

2040

++(tmpdata->

nuses

);

2051

assert(*andcons !=

NULL

);

2055

assert(res !=

NULL

);

2080#ifdef SCIP_DISABLED_CODE 2081#ifdef WITH_DEBUG_SOLUTION 2082 if

( SCIPdebugIsMainscip(

scip

) )

2088 for

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

2096

val = ((val < 0.5) ? 0.0 : 1.0);

2101 SCIPerrorMessage

(

"computed solution value %g for resultant <%s> violates debug solution value %g\n"

, val,

SCIPvarGetName

(resultant), debugsolval);

2122

initial, separate, enforce, check &&

FALSE

, propagate,

2123

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

2132

assert(*andcons !=

NULL

);

2135 if

( conshdlrdata->nallconsanddatas == conshdlrdata->sallconsanddatas )

2141

conshdlrdata->allconsanddatas[conshdlrdata->nallconsanddatas] = newdata;

2142

++(conshdlrdata->nallconsanddatas);

2148

newdata->

cons

= newcons;

2152

newdata->

nuses

= 1;

2155 for

( v = newdata->

nvars

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

2207

assert(cons !=

NULL

);

2208

assert(nvars == 0 || vars !=

NULL

);

2214

assert(consdata !=

NULL

);

2217

assert(conshdlr !=

NULL

);

2220

assert(conshdlrdata !=

NULL

);

2227

assert(andcons !=

NULL

);

2230 if

( consdata->nconsanddatas == consdata->sconsanddatas )

2236

assert(res !=

NULL

);

2240

++(consdata->nconsanddatas);

2243 switch

( consdata->linconstype )

2266#ifdef WITHEQKNAPSACK 2267 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

2284

consdata->changed =

TRUE

;

2285

consdata->propagated =

FALSE

;

2286

consdata->presolved =

FALSE

;

2287

consdata->cliquesadded =

FALSE

;

2288

consdata->upgradetried =

FALSE

;

2310 SCIPerrorMessage

(

"changing left hand side only allowed on standard lienar constraint \n"

);

2312#ifdef WITHEQKNAPSACK 2313 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

2341 SCIPerrorMessage

(

"changing left hand side only allowed on standard lienar constraint \n"

);

2343#ifdef WITHEQKNAPSACK 2344 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

2378

assert(cons !=

NULL

);

2387

assert(consdata !=

NULL

);

2413

assert(nvars == 0 || (coefs !=

NULL

));

2416 SCIP_CALL

(

getLinVarsAndAndRess

(

scip

, cons, vars, coefs, nvars, linvars, lincoefs, &nlinvars, andress, andcoefs, andnegs, &nandress) );

2417

assert(consdata->nconsanddatas == nandress);

2433 for

( c = consdata->nconsanddatas - 1; c >= 0; --c )

2438

consanddata = consdata->consanddatas[c];

2439

assert(consanddata !=

NULL

);

2441

andcons = consanddata->

cons

;

2442

assert(andcons !=

NULL

);

2446

val = andnegs[c] ? -andcoefs[c] : andcoefs[c];

2451 for

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

2458 for

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

2468 for

( c = consdata->nconsanddatas - 1; c >= 0; --c )

2473

consanddata = consdata->consanddatas[c];

2474

assert(consanddata !=

NULL

);

2476

andcons = consanddata->

cons

;

2477

assert(andcons !=

NULL

);

2481

val = andnegs[c] ? -andcoefs[c] : andcoefs[c];

2486 for

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

2493 for

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

2505

consdata->propagated =

FALSE

;

2510

consdata->lhs = lhs;

2511

consdata->presolved =

FALSE

;

2512

consdata->changed =

TRUE

;

2549

assert(cons !=

NULL

);

2558

assert(consdata !=

NULL

);

2584

assert(nvars == 0 || (coefs !=

NULL

));

2587 SCIP_CALL

(

getLinVarsAndAndRess

(

scip

, cons, vars, coefs, nvars, linvars, lincoefs, &nlinvars, andress, andcoefs, andnegs, &nandress) );

2588

assert(consdata->nconsanddatas == nandress);

2604 for

( c = consdata->nconsanddatas - 1; c >= 0; --c )

2609

consanddata = consdata->consanddatas[c];

2610

assert(consanddata !=

NULL

);

2612

andcons = consanddata->

cons

;

2613

assert(andcons !=

NULL

);

2617

val = andnegs[c] ? -andcoefs[c] : andcoefs[c];

2622 for

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

2629 for

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

2639 for

( c = consdata->nconsanddatas - 1; c >= 0; --c )

2644

consanddata = consdata->consanddatas[c];

2645

assert(consanddata !=

NULL

);

2647

andcons = consanddata->

cons

;

2648

assert(andcons !=

NULL

);

2652

val = andnegs[c] ? -andcoefs[c] : andcoefs[c];

2657 for

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

2664 for

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

2676

consdata->propagated =

FALSE

;

2681

consdata->rhs = rhs;

2682

consdata->presolved =

FALSE

;

2683

consdata->changed =

TRUE

;

2705 int const

*

const

ntermvars,

2730 int

*

const

nandconss

2736

assert(conshdlr !=

NULL

);

2738

assert(andconss !=

NULL

);

2739

assert(andvals !=

NULL

);

2740

assert(nandconss !=

NULL

);

2748 for

( t = 0; t <

nterms

; ++t )

2753

initial, enforce, check, local, modifiable, dynamic, stickingatnode,

2754

&(andconss[*nandconss])) );

2755

assert(andconss[*nandconss] !=

NULL

);

2756

andvals[*nandconss] = termcoefs[t];

2757

andnegs[*nandconss] =

FALSE

;

2826

assert(conshdlr !=

NULL

);

2827

assert(nlinvars == 0 || (linvars !=

NULL

&& linvals !=

NULL

));

2828

assert(nandress == 0 || (andress !=

NULL

&& andvals !=

NULL

));

2829

assert(lhs !=

NULL

);

2830

assert(rhs !=

NULL

);

2831

assert(lincons !=

NULL

);

2832

assert(linconstype !=

NULL

);

2833

assert(nlinvars > 0 || nandress > 0);

2836

assert(conshdlrdata !=

NULL

);

2843

++(conshdlrdata->nlinconss);

2859

nvars = nlinvars + nandress;

2862 for

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

2892 for

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

2920 SCIPdebugMsg

(

scip

,

"While creating the linear constraint of the pseudoboolean constraint we found %d zero coefficients that were removed\n"

, nzero);

2938 if

( upgrconshdlr !=

NULL

&& nvars > 2 && ncoeffspone + ncoeffsnone == nvars

2954 for

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

2956 if

( mult * linvals[v] > 0.0 )

2957

transvars[v] = linvars[v];

2962

assert(transvars[v] !=

NULL

);

2966 for

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

2968 if

( mult * andvals[v] > 0.0 )

2969

transvars[nlinvars + v] = andress[v];

2975

assert(transvars[nlinvars + v] !=

NULL

);

2978

assert(!modifiable);

2981

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

3010 if

( upgrconshdlr !=

NULL

&& !created && ncoeffspone + ncoeffsnone == nvars )

3017 SCIPdebugMsg

(

scip

,

"linear pseudoboolean constraint will be a set partitioning constraint\n"

);

3020

mult =

SCIPisEQ

(

scip

, *lhs, 1.0 - ncoeffsnone) ? +1 : -1;

3026 for

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

3028 if

( mult * linvals[v] > 0.0 )

3029

transvars[v] = linvars[v];

3034

assert(transvars[v] !=

NULL

);

3038 for

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

3040 if

( mult * andvals[v] > 0.0 )

3041

transvars[nlinvars + v] = andress[v];

3047

assert(transvars[nlinvars + v] !=

NULL

);

3051

assert(!modifiable);

3053

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

3067 SCIPdebugMsg

(

scip

,

"linear pseudoboolean constraint will be a set packing constraint\n"

);

3076 for

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

3078 if

( mult * linvals[v] > 0.0 )

3079

transvars[v] = linvars[v];

3084

assert(transvars[v] !=

NULL

);

3088 for

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

3090 if

( mult * andvals[v] > 0.0 )

3091

transvars[nlinvars + v] = andress[v];

3097

assert(transvars[nlinvars + v] !=

NULL

);

3101

assert(!modifiable);

3103

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

3121 SCIPwarningMessage

(

scip

,

"Does not expect this, because this constraint should be a set packing constraint.\n"

);

3125 SCIPwarningMessage

(

scip

,

"Does not expect this, because this constraint should be a logicor constraint.\n"

);

3128 SCIPdebugMsg

(

scip

,

"linear pseudoboolean constraint will be a set covering constraint\n"

);

3137 for

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

3139 if

( mult * linvals[v] > 0.0 )

3140

transvars[v] = linvars[v];

3145

assert(transvars[v] !=

NULL

);

3149 for

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

3151 if

( mult * andvals[v] > 0.0 )

3152

transvars[nlinvars + v] = andress[v];

3158

assert(transvars[nlinvars + v] !=

NULL

);

3162

assert(!modifiable);

3164

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

3192 SCIPdebugMsg

(

scip

,

"linear pseudoboolean constraint will be a knapsack constraint\n"

);

3213 for

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

3219

transvars[v] = linvars[v];

3220

weights[v] = weight;

3225

weights[v] = -weight;

3228

assert(transvars[v] !=

NULL

);

3231 for

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

3237

transvars[nlinvars + v] = andress[v];

3238

weights[nlinvars + v] = weight;

3244

weights[nlinvars + v] = -weight;

3247

assert(transvars[nlinvars + v] !=

NULL

);

3252

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

3264#ifdef WITHEQKNAPSACK 3273 if

( upgrconshdlr !=

NULL

&& !created && (ncoeffspone + ncoeffsnone + ncoeffspint + ncoeffsnint == nvars) &&

SCIPisEQ

(

scip

, *lhs, *rhs) )

3283 SCIPdebugMsg

(

scip

,

"linear pseudoboolean constraint will be a equality-knapsack constraint\n"

);

3301 for

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

3307

transvars[v] = linvars[v];

3308

weights[v] = weight;

3313

weights[v] = -weight;

3316

assert(transvars[v] !=

NULL

);

3319 for

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

3325

transvars[nlinvars + v] = andress[v];

3326

weights[nlinvars + v] = weight;

3332

weights[nlinvars + v] = -weight;

3335

assert(transvars[nlinvars + v] !=

NULL

);

3339 SCIP_CALL

( SCIPcreateConsEqKnapsack(

scip

, &cons, name, nvars, transvars, weights, capacity,

3340

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

3343

(*linconstype) = SCIP_LINEARCONSTYPE_EQKNAPSACK;

3357

assert(created || upgrconshdlr !=

NULL

);

3362

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

3367 for

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

3369

assert(andress[v] !=

NULL

);

3423

assert(cons !=

NULL

);

3425

assert(violated !=

NULL

);

3433

assert(consdata !=

NULL

);

3434

assert(consdata->lincons !=

NULL

);

3453

assert(nvars == 0 || (coefs !=

NULL

));

3459

assert(consdata->nlinvars + consdata->nconsanddatas >= nvars);

3462

assert(conshdlr !=

NULL

);

3465

assert(conshdlrdata !=

NULL

);

3466

assert(conshdlrdata->hashmap !=

NULL

);

3471 for

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

3482 if

( consanddata !=

NULL

)

3487 while

( var != vars[v] );

3490 if

( consanddata ==

NULL

)

3501 if

( andcons ==

NULL

)

3502

andcons = consanddata->

cons

;

3508

assert(nandvars == 0 || andvars !=

NULL

);

3512 for

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

3515 if

( var != vars[v] )

3516

solval = 1.0 - solval;

3520

activity += coefs[v] * solval;

3523 SCIPdebugMsg

(

scip

,

"lhs = %g, activity = %g, rhs = %g\n"

, lhs, activity, rhs);

3526

lhsviol = lhs - activity;

3527

rhsviol = activity - rhs;

3529 if

(lhsviol > rhsviol)

3600

assert(conshdlr !=

NULL

);

3601

assert(violated !=

NULL

);

3604

assert(conshdlrdata !=

NULL

);

3608 for

( c = conshdlrdata->nallconsanddatas - 1; c >= 0; --c )

3615 if

( !conshdlrdata->allconsanddatas[c]->istransformed )

3618

andcons = conshdlrdata->allconsanddatas[c]->cons;

3621 if

( andcons ==

NULL

)

3627

assert(nvars == 0 || (vars !=

NULL

&& res !=

NULL

));

3632 for

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

3636 if

( solval < minsolval )

3639

sumsolval += solval;

3646

viol =

MAX3

(0.0, solval - minsolval, sumsolval - (nvars - 1.0 + solval));

3659 else if

( sol ==

NULL

)

3671 SCIP

*

const

targetscip,

3673 SCIP

*

const

sourcescip,

3698

assert(targetscip !=

NULL

);

3699

assert(targetcons !=

NULL

);

3700

assert(sourcescip !=

NULL

);

3701

assert(sourcecons !=

NULL

);

3703

assert(valid !=

NULL

);

3708

assert(sourceconsdata !=

NULL

);

3711

sourcelincons = sourceconsdata->lincons;

3712

assert(sourcelincons !=

NULL

);

3721 int

ntargetandconss;

3724

targetlinconstype = sourceconsdata->linconstype;

3726 switch

( targetlinconstype )

3730

assert(conshdlrlinear !=

NULL

);

3734

assert(conshdlrlinear !=

NULL

);

3738

assert(conshdlrlinear !=

NULL

);

3742

assert(conshdlrlinear !=

NULL

);

3744#ifdef WITHEQKNAPSACK 3745 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

3747

assert(conshdlrlinear !=

NULL

);

3756 if

( conshdlrlinear ==

NULL

)

3762

targetlincons =

NULL

;

3772

assert(targetlincons !=

NULL

);

3782

targetandconss =

NULL

;

3783

targetandcoefs =

NULL

;

3784

ntargetandconss = 0;

3790 int

nsourceandconss;

3797

assert(conshdlrand !=

NULL

);

3799

nsourceandconss = sourceconsdata->nconsanddatas;

3814

targetlinvars, targetlincoefs, &ntargetlinvars) );

3821

SCIPvarIsHashkeyEq, SCIPvarGetHashkeyVal,

NULL

) );

3823 for

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

3832 for

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

3839

consanddata = sourceconsdata->consanddatas[c];

3840

assert(consanddata !=

NULL

);

3852

targetandconss[ntargetandconss] =

NULL

;

3864

targetandcoefs[ntargetandconss] = sourceconsdata->andcoefs[c];

3870

assert(ntargetandconss <= ntargetlinvars);

3880 const char

* consname;

3883

assert(sourceconsdata->issoftcons == (sourceconsdata->indvar !=

NULL

));

3884

indvar = sourceconsdata->indvar;

3885

intvar = sourceconsdata->intvar;

3888 if

( indvar !=

NULL

)

3892

assert(!(*valid) || indvar !=

NULL

);

3895 if

( intvar !=

NULL

&& *valid )

3898

assert(!(*valid) || intvar !=

NULL

);

3918

targetlincons, targetlinconstype, targetandconss, targetandcoefs, ntargetandconss,

3919

indvar, sourceconsdata->weight, sourceconsdata->issoftcons, intvar, targetlhs, targetrhs,

3920

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

3930 if

( targetlincons !=

NULL

)

3936 if

( targetandconss !=

NULL

)

3940

assert(ntargetandconss <= sourceconsdata->nconsanddatas);

3942 for

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

3944 if

( targetandconss[c] !=

NULL

)

3973

assert(conshdlrdata !=

NULL

);

3975

allconsanddatas = conshdlrdata->allconsanddatas;

3976

assert(allconsanddatas !=

NULL

);

3977

assert(conshdlrdata->nallconsanddatas >= 0);

3978

assert(conshdlrdata->nallconsanddatas <= conshdlrdata->sallconsanddatas);

3980 for

( c = conshdlrdata->nallconsanddatas - 1; c >= 0; --c )

3989

consanddata = allconsanddatas[c];

3994 if

( consanddata->

nuses

== 0 )

3997

vars = consanddata->

vars

;

3998

nvars = consanddata->

nvars

;

3999

assert(nvars == 0 || vars !=

NULL

);

4012

cons = consanddata->

cons

;

4013

assert(cons !=

NULL

);

4030 if

( nnewvars <= 0 )

4035 for

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

4038 for

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

4043 if

( nvars == nnewvars )

4050 for

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

4052 if

( vars[v] != newvars[v] )

4064 if

( nnewvars > consanddata->

snewvars

)

4074 for

( v = consanddata->

nnewvars

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

4098

assert(cons !=

NULL

);

4099

assert(consanddata !=

NULL

);

4108

assert(consanddata->

cons

!=

NULL

);

4126

assert(cons !=

NULL

);

4127

assert(consanddata !=

NULL

);

4136

assert(consanddata->

cons

!=

NULL

);

4156 int

nnewconsanddatas;

4157 int

snewconsanddatas;

4170

assert(cons !=

NULL

);

4171

assert(conshdlrdata !=

NULL

);

4172

assert(conshdlrdata->hashmap !=

NULL

);

4173

assert(nandress == 0 || (andress !=

NULL

&& andcoefs !=

NULL

));

4179

assert(consdata !=

NULL

);

4182 SCIPsortPtrRealBool

((

void

**)(consdata->consanddatas), consdata->andcoefs, consdata->andnegs, resvarCompWithInactive, consdata->nconsanddatas);

4187

consanddatas = consdata->consanddatas;

4188

oldandcoefs = consdata->andcoefs;

4189

oldandnegs = consdata->andnegs;

4190

nconsanddatas = consdata->nconsanddatas;

4191

assert(nconsanddatas == 0 || (consanddatas !=

NULL

&& oldandcoefs !=

NULL

));

4193

snewconsanddatas = nconsanddatas + nandress;

4200

nnewconsanddatas = 0;

4203 for

( c = 0, c1 = 0; c < nconsanddatas && c1 < nandress; )

4210

assert(consanddatas[c] !=

NULL

);

4213 if

( !consanddatas[c]->istransformed )

4216

consdata->changed =

TRUE

;

4217

consdata->upgradetried =

FALSE

;

4221

andcons = consanddatas[c]->

cons

;

4222

assert(andcons !=

NULL

);

4224 if

( andcons ==

NULL

)

4227

consdata->changed =

TRUE

;

4228

consdata->upgradetried =

FALSE

;

4235

oldandnegs[c] ? -oldandcoefs[c] : oldandcoefs[c], consdata->lhs, consdata->rhs) );

4237

consdata->changed =

TRUE

;

4238

consdata->upgradetried =

FALSE

;

4241

assert(andcons !=

NULL

);

4245

assert(res1 !=

NULL

);

4250

assert(res2 !=

NULL

);

4254

compval = resvarComp((

void

*)res1, (

void

*)res2);

4257 if

( compval == -1 )

4260

assert(consanddatas[c]->nuses > 0);

4261

--(consanddatas[c]->

nuses

);

4265

consdata->lhs, consdata->rhs) );

4267

consdata->changed =

TRUE

;

4268

consdata->upgradetried =

FALSE

;

4269

consdata->propagated =

FALSE

;

4270

consdata->presolved =

FALSE

;

4272 else if

( compval == +1 )

4277

newandcoefs[nnewconsanddatas] = andcoefs[c1];

4278

newandnegs[nnewconsanddatas] = andnegs[c1];

4279

++(newconsanddatas[nnewconsanddatas]->

nuses

);

4283

-newandcoefs[nnewconsanddatas] : newandcoefs[nnewconsanddatas], newlhs, newrhs) );

4285

consdata->changed =

TRUE

;

4286

consdata->upgradetried =

FALSE

;

4287

consdata->cliquesadded =

FALSE

;

4288

consdata->propagated =

FALSE

;

4289

consdata->presolved =

FALSE

;

4304

newconsanddatas[nnewconsanddatas] = consanddatas[c];

4306

newandcoefs[nnewconsanddatas] = andcoefs[c1];

4307

newandnegs[nnewconsanddatas] = andnegs[c1];

4309 if

( ((oldandnegs[c] == andnegs[c1]) && !

SCIPisEQ

(

scip

, oldandcoefs[c], newandcoefs[c1]))

4310

|| ((oldandnegs[c] != newandnegs[c1]) && !

SCIPisEQ

(

scip

, oldandcoefs[c], -newandcoefs[c1])) )

4311

consdata->upgradetried =

FALSE

;

4313

coefsignchanged = (oldandnegs[c] == andnegs[c1]) &&

4314

((oldandcoefs[c] < 0 && andcoefs[c1] > 0) || (oldandcoefs[c] > 0 && andcoefs[c1] < 0));

4315

coefsignchanged = coefsignchanged || ((oldandnegs[c] != andnegs[c1]) &&

4316

((oldandcoefs[c] < 0 && andcoefs[c1] < 0) || (oldandcoefs[c] > 0 && andcoefs[c1] > 0)));

4318

|| (consdata->lhs < 0 && newlhs > 0) || (consdata->lhs > 0 && newlhs < 0);

4320

|| (consdata->rhs < 0 && newrhs > 0) || (consdata->rhs > 0 && newrhs < 0);

4323 if

( coefsignchanged || lhschanged || rhschanged || newconsanddatas[nnewconsanddatas]->nnewvars > 0)

4327

-oldandcoefs[c] : oldandcoefs[c], consdata->lhs, consdata->rhs) );

4329

-newandcoefs[nnewconsanddatas] : newandcoefs[nnewconsanddatas], newlhs, newrhs) );

4331

consdata->changed =

TRUE

;

4332

consdata->upgradetried =

FALSE

;

4333

consdata->cliquesadded =

FALSE

;

4334

consdata->propagated =

FALSE

;

4335

consdata->presolved =

FALSE

;

4345 if

( c < nconsanddatas )

4347

assert(c1 == nandress);

4349 for

( ; c < nconsanddatas; ++c )

4355

assert(consanddatas[c] !=

NULL

);

4357

andcons = consanddatas[c]->

cons

;

4359 if

( andcons !=

NULL

)

4362

assert(res1 !=

NULL

);

4366 if

( andcons ==

NULL

)

4368

consdata->changed =

TRUE

;

4369

consdata->upgradetried =

FALSE

;

4373

assert(consanddatas[c]->nuses > 0);

4374

--(consanddatas[c]->

nuses

);

4378

consdata->lhs, consdata->rhs) );

4379

consdata->changed =

TRUE

;

4380

consdata->upgradetried =

FALSE

;

4381

consdata->propagated =

FALSE

;

4382

consdata->presolved =

FALSE

;

4385 else if

( c1 < nandress )

4387 for

( ; c1 < nandress; ++c1 )

4392

assert(res2 !=

NULL

);

4395

newandcoefs[nnewconsanddatas] = andcoefs[c1];

4396

newandnegs[nnewconsanddatas] = andnegs[c1];

4397

++(newconsanddatas[nnewconsanddatas]->

nuses

);

4401

-newandcoefs[nnewconsanddatas] : newandcoefs[nnewconsanddatas], newlhs, newrhs) );

4404

consdata->changed =

TRUE

;

4405

consdata->upgradetried =

FALSE

;

4406

consdata->cliquesadded =

FALSE

;

4407

consdata->propagated =

FALSE

;

4408

consdata->presolved =

FALSE

;

4411

assert(c == nconsanddatas && c1 == nandress);

4420

consdata->upgradetried =

FALSE

;

4421

consdata->lhs = newlhs;

4422

consdata->rhs = newrhs;

4425

consdata->consanddatas = newconsanddatas;

4426

consdata->andcoefs = newandcoefs;

4427

consdata->andnegs = newandnegs;

4428

consdata->nconsanddatas = nnewconsanddatas;

4429

consdata->sconsanddatas = snewconsanddatas;

4431

oldnvars = consdata->nlinvars;

4434

consdata->nlinvars -= nnewconsanddatas;

4436 if

( oldnvars != consdata->nlinvars )

4438

consdata->changed =

TRUE

;

4439

consdata->upgradetried =

FALSE

;

4440

consdata->cliquesadded =

FALSE

;

4441

consdata->propagated =

FALSE

;

4442

consdata->presolved =

FALSE

;

4446

consanddatas = consdata->consanddatas;

4447

nconsanddatas = consdata->nconsanddatas;

4448

assert(nconsanddatas == 0 || consanddatas !=

NULL

);

4451 for

( c = nconsanddatas - 1; c > 0; --c )

4460

assert(consanddatas[c] !=

NULL

);

4461

assert(consanddatas[c]->cons !=

NULL

);

4463

assert(res1 !=

NULL

);

4464

assert(consanddatas[c - 1] !=

NULL

);

4465

assert(consanddatas[c - 1]->cons !=

NULL

);

4467

assert(res2 !=

NULL

);

4472

assert(res1 !=

NULL

);

4478

assert(res2 !=

NULL

);

4482 if

( resind1 == -1 && resind2 == -1 )

4488 if

( resind1 <= resind2 )

4490

assert(resind1 == resind2);

4506 int

*

const

naggrvars,

4524

assert(cons !=

NULL

);

4525

assert(cutoff !=

NULL

);

4526

assert(naggrvars !=

NULL

);

4527

assert(nchgbds !=

NULL

);

4533

assert(consdata !=

NULL

);

4535

assert(consdata->nconsanddatas > 0);

4538 if

( consdata->cliquesadded )

4541

consdata->cliquesadded =

TRUE

;

4546

assert(consdata->lincons !=

NULL

);

4549

assert(consdata->consanddatas !=

NULL

);

4550

assert(consdata->nconsanddatas > 0);

4551

assert(consdata->nconsanddatas <= consdata->sconsanddatas);

4555

assert(nvars == consdata->nlinvars + consdata->nconsanddatas);

4570

assert(nandress == consdata->nconsanddatas);

4571

assert(consdata->consanddatas !=

NULL

);

4574 for

( c = nandress - 1; c >= 0; --c )

4580

consanddata = consdata->consanddatas[c];

4581

assert(consanddata !=

NULL

);

4588

andvars = consanddata->

newvars

;

4589

nandvars = consanddata->

nnewvars

;

4593

andvars = consanddata->

vars

;

4594

nandvars = consanddata->

nvars

;

4597 for

( v1 = nandvars - 1; v1 >= 0; --v1 )

4615 for

( v2 = nlinvars - 1; v2 >= 0; --v2 )

4645 if

( values[0] != values[1] && var1 == var2 )

4651

clqvars[0] = andres;

4653

assert(clqvars[1] !=

NULL

);

4662

*nchgbds += nchgbdslocal;

4694

clqvars[0] = andres;

4696

assert(clqvars[1] !=

NULL

);

4705

*nchgbds += nchgbdslocal;

4725 for

( c = nandress - 1; c > 0; --c )

4734

consanddata1 = consdata->consanddatas[c];

4735

assert(consanddata1 !=

NULL

);

4736

consanddata2 = consdata->consanddatas[c - 1];

4737

assert(consanddata2 !=

NULL

);

4745

andvars1 = consanddata1->

newvars

;

4746

nandvars1 = consanddata1->

nnewvars

;

4750

andvars1 = consanddata1->

vars

;

4751

nandvars1 = consanddata1->

nvars

;

4757

andvars2 = consanddata2->

newvars

;

4758

nandvars2 = consanddata2->

nnewvars

;

4762

andvars2 = consanddata2->

vars

;

4763

nandvars2 = consanddata2->

nvars

;

4767 for

( v1 = nandvars1 - 1; v1 >= 0; --v1 )

4772

var1 = andvars1[v1];

4785 for

( v2 = nandvars2 - 1; v2 >= 0; --v2 )

4789

var2 = andvars2[v2];

4815 if

( values[0] != values[1] && var1 == var2 )

4821

clqvars[0] = andres;

4822

clqvars[1] = andres2;

4831

*nchgbds += nchgbdslocal;

4864

clqvars[0] = andres;

4866

assert(clqvars[1] !=

NULL

);

4875

*nchgbds += nchgbdslocal;

4908 int

*

const

ndelconss

4914

assert(cons !=

NULL

);

4915

assert(cutoff !=

NULL

);

4916

assert(ndelconss !=

NULL

);

4921

assert(consdata !=

NULL

);

4922

assert(consdata->lincons !=

NULL

);

4932 if

( consdata->propagated )

4936

consdata->propagated =

TRUE

;

4954

assert(cons !=

NULL

);

4957

assert(consdata !=

NULL

);

4959

consanddatas = consdata->consanddatas;

4960

nconsanddatas = consdata->nconsanddatas;

4961

assert(nconsanddatas == 0 || consanddatas !=

NULL

);

4967 for

( c = nconsanddatas - 1; c >= 0; --c )

4971

assert(consanddatas[c] !=

NULL

);

4973 if

( !consanddatas[c]->istransformed )

4976

andcons = consanddatas[c]->

cons

;

4977

assert(andcons !=

NULL

);

4990 int

*

const

ndelconss

5004

assert(conshdlrdata !=

NULL

);

5005

assert(ndelconss !=

NULL

);

5007 if

( conshdlrdata->nallconsanddatas == 0 )

5010

allconsanddatas = conshdlrdata->allconsanddatas;

5011

assert(allconsanddatas !=

NULL

);

5012

assert(conshdlrdata->nallconsanddatas >= 1);

5013

assert(conshdlrdata->nallconsanddatas <= conshdlrdata->sallconsanddatas);

5015 if

( nfixedvars >= 1 && nvars >= 1 )

5023

activescalars =

NULL

;

5026 for

( c = conshdlrdata->nallconsanddatas - 1; c >= 0; --c )

5033

consanddata = allconsanddatas[c];

5035

assert(consanddata->

nvars

== 0 || (consanddata->

vars

!=

NULL

&& consanddata->

svars

> 0));

5044

assert(consanddata->

nnewvars

== 0);

5045

assert(consanddata->

snewvars

== 0);

5051 if

( consanddata->

nvars

== 0 )

5056

assert(consanddata->

nnewvars

== 0);

5057

assert(consanddata->

nuses

> 0);

5058

assert(resvar !=

NULL

);

5068

consanddata->

nuses

= 0;

5083 if

( consanddata->

nuses

== 0 )

5096

assert(consanddata->

nnewvars

== 0);

5097

assert(consanddata->

snewvars

== 0);

5111 if

( looseorcolumn )

5120 for

(

w

= 0;

w

< nfixedvars && del; ++

w

)

5126

assert(fixedvars !=

NULL

);

5127

assert(activevars !=

NULL

);

5128

assert(activescalars !=

NULL

);

5129

activevars[0] = fixedvars[

w

];

5130

activescalars[0] = 1.0;

5131

activeconstant = 0.0;

5134

&activeconstant, &requiredsize,

TRUE

) );

5135

assert(requiredsize <= nvars);

5137 for

( i = 0; i < nactivevars && del; ++i )

5141 if

( activevars[i] == resvar )

5155 if

( !looseorcolumn )

5177

cons = consanddata->

cons

;

5178

assert(cons !=

NULL

);

5185

assert(consanddata->

nuses

> 0);

5186

assert(resvar !=

NULL

);

5192

consanddata->

nuses

= 0;

5210

tmpvars = consanddata->

vars

;

5212 for

( v = consanddata->

nvars

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

5215

assert(tmpvars[v] !=

NULL

);

5220

tmpvars = consanddata->

vars

;

5221

stmpvars = consanddata->

svars

;

5225

consanddata->

newvars

= tmpvars;

5231 if

( activevars !=

NULL

)

5248 int

*

const

ndelconss

5257

assert(cons !=

NULL

);

5258

assert(conshdlrdata !=

NULL

);

5259

assert(ndelconss !=

NULL

);

5265

assert(consdata !=

NULL

);

5267

consanddatas = consdata->consanddatas;

5268

nconsanddatas = consdata->nconsanddatas;

5269

assert(nconsanddatas > 0 && consanddatas !=

NULL

);

5270

assert(consdata->andcoefs !=

NULL

);

5273 for

( c = nconsanddatas - 1; c >= 0; --c )

5277

consanddata = consanddatas[c];

5278

assert(consanddata !=

NULL

);

5287 for

( c = nconsanddatas - 1; c >= 0; --c )

5291

consanddata = consanddatas[c];

5292

assert(consanddata !=

NULL

);

5293

assert(consanddatas[c]->istransformed);

5295

assert(consanddata->

nuses

> 0);

5297 if

( consanddata->

nuses

> 0 )

5298

--(consanddata->

nuses

);

5301 if

( consanddata->

nuses

== 0 )

5310

assert(resvar !=

NULL

);

5319 if

( looseorcolumn )

5336 if

( !looseorcolumn )

5357

consdata->nconsanddatas = 0;

5387 int const

nconsanddatas,

5405

assert(vars !=

NULL

);

5407

assert(values !=

NULL

);

5408

assert(linvars !=

NULL

|| nlinvars == 0);

5409

assert(lincoefs !=

NULL

|| nlinvars == 0);

5410

assert(nvars >= nlinvars);

5412

assert(consanddatas !=

NULL

);

5413

assert(consanddatacoefs !=

NULL

);

5414

assert(nconsanddatas > 0);

5415

assert(*xortype >= -1 && *xortype <= 1);

5418 SCIPsortPtr

((

void

**)linvars, SCIPvarCompActiveAndNegated, nlinvars);

5419 SCIPsortPtr

((

void

**)vars, SCIPvarCompActiveAndNegated, nvars);

5422 for

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

5424 if

(

SCIPsortedvecFindPtr

((

void

**)vars, SCIPvarCompActiveAndNegated, linvars[v], nvars, &pos) )

5427

value += lincoefs[v];

5442 for

( c = nconsanddatas - 1; c >= 0; --c )

5446

consanddata = consanddatas[c];

5447

assert(consanddata !=

NULL

);

5453

termvars = consanddata->

newvars

;

5454

ntermvars = consanddata->

nnewvars

;

5458

termvars = consanddata->

vars

;

5459

ntermvars = consanddata->

nvars

;

5461

assert(ntermvars > 0 && termvars !=

NULL

);

5467 SCIPsortPtrBool

((

void

**)repvars, negated, SCIPvarCompActiveAndNegated, ntermvars);

5469 for

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

5478 if

( (negated[v] && values[pos]) || (!negated[v] && !values[pos]) )

5494 if

( val != consanddatanegs[c] )

5495

value += consanddatacoefs[c];

5501 if

( *xortype == -1 )

5509 else if

( *xortype == 1 && cnt % 2 == 0 )

5511 else if

( *xortype == 0 && cnt % 2 == 1 )

5517 if

( *xortype == -1 )

5525 else if

( *xortype == 1 && cnt % 2 == 1 )

5527 else if

( *xortype == 0 && cnt % 2 == 0 )

5548 int

*

const

ndelconss,

5549 int

*

const

naddconss,

5550 int

*

const

nfixedvars,

5551 int

*

const

nchgcoefs,

5552 int

*

const

nchgsides,

5588

assert(cons !=

NULL

);

5589

assert(conshdlrdata !=

NULL

);

5590

assert(ndelconss !=

NULL

);

5591

assert(nfixedvars !=

NULL

);

5592

assert(nchgcoefs !=

NULL

);

5593

assert(nchgsides !=

NULL

);

5594

assert(cutoff !=

NULL

);

5598

assert(consdata !=

NULL

);

5600

consanddatas = consdata->consanddatas;

5601

andcoefs = consdata->andcoefs;

5602

andnegs = consdata->andnegs;

5603

nconsanddatas = consdata->nconsanddatas;

5604

assert(nconsanddatas > 0 && consanddatas !=

NULL

);

5606

assert(consdata->lincons !=

NULL

);

5613

assert(consanddatas[0] !=

NULL

);

5614

assert(consanddatas[0]->cons !=

NULL

);

5616

lincons = consdata->lincons;

5620

assert(nallvars - nconsanddatas == consdata->nlinvars);

5621

nlinvars = consdata->nlinvars;

5638

assert(nallvars > 0);

5643

assert(nlinvars == consdata->nlinvars);

5644

assert(nandress == nallvars-nlinvars);

5655

firstnlinvars = nlinvars;

5658 SCIPsortPtr

((

void

**)linvars, SCIPvarCompActiveAndNegated, nlinvars);

5660 for

( c = nconsanddatas - 1; c >= 0; --c )

5662

consanddata = consanddatas[c];

5663

assert(consanddata !=

NULL

);

5669

vars = consanddata->

newvars

;

5674

vars = consanddata->

vars

;

5675

nvars = consanddata->

nvars

;

5677

assert(nvars > 0 && vars !=

NULL

);

5686 SCIPsortPtr

((

void

**)repvars, SCIPvarCompActiveAndNegated, nvars);

5688

oldnlinvars = nlinvars;

5691 for

( v = nvars - 1, v1 = nlinvars - 1; v >= 0 && v1 >= 0; )

5711

linvars[nlinvars] = var;

5733 for

( ; v >= 0; --v )

5748

linvars[nlinvars] = var;

5757 if

( nlinvars > oldnlinvars )

5760 SCIPsortPtr

((

void

**)linvars, SCIPvarCompActiveAndNegated, nlinvars);

5768 for

( v = (1 << nlinvars) - 1; v >= 0; --v )

5771 for

( v1 = nlinvars - 1; v1 >= 0; --v1 )

5772 if

( v & (1 << v1) )

5778

values[v1] =

FALSE

;

5781

assert(cnt <= nlinvars);

5784

consdata->lhs, consanddatas, andcoefs, andnegs, nconsanddatas, cnt, &xortype) );

5785 if

( xortype == -1 )

5791

assert(xortype >= -1 && xortype <= 1);

5839 int

*

const

ndelconss,

5840 int

*

const

naddconss,

5841 int

*

const

nfixedvars,

5842 int

*

const

nchgcoefs,

5843 int

*

const

nchgsides,

5859

assert(cons !=

NULL

);

5860

assert(conshdlrdata !=

NULL

);

5861

assert(ndelconss !=

NULL

);

5862

assert(nfixedvars !=

NULL

);

5863

assert(nchgcoefs !=

NULL

);

5864

assert(nchgsides !=

NULL

);

5865

assert(cutoff !=

NULL

);

5869

assert(consdata !=

NULL

);

5871

consanddatas = consdata->consanddatas;

5872

nconsanddatas = consdata->nconsanddatas;

5873

assert(nconsanddatas > 0 && consanddatas !=

NULL

);

5875

assert(consdata->lincons !=

NULL

);

5878

assert(consanddatas[0] !=

NULL

);

5879

assert(consanddatas[0]->cons !=

NULL

);

5881 if

( nconsanddatas == 1 )

5901 if

( consdata->nlinvars == 0 )

5913

lincons = consdata->lincons;

5915

consanddata = consanddatas[0];

5916

assert(consanddata !=

NULL

);

5922

vars = consanddata->

newvars

;

5927

vars = consanddata->

vars

;

5928

nvars = consanddata->

nvars

;

5930

assert(nvars > 0 && vars !=

NULL

);

5944

assert(nallvars == consdata->nlinvars + 1);

5946

nlinvars = consdata->nlinvars;

5956

assert(allcoefs !=

NULL

);

5961

assert(nlinvars == consdata->nlinvars);

5964 for

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

5970 for

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

6002

c = nconsanddatas - 1;

6003

assert(consanddatas[c]->istransformed);

6006 if

( consanddatas[c]->nnewvars > 0 )

6008

neqvars = consanddatas[c]->

nnewvars

;

6014

neqvars = consanddatas[c]->

nvars

;

6020

assert(neqvars > 0 && eqvars !=

NULL

);

6024 for

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

6028 for

( --c ; c >= 0; --c )

6035

consanddata = consanddatas[c];

6036

assert(consanddata !=

NULL

);

6037

assert(consanddatas[c]->istransformed);

6042

vars = consanddata->

newvars

;

6047

vars = consanddata->

vars

;

6048

nvars = consanddata->

nvars

;

6050

assert(nvars > 0 && vars !=

NULL

);

6054 for

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

6059 if

( nvars < nminvars )

6062 else if

( nvars > nmaxvars )

6064

assert(nminvars > 0);

6065

assert(nminvars <= nmaxvars);

6068 for

( v = 0, v2 = 0; v < neqvars && v2 < nvars; )

6073

assert(eqvars[v] !=

NULL

);

6074

assert(vars[v2] !=

NULL

);

6079 if

( index1 < index2 )

6081 else if

( index1 > index2 )

6085

assert(index1 == index2);

6086

assert(nneweqvars <= v);

6088 if

( nneweqvars < v )

6089

eqvars[nneweqvars] = eqvars[v];

6095

neqvars = nneweqvars;

6100 if

( nminvars > neqvars + 1 )

6142 if

( neqvars > 0 && consdata->nlinvars == 0 )

6148 for

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

6165 if

( nminvars == neqvars )

6177 if

( neqvars > 0 && nminvars == nmaxvars && nminvars == neqvars + 1 )

6188

lincons = consdata->lincons;

6200 for

( c = nconsanddatas - 1; c >= 0; --c )

6206

consanddata = consanddatas[c];

6207

assert(consanddata !=

NULL

);

6208

assert(consanddatas[c]->istransformed);

6213

vars = consanddata->

newvars

;

6218

vars = consanddata->

vars

;

6219

nvars = consanddata->

nvars

;

6221

assert(nvars > 0 && vars !=

NULL

);

6223 for

( v = 0, v2 = 0; v < neqvars && v2 < nvars; )

6228

assert(eqvars[v] !=

NULL

);

6229

assert(vars[v2] !=

NULL

);

6234

assert(index1 >= index2);

6236 if

( index1 > index2 )

6243

assert(index1 == index2);

6252

assert(v == neqvars);

6253 for

( ; v2 < nvars; ++v2)

6258

assert(v == neqvars && v2 == nvars);

6265 if

( consdata->nlinvars > 0 )

6275 for

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

6282

assert(nvars == consdata->nlinvars + consdata->nconsanddatas);

6292

assert(nvars == 0 || (coefs !=

NULL

));

6296 for

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

6302

assert(nlinvars == consdata->nlinvars);

6305 for

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

6351 int

*

const

ndelconss,

6352 int

*

const

naddconss,

6353 int

*

const

nfixedvars,

6354 int

*

const

nchgcoefs,

6355 int

*

const

nchgsides,

6372

assert(cons !=

NULL

);

6373

assert(conshdlrdata !=

NULL

);

6374

assert(ndelconss !=

NULL

);

6375

assert(nfixedvars !=

NULL

);

6376

assert(nchgcoefs !=

NULL

);

6377

assert(nchgsides !=

NULL

);

6378

assert(cutoff !=

NULL

);

6382

assert(consdata !=

NULL

);

6384

consanddatas = consdata->consanddatas;

6385

nconsanddatas = consdata->nconsanddatas;

6386

assert(nconsanddatas > 0 && consanddatas !=

NULL

);

6388

assert(consdata->lincons !=

NULL

);

6405

assert(consanddatas[0] !=

NULL

);

6406

assert(consanddatas[0]->cons !=

NULL

);

6408 if

( nconsanddatas == 1 )

6411 if

( consdata->nlinvars == 0 )

6440 if

( consdata->nlinvars > 0 )

6445

assert(consdata->nlinvars == 0 && nconsanddatas > 1);

6447

c = nconsanddatas - 1;

6448

assert(consanddatas[c]->istransformed);

6451 if

( consanddatas[c]->nnewvars > 0 )

6453

neqvars = consanddatas[c]->

nnewvars

;

6459

neqvars = consanddatas[c]->

nvars

;

6465

assert(neqvars > 0 && eqvars !=

NULL

);

6469 for

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

6473 for

( --c ; c >= 0; --c )

6480

consanddata = consanddatas[c];

6481

assert(consanddata !=

NULL

);

6482

assert(consanddatas[c]->istransformed);

6487

vars = consanddata->

newvars

;

6492

vars = consanddata->

vars

;

6493

nvars = consanddata->

nvars

;

6495

assert(nvars > 0 && vars !=

NULL

);

6499 for

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

6504 if

( nvars < nminvars )

6507 else if

( nvars > nmaxvars )

6509

assert(nminvars > 0);

6510

assert(nminvars <= nmaxvars);

6513 for

( v = 0, v2 = 0; v < neqvars && v2 < nvars; )

6518

assert(eqvars[v] !=

NULL

);

6519

assert(vars[v2] !=

NULL

);

6524 if

( index1 < index2 )

6526 else if

( index1 > index2 )

6530

assert(index1 == index2);

6531

assert(nneweqvars <= v);

6533 if

( nneweqvars < v )

6534

eqvars[nneweqvars] = eqvars[v];

6540

neqvars = nneweqvars;

6582 if

( neqvars > 0 && ((nminvars == nmaxvars && nminvars == neqvars + 1) || (nminvars == neqvars) || (type ==

SCIP_SETPPCTYPE_PARTITIONING

)) )

6612 if

( neqvars == nminvars )

6615

createcons = (

SCIPisLE

(

scip

, lhs, rhs) && ((nminvars == nmaxvars && nminvars == neqvars + 1) || (nminvars == neqvars)));

6620

lincons = consdata->lincons;

6638 for

( c = nconsanddatas - 1; c >= 0; --c )

6644

consanddata = consanddatas[c];

6645

assert(consanddata !=

NULL

);

6646

assert(consanddatas[c]->istransformed);

6651

vars = consanddata->

newvars

;

6656

vars = consanddata->

vars

;

6657

nvars = consanddata->

nvars

;

6659

assert(nvars > 0 && vars !=

NULL

);

6662 if

( deletecons && neqvars + 1 < nvars )

6681 for

( v = 0, v2 = 0; v < neqvars && v2 < nvars; )

6686

assert(eqvars[v] !=

NULL

);

6687

assert(vars[v2] !=

NULL

);

6692

assert(index1 >= index2);

6694 if

( index1 > index2 )

6698

assert(newcons !=

NULL

);

6701 else if

( deletecons )

6718

assert(index1 == index2);

6728

assert(v == neqvars);

6729 for

( ; v2 < nvars; ++v2)

6735 else if

( deletecons )

6750

assert(v == neqvars && v2 == nvars);

6756 for

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

6782

assert(newcons !=

NULL

);

6801

assert(!deletecons);

6827 int

*

const

ndelconss,

6828 int

*

const

naddconss,

6829 int

*

const

nfixedvars,

6830 int

*

const

nchgcoefs,

6831 int

*

const

nchgsides,

6842

assert(cons !=

NULL

);

6843

assert(conshdlrdata !=

NULL

);

6844

assert(ndelconss !=

NULL

);

6845

assert(nfixedvars !=

NULL

);

6846

assert(nchgcoefs !=

NULL

);

6847

assert(nchgsides !=

NULL

);

6848

assert(cutoff !=

NULL

);

6852

assert(consdata !=

NULL

);

6853

assert(consdata->lincons !=

NULL

);

6856

consanddatas = consdata->consanddatas;

6857

assert(consdata->nconsanddatas == 0 || consanddatas !=

NULL

);

6861 if

( consdata->nconsanddatas == 0 )

6877

assert(consdata->nlinvars + consdata->nconsanddatas == nvars);

6879 switch

( consdata->linconstype )

6896#ifdef WITHEQKNAPSACK 6897 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

6914

consdata->upgradetried =

TRUE

;

6925 int

*

const

ndelconss,

6926 int

*

const

naggrvars,

6948

assert(cons !=

NULL

);

6949

assert(conshdlrdata !=

NULL

);

6950

assert(ndelconss !=

NULL

);

6951

assert(naggrvars !=

NULL

);

6952

assert(cutoff !=

NULL

);

6959

assert(consdata !=

NULL

);

6960

assert(consdata->lincons !=

NULL

);

6962

consanddatas = consdata->consanddatas;

6963

nconsanddatas = consdata->nconsanddatas;

6964

assert(nconsanddatas == 0 || consanddatas !=

NULL

);

6970

assert(

SCIPisEQ

(

scip

, consdata->rhs, consdata->lhs));

6973 if

( nconsanddatas < 2 || nconsanddatas > 3 )

6979

assert(consdata->nlinvars + nconsanddatas == nvars);

6982 if

( consdata->nlinvars != 1 )

6986 if

( consanddatas[0]->nnewvars > 0 )

6987

nvars = consanddatas[0]->

nnewvars

;

6989

nvars = consanddatas[0]->

nvars

;

6991 if

( consanddatas[1]->nnewvars > 0 )

6993 if

( nvars != consanddatas[1]->nnewvars )

6996 else if

( nvars != consanddatas[1]->nvars )

7011 if

( consanddatas[nconsanddatas - 1]->nnewvars > 0 )

7012

vars = consanddatas[nconsanddatas - 1]->

newvars

;

7014

vars = consanddatas[nconsanddatas - 1]->

vars

;

7018 SCIPsortPtrBool

((

void

**)repvars, negated, SCIPvarCompActiveAndNegated, nvars);

7022 for

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

7042

assert(var1 != var2);

7047 for

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

7058

++(varcount[negated[v]][v]);

7061 for

( c = nconsanddatas - 2; c >= 0; --c )

7066 if

( consanddatas[nconsanddatas - 1]->nnewvars > 0 )

7067

vars = consanddatas[c]->

newvars

;

7069

vars = consanddatas[c]->

vars

;

7076 SCIPsortPtrBool

((

void

**)repvars, negated, SCIPvarCompActiveAndNegated, nvars);

7080 for

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

7100

assert(var1 != var2);

7105 for

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

7115 if

(

SCIPsortedvecFindPtr

((

void

**)allvars, SCIPvarCompActiveAndNegated, repvars[v], nvars, &pos) )

7117

assert(pos >= 0 && pos < nvars);

7119

++(varcount[negated[v]][pos]);

7132 for

( i = 1; i >= 0; --i )

7134 for

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

7138 if

( varcount[i][v] == 0 )

7140 else if

( varcount[i][v] == 1 )

7142 else if

( varcount[i][v] == 2 )

7150 if

( othercount == 0 )

7155 if

( nconsanddatas == 2 && twocount == nvars - 1 && onecount == 2 && zerocount == 1 )

7170

assert(nconsvars == consdata->nlinvars + nconsanddatas);

7171

assert(conscoefs !=

NULL

);

7175 for

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

7183

assert(nlinvars == 1);

7184

assert(linvar !=

NULL

);

7202 for

( i = 1; i >= 0; --i )

7204 for

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

7207 if

( varcount[i][v] == 2 )

7219

assert(var !=

NULL

);

7256 else if

( nvars == 2 && nconsanddatas == 3 && twocount == 2 && onecount == 2 && zerocount == 0)

7275

assert(nconsvars == consdata->nlinvars + nconsanddatas);

7276

assert(conscoefs !=

NULL

);

7280 for

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

7288

assert(nlinvars == 1);

7289

assert(linvar !=

NULL

);

7294

newandvars[0] =

NULL

;

7295

newandvars[1] =

NULL

;

7299 for

( i = 1; i >= 0; --i )

7301 for

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

7304 if

( varcount[i][v] == 1 )

7306 if

( newandvars[0] ==

NULL

)

7310

assert(newandvars[1] ==

NULL

);

7322

assert(newandvars[0] !=

NULL

&& newandvars[1] !=

NULL

);

7385

assert(cons !=

NULL

);

7386

assert(graph !=

NULL

);

7387

assert(success !=

NULL

);

7390

assert(consdata !=

NULL

);

7404 if

( vars[0] !=

NULL

)

7417 if

( consdata->intvar !=

NULL

)

7419

vars[0] = consdata->intvar;

7443 for

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

7444

vals[i] = tmpvals[i];

7449 for

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

7455 for

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

7461 for

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

7471

assert(tmpvars !=

NULL

);

7472 for

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

7473

vars[i] = tmpvars[i];

7485 for

( c = 0; c < consdata->nconsanddatas; ++c )

7487

assert(consdata->consanddatas[c] !=

NULL

);

7492

tmpnvars = consdata->consanddatas[c]->nvars;

7493 for

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

7494

vars[i] = consdata->consanddatas[c]->vars[i];

7495 for

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

7517#ifdef NONLINCONSUPGD_PRIORITY 7523

SCIP_EXPRGRAPH* exprgraph;

7524

SCIP_EXPRGRAPHNODE* node;

7538

assert(nupgdconss !=

NULL

);

7539

assert(upgdconss !=

NULL

);

7543

node = SCIPgetExprgraphNodeNonlinear(

scip

, cons);

7549 switch

( SCIPexprgraphGetNodeOperator(node) )

7551 case

SCIP_EXPR_VARIDX:

7552 case

SCIP_EXPR_CONST:

7553 case

SCIP_EXPR_PLUS:

7554 case

SCIP_EXPR_MINUS:

7556 case

SCIP_EXPR_LINEAR:

7562 case

SCIP_EXPR_SQUARE:

7563 case

SCIP_EXPR_SQRT:

7564 case

SCIP_EXPR_REALPOWER:

7565 case

SCIP_EXPR_INTPOWER:

7566 case

SCIP_EXPR_SIGNPOWER:

7577 case

SCIP_EXPR_SIGN:

7578 case

SCIP_EXPR_PRODUCT:

7579 case

SCIP_EXPR_USER:

7583 case

SCIP_EXPR_QUADRATIC:

7586 case

SCIP_EXPR_POLYNOMIAL:

7590 case

SCIP_EXPR_PARAM:

7591 case

SCIP_EXPR_LAST:

7601 for

( i = 0; i < SCIPgetNLinearVarsNonlinear(

scip

, cons); ++i )

7603

var = SCIPgetLinearVarsNonlinear(

scip

, cons)[i];

7604

assert(var !=

NULL

);

7615 for

( i = 0; i < SCIPexprgraphGetNodeNChildren(node); ++i )

7617

SCIP_EXPRGRAPHNODE* child;

7619

child = SCIPexprgraphGetNodeChildren(node)[i];

7620

assert(child !=

NULL

);

7621 if

( SCIPexprgraphGetNodeOperator(child) != SCIP_EXPR_VARIDX )

7623 SCIPdebugMsg

(

scip

,

"not pseudoboolean because child %d is not a variable\n"

, i);

7627

var = (

SCIP_VAR

*)SCIPexprgraphGetNodeVar(exprgraph, child);

7628

assert(var !=

NULL

);

7638 if

( upgdconsssize < 1 )

7648

lhs -= SCIPexprgraphGetNodePolynomialConstant(node);

7650

rhs -= SCIPexprgraphGetNodePolynomialConstant(node);

7653 if

( objvar !=

NULL

)

7657 for

( i = 0; i < SCIPgetNLinearVarsNonlinear(

scip

, cons); ++i )

7659

var = SCIPgetLinearVarsNonlinear(

scip

, cons)[i];

7660 if

( var != objvar )

7661

linvars[nlinvars++] = var;

7665

nlinvars = SCIPgetNLinearVarsNonlinear(

scip

, cons);

7668 nterms

= SCIPexprgraphGetNodePolynomialNMonomials(node);

7673 for

( i = 0; i <

nterms

; ++i )

7675

SCIP_EXPRDATA_MONOMIAL* monomial;

7677

monomial = SCIPexprgraphGetNodePolynomialMonomials(node)[i];

7678

assert(monomial !=

NULL

);

7680

ntermvars[i] = SCIPexprGetMonomialNFactors(monomial);

7683 for

( j = 0; j < SCIPexprGetMonomialNFactors(monomial); ++j )

7685

terms[i][j] = (

SCIP_VAR

*)SCIPexprgraphGetNodeVar(exprgraph, SCIPexprgraphGetNodeChildren(node)[SCIPexprGetMonomialChildIndices(monomial)[j]]);

7686

assert(SCIPexprGetMonomialExponents(monomial)[j] > 0.0);

7689

termvals[i] = SCIPexprGetMonomialCoef(monomial);

7694

objvar !=

NULL

? linvars : SCIPgetLinearVarsNonlinear(

scip

, cons), nlinvars, SCIPgetLinearCoefsNonlinear(

scip

, cons),

7701 for

( i =

nterms

-1; i >= 0; --i )

7718

assert(conshdlr !=

NULL

);

7736

assert(conshdlr !=

NULL

);

7741

assert(conshdlrdata !=

NULL

);

7759

assert(conshdlr !=

NULL

);

7763

assert(conshdlrdata !=

NULL

);

7766 for

( c = conshdlrdata->nallconsanddatas - 1; c >= 0; --c )

7775

assert(conshdlrdata->allconsanddatas[c] !=

NULL

);

7776

assert(conshdlrdata->allconsanddatas[c]->newvars ==

NULL

);

7778

vars = conshdlrdata->allconsanddatas[c]->vars;

7779

nvars = conshdlrdata->allconsanddatas[c]->nvars;

7780

assert(vars !=

NULL

|| nvars == 0);

7783 for

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

7791

andcons = conshdlrdata->allconsanddatas[c]->cons;

7792

assert(andcons !=

NULL

);

7802 SCIPconsGetName

(conshdlrdata->allconsanddatas[c]->cons), (

void

*)(conshdlrdata->allconsanddatas[c]),

7803

(

void

*)(conshdlrdata->allconsanddatas[c]->cons));

7817

assert(conshdlr !=

NULL

);

7821

assert(conshdlrdata !=

NULL

);

7824 for

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

7833

assert(cons !=

NULL

);

7840

assert(consdata !=

NULL

);

7841

assert(consdata->intvar ==

NULL

);

7844 if

( !conshdlrdata->decomposenormalpbcons && !consdata->issoftcons )

7856

assert(nvars == 0 || (coefs !=

NULL

));

7859 if

( !consdata->issoftcons )

7880

assert(consdata->weight != 0);

7881

assert(consdata->indvar !=

NULL

);

7885

assert(negindvar !=

NULL

);

7896

updateandconss =

FALSE

;

7899 if

( conshdlrdata->decomposeindicatorpbcons )

7921

updateandconss =

TRUE

;

7934 for

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

7944 if

( !updateandconss )

7968 for

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

8002

updateandconss =

TRUE

;

8014

ub = lhs - maxact - 1;

8045 if

( !updateandconss )

8061

lb = rhs - minact + 1;

8104

assert(conshdlr !=

NULL

);

8105

assert(cons !=

NULL

);

8106

assert(consdata !=

NULL

);

8107

assert(*consdata !=

NULL

);

8111

assert(conshdlrdata !=

NULL

);

8122 for

( c = (*consdata)->nconsanddatas - 1; c >= 0; --c )

8124

assert((*consdata)->consanddatas[c]->nuses == 0);

8125

assert((*consdata)->consanddatas[c]->cons ==

NULL

);

8126

assert((*consdata)->consanddatas[c]->noriguses == 0 || ((*consdata)->consanddatas[c]->origcons !=

NULL

&&

SCIPconsIsOriginal

((*consdata)->consanddatas[c]->origcons)));

8129

conshdlrdata->noriguses -= (*consdata)->nconsanddatas;

8131

assert(conshdlrdata->noriguses >= 0);

8149

assert(conshdlr !=

NULL

);

8152

assert(sourcecons !=

NULL

);

8153

assert(targetcons !=

NULL

);

8156

assert(sourcedata !=

NULL

);

8158

assert(sourcedata->nconsanddatas == 0 || sourcedata->consanddatas !=

NULL

);

8164 for

( c = sourcedata->nconsanddatas - 1; c >= 0; --c )

8166

assert(sourcedata->consanddatas[c] !=

NULL

);

8167

andconss[c] = sourcedata->consanddatas[c]->origcons;

8168

assert(andconss[c] !=

NULL

);

8174

andconss, sourcedata->andcoefs, sourcedata->andnegs, sourcedata->nconsanddatas, sourcedata->indvar, sourcedata->weight,

8175

sourcedata->issoftcons, sourcedata->intvar, sourcedata->lhs, sourcedata->rhs,

SCIPconsIsChecked

(sourcecons),

8198

assert(conshdlr !=

NULL

);

8200

assert(result !=

NULL

);

8223

assert(conshdlr !=

NULL

);

8225

assert(result !=

NULL

);

8248

assert(conshdlr !=

NULL

);

8250

assert(result !=

NULL

);

8274

assert(conshdlr !=

NULL

);

8275

assert(sol !=

NULL

);

8277

assert(result !=

NULL

);

8287 for

( c = nconss - 1; c >= 0 && (*result ==

SCIP_FEASIBLE

|| completely); --c )

8290

assert(consdata !=

NULL

);

8292 if

( consdata->issoftcons )

8294

assert(consdata->indvar !=

NULL

);

8325 int

firstupgradetry;

8336

assert(conshdlr !=

NULL

);

8338

assert(result !=

NULL

);

8341

oldnfixedvars = *nfixedvars;

8342

oldnaggrvars = *naggrvars;

8343

oldnchgbds = *nchgbds;

8344

oldndelconss = *ndelconss;

8345

oldnupgdconss = *nupgdconss;

8346

oldnchgcoefs = *nchgcoefs;

8347

oldnchgsides = *nchgsides;

8355

firstchange = INT_MAX;

8356

firstupgradetry = INT_MAX;

8377

assert(cons !=

NULL

);

8381

assert(consdata !=

NULL

);

8382

assert(consdata->lincons !=

NULL

);

8404

assert(nvars == 0 || (coefs !=

NULL

));

8408

andress, andcoefs, andnegs, &nandress) );

8433 if

( firstchange == INT_MAX && consdata->changed )

8446 if

( consdata->changed )

8449 SCIP_CALL

(

tryUpgrading

(

scip

, cons, conshdlrdata, ndelconss, naddconss, nfixedvars, nchgcoefs, nchgsides, &cutoff) );

8459 if

( firstupgradetry == INT_MAX && !consdata->upgradetried )

8460

firstupgradetry = c;

8465

consdata->presolved =

TRUE

;

8483

consdata->changed =

FALSE

;

8502 else if

( *nfixedvars > oldnfixedvars || *naggrvars > oldnaggrvars || *nchgbds > oldnchgbds || *ndelconss > oldndelconss

8503

|| *nupgdconss > oldnupgdconss || *nchgcoefs > oldnchgcoefs || *nchgsides > oldnchgsides )

8524

assert(cons !=

NULL

);

8525

assert(conshdlr !=

NULL

);

8530

assert(consdata !=

NULL

);

8532

lhs = consdata->lhs;

8533

rhs = consdata->rhs;

8541 SCIPdebugMsg

(

scip

,

"%socking constraint <%s> by [%d;%d].\n"

, (nlocksneg < 0) || (nlockspos < 0) ?

"Unl"

:

"L"

,

SCIPconsGetName

(cons), nlocksneg, nlockspos);

8544 for

( c = consdata->nconsanddatas - 1; c >= 0; --c )

8553

consanddata = consdata->consanddatas[c];

8554

assert( consanddata !=

NULL

);

8559

andcons = consanddata->

cons

;

8561 if

( andcons ==

NULL

)

8564

assert(consanddata->

nnewvars

== 0);

8565

assert(consanddata->

nvars

== 0);

8570

consanddata->

nvars

= 0;

8571

consanddata->

svars

= 0;

8578

assert(andcons !=

NULL

);

8581

andvars = consanddata->

newvars

;

8582

nandvars = consanddata->

nnewvars

;

8586

andvars = consanddata->

vars

;

8587

nandvars = consanddata->

nvars

;

8592

assert(nandvars == 0 || andvars !=

NULL

);

8593

assert(andres !=

NULL

);

8594

val = consdata->andnegs[c] ? -consdata->andcoefs[c] : consdata->andcoefs[c];

8601 for

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

8611 for

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

8628 for

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

8638 for

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

8664

assert(conshdlr !=

NULL

);

8666

assert(cons !=

NULL

);

8677 const char

* consname;

8680

assert(sourcescip !=

NULL

);

8681

assert(sourcecons !=

NULL

);

8689

initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode, global,

8691

assert(cons !=

NULL

|| *valid ==

FALSE

);

8715 const char

* endptr;

8716 const char

* firstcomp;

8717 const char

* secondcomp;

8718 const char

* lhsstrptr;

8719 const char

* rhsstrptr;

8720 const char

* varstrptr;

8721 char

* polynomialstr;

8722 int

* monomialnvars;

8732

assert(success !=

NULL

);

8733

assert(str !=

NULL

);

8734

assert(name !=

NULL

);

8735

assert(cons !=

NULL

);

8760 switch

( endptr[0] )

8766 if

( endptr[1] ==

'='

)

8775 if

( strncmp(endptr,

"[free]"

, 6) == 0 )

8790 if

( firstcomp ==

NULL

)

8796 if

( secondcomp !=

NULL

)

8801 else if

( strncmp(firstcomp,

"<="

, 2) != 0 )

8806 else if

( strncmp(endptr,

"<="

, 2) != 0 )

8808 SCIPerrorMessage

(

"Bad second comparator, expected ranged specification: %s"

, str);

8812

secondcomp = endptr;

8816

endptr += increment;

8820 if

( firstcomp ==

NULL

)

8832 switch

( *firstcomp )

8835

assert(firstcomp[1] ==

'='

);

8837 if

( secondcomp !=

NULL

)

8839

assert(secondcomp[0] ==

'<'

&& secondcomp[1] ==

'='

);

8841

rhsstrptr = secondcomp + 2;

8842

varstrptr = firstcomp + 2;

8846

rhsstrptr = firstcomp + 2;

8849

assert(firstcomp[1] ==

'='

);

8850

assert(secondcomp ==

NULL

);

8852

lhsstrptr = firstcomp + 2;

8855

assert(firstcomp[1] ==

'='

);

8856

assert(secondcomp ==

NULL

);

8858

rhsstrptr = firstcomp + 2;

8859

lhsstrptr = firstcomp + 2;

8862

assert(strncmp(firstcomp,

"[free]"

, 6) == 0);

8863

assert(secondcomp ==

NULL

);

8865

endptr = firstcomp + 6;

8869 SCIPerrorMessage

(

"Parsing has wrong comparator character '%c', should be one of <=>["

, *firstcomp);

8878 if

( lhsstrptr !=

NULL

)

8882 SCIPerrorMessage

(

"error parsing left hand side number from <%s>\n"

, lhsstrptr);

8887 if

( rhsstrptr == lhsstrptr )

8892 if

( rhsstrptr !=

NULL

&& rhsstrptr != lhsstrptr )

8896 SCIPerrorMessage

(

"error parsing right hand side number from <%s>\n"

, lhsstrptr);

8904

issoftcons =

FALSE

;

8911 if

( *endptr ==

'('

)

8913

endptr = strchr(endptr + 1,

'='

);

8915 if

( endptr ==

NULL

)

8924 if

( indvar ==

NULL

)

8931

endptr = strchr(endptr,

')'

);

8933 if

( endptr ==

NULL

)

8944

polynomialsize = (int)(

MAX

(firstcomp, secondcomp) + 1 - varstrptr);

8946

(void)

SCIPstrncpy

(polynomialstr, varstrptr, polynomialsize);

8952

polynomialsize -= (int)(endptr + 1 - polynomialstr);

8958 SCIPerrorMessage

(

"no luck in parsing pseudoboolean polynomial '%s'\n"

, varstrptr);

8961 else if

( polynomialsize >= 1 )

8963 SCIPerrorMessage

(

"no completion of parsing pseudoboolean polynomial '%s'\n"

, varstrptr);

8980 for

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

8988 for

( j = 0; j < monomialnvars[i]; ++j )

8990 if

( monomialexps[i][j] < 0.0 )

8992 SCIPerrorMessage

(

"invalid exponent '%f' on variable <%s> in pseudoboolean polynomial '%s'\n"

, monomialexps[i][j],

SCIPvarGetName

(monomialvars[i][j]), varstrptr);

8996 if

( monomialexps[i][j] == 0.0 )

8999

monomialvars[i][ntermvars[

nterms

]++] = monomialvars[i][j];

9002 if

( ntermvars[

nterms

] > 1 )

9004

terms[

nterms

] = monomialvars[i];

9005

termvals[

nterms

] = monomialcoefs[i];

9008 else if

( ntermvars[

nterms

] == 1 )

9010 if

( issoftcons && ( monomialvars[i][0] == indvar ||

SCIPvarGetNegatedVar

(monomialvars[i][0]) == indvar ) )

9016

linvars[nlinvars] = monomialvars[i][0];

9017

linvals[nlinvars] = monomialcoefs[i];

9022

assert(ntermvars[

nterms

] == 0);

9025

lhs -= monomialcoefs[i];

9028

rhs -= monomialcoefs[i];

9033 SCIP_CALL

(

SCIPcreateConsPseudoboolean

(

scip

, cons, name, linvars, nlinvars, linvals, terms,

nterms

, ntermvars, termvals, indvar, weight, issoftcons,

NULL

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

9067

assert(conshdlr !=

NULL

);

9068

assert(cons !=

NULL

);

9069

assert(vars !=

NULL

);

9070

assert(success !=

NULL

);

9074

assert(varssize >= 0);

9087

assert(consdata !=

NULL

);

9088

assert(consdata->lincons !=

NULL

);

9100

assert(nlinconsvars >= 0);

9103 if

( nlinconsvars == 0 )

9110 else if

( varssize < nlinconsvars )

9112

(*success) =

FALSE

;

9127

andress,

NULL

,

NULL

, &nandress) );

9128

assert(nlinconsvars == nlinvars + nandress);

9134

assert(linvars !=

NULL

);

9138 if

( nandress == 0 )

9141

assert(andress !=

NULL

);

9145

assert(conshdlrdata !=

NULL

);

9146

assert(conshdlrdata->hashmap !=

NULL

);

9150 for

(

r

= nandress - 1;

r

>= 0; --

r

)

9154

assert(andress[

r

] !=

NULL

);

9158

assert(consanddata !=

NULL

);

9162

andcons = consanddata->

cons

;

9166

assert(andcons !=

NULL

);

9169 if

( varssize <= nvars )

9171

(*success) =

FALSE

;

9177

vars[nvars] = andress[

r

];

9185

assert(noperands >= 0);

9188 if

( varssize < nvars + noperands )

9190

(*success) =

FALSE

;

9196 if

( noperands > 0 )

9232

assert(conshdlr !=

NULL

);

9233

assert(cons !=

NULL

);

9234

assert(nvars !=

NULL

);

9235

assert(success !=

NULL

);

9248

assert(consdata !=

NULL

);

9249

assert(consdata->lincons !=

NULL

);

9261

assert(nlinconsvars >= 0);

9264 if

( nlinconsvars == 0 )

9281

andress,

NULL

,

NULL

, &nandress) );

9282

assert(nlinconsvars == nlinvars + nandress);

9286 if

( nandress == 0 )

9289

assert(andress !=

NULL

);

9293

assert(conshdlrdata !=

NULL

);

9294

assert(conshdlrdata->hashmap !=

NULL

);

9298 for

(

r

= nandress - 1;

r

>= 0; --

r

)

9302

assert(andress[

r

] !=

NULL

);

9306

assert(consanddata !=

NULL

);

9310

andcons = consanddata->

cons

;

9314

assert(andcons !=

NULL

);

9373

consEnfolpPseudoboolean, consEnfopsPseudoboolean, consCheckPseudoboolean, consLockPseudoboolean,

9375

assert(conshdlr !=

NULL

);

9397 "decompose every normal pseudo boolean constraint into a \"linear\" constraint and \"and\" constraints"

,

9401 "decompose every soft pseudo boolean constraint into \"indicator\" constraints and \"and\" constraints"

,

9404 "constraints/" CONSHDLR_NAME "/nlcseparate"

,

"should the nonlinear constraints be separated during LP processing?"

,

9407 "constraints/" CONSHDLR_NAME "/nlcpropagate"

,

"should the nonlinear constraints be propagated during node processing?"

,

9410 "constraints/" CONSHDLR_NAME "/nlcremovable"

,

"should the nonlinear constraints be removable?"

,

9413#ifdef NONLINCONSUPGD_PRIORITY 9480

assert(cons !=

NULL

);

9481

assert(lincons !=

NULL

);

9483

assert(nandconss == 0 || (andconss !=

NULL

&& andcoefs !=

NULL

));

9484

assert(issoftcons == (indvar !=

NULL

));

9486 if

( intvar !=

NULL

)

9489 SCIPerrorMessage

(

"intvar currently not supported by pseudo boolean constraint handler\n"

);

9495 if

( conshdlr ==

NULL

)

9503

assert(conshdlrdata !=

NULL

);

9508

assert(conshdlrdata->hashmap !=

NULL

);

9509

assert(conshdlrdata->hashtable !=

NULL

);

9510

assert(conshdlrdata->allconsanddatas !=

NULL

);

9511

assert(conshdlrdata->nallconsanddatas <= conshdlrdata->sallconsanddatas);

9513

memisinvalid =

TRUE

;

9519 for

( c = nandconss - 1; c >= 0; --c )

9521

assert(andconss[c] !=

NULL

);

9525

assert(vars !=

NULL

&& nvars > 0);

9526

assert(res !=

NULL

);

9538

newdata->

svars

= nvars;

9545

newdata->

nuses

= 0;

9551

assert(newdata !=

NULL

);

9553 if

( newdata->

svars

< nvars )

9565

newdata->

nvars

= nvars;

9573

assert(transformed);

9574

newdata->

cons

= andconss[c];

9577 for

( v = newdata->

nvars

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

9585

assert(!transformed);

9593 if

( tmpdata ==

NULL

|| (tmpdata->

cons

!= andconss[c] && tmpdata->

origcons

!= andconss[c]))

9597 SCIPwarningMessage

(

scip

,

"Another and-constraint with the same variables but different and-resultant is added to the global and-constraint hashtable of pseudoboolean constraint handler.\n"

);

9601 if

( conshdlrdata->nallconsanddatas == conshdlrdata->sallconsanddatas )

9606

conshdlrdata->allconsanddatas[conshdlrdata->nallconsanddatas] = newdata;

9607

++(conshdlrdata->nallconsanddatas);

9613

memisinvalid =

TRUE

;

9629

newdata->noriguses = 1;

9639

memisinvalid =

FALSE

;

9643

assert(tmpdata->

nuses

> 0);

9646

++(tmpdata->

nuses

);

9658 if

( !memisinvalid )

9660

assert(newdata !=

NULL

);

9683

indvar, weight, issoftcons, intvar, lhs, rhs, check,

FALSE

) );

9684

assert(consdata !=

NULL

);

9687 SCIP_CALL

(

SCIPcreateCons

(

scip

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

9688

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

9759

assert(cons !=

NULL

);

9760

assert(nlinvars == 0 || (linvars !=

NULL

&& linvals !=

NULL

));

9762

assert(issoftcons == (indvar !=

NULL

));

9764 if

( intvar !=

NULL

)

9767 SCIPerrorMessage

(

"intvar currently not supported by pseudo boolean constraint handler\n"

);

9773 if

( conshdlr ==

NULL

)

9779 if

( modifiable && issoftcons )

9787

assert(conshdlrdata !=

NULL

);

9801

initial, enforce, check, local, modifiable, dynamic, stickingatnode,

9802

andconss, andcoefs, andnegs, &nandconss) );

9803

assert(

nterms

>= nandconss);

9806 for

( c = nandconss - 1; c >= 0; --c )

9808

assert(andconss[c] !=

NULL

);

9825

&lhs, &rhs, issoftcons, initial, separate, enforce,

FALSE

, propagate, local, modifiable, dynamic,

9826

removable, stickingatnode, &lincons, &linconstype) );

9827

assert(lincons !=

NULL

);

9833

indvar, weight, issoftcons, intvar, lhs, rhs, check,

FALSE

) );

9834

assert(consdata !=

NULL

);

9843 SCIP_CALL

(

SCIPcreateCons

(

scip

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

9844

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

9881

terms,

nterms

, ntermvars, termvals, indvar, weight, issoftcons, intvar, lhs, rhs,

9904

assert(cons !=

NULL

);

9905

assert(var !=

NULL

);

9918

assert(consdata !=

NULL

);

9920 switch

( consdata->linconstype )

9943#ifdef WITHEQKNAPSACK 9944 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

9957

consdata->propagated =

FALSE

;

9958

consdata->presolved =

FALSE

;

9959

consdata->cliquesadded =

FALSE

;

9980

assert(cons !=

NULL

);

9981

assert(nvars == 0 || vars !=

NULL

);

10004

assert(cons !=

NULL

);

10014

assert(consdata !=

NULL

);

10016 return

consdata->indvar;

10028

assert(cons !=

NULL

);

10038

assert(consdata !=

NULL

);

10040 return

consdata->lincons;

10052

assert(cons !=

NULL

);

10062

assert(consdata !=

NULL

);

10064 return

consdata->linconstype;

10076

assert(cons !=

NULL

);

10088

assert(consdata !=

NULL

);

10090 return

consdata->nlinvars;

10099 int

*

const

nlinvars

10109

assert(cons !=

NULL

);

10110

assert(nlinvars !=

NULL

);

10111

assert(*nlinvars == 0 || linvars !=

NULL

);

10112

assert(*nlinvars == 0 || lincoefs !=

NULL

);

10122

assert(consdata !=

NULL

);

10126 if

( *nlinvars < consdata->nlinvars )

10128

*nlinvars = consdata->nlinvars;

10143 SCIP_CALL

(

getLinVarsAndAndRess

(

scip

, cons, vars, coefs, nvars, linvars, lincoefs, nlinvars,

NULL

,

NULL

,

NULL

,

NULL

) );

10159 int

*

const

nandconss

10168

assert(cons !=

NULL

);

10169

assert(nandconss !=

NULL

);

10170

assert(*nandconss == 0 || andconss !=

NULL

);

10171

assert(*nandconss == 0 || andcoefs !=

NULL

);

10181

assert(consdata !=

NULL

);

10185 if

( *nandconss < consdata->nconsanddatas )

10187

*nandconss = consdata->nconsanddatas;

10191

*nandconss = consdata->nconsanddatas;

10192

assert(*nandconss == 0 || consdata->consanddatas !=

NULL

);

10196 for

( c = *nandconss - 1; c >= 0; --c )

10198

assert(consdata->consanddatas[c] !=

NULL

);

10199

assert(consdata->consanddatas[c]->istransformed ? (consdata->consanddatas[c]->cons !=

NULL

) :

TRUE

);

10200

assert(consdata->consanddatas[c]->isoriginal ? (consdata->consanddatas[c]->origcons !=

NULL

) :

TRUE

);

10201

assert(consdata->consanddatas[c]->cons !=

NULL

|| consdata->consanddatas[c]->origcons !=

NULL

);

10202

assert(isorig ? consdata->consanddatas[c]->origcons !=

NULL

: consdata->consanddatas[c]->cons !=

NULL

);

10204

andconss[c] = (isorig ? consdata->consanddatas[c]->origcons : consdata->consanddatas[c]->cons);

10205

assert(andconss[c] !=

NULL

);

10207

andcoefs[c] = consdata->andcoefs[c];

10222

assert(cons !=

NULL

);

10234

assert(consdata !=

NULL

);

10236 return

consdata->nconsanddatas;

10255

assert(cons !=

NULL

);

10266

assert(consdata !=

NULL

);

10268 switch

( consdata->linconstype )

10276#ifdef WITHEQKNAPSACK 10277 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

10279 SCIPerrorMessage

(

"changing left hand side only allowed on standard linear constraint \n"

);

10314

assert(consdata !=

NULL

);

10316 switch

( consdata->linconstype )

10324#ifdef WITHEQKNAPSACK 10325 case

SCIP_LINEARCONSTYPE_EQKNAPSACK:

10327 SCIPerrorMessage

(

"changing right hand side only allowed on standard linear constraint \n"

);

10358

assert(consdata !=

NULL

);

10360 return

consdata->lhs;

10383

assert(consdata !=

NULL

);

10385 return

consdata->rhs;

Constraint handler for AND constraints, .

constraint handler for indicator constraints

Constraint handler for knapsack constraints of the form , x binary and .

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

static SCIP_DECL_CONSENFOPS(consEnfopsPseudoboolean)

#define CONSHDLR_NEEDSCONS

static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(consGetSignedPermsymGraphPseudoboolean)

static SCIP_RETCODE checkAndConss(SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_SOL *const sol, SCIP_Bool *const violated)

static SCIP_RETCODE getLinVarsAndAndRess(SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const vars, SCIP_Real *const coefs, int const nvars, SCIP_VAR **const linvars, SCIP_Real *const lincoefs, int *const nlinvars, SCIP_VAR **const andress, SCIP_Real *const andcoefs, SCIP_Bool *const andnegs, int *const nandress)

#define HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS

static SCIP_RETCODE conshdlrdataCreate(SCIP *const scip, SCIP_CONSHDLRDATA **conshdlrdata)

static SCIP_RETCODE lockRoundingAndCons(SCIP *const scip, SCIP_CONS *const cons, CONSANDDATA *const consanddata, SCIP_Real const coef, SCIP_Real const lhs, SCIP_Real const rhs)

#define CONSHDLR_CHECKPRIORITY

static SCIP_DECL_SORTPTRCOMP(resvarComp)

static SCIP_RETCODE copyConsPseudoboolean(SCIP *const targetscip, SCIP_CONS **targetcons, SCIP *const sourcescip, SCIP_CONS *const sourcecons, const char *name, SCIP_HASHMAP *const varmap, SCIP_HASHMAP *const consmap, SCIP_Bool const initial, SCIP_Bool const separate, SCIP_Bool const enforce, SCIP_Bool const check, SCIP_Bool const propagate, SCIP_Bool const local, SCIP_Bool const modifiable, SCIP_Bool const dynamic, SCIP_Bool const removable, SCIP_Bool const stickingatnode, SCIP_Bool const global, SCIP_Bool *const valid)

static SCIP_RETCODE getLinearConsNVars(SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, int *const nvars)

static SCIP_DECL_CONSGETPERMSYMGRAPH(consGetPermsymGraphPseudoboolean)

static SCIP_RETCODE checkLocksAndRes(SCIP *const scip, SCIP_VAR *res)

static SCIP_DECL_CONSPARSE(consParsePseudoboolean)

static SCIP_DECL_HASHKEYEQ(hashKeyEqAndConsDatas)

static SCIP_RETCODE propagateCons(SCIP *const scip, SCIP_CONS *const cons, SCIP_Bool *const cutoff, int *const ndelconss)

static SCIP_DECL_CONSCHECK(consCheckPseudoboolean)

static SCIP_RETCODE getLinearConsSides(SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, SCIP_Real *const lhs, SCIP_Real *const rhs)

static SCIP_DECL_CONSTRANS(consTransPseudoboolean)

#define DEFAULT_DECOMPOSEINDICATORPBCONS

static SCIP_RETCODE conshdlrdataFree(SCIP *const scip, SCIP_CONSHDLRDATA **conshdlrdata)

static SCIP_DECL_CONSENFOLP(consEnfolpPseudoboolean)

static SCIP_RETCODE chgRhsLinearCons(SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, SCIP_Real const rhs)

#define CONSHDLR_MAXPREROUNDS

static SCIP_DECL_CONSCOPY(consCopyPseudoboolean)

static SCIP_DECL_CONSGETNVARS(consGetNVarsPseudoboolean)

static SCIP_DECL_CONSDELETE(consDeletePseudoboolean)

static SCIP_DECL_CONSINITPRE(consInitprePseudoboolean)

static SCIP_RETCODE computeConsAndDataChanges(SCIP *const scip, SCIP_CONSHDLRDATA *const conshdlrdata)

static SCIP_RETCODE getLinearConsVarsData(SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, SCIP_VAR **const vars, SCIP_Real *const coefs, int *const nvars)

#define checkConsConsistency(scip, cons)

static SCIP_RETCODE tryUpgradingLogicor(SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naddconss, int *const nfixedvars, int *const nchgcoefs, int *const nchgsides, SCIP_Bool *const cutoff)

static SCIP_RETCODE unlockRoundingAndCons(SCIP *const scip, SCIP_CONS *const cons, CONSANDDATA *const consanddata, SCIP_Real const coef, SCIP_Real const lhs, SCIP_Real const rhs)

static SCIP_RETCODE addCoefTerm(SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const vars, int const nvars, SCIP_Real const val)

static SCIP_RETCODE addSymmetryInformation(SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)

#define DEFAULT_PROPAGATENONLINEAR

static SCIP_RETCODE inithashmapandtable(SCIP *const scip, SCIP_CONSHDLRDATA **conshdlrdata)

static SCIP_DECL_CONSINIT(consInitPseudoboolean)

static SCIP_DECL_CONSPRINT(consPrintPseudoboolean)

static SCIP_RETCODE createAndAddAndCons(SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_VAR **const vars, int const nvars, SCIP_Bool const initial, SCIP_Bool const enforce, SCIP_Bool const check, SCIP_Bool const local, SCIP_Bool const modifiable, SCIP_Bool const dynamic, SCIP_Bool const stickingatnode, SCIP_CONS **const andcons)

static SCIP_RETCODE consdataPrint(SCIP *const scip, SCIP_CONS *const cons, FILE *const file)

static SCIP_DECL_CONSENFORELAX(consEnforelaxPseudoboolean)

#define NONLINCONSUPGD_PRIORITY

static SCIP_RETCODE addNewLocks(SCIP *const scip, SCIP_CONS *const cons, CONSANDDATA *const consanddata, SCIP_Real const coef, SCIP_Real const lhs, SCIP_Real const rhs)

static SCIP_DECL_CONSPRESOL(consPresolPseudoboolean)

static SCIP_RETCODE consdataCreate(SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_CONSDATA **consdata, SCIP_CONS *const lincons, SCIP_LINEARCONSTYPE const linconstype, SCIP_CONS **const andconss, SCIP_Real *const andcoefs, SCIP_Bool *const andnegs, int const nandconss, SCIP_VAR *const indvar, SCIP_Real const weight, SCIP_Bool const issoftcons, SCIP_VAR *const intvar, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool check, SCIP_Bool transforming)

static SCIP_RETCODE transformToOrig(SCIP *const scip, CONSANDDATA *consanddata, SCIP_CONSHDLRDATA *conshdlrdata)

static SCIP_RETCODE addCliques(SCIP *const scip, SCIP_CONS *const cons, SCIP_Bool *const cutoff, int *const naggrvars, int *const nchgbds)

static SCIP_DECL_HASHKEYVAL(hashKeyValAndConsDatas)

static SCIP_RETCODE chgLhs(SCIP *const scip, SCIP_CONS *const cons, SCIP_Real lhs)

static SCIP_DECL_CONSHDLRCOPY(conshdlrCopyPseudoboolean)

#define DEFAULT_REMOVABLENONLINEAR

static SCIP_RETCODE updateConsanddataUses(SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss)

static SCIP_DECL_CONSLOCK(consLockPseudoboolean)

#define DEFAULT_SEPARATENONLINEAR

static SCIP_RETCODE createAndAddLinearCons(SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_VAR **const linvars, int const nlinvars, SCIP_Real *const linvals, SCIP_VAR **const andress, int const nandress, SCIP_Real const *const andvals, SCIP_Bool *const andnegs, SCIP_Real *const lhs, SCIP_Real *const rhs, SCIP_Bool const issoftcons, SCIP_Bool const initial, SCIP_Bool const separate, SCIP_Bool const enforce, SCIP_Bool const check, SCIP_Bool const propagate, SCIP_Bool const local, SCIP_Bool const modifiable, SCIP_Bool const dynamic, SCIP_Bool const removable, SCIP_Bool const stickingatnode, SCIP_CONS **const lincons, SCIP_LINEARCONSTYPE *const linconstype)

static SCIP_DECL_HASHGETKEY(hashGetKeyAndConsDatas)

static SCIP_RETCODE findAggregation(SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naggrvars, SCIP_Bool *const cutoff)

#define CONSHDLR_PRESOLTIMING

static SCIP_RETCODE createAndAddAnds(SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_VAR **const *const terms, SCIP_Real *const termcoefs, int const nterms, int const *const ntermvars, SCIP_Bool const initial, SCIP_Bool const enforce, SCIP_Bool const check, SCIP_Bool const local, SCIP_Bool const modifiable, SCIP_Bool const dynamic, SCIP_Bool const stickingatnode, SCIP_CONS **const andconss, SCIP_Real *const andvals, SCIP_Bool *const andnegs, int *const nandconss)

static SCIP_RETCODE tryUpgrading(SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naddconss, int *const nfixedvars, int *const nchgcoefs, int *const nchgsides, SCIP_Bool *const cutoff)

static SCIP_DECL_CONSGETVARS(consGetVarsPseudoboolean)

#define CONSHDLR_EAGERFREQ

static SCIP_RETCODE chgLhsLinearCons(SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, SCIP_Real const lhs)

#define CONSHDLR_ENFOPRIORITY

#define DEFAULT_DECOMPOSENORMALPBCONS

static SCIP_RETCODE correctConshdlrdata(SCIP *const scip, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss)

static SCIP_RETCODE tryUpgradingSetppc(SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naddconss, int *const nfixedvars, int *const nchgcoefs, int *const nchgsides, SCIP_Bool *const cutoff)

static SCIP_RETCODE checkSolution(SCIP *const scip, SCIP_VAR **const vars, int const nvars, SCIP_Bool *const values, SCIP_VAR **const linvars, SCIP_Real *const lincoefs, int const nlinvars, SCIP_Real const constant, SCIP_Real const side, CONSANDDATA **const consanddatas, SCIP_Real *const consanddatacoefs, SCIP_Bool *const consanddatanegs, int const nconsanddatas, int const cnt, int *const xortype)

static SCIP_RETCODE checkOrigPbCons(SCIP *const scip, SCIP_CONS *const cons, SCIP_SOL *const sol, SCIP_Bool *const violated, SCIP_Bool const printreason)

static SCIP_RETCODE tryUpgradingXor(SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naddconss, int *const nfixedvars, int *const nchgcoefs, int *const nchgsides, SCIP_Bool *const cutoff)

static SCIP_RETCODE chgRhs(SCIP *const scip, SCIP_CONS *const cons, SCIP_Real rhs)

static SCIP_RETCODE updateAndConss(SCIP *const scip, SCIP_CONS *const cons)

static SCIP_RETCODE consdataFree(SCIP *const scip, SCIP_CONSDATA **consdata, SCIP_Bool isorig, SCIP_CONSHDLRDATA *conshdlrdata)

static SCIP_RETCODE removeOldLocks(SCIP *const scip, SCIP_CONS *const cons, CONSANDDATA *const consanddata, SCIP_Real const coef, SCIP_Real const lhs, SCIP_Real const rhs)

static SCIP_DECL_CONSFREE(consFreePseudoboolean)

static SCIP_RETCODE correctLocksAndCaptures(SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, SCIP_Real const newlhs, SCIP_Real const newrhs, SCIP_VAR **const andress, SCIP_Real *const andcoefs, SCIP_Bool *const andnegs, int const nandress)

constraint handler for pseudoboolean constraints

#define ARTIFICIALVARNAMEPREFIX

Constraint handler for the set partitioning / packing / covering constraints .

Constraint handler for XOR constraints, .

#define SCIPdebugGetSolVal(scip, var, val)

#define SCIPdebugAddSolVal(scip, var, val)

#define SCIP_CALL_ABORT(x)

SCIP_RETCODE SCIPchgLhsPseudoboolean(SCIP *const scip, SCIP_CONS *const cons, SCIP_Real const lhs)

int SCIPgetNVarsKnapsack(SCIP *scip, SCIP_CONS *cons)

#define SCIP_DECL_NONLINCONSUPGD(x)

int SCIPgetNVarsLogicor(SCIP *scip, SCIP_CONS *cons)

SCIP_Real SCIPgetRhsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_VAR ** SCIPgetVarsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPchgRhsLinear(SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)

SCIP_LINEARCONSTYPE SCIPgetLinearConsTypePseudoboolean(SCIP *const scip, SCIP_CONS *const cons)

SCIP_RETCODE SCIPaddCoefPseudoboolean(SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR *const var, SCIP_Real const val)

SCIP_RETCODE SCIPaddCoefLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)

SCIP_RETCODE SCIPcreateConsAnd(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, 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 SCIPaddCoefKnapsack(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Longint weight)

SCIP_Real SCIPgetLhsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPchgAndConsCheckFlagWhenUpgr(SCIP *scip, SCIP_CONS *cons, SCIP_Bool flag)

int SCIPgetNVarsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_VAR * SCIPgetResultantAnd(SCIP *scip, SCIP_CONS *cons)

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)

int SCIPgetNAndsPseudoboolean(SCIP *const scip, SCIP_CONS *const cons)

int SCIPgetNLinVarsWithoutAndPseudoboolean(SCIP *const scip, SCIP_CONS *const cons)

int SCIPgetNVarsAnd(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPgetLinDatasWithoutAndPseudoboolean(SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const linvars, SCIP_Real *const lincoefs, int *const nlinvars)

SCIP_Real * SCIPgetValsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPchgAndConsRemovableFlagWhenUpgr(SCIP *scip, SCIP_CONS *cons, SCIP_Bool flag)

SCIP_Real SCIPgetLhsPseudoboolean(SCIP *const scip, SCIP_CONS *const cons)

int SCIPgetNVarsSetppc(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPcreateConsSetpack(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_RETCODE SCIPcreateConsXor(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_Bool rhs, 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_VAR * SCIPgetIndVarPseudoboolean(SCIP *const scip, SCIP_CONS *const cons)

SCIP_VAR ** SCIPgetVarsSetppc(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPsortAndCons(SCIP *scip, SCIP_CONS *cons)

SCIP_Bool SCIPisAndConsSorted(SCIP *scip, SCIP_CONS *cons)

SCIP_Real SCIPgetRhsNonlinear(SCIP_CONS *cons)

SCIP_RETCODE SCIPaddTermPseudoboolean(SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const vars, int const nvars, SCIP_Real const val)

SCIP_RETCODE SCIPchgRhsPseudoboolean(SCIP *const scip, SCIP_CONS *const cons, SCIP_Real const rhs)

SCIP_RETCODE SCIPaddCoefSetppc(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)

enum SCIP_SetppcType SCIP_SETPPCTYPE

SCIP_RETCODE SCIPcreateConsKnapsack(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Longint *weights, SCIP_Longint capacity, 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_Longint * SCIPgetWeightsKnapsack(SCIP *scip, SCIP_CONS *cons)

SCIP_Longint SCIPgetCapacityKnapsack(SCIP *scip, SCIP_CONS *cons)

SCIP_SETPPCTYPE SCIPgetTypeSetppc(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPcreateConsLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_RETCODE SCIPcreateConsSetpart(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_VAR ** SCIPgetVarsLogicor(SCIP *scip, SCIP_CONS *cons)

SCIP_VAR ** SCIPgetVarsAnd(SCIP *scip, SCIP_CONS *cons)

SCIP_VAR ** SCIPgetVarsKnapsack(SCIP *scip, SCIP_CONS *cons)

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 SCIPcreateConsSetcover(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 SCIPcreateConsBasicPseudoboolean(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR **linvars, int nlinvars, SCIP_Real *linvals, SCIP_VAR ***terms, int nterms, int *ntermvars, SCIP_Real *termvals, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, SCIP_Real lhs, SCIP_Real rhs)

SCIP_RETCODE SCIPgetAndDatasPseudoboolean(SCIP *const scip, SCIP_CONS *const cons, SCIP_CONS **const andconss, SCIP_Real *const andcoefs, int *const nandconss)

SCIP_CONS * SCIPgetLinearConsPseudoboolean(SCIP *const scip, SCIP_CONS *const cons)

enum SCIP_LinearConsType SCIP_LINEARCONSTYPE

SCIP_RETCODE SCIPcreateConsPseudobooleanWithConss(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_CONS *lincons, SCIP_LINEARCONSTYPE linconstype, SCIP_CONS **andconss, SCIP_Real *andcoefs, int nandconss, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_RETCODE SCIPchgLhsLinear(SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)

SCIP_RETCODE SCIPcreateConsPseudoboolean(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR **linvars, int nlinvars, SCIP_Real *linvals, SCIP_VAR ***terms, int nterms, int *ntermvars, SCIP_Real *termvals, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_Real SCIPgetLhsNonlinear(SCIP_CONS *cons)

SCIP_Real SCIPgetRhsPseudoboolean(SCIP *const scip, SCIP_CONS *const cons)

SCIP_RETCODE SCIPaddCoefLogicor(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)

@ SCIP_LINEARCONSTYPE_LINEAR

@ SCIP_LINEARCONSTYPE_INVALIDCONS

@ SCIP_LINEARCONSTYPE_LOGICOR

@ SCIP_LINEARCONSTYPE_KNAPSACK

@ SCIP_LINEARCONSTYPE_SETPPC

@ SCIP_SETPPCTYPE_PARTITIONING

@ SCIP_SETPPCTYPE_COVERING

@ SCIP_SETPPCTYPE_PACKING

SCIP_RETCODE SCIPincludeConshdlrPseudoboolean(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_Bool SCIPisConsCompressionEnabled(SCIP *scip)

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_Bool SCIPisTransformed(SCIP *scip)

SCIP_Bool SCIPisStopped(SCIP *scip)

SCIP_STAGE SCIPgetStage(SCIP *scip)

SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)

int SCIPgetNVars(SCIP *scip)

SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)

int SCIPgetNFixedVars(SCIP *scip)

SCIP_VAR ** SCIPgetFixedVars(SCIP *scip)

void SCIPhashmapFree(SCIP_HASHMAP **hashmap)

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 SCIPhashmapRemove(SCIP_HASHMAP *hashmap, void *origin)

void SCIPhashtableFree(SCIP_HASHTABLE **hashtable)

SCIP_Bool SCIPhashtableExists(SCIP_HASHTABLE *hashtable, void *element)

#define SCIPhashFour(a, b, c, d)

SCIP_RETCODE SCIPhashtableCreate(SCIP_HASHTABLE **hashtable, BMS_BLKMEM *blkmem, int tablesize, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr)

void * SCIPhashtableRetrieve(SCIP_HASHTABLE *hashtable, void *key)

SCIP_RETCODE SCIPhashtableRemove(SCIP_HASHTABLE *hashtable, void *element)

SCIP_RETCODE SCIPhashtableInsert(SCIP_HASHTABLE *hashtable, void *element)

SCIP_RETCODE SCIPdelConsLocal(SCIP *scip, SCIP_CONS *cons)

void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)

void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)

void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)

SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)

SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, 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 SCIPsetConshdlrParse(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))

void SCIPconshdlrSetData(SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata)

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 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 SCIPsetConshdlrGetPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)))

SCIP_RETCODE SCIPsetConshdlrDelete(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))

SCIP_RETCODE SCIPsetConshdlrFree(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))

SCIP_RETCODE SCIPsetConshdlrEnforelax(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENFORELAX((*consenforelax)))

const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)

SCIP_RETCODE SCIPsetConshdlrCopy(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))

SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)

SCIP_RETCODE SCIPsetConshdlrGetSignedPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)))

SCIP_CONSHDLRDATA * SCIPconshdlrGetData(SCIP_CONSHDLR *conshdlr)

SCIP_RETCODE SCIPsetConshdlrTrans(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))

SCIP_RETCODE SCIPsetConshdlrGetNVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))

SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))

SCIP_CONSDATA * SCIPconsGetData(SCIP_CONS *cons)

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 SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)

int SCIPconsGetNUpgradeLocks(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsOriginal(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsTransformed(SCIP_CONS *cons)

SCIP_RETCODE SCIPsetConsInitial(SCIP *scip, SCIP_CONS *cons, SCIP_Bool initial)

SCIP_Bool SCIPconsIsLockedType(SCIP_CONS *cons, SCIP_LOCKTYPE locktype)

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)

const char * SCIPconsGetName(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsLocked(SCIP_CONS *cons)

SCIP_RETCODE SCIPresetConsAge(SCIP *scip, SCIP_CONS *cons)

SCIP_Bool SCIPconsIsModifiable(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsAdded(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)

SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)

SCIP_RETCODE SCIPtransformCons(SCIP *scip, SCIP_CONS *cons, SCIP_CONS **transcons)

SCIP_RETCODE SCIPsetConsChecked(SCIP *scip, SCIP_CONS *cons, SCIP_Bool check)

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)

#define SCIPfreeBlockMemoryArray(scip, ptr, num)

#define SCIPensureBlockMemoryArray(scip, ptr, arraysizeptr, minsize)

#define SCIPallocClearBlockMemoryArray(scip, ptr, num)

#define SCIPallocClearBufferArray(scip, ptr, num)

int SCIPcalcMemGrowSize(SCIP *scip, int num)

#define SCIPallocBufferArray(scip, ptr, num)

#define SCIPfreeBufferArray(scip, ptr)

#define SCIPduplicateBufferArray(scip, ptr, source, num)

#define SCIPallocBlockMemoryArray(scip, ptr, num)

#define SCIPfreeBlockMemory(scip, ptr)

#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)

#define SCIPfreeBufferArrayNull(scip, ptr)

#define SCIPallocBlockMemory(scip, ptr)

#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)

void SCIPupdateSolConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)

SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)

SCIP_Real SCIPinfinity(SCIP *scip)

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_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)

SCIP_Real SCIPfeasFloor(SCIP *scip, SCIP_Real val)

SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)

SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)

SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisFeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)

SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisFeasPositive(SCIP *scip, SCIP_Real val)

SCIP_Bool SCIPparseReal(SCIP *scip, const char *str, SCIP_Real *value, char **endptr)

SCIP_RETCODE SCIPgetProbvarLinearSum(SCIP *scip, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, int varssize, SCIP_Real *constant, int *requiredsize, SCIP_Bool mergemultiples)

SCIP_RETCODE SCIPlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)

SCIP_RETCODE SCIPremoveVarFromGlobalStructures(SCIP *scip, SCIP_VAR *var)

SCIP_VAR * SCIPvarGetNegatedVar(SCIP_VAR *var)

SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)

SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)

SCIP_RETCODE SCIPaddClique(SCIP *scip, SCIP_VAR **vars, SCIP_Bool *values, int nvars, SCIP_Bool isequation, SCIP_Bool *infeasible, int *nbdchgs)

SCIP_RETCODE SCIPgetTransformedVars(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **transvars)

SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)

int SCIPvarGetNLocksUpType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)

SCIP_RETCODE SCIPgetBinvarRepresentatives(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_VAR **repvars, SCIP_Bool *negated)

SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)

SCIP_RETCODE SCIPaggregateVars(SCIP *scip, SCIP_VAR *varx, SCIP_VAR *vary, SCIP_Real scalarx, SCIP_Real scalary, SCIP_Real rhs, SCIP_Bool *infeasible, SCIP_Bool *redundant, SCIP_Bool *aggregated)

SCIP_Real SCIPvarGetObj(SCIP_VAR *var)

SCIP_RETCODE SCIPparseVarName(SCIP *scip, const char *str, SCIP_VAR **var, char **endptr)

SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)

int SCIPvarGetIndex(SCIP_VAR *var)

SCIP_RETCODE SCIPaddVarLocksType(SCIP *scip, SCIP_VAR *var, SCIP_LOCKTYPE locktype, int nlocksdown, int nlocksup)

SCIP_RETCODE SCIPchgVarBranchPriority(SCIP *scip, SCIP_VAR *var, int branchpriority)

SCIP_RETCODE SCIPunlockVarCons(SCIP *scip, SCIP_VAR *var, SCIP_CONS *cons, SCIP_Bool lockdown, SCIP_Bool lockup)

int SCIPvarGetProbindex(SCIP_VAR *var)

const char * SCIPvarGetName(SCIP_VAR *var)

void SCIPfreeParseVarsPolynomialData(SCIP *scip, SCIP_VAR ****monomialvars, SCIP_Real ***monomialexps, SCIP_Real **monomialcoefs, int **monomialnvars, int nmonomials)

SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)

SCIP_Bool SCIPvarIsTransformedOrigvar(SCIP_VAR *var)

SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)

SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)

SCIP_RETCODE SCIPwriteVarsPolynomial(SCIP *scip, FILE *file, SCIP_VAR ***monomialvars, SCIP_Real **monomialexps, SCIP_Real *monomialcoefs, int *monomialnvars, int nmonomials, SCIP_Bool type)

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_Bool SCIPvarIsOriginal(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)

SCIP_RETCODE SCIPfixVar(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval, SCIP_Bool *infeasible, SCIP_Bool *fixed)

SCIP_RETCODE SCIPparseVarsPolynomial(SCIP *scip, const char *str, SCIP_VAR ****monomialvars, SCIP_Real ***monomialexps, SCIP_Real **monomialcoefs, int **monomialnvars, int *nmonomials, char **endptr, SCIP_Bool *success)

int SCIPvarCompare(SCIP_VAR *var1, SCIP_VAR *var2)

SCIP_RETCODE SCIPwriteVarName(SCIP *scip, FILE *file, SCIP_VAR *var, SCIP_Bool type)

SCIP_Bool SCIPvarsHaveCommonClique(SCIP_VAR *var1, SCIP_Bool value1, SCIP_VAR *var2, SCIP_Bool value2, SCIP_Bool regardimplics)

int SCIPvarGetNLocksDownType(SCIP_VAR *var, SCIP_LOCKTYPE locktype)

SCIP_RETCODE SCIPgetTransformedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **transvar)

SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)

SCIP_Bool SCIPsortedvecFindPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), void *val, int len, int *pos)

void SCIPsortPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)

void SCIPsortPtrBool(void **ptrarray, SCIP_Bool *boolarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)

void SCIPsortPtrRealBool(void **ptrarray, SCIP_Real *realarray, SCIP_Bool *boolarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)

void SCIPsortPtrPtrRealBool(void **ptrarray1, void **ptrarray2, SCIP_Real *realarray, SCIP_Bool *boolarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)

int SCIPsnprintf(char *t, int len, const char *s,...)

SCIP_RETCODE SCIPskipSpace(char **s)

int SCIPstrncpy(char *t, const char *s, int size)

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)

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)

static volatile int nterms

memory allocation routines

#define BMScopyMemoryArray(ptr, source, num)

#define BMSclearMemoryArray(ptr, num)

BMS_BLKMEM * SCIPblkmem(SCIP *scip)

public methods for managing constraints

public methods for message output

#define SCIPdebugPrintCons(x, y, z)

public data structures and miscellaneous methods

methods for sorting joint arrays of various types

public methods for problem variables

public methods for constraint handler plugins and constraints

public methods for problem copies

public methods for memory management

public methods for message handling

public methods for numerical tolerances

public methods for SCIP parameter handling

public methods for global and local (sub)problems

public methods for solutions

public methods for SCIP variables

unsigned int istransformed

methods for dealing with symmetry detection graphs

struct SCIP_ConshdlrData SCIP_CONSHDLRDATA

struct SCIP_ConsData SCIP_CONSDATA

enum SCIP_Retcode SCIP_RETCODE

@ SCIP_STAGE_TRANSFORMING

enum SYM_Symtype SYM_SYMTYPE

@ SYM_CONSOPTYPE_PB_LINEAR

enum SCIP_Varstatus SCIP_VARSTATUS


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