A RetroSearch Logo

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

Search Query:

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

SCIP Doxygen Documentation: lp.c Source File

104 if

( row->

len

== 0 )

108 for

( i = 0; i < row->

len

; ++i )

127#define debugRowPrint(x,y) 140

assert(col !=

NULL

);

147 if

( col->

len

== 0 )

151 for

(

r

= 0;

r

< col->

len

; ++

r

)

160#define debugColPrint(x,y) 185

assert(num <= lp->chgcolssize);

208

assert(num <= lp->chgrowssize);

231

assert(num <= lp->lpicolssize);

254

assert(num <= lp->lpirowssize);

277

assert(num <= lp->colssize);

297

assert(num <= lp->soldirectionsize);

320

assert(num <= lp->lazycolssize);

343

assert(num <= lp->rowssize);

357

assert(col !=

NULL

);

358

assert(col->

len

<= col->

size

);

360 if

( num > col->

size

)

368

col->

size

= newsize;

370

assert(num <= col->size);

386

assert(stat !=

NULL

);

387

assert(blkmem !=

NULL

);

420

assert(blkmem !=

NULL

);

424 if

( storedsolvals !=

NULL

)

478

assert(col !=

NULL

);

479

assert(blkmem !=

NULL

);

507

assert(col !=

NULL

);

508

assert(blkmem !=

NULL

);

512 if

( storedsolvals !=

NULL

)

553

assert(row !=

NULL

);

554

assert(blkmem !=

NULL

);

592

assert(row !=

NULL

);

593

assert(blkmem !=

NULL

);

597 if

( storedsolvals !=

NULL

)

637

assert(row !=

NULL

);

638

assert(row->

len

<= row->

size

);

640 if

( num > row->

size

)

649

row->

size

= newsize;

651

assert(num <= row->size);

657#ifdef SCIP_MORE_DEBUG 667 if

( !msgdisp_checkrow )

669

printf(

"LP ROW CHECKING ACTIVATED! THIS IS VERY SLOW!\n"

);

670

msgdisp_checkrow =

TRUE

;

677 for

( i = 1; i < row->

nlpcols

; ++i )

688 for

( i = row->

nlpcols

+ 1; i < row->len; ++i )

699#ifdef SCIP_MORE_DEBUG 710

assert(cols !=

NULL

|| row->

len

== 0);

714 for

( c = row->

len

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

716 if

( cols[c]->lppos >= 0 )

717

sqrnorm +=

SQR

(row->

vals

[c]);

720

assert(

ABS

(sqrnorm - row->

sqrnorm

) < 1e-06 *

MAX

(1.0,sqrnorm));

733

assert(cols !=

NULL

|| row->

len

== 0);

737 for

( c = row->

len

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

739 if

( cols[c]->lppos >= 0 )

743

assert(

ABS

(sumnorm - row->

sumnorm

) < 1e-06 *

MAX

(1.0,sumnorm));

756

assert(cols !=

NULL

|| row->

len

== 0);

760 for

( c = row->

len

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

762 if

( cols[c]->lppos >= 0 )

766

assert(

ABS

(objprod - row->

objprod

) < 1e-06 *

MAX

(1.0,objprod));

769#define checkRowSqrnorm(row) 770#define checkRowSumnorm(row) 771#define checkRowObjprod(row) 793

assert(prob !=

NULL

);

797

nvars = prob->

nvars

;

801 for

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

834

assert(prob !=

NULL

);

838

nvars = prob->

nvars

;

842 for

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

876

assert(prob !=

NULL

);

880

nvars = prob->

nvars

;

884 for

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

914

assert(prob !=

NULL

);

936

assert(prob !=

NULL

);

953

assert(elem1 !=

NULL

);

954

assert(elem2 !=

NULL

);

976

assert(col !=

NULL

);

986 for

( i = 0; i < col->

nlprows

; ++i )

1009

assert(col !=

NULL

);

1019 for

( i = col->

nlprows

; i < col->len; ++i )

1040

assert(row !=

NULL

);

1050 for

( i = 0; i < row->

nlpcols

; ++i )

1073

assert(row !=

NULL

);

1085 for

( i = row->

nlpcols

; i < row->len; ++i )

1113

assert(col !=

NULL

);

1114

assert(row !=

NULL

);

1117

searchidx = row->

index

;

1118 while

(minpos <= maxpos)

1120

pos = (minpos + maxpos)/2;

1121

assert(0 <= pos && pos < col->len);

1123

assert((pos < col->nlprows) == (col->

rows

[pos]->

lppos

>= 0 && col->

linkpos

[pos] >= 0));

1125 if

( searchidx == idx )

1127 else if

( searchidx < idx )

1145

assert(col !=

NULL

);

1146

assert(row !=

NULL

);

1151 if

( row->

lppos

>= 0 )

1188

assert(row !=

NULL

);

1189

assert(col !=

NULL

);

1192

searchidx = col->

index

;

1193 while

(minpos <= maxpos)

1195

pos = (minpos + maxpos)/2;

1196

assert(0 <= pos && pos < row->len);

1198

assert((pos < row->nlpcols) == (row->

cols

[pos]->

lppos

>= 0 && row->

linkpos

[pos] >= 0));

1201 if

( searchidx == idx )

1203 else if

( searchidx < idx )

1223

assert(row !=

NULL

);

1224

assert(col !=

NULL

);

1232 if

( col->

lppos

>= 0 )

1253

assert(-1 <= pos && pos < row->len);

1255

assert(row->

cols

[pos] == col);

1259 for

( i = 0; i < row->

len

; ++i )

1260

assert(row->

cols

[i] != col);

1275

assert(col !=

NULL

);

1276

assert(0 <= oldpos && oldpos < col->len);

1277

assert(0 <= newpos && newpos < col->len);

1278

assert(col->

rows

[oldpos] !=

NULL

);

1280 if

( oldpos == newpos )

1283

col->

rows

[newpos] = col->

rows

[oldpos];

1284

col->

vals

[newpos] = col->

vals

[oldpos];

1288 if

( col->

linkpos

[newpos] >= 0 )

1315

assert(col !=

NULL

);

1316

assert(0 <= pos1 && pos1 < col->len);

1317

assert(0 <= pos2 && pos2 < col->len);

1318

assert(col->

rows

[pos1] !=

NULL

);

1324

tmprow = col->

rows

[pos2];

1325

tmpval = col->

vals

[pos2];

1326

tmplinkpos = col->

linkpos

[pos2];

1328

col->

rows

[pos2] = col->

rows

[pos1];

1329

col->

vals

[pos2] = col->

vals

[pos1];

1332

col->

rows

[pos1] = tmprow;

1333

col->

vals

[pos1] = tmpval;

1334

col->

linkpos

[pos1] = tmplinkpos;

1337 if

( col->

linkpos

[pos1] >= 0 )

1344 if

( col->

linkpos

[pos2] >= 0 )

1371

assert(row !=

NULL

);

1372

assert(0 <= oldpos && oldpos < row->len);

1373

assert(0 <= newpos && newpos < row->len);

1374

assert(row->

cols

[oldpos] !=

NULL

);

1376 if

( oldpos == newpos )

1379

row->

cols

[newpos] = row->

cols

[oldpos];

1381

row->

vals

[newpos] = row->

vals

[oldpos];

1385 if

( row->

linkpos

[newpos] >= 0 )

1413

assert(row !=

NULL

);

1414

assert(0 <= pos1 && pos1 < row->len);

1415

assert(0 <= pos2 && pos2 < row->len);

1416

assert(row->

cols

[pos1] !=

NULL

);

1423

tmpcol = row->

cols

[pos2];

1425

tmpval = row->

vals

[pos2];

1426

tmplinkpos = row->

linkpos

[pos2];

1428

row->

cols

[pos2] = row->

cols

[pos1];

1430

row->

vals

[pos2] = row->

vals

[pos1];

1433

row->

cols

[pos1] = tmpcol;

1435

row->

vals

[pos1] = tmpval;

1436

row->

linkpos

[pos1] = tmplinkpos;

1439 if

( row->

linkpos

[pos1] >= 0 )

1446 if

( row->

linkpos

[pos2] >= 0 )

1477

assert(row !=

NULL

);

1479

assert(col !=

NULL

);

1506

assert(row !=

NULL

);

1535

assert(row !=

NULL

);

1552#ifdef SCIP_MORE_DEBUG 1555#define ASSERT(x) do { if( !(x) ) abort(); } while( FALSE ) 1557#define ASSERT(x) assert(x) 1573

ASSERT(lp !=

NULL

);

1575 if

( !msgdisp_checklinks )

1577

printf(

"LP LINK CHECKING ACTIVATED! THIS IS VERY SLOW!\n"

);

1578

msgdisp_checklinks =

TRUE

;

1581 for

( i = 0; i < lp->

ncols

; ++i )

1583

col = lp->

cols

[i];

1584

ASSERT(col !=

NULL

);

1590 for

( j = 0; j < col->

len

; ++j )

1592

row = col->

rows

[j];

1593

ASSERT(row !=

NULL

);

1597

ASSERT((j < col->nlprows) == (col->

linkpos

[j] >= 0 && row->

lppos

>= 0));

1601 for

( i = 0; i < lp->

nrows

; ++i )

1603

row = lp->

rows

[i];

1604

ASSERT(row !=

NULL

);

1610 for

( j = 0; j < row->

len

; ++j )

1612

col = row->

cols

[j];

1613

ASSERT(col !=

NULL

);

1617

ASSERT((j < row->nlpcols) == (row->

linkpos

[j] >= 0 && col->

lppos

>= 0));

1625#define checkLinks(lp) 1640

assert(row !=

NULL

);

1641

assert(col !=

NULL

);

1642

assert(lp !=

NULL

);

1712

assert(blkmem !=

NULL

);

1713

assert(col !=

NULL

);

1716

assert(row !=

NULL

);

1731 if

( row->

lppos

>= 0 && linkpos >= 0 )

1746

col->

rows

[pos] = row;

1747

col->

vals

[pos] = val;

1748

col->

linkpos

[pos] = linkpos;

1749 if

( linkpos == -1 )

1756 if

( col->

lppos

>= 0 )

1762 if

( row->

lppos

>= 0 )

1764

linkpos = col->

linkpos

[pos];

1766

assert(0 <= linkpos && linkpos < row->len);

1767

assert(row->

cols

[linkpos] == col);

1768

assert(col->

rows

[pos] == row);

1775

assert(row->

linkpos

[linkpos] == -1);

1777

row->

linkpos

[linkpos] = pos;

1783 if

( col->

lppos

>= 0 )

1789 if

( linkpos == row->

nlpcols

-1 )

1795 if

( row->

lppos

>= 0 && linkpos >= 0 )

1805

assert(col->

rows

[col->

len

-1] == row);

1812 SCIPsetDebugMsg

(

set

,

"added coefficient %g * <%s> at position %d (%d/%d) to column <%s> (nunlinked=%d)\n"

,

1829

assert(col !=

NULL

);

1832

assert(0 <= pos && pos < col->len);

1835

assert((pos < col->nlprows) == (col->

linkpos

[pos] >= 0 && col->

rows

[pos]->

lppos

>= 0));

1837

row = col->

rows

[pos];

1838

assert((row->

lppos

>= 0) == (pos < col->nlprows));

1843 if

( col->

linkpos

[pos] == -1 )

1847 if

( pos < col->nlprows )

1873

assert(col !=

NULL

);

1875

assert(0 <= pos && pos < col->len);

1893

col->

vals

[pos] = val;

1919

assert(row !=

NULL

);

1923

assert(col !=

NULL

);

1929 if

( col->

lppos

>= 0 )

1939 if

( updateidxvals )

1980

assert(row->

nummaxval

<= 0 || absval <= row->maxval);

1998

assert(row !=

NULL

);

2002

assert(col !=

NULL

);

2014 if

( forcenormupdate || col->

lppos

>= 0 )

2057

assert(row !=

NULL

);

2059

assert(blkmem !=

NULL

);

2060

assert(col !=

NULL

);

2068 SCIPerrorMessage

(

"cannot add a coefficient to the locked unmodifiable row <%s>\n"

, row->

name

);

2082 if

( col->

lppos

>= 0 && linkpos >= 0 )

2097

row->

cols

[pos] = col;

2099

row->

vals

[pos] = val;

2100

row->

linkpos

[pos] = linkpos;

2102 if

( linkpos == -1 )

2109 if

( row->

lppos

>= 0 )

2115 if

( col->

lppos

>= 0 )

2117

linkpos = row->

linkpos

[pos];

2119

assert(0 <= linkpos && linkpos < col->len);

2120

assert(col->

rows

[linkpos] == row);

2121

assert(row->

cols

[pos] == col);

2128

assert(col->

linkpos

[linkpos] == -1);

2130

col->

linkpos

[linkpos] = pos;

2136 if

( row->

lppos

>= 0 )

2142 if

( linkpos == col->

nlprows

-1 )

2148 if

( col->

lppos

>= 0 && linkpos >= 0 )

2161

assert(row->

cols

[row->

len

-1] == col);

2174 SCIPsetDebugMsg

(

set

,

"added coefficient %g * <%s> at position %d (%d/%d) to row <%s> (nunlinked=%d)\n"

,

2197

assert(row !=

NULL

);

2199

assert(0 <= pos && pos < row->len);

2201

assert((pos < row->nlpcols) == (row->

linkpos

[pos] >= 0 && row->

cols

[pos]->

lppos

>= 0));

2203

col = row->

cols

[pos];

2204

val = row->

vals

[pos];

2205

assert((pos < row->nlpcols) == (col->

lppos

>= 0 && row->

linkpos

[pos] >= 0));

2212 SCIPerrorMessage

(

"cannot delete a coefficient from the locked unmodifiable row <%s>\n"

, row->

name

);

2216 if

( row->

linkpos

[pos] == -1 )

2220 if

( pos < row->nlpcols )

2257

assert(row !=

NULL

);

2258

assert(0 <= pos && pos < row->len);

2265 SCIPerrorMessage

(

"cannot change a coefficient of the locked unmodifiable row <%s>\n"

, row->

name

);

2271

col = row->

cols

[pos];

2283

oldval = row->

vals

[pos];

2287

row->

vals

[pos] = val;

2308

assert(row !=

NULL

);

2309

assert(lp !=

NULL

);

2363

assert(col !=

NULL

);

2365

assert(blkmem !=

NULL

);

2367

assert(lp !=

NULL

);

2374 for

( i = col->

nlprows

; i < col->len; ++i )

2377 if

( col->

linkpos

[i] == -1 )

2406

assert(col !=

NULL

);

2408

assert(blkmem !=

NULL

);

2410

assert(lp !=

NULL

);

2415 for

( i = 0; i < col->

len

; ++i )

2444

assert(row !=

NULL

);

2445

assert(blkmem !=

NULL

);

2447

assert(lp !=

NULL

);

2454 for

( i = row->

nlpcols

; i < row->len; ++i )

2457 if

( row->

linkpos

[i] == -1 )

2484

assert(row !=

NULL

);

2486

assert(lp !=

NULL

);

2491 for

( i = 0; i < row->

len

; ++i )

2524

assert(lp !=

NULL

);

2525

assert(success !=

NULL

);

2549 return lpSetIntpar

(lp, lpparam, (

int

)value, success);

2563

assert(lp !=

NULL

);

2564

assert(success !=

NULL

);

2591

assert(lp !=

NULL

);

2600

assert(lpivalue == value);

2627

assert(lp !=

NULL

);

2636

assert(lpivalue == value);

2641#define lpCheckIntpar(lp, lpparam, value) SCIP_OKAY 2642#define lpCheckBoolpar(lp, lpparam, value) SCIP_OKAY 2643#define lpCheckRealpar(lp, lpparam, value) SCIP_OKAY 2647#define lpCutoffDisabled(set, prob, lp) (set->lp_disablecutoff == 1 || (set->lp_disablecutoff == 2 && !SCIPprobAllColsInLP(prob, set, lp)) || set->misc_exactsolve) 2662

assert(lp !=

NULL

);

2664

assert(success !=

NULL

);

2709

assert(lp !=

NULL

);

2710

assert(feastol >= 0.0);

2711

assert(success !=

NULL

);

2724 if

( lp->

nrows

> 0 && actualfeastol < lp->lpifeastol )

2752

assert(lp !=

NULL

);

2753

assert(dualfeastol >= 0.0);

2754

assert(success !=

NULL

);

2767 if

( lp->

nrows

> 0 && actualdualfeastol < lp->lpidualfeastol )

2795

assert(lp !=

NULL

);

2796

assert(barrierconvtol >= 0.0);

2797

assert(success !=

NULL

);

2810 if

( lp->

nrows

> 0 && actualbarrierconvtol < lp->lpibarrierconvtol

2839

assert(lp !=

NULL

);

2840

assert(success !=

NULL

);

2864

assert(lp !=

NULL

);

2865

assert(success !=

NULL

);

2866

assert(0 <= fastmip && fastmip <= 1);

2895

assert(lp !=

NULL

);

2896

assert(success !=

NULL

);

2920

assert(lp !=

NULL

);

2921

assert(success !=

NULL

);

2945

assert(lp !=

NULL

);

2946

assert(success !=

NULL

);

2970

assert(lp !=

NULL

);

2971

assert(success !=

NULL

);

2996

assert(lp !=

NULL

);

2997

assert(itlim >= -1);

3032

assert(lp !=

NULL

);

3055 switch

( pricingchar )

3097

assert(lp !=

NULL

);

3119

assert(lp !=

NULL

);

3120

assert(success !=

NULL

);

3144

assert(lp !=

NULL

);

3145

assert(success !=

NULL

);

3172

assert(lp !=

NULL

);

3173

assert(success !=

NULL

);

3181

lptiming = (int) timing;

3203

assert(lp !=

NULL

);

3204

assert(success !=

NULL

);

3208 if

( randomseed == 0 )

3233

assert(lp !=

NULL

);

3234

assert(success !=

NULL

);

3256

assert(lp !=

NULL

);

3257

assert(success !=

NULL

);

3291

assert(col !=

NULL

);

3292

assert(blkmem !=

NULL

);

3294

assert(stat !=

NULL

);

3295

assert(var !=

NULL

);

3297

assert(len == 0 || (rows !=

NULL

&& vals !=

NULL

));

3307 for

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

3309

assert(rows[i] !=

NULL

);

3311

(*col)->linkpos[i] = -1;

3316

(*col)->rows =

NULL

;

3317

(*col)->vals =

NULL

;

3318

(*col)->linkpos =

NULL

;

3326

(*col)->flushedobj = 0.0;

3327

(*col)->flushedlb = 0.0;

3328

(*col)->flushedub = 0.0;

3329

(*col)->index = stat->

ncolidx

;

3333

(*col)->nlprows = 0;

3334

(*col)->nunlinked = len;

3336

(*col)->lpipos = -1;

3337

(*col)->lpdepth = -1;

3338

(*col)->primsol = 0.0;

3341

(*col)->minprimsol = (*col)->ub;

3342

(*col)->maxprimsol = (*col)->lb;

3347

(*col)->sbnode = -1;

3348

(*col)->validredcostlp = -1;

3349

(*col)->validfarkaslp = -1;

3350

(*col)->validsblp = -1;

3351

(*col)->sbitlim = -1;

3352

(*col)->nsbcalls = 0;

3354

(*col)->obsoletenode = -1;

3357

(*col)->lprowssorted =

TRUE

;

3358

(*col)->nonlprowssorted = (len <= 1);

3359

(*col)->objchanged =

FALSE

;

3360

(*col)->lbchanged =

FALSE

;

3361

(*col)->ubchanged =

FALSE

;

3362

(*col)->coefchanged =

FALSE

;

3364

(*col)->removable = removable;

3365

(*col)->sbdownvalid =

FALSE

;

3366

(*col)->sbupvalid =

FALSE

;

3369

(*col)->storedsolvals =

NULL

;

3383

assert(blkmem !=

NULL

);

3384

assert(col !=

NULL

);

3385

assert(*col !=

NULL

);

3386

assert((*col)->var !=

NULL

);

3388

assert(&(*col)->var->data.col == col);

3389

assert((*col)->lppos == -1);

3390

assert((*col)->lpipos == -1);

3413

assert(col !=

NULL

);

3420 if

( col->

len

== 0 )

3422 for

(

r

= 0;

r

< col->

len

; ++

r

)

3455

assert(lp !=

NULL

);

3477

assert(col !=

NULL

);

3479

assert(lp !=

NULL

);

3481

assert(row !=

NULL

);

3490

assert(0 <= pos && pos < col->len);

3491

assert(col->

rows

[pos] == row);

3494 if

( col->

linkpos

[pos] >= 0 )

3523

assert(col !=

NULL

);

3524

assert(lp !=

NULL

);

3526

assert(row !=

NULL

);

3540

assert(0 <= pos && pos < col->len);

3541

assert(col->

rows

[pos] == row);

3544 if

( col->

linkpos

[pos] >= 0 )

3574

assert(col !=

NULL

);

3575

assert(lp !=

NULL

);

3577

assert(row !=

NULL

);

3594

assert(0 <= pos && pos < col->len);

3595

assert(col->

rows

[pos] == row);

3598 if

( col->

linkpos

[pos] >= 0 )

3653

quotient = (

REALABS

(newvalue)+1.0) / (

REALABS

(oldvalue) + 1.0);

3703

assert(col !=

NULL

);

3707

assert(lp !=

NULL

);

3762

assert(col !=

NULL

);

3766

assert(lp !=

NULL

);

3807

assert(col !=

NULL

);

3811

assert(lp !=

NULL

);

3854

assert(col !=

NULL

);

3857

assert(dualsol !=

NULL

);

3859

redcost = col->

obj

;

3860 for

( i = 0; i < col->

nlprows

; ++i )

3862

row = col->

rows

[i];

3863

assert(row !=

NULL

);

3864

assert(row->

lppos

>= 0);

3865

redcost -= col->

vals

[i] * dualsol[row->

lppos

];

3870 for

( i = col->

nlprows

; i < col->len; ++i )

3872

row = col->

rows

[i];

3873

assert(row !=

NULL

);

3875 if

( row->

lppos

>= 0 )

3876

redcost -= col->

vals

[i] * dualsol[row->

lppos

];

3882 for

( i = col->

nlprows

; i < col->len; ++i )

3884

row = col->

rows

[i];

3885

assert(row !=

NULL

);

3886

assert(row->

lppos

== -1);

3887

assert(col->

linkpos

[i] >= 0);

3905

assert(col !=

NULL

);

3909

redcost = col->

obj

;

3910 for

( i = 0; i < col->

nlprows

; ++i )

3912

row = col->

rows

[i];

3913

assert(row !=

NULL

);

3915

assert(row->

lppos

>= 0);

3916

assert(col->

linkpos

[i] >= 0);

3922 for

( i = col->

nlprows

; i < col->len; ++i )

3924

row = col->

rows

[i];

3925

assert(row !=

NULL

);

3928 if

( row->

lppos

>= 0 )

3935 for

( i = col->

nlprows

; i < col->len; ++i )

3937

row = col->

rows

[i];

3938

assert(row !=

NULL

);

3940

assert(row->

lppos

== -1);

3941

assert(col->

linkpos

[i] >= 0);

3956

assert(col !=

NULL

);

3957

assert(stat !=

NULL

);

3958

assert(lp !=

NULL

);

3981

assert(col !=

NULL

);

3983

assert(stat !=

NULL

);

3984

assert(lp !=

NULL

);

4037

assert(col !=

NULL

);

4040

assert(dualfarkas !=

NULL

);

4043 for

( i = 0; i < col->

nlprows

; ++i )

4045

row = col->

rows

[i];

4046

assert(row !=

NULL

);

4047

assert(row->

lppos

>= 0);

4048

farkas += col->

vals

[i] * dualfarkas[row->

lppos

];

4053 for

( i = col->

nlprows

; i < col->len; ++i )

4055

row = col->

rows

[i];

4056

assert(row !=

NULL

);

4058 if

( row->

lppos

>= 0 )

4059

farkas += col->

vals

[i] * dualfarkas[row->

lppos

];

4065 for

( i = col->

nlprows

; i < col->len; ++i )

4067

row = col->

rows

[i];

4068

assert(row !=

NULL

);

4069

assert(row->

lppos

== -1);

4070

assert(col->

linkpos

[i] >= 0);

4088

assert(col !=

NULL

);

4093 for

( i = 0; i < col->

nlprows

; ++i )

4095

row = col->

rows

[i];

4096

assert(row !=

NULL

);

4098

assert(row->

lppos

>= 0);

4099

assert(col->

linkpos

[i] >= 0);

4105 for

( i = col->

nlprows

; i < col->len; ++i )

4107

row = col->

rows

[i];

4108

assert(row !=

NULL

);

4111 if

( row->

lppos

>= 0 )

4118 for

( i = col->

nlprows

; i < col->len; ++i )

4120

row = col->

rows

[i];

4121

assert(row !=

NULL

);

4123

assert(row->

lppos

== -1);

4124

assert(col->

linkpos

[i] >= 0);

4139

assert(col !=

NULL

);

4140

assert(stat !=

NULL

);

4141

assert(lp !=

NULL

);

4167

assert(col !=

NULL

);

4171 if

( farkascoef > 0.0 )

4172 return

col->

ub

* farkascoef;

4174 return

col->

lb

* farkascoef;

4182

assert(lp !=

NULL

);

4197

assert(lp !=

NULL

);

4223

assert(col !=

NULL

);

4229

assert(col->

lpipos

>= 0);

4230

assert(col->

lppos

>= 0);

4232

assert(stat !=

NULL

);

4233

assert(lp !=

NULL

);

4236

assert(lp->

cols

[col->

lppos

] == col);

4254 if

( stat->

nnodes

== 1 )

4269

assert(col !=

NULL

);

4275

assert(col->

lpipos

>= 0);

4276

assert(col->

lppos

>= 0);

4278

assert(stat !=

NULL

);

4279

assert(lp !=

NULL

);

4282

assert(lp->

cols

[col->

lppos

] == col);

4327

assert(col !=

NULL

);

4334

assert(col->

lpipos

>= 0);

4335

assert(col->

lppos

>= 0);

4337

assert(stat !=

NULL

);

4338

assert(lp !=

NULL

);

4345

assert(lp->

cols

[col->

lppos

] == col);

4350

assert(lperror !=

NULL

);

4361

validsblp = stat->

nlps

;

4372

sbdownvalid =

FALSE

;

4380 SCIPsetDebugMsg

(

set

,

"performing strong branching on variable <%s>(%g) with %d iterations\n"

,

4407

sbdownvalid =

FALSE

;

4436 if

( iter/2 >= itlim )

4441 if

( stat->

nnodes

== 1 )

4459 if

( downvalid !=

NULL

)

4460

*downvalid = sbdownvalid;

4461 if

( upvalid !=

NULL

)

4462

*upvalid = sbupvalid;

4513

assert(cols !=

NULL

);

4515

assert(stat !=

NULL

);

4516

assert(lp !=

NULL

);

4522

assert(down !=

NULL

);

4523

assert(up !=

NULL

);

4524

assert(lperror !=

NULL

);

4545 for

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

4551

assert(lp->

cols

[col->

lppos

] == col);

4557

assert(col->

lpipos

>= 0);

4558

assert(col->

lppos

>= 0);

4575

up[j] = col->

sbup

;

4576 if

( downvalid !=

NULL

)

4578 if

( upvalid !=

NULL

)

4586

lpipos[nsubcols] = col->

lpipos

;

4587

primsols[nsubcols] = col->

primsol

;

4589

subidx[nsubcols] = j;

4590

subcols[nsubcols++] = col;

4594 SCIPsetDebugMsg

(

set

,

"performing strong branching on %d variables with %d iterations\n"

, ncols, itlim);

4607 for

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

4624

down[idx] = col->

sbdown

;

4625

up[idx] = col->

sbup

;

4626 if

( downvalid !=

NULL

)

4628 if

( upvalid !=

NULL

)

4641 for

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

4657

down[idx] = col->

sbdown

;

4658

up[idx] = col->

sbup

;

4659 if

( downvalid !=

NULL

)

4661 if

( upvalid !=

NULL

)

4674 if

( iter/2 >= itlim )

4679 if

( stat->

nnodes

== 1 )

4717

assert(col !=

NULL

);

4723 if

( downvalid !=

NULL

)

4725 if

( upvalid !=

NULL

)

4727 if

( solval !=

NULL

)

4729 if

( lpobjval !=

NULL

)

4742

assert(col !=

NULL

);

4743

assert(stat !=

NULL

);

4754

assert(col !=

NULL

);

4755

assert(stat !=

NULL

);

4756

assert(stat->

nnodes

> 0);

4776

assert(row !=

NULL

);

4795 for

( i = 0; i < row->

nlpcols

; ++i )

4800

assert(row->

linkpos

[i] >= 0);

4810 for

( i = row->

nlpcols

; i < row->len; ++i )

4837

assert(row !=

NULL

);

4850 for

( i = 0; i < row->

len

; ++i )

4852

col = row->

cols

[i];

4853

assert(col !=

NULL

);

4910

assert(mindelta <= 0.0);

4911

assert(maxdelta >= 0.0);

4913

sval = val * scalar;

4914

downval = floor(sval);

4919 if

( intval !=

NULL

)

4925 if

( intval !=

NULL

)

4967

assert(row !=

NULL

);

4971

assert(-1.0 < minrounddelta && minrounddelta <= 0.0);

4972

assert(0.0 <= maxrounddelta && maxrounddelta < 1.0);

4974 SCIPsetDebugMsg

(

set

,

"scale row <%s> with %g (tolerance=[%g,%g])\n"

, row->

name

, scaleval, minrounddelta, maxrounddelta);

4978

mindeltainf =

FALSE

;

4979

maxdeltainf =

FALSE

;

4980

oldlen = row->

len

;

4989 while

( c < row->len )

4991

col = row->

cols

[c];

4992

val = row->

vals

[c];

5008

newval = val * scaleval;

5010

&&

isIntegralScalar

(val, scaleval, minrounddelta, maxrounddelta, &intval) )

5014 if

( intval < newval )

5016

mindelta += (intval - newval)*ub;

5017

maxdelta += (intval - newval)*lb;

5023

mindelta += (intval - newval)*lb;

5024

maxdelta += (intval - newval)*ub;

5046 if

( oldlen != row->

len

)

5048

assert(row->

len

== oldlen - 1);

5050

oldlen = row->

len

;

5069

newval = (row->

lhs

- row->

constant

) * scaleval + mindelta;

5081

newval = (row->

rhs

- row->

constant

) * scaleval + maxdelta;

5126

assert(row !=

NULL

);

5127

assert(blkmem !=

NULL

);

5128

assert(stat !=

NULL

);

5130

assert(len == 0 || (cols !=

NULL

&& vals !=

NULL

));

5139

(*row)->integral =

TRUE

;

5150 for

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

5152

assert(cols[i] !=

NULL

);

5155

var = cols[i]->

var

;

5156

(*row)->cols_index[i] = cols[i]->

index

;

5157

(*row)->linkpos[i] = -1;

5165

(*row)->integral =

FALSE

;

5171

(*row)->cols =

NULL

;

5172

(*row)->cols_index =

NULL

;

5173

(*row)->vals =

NULL

;

5174

(*row)->linkpos =

NULL

;

5178

(*row)->constant = 0.0;

5183

(*row)->sqrnorm = 0.0;

5184

(*row)->sumnorm = 0.0;

5185

(*row)->objprod = 0.0;

5186

(*row)->maxval = 0.0;

5188

(*row)->dualsol = 0.0;

5190

(*row)->dualfarkas = 0.0;

5194

(*row)->origin = origin;

5195

(*row)->eventfilter =

NULL

;

5196

(*row)->index = stat->

nrowidx

;

5200

(*row)->nlpcols = 0;

5201

(*row)->nunlinked = len;

5204

(*row)->lpipos = -1;

5205

(*row)->lpdepth = -1;

5206

(*row)->minidx = INT_MAX;

5207

(*row)->maxidx = INT_MIN;

5208

(*row)->nummaxval = 0;

5209

(*row)->numminval = 0;

5210

(*row)->numintcols = -1;

5211

(*row)->validactivitylp = -1;

5212

(*row)->validpsactivitydomchg = -1;

5213

(*row)->validactivitybdsdomchg = -1;

5214

(*row)->nlpsaftercreation = 0L;

5215

(*row)->activeinlpcounter = 0L;

5218

(*row)->obsoletenode = -1;

5219

(*row)->fromcutpool =

FALSE

;

5221

(*row)->lpcolssorted =

TRUE

;

5222

(*row)->nonlpcolssorted = (len <= 1);

5223

(*row)->delaysort =

FALSE

;

5224

(*row)->validminmaxidx =

FALSE

;

5225

(*row)->lhschanged =

FALSE

;

5226

(*row)->rhschanged =

FALSE

;

5227

(*row)->coefchanged =

FALSE

;

5228

(*row)->local = local;

5229

(*row)->modifiable = modifiable;

5231

(*row)->origintype = origintype;

5232

(*row)->removable = removable;

5233

(*row)->inglobalcutpool =

FALSE

;

5234

(*row)->storedsolvals =

NULL

;

5249

assert(cons !=

NULL

);

5264

assert(blkmem !=

NULL

);

5265

assert(row !=

NULL

);

5266

assert(*row !=

NULL

);

5267

assert((*row)->nuses == 0);

5268

assert((*row)->lppos == -1);

5269

assert((*row)->eventfilter !=

NULL

);

5275

assert(cons !=

NULL

);

5305

assert(row !=

NULL

);

5317 if

( row->

len

== 0 )

5319 for

( i = 0; i < row->

len

; ++i )

5341

assert(row !=

NULL

);

5342

assert(row->

nuses

>= 0);

5343

assert(row->

nlocks

<= (

unsigned int

)(row->

nuses

));

5357

assert(blkmem !=

NULL

);

5358

assert(row !=

NULL

);

5359

assert(*row !=

NULL

);

5360

assert((*row)->nuses >= 1);

5361

assert((*row)->nlocks < (

unsigned int

)((*row)->nuses));

5363 SCIPsetDebugMsg

(

set

,

"release row <%s> with nuses=%d and nlocks=%u\n"

, (*row)->name, (*row)->nuses, (*row)->nlocks);

5365 if

( (*row)->nuses == 0 )

5380

assert(row !=

NULL

);

5395

assert(row !=

NULL

);

5401

assert(row->

nlocks

> 0);

5417

assert(lp !=

NULL

);

5439

assert(row !=

NULL

);

5441

assert(lp !=

NULL

);

5443

assert(col !=

NULL

);

5453

assert(0 <= pos && pos < row->len);

5454

assert(row->

cols

[pos] == col);

5458 if

( row->

linkpos

[pos] >= 0 )

5486

assert(row !=

NULL

);

5488

assert(lp !=

NULL

);

5490

assert(col !=

NULL

);

5504

assert(0 <= pos && pos < row->len);

5505

assert(row->

cols

[pos] == col);

5509 if

( row->

linkpos

[pos] >= 0 )

5538

assert(row !=

NULL

);

5539

assert(lp !=

NULL

);

5541

assert(col !=

NULL

);

5558

assert(0 <= pos && pos < row->len);

5559

assert(row->

cols

[pos] == col);

5563 if

( row->

linkpos

[pos] >= 0 )

5593

assert(row !=

NULL

);

5594

assert(row->

lhs

<= row->

rhs

);

5596

assert(stat !=

NULL

);

5597

assert(lp !=

NULL

);

5648

assert(row !=

NULL

);

5649

assert(row->

lhs

<= row->

rhs

);

5651

assert(stat !=

NULL

);

5652

assert(lp !=

NULL

);

5673

assert(row !=

NULL

);

5674

assert(lp !=

NULL

);

5680

oldlhs = row->

lhs

;

5705

assert(row !=

NULL

);

5706

assert(lp !=

NULL

);

5712

oldrhs = row->

rhs

;

5733

assert(row !=

NULL

);

5735

row->

local

= local;

5776

assert(row !=

NULL

);

5780

assert(maxdnom >= 1);

5781

assert(mindelta < 0.0);

5782

assert(maxdelta > 0.0);

5783

assert(success !=

NULL

);

5788 if

( intscalar !=

NULL

)

5794 for

( c = 0; c < row->

len

; ++c )

5797

col = row->

cols

[c];

5798

assert(col !=

NULL

);

5803

val = row->

vals

[c];

5806 if

( val < mindelta || val > maxdelta )

5809

minval =

MIN

(minval, absval);

5815 if

( intscalar !=

NULL

)

5822

assert(minval >

MIN

(-mindelta, maxdelta));

5829

scaleval = 1.0/minval;

5830

scalable = (scaleval <= maxscale);

5831 for

( c = 0; c < row->

len

&& scalable; ++c )

5838

val = row->

vals

[c];

5840 while

( scaleval <= maxscale

5841

&& (absval * scaleval < 0.5 || !

isIntegralScalar

(val, scaleval, mindelta, maxdelta,

NULL

)) )

5854

scalable = (scaleval <= maxscale);

5855 SCIPsetDebugMsg

(

set

,

" -> val=%g, scaleval=%g, val*scaleval=%g, scalable=%u\n"

, val, scaleval, val*scaleval, scalable);

5862

assert(scaleval <= maxscale);

5863 if

( intscalar !=

NULL

)

5864

*intscalar = scaleval;

5866 SCIPsetDebugMsg

(

set

,

" -> integrality can be achieved by scaling with %g (minval=%g)\n"

, scaleval, minval);

5873

twomult = (twomultval <= maxscale);

5874 for

( c = 0; c < row->

len

&& twomult; ++c )

5881

val = row->

vals

[c];

5883 while

( twomultval <= maxscale

5884

&& (absval * twomultval < 0.5 || !

isIntegralScalar

(val, twomultval, mindelta, maxdelta,

NULL

)) )

5897

twomult = (twomultval <= maxscale);

5899

val, twomultval, val*twomultval, twomult);

5904

assert(twomultval <= maxscale);

5905 if

( intscalar !=

NULL

)

5906

*intscalar = twomultval;

5908 SCIPsetDebugMsg

(

set

,

" -> integrality can be achieved by scaling with %g (power of 2)\n"

, twomultval);

5918

rational = (maxdnom > 1);

5921 for

( c = 0; c < row->

len

&& rational; ++c )

5925

val = row->

vals

[c];

5926

rational =

SCIPrealToRational

(val, mindelta, maxdelta, maxdnom, &numerator, &denominator);

5927 if

( rational && numerator != 0 )

5929

assert(denominator > 0);

5930

gcd =

ABS

(numerator);

5934

val, numerator, denominator, gcd, scm, rational);

5941 for

( ++c; c < row->

len

&& rational; ++c )

5945

val = row->

vals

[c];

5946

rational =

SCIPrealToRational

(val, mindelta, maxdelta, maxdnom, &numerator, &denominator);

5947 if

( rational && numerator != 0 )

5949

assert(denominator > 0);

5954

val, numerator, denominator, gcd, scm, rational);

5963 if

( intscalar !=

NULL

)

5971

assert(!(*success));

5996

assert(success !=

NULL

);

6000

&intscalar, success) );

6005 SCIP_CALL

(

rowScale

(row, blkmem,

set

, eventqueue, stat, lp, intscalar, usecontvars, mindelta, maxdelta) );

6018

assert(row !=

NULL

);

6026#ifdef SCIP_MORE_DEBUG 6032 for

( c = 1; c < row->

nlpcols

; ++c )

6034 for

( c = row->

nlpcols

+ 1; c < row->len; ++c )

6052

assert(row !=

NULL

);

6077

assert(cols !=

NULL

);

6078

assert(cols_index !=

NULL

);

6079

assert(vals !=

NULL

);

6084

assert(row->

linkpos

[0] == -1);

6086 for

( s = 1; s < row->

len

; ++s )

6089

assert(row->

linkpos

[s] == -1);

6091 if

( cols[s] == cols[t] )

6108

cols_index[t] = cols_index[s];

6117

assert(s == row->

len

);

6118

assert(t <= row->len);

6134 for

( i = 0; i < row->

len

; ++i )

6138 for

( j = i+1; j < row->

len

; ++j )

6139

assert(row->

cols

[i] != row->

cols

[j]);

6150

assert(row !=

NULL

);

6162

assert(row !=

NULL

);

6178

assert(row !=

NULL

);

6179

assert(stat !=

NULL

);

6182 for

( c = 0; c < row->

nlpcols

; ++c )

6184

col = row->

cols

[c];

6185

assert(col !=

NULL

);

6187

assert(col->

lppos

>= 0);

6188

assert(row->

linkpos

[c] >= 0);

6194 for

( c = row->

nlpcols

; c < row->len; ++c )

6196

col = row->

cols

[c];

6197

assert(col !=

NULL

);

6200 if

( col->

lppos

>= 0 )

6207 for

( c = row->

nlpcols

; c < row->len; ++c )

6209

col = row->

cols

[c];

6210

assert(col !=

NULL

);

6212

assert(col->

lppos

== -1);

6213

assert(row->

linkpos

[c] >= 0);

6232

assert(row !=

NULL

);

6233

assert(stat !=

NULL

);

6234

assert(lp !=

NULL

);

6245

activity =

MAX

(activity, -inf);

6246

activity =

MIN

(activity, +inf);

6261

assert(row !=

NULL

);

6265 return MIN

(row->

rhs

- activity, activity - row->

lhs

);

6283

assert( row !=

NULL

);

6284

assert( stat !=

NULL

);

6287 for

(c = 0; c < row->

nlpcols

; ++c)

6289

col = row->

cols

[c];

6290

assert( col !=

NULL

);

6291

assert( col->

lppos

>= 0 );

6293

assert( row->

linkpos

[c] >= 0 );

6299 for

(c = row->

nlpcols

; c < row->len; ++c)

6301

col = row->

cols

[c];

6302

assert( col !=

NULL

);

6303

assert( col->

lppos

== -1 || row->

linkpos

[c] == -1 );

6304 if

( col->

lppos

>= 0 )

6314 for

(c = row->

nlpcols

; c < row->len; ++c)

6316

col = row->

cols

[c];

6317

assert( col !=

NULL

);

6318

assert( col->

lppos

== -1 );

6319

assert( row->

linkpos

[c] >= 0 );

6324

activity =

MAX

(activity, -inf);

6325

activity =

MIN

(activity, +inf);

6327 return MIN

(row->

rhs

- activity, activity - row->

lhs

);

6345

assert( row !=

NULL

);

6346

assert( stat !=

NULL

);

6349 for

(c = 0; c < row->

nlpcols

; ++c)

6351

col = row->

cols

[c];

6352

assert( col !=

NULL

);

6353

assert( col->

lppos

>= 0 );

6355

assert( row->

linkpos

[c] >= 0 );

6361 for

(c = row->

nlpcols

; c < row->len; ++c)

6363

col = row->

cols

[c];

6364

assert( col !=

NULL

);

6365

assert( col->

lppos

== -1 || row->

linkpos

[c] == -1 );

6366 if

( col->

lppos

>= 0 )

6376 for

(c = row->

nlpcols

; c < row->len; ++c)

6378

col = row->

cols

[c];

6379

assert( col !=

NULL

);

6380

assert( col->

lppos

== -1 );

6381

assert( row->

linkpos

[c] >= 0 );

6386

activity =

MAX

(activity, -inf);

6387

activity =

MIN

(activity, +inf);

6389 return MIN

(row->

rhs

- activity, activity - row->

lhs

);

6401

assert(row !=

NULL

);

6402

assert(stat !=

NULL

);

6405 for

( i = 0; i < row->

len

; ++i )

6407

col = row->

cols

[i];

6408

assert(col !=

NULL

);

6409

assert((i < row->nlpcols) == (row->

linkpos

[i] >= 0 && col->

lppos

>= 0));

6429

assert(row !=

NULL

);

6430

assert(stat !=

NULL

);

6441

activity =

MAX

(activity, -inf);

6442

activity =

MIN

(activity, +inf);

6456

assert(row !=

NULL

);

6460 return MIN

(row->

rhs

- pseudoactivity, pseudoactivity - row->

lhs

);

6477

assert(row !=

NULL

);

6480 for

( i = 0; i < row->

len

; ++i )

6482

col = row->

cols

[i];

6483

assert(col !=

NULL

);

6484

assert((i < row->nlpcols) == (row->

linkpos

[i] >= 0 && col->

lppos

>= 0));

6489

solval = (row->

vals

[i] >= 0.0 ? col->

lb

: col->

ub

);

6491

solval = (row->

vals

[i] >= 0.0 ? col->

ub

: col->

lb

);

6493

solval = (col->

lb

+ col->

ub

)/2.0;

6495

activity += row->

vals

[i] * solval;

6499

activity =

MAX

(activity, -inf);

6500

activity =

MIN

(activity, +inf);

6515

assert(row !=

NULL

);

6519 return MIN

(row->

rhs

- activity, activity - row->

lhs

);

6536

assert(row !=

NULL

);

6538

assert(stat !=

NULL

);

6541

mininfinite =

FALSE

;

6542

maxinfinite =

FALSE

;

6545 for

( i = 0; i < row->

len

&& (!mininfinite || !maxinfinite); ++i )

6547

col = row->

cols

[i];

6548

assert(col !=

NULL

);

6549

assert((i < row->nlpcols) == (row->

linkpos

[i] >= 0 && col->

lppos

>= 0));

6550

val = row->

vals

[i];

6602

assert(row !=

NULL

);

6603

assert(stat !=

NULL

);

6623

assert(row !=

NULL

);

6624

assert(stat !=

NULL

);

6644

assert(row !=

NULL

);

6674

assert(row !=

NULL

);

6679

assert(row->

maxval

>= 0.0 || row->

len

== 0);

6690

assert(row !=

NULL

);

6695

assert(row->

minval

>= 0.0 || row->

len

== 0);

6706

assert(row !=

NULL

);

6710

assert(row->

maxidx

>= 0 || row->

len

== 0);

6722

assert(row !=

NULL

);

6726

assert(row->

minidx

>= 0 || row->

len

== 0);

6738

assert(row !=

NULL

);

6760

assert(sol !=

NULL

);

6771 for

( k = 0; k < lp->

ncols

; ++k )

6780

scale = 1.0 / sqrt(scale);

6782 for

( k = 0; k < lp->

ncols

; ++k )

6787

solcutoffdist = 0.0;

6788 for

( k = 0; k < row->

nlpcols

; ++k )

6791 for

( k = row->

nlpcols

; k < row->len; ++k )

6798

solcutoffdist =

set

->num_sumepsilon;

6802 return

solcutoffdist;

6819 switch

(

set

->sepa_efficacynorm )

6831

norm = (row->

len

== 0 ? 0.0 : 1.0);

6843 return

-feasibility / norm;

6876 switch

(

set

->sepa_efficacynorm )

6888

norm = (row->

len

== 0 ? 0.0 : 1.0);

6900 return

-feasibility / norm;

6934 switch

(

set

->sepa_efficacynorm )

6946

norm = (row->

len

== 0 ? 0.0 : 1.0);

6958 return

-feasibility / norm;

6974 switch

(

set

->sepa_efficacynorm )

6986

norm = (row->

len

== 0 ? 0.0 : 1.0);

6998 return

-feasibility / norm;

7017

assert(row1 !=

NULL

);

7018

assert(row2 !=

NULL

);

7072 while

( i1 < row1->nlpcols && i2 < row2->len )

7074

assert(row1->

cols

[i1] != row2->

cols

[i2]);

7083

assert(i1 == row1->

nlpcols

|| i2 == row2->

len

);

7087 while

( i1 < row1->len && i2 < row2->nlpcols )

7089

assert(row1->

cols

[i1] != row2->

cols

[i2]);

7098

assert(i1 == row1->

len

|| i2 == row2->

nlpcols

);

7119 while

( i1 >= 0 && i2 >= 0 )

7121

assert(row1->

cols

[i1]->

index

== row1colsidx[i1]);

7122

assert(row2->

cols

[i2]->

index

== row2colsidx[i2]);

7123

assert((row1->

cols

[i1] == row2->

cols

[i2]) == (row1colsidx[i1] == row2colsidx[i2]));

7124 if

( row1colsidx[i1] < row2colsidx[i2] )

7126 else if

( row1colsidx[i1] > row2colsidx[i2] )

7130

scalarprod += row1->

vals

[i1] * row2->

vals

[i2];

7158 while

( ilp1 < row1->nlpcols && inlp1 < row1->len && ilp2 < row2->nlpcols && inlp2 < row2->len )

7160

assert(row1->

cols

[ilp1]->

index

== row1colsidx[ilp1]);

7161

assert(row1->

cols

[inlp1]->

index

== row1colsidx[inlp1]);

7162

assert(row2->

cols

[ilp2]->

index

== row2colsidx[ilp2]);

7163

assert(row2->

cols

[inlp2]->

index

== row2colsidx[inlp2]);

7164

assert((row1->

cols

[ilp1] == row2->

cols

[ilp2]) == (row1colsidx[ilp1] == row2colsidx[ilp2]));

7165

assert((row1->

cols

[ilp1] == row2->

cols

[inlp2]) == (row1colsidx[ilp1] == row2colsidx[inlp2]));

7166

assert((row1->

cols

[inlp1] == row2->

cols

[ilp2]) == (row1colsidx[inlp1] == row2colsidx[ilp2]));

7167

assert((row1->

cols

[inlp1] == row2->

cols

[inlp2]) == (row1colsidx[inlp1] == row2colsidx[inlp2]));

7170 if

( row1colsidx[ilp1] == row2colsidx[ilp2] )

7172

scalarprod += row1->

vals

[ilp1] * row2->

vals

[ilp2];

7177 else if

( row1colsidx[ilp1] == row2colsidx[inlp2] )

7179

scalarprod += row1->

vals

[ilp1] * row2->

vals

[inlp2];

7184 else if

( row1colsidx[inlp1] == row2colsidx[ilp2] )

7186

scalarprod += row1->

vals

[inlp1] * row2->

vals

[ilp2];

7191 else if

( row1colsidx[inlp1] == row2colsidx[inlp2] && row1->

cols

[inlp1]->

lppos

>= 0 )

7193

scalarprod += row1->

vals

[inlp1] * row2->

vals

[inlp2];

7198 else if

( row1colsidx[ilp1] < row1colsidx[inlp1] )

7200 if

( row2colsidx[ilp2] < row2colsidx[inlp2] )

7202 if

( row1colsidx[ilp1] < row2colsidx[ilp2] )

7209 if

( row1colsidx[ilp1] < row2colsidx[inlp2] )

7217 if

( row2colsidx[ilp2] < row2colsidx[inlp2] )

7219 if

( row1colsidx[inlp1] < row2colsidx[ilp2] )

7226 if

( row1colsidx[inlp1] < row2colsidx[inlp2] )

7238 if

( ilp1 != row1->

nlpcols

&& inlp1 != row1->

len

)

7243

assert(ilp2 == row2->

nlpcols

|| inlp2 == row2->

len

);

7266

assert(inlp1 == row1->

len

);

7276 while

( i1 < end1 && ilp2 < row2->nlpcols && inlp2 < row2->len )

7278

assert(row1->

cols

[i1]->

index

== row1colsidx[i1]);

7279

assert(row2->

cols

[ilp2]->

index

== row2colsidx[ilp2]);

7280

assert(row2->

cols

[inlp2]->

index

== row2colsidx[inlp2]);

7281

assert((row1->

cols

[i1] == row2->

cols

[ilp2]) == (row1colsidx[i1] == row2colsidx[ilp2]));

7282

assert((row1->

cols

[i1] == row2->

cols

[inlp2]) == (row1colsidx[i1] == row2colsidx[inlp2]));

7285 if

( row1colsidx[i1] == row2colsidx[ilp2] )

7287

scalarprod += row1->

vals

[i1] * row2->

vals

[ilp2];

7292 else if

( row1colsidx[i1] == row2colsidx[inlp2] && (lpcols || row1->

cols

[i1]->

lppos

>= 0) )

7294

scalarprod += row1->

vals

[i1] * row2->

vals

[inlp2];

7299 else if

( row2colsidx[ilp2] < row2colsidx[inlp2] )

7301 if

( row1colsidx[i1] < row2colsidx[ilp2] )

7308 if

( row1colsidx[i1] < row2colsidx[inlp2] )

7329

assert(inlp2 == row2->

len

);

7336 while

( i1 < end1 && i2 < end2 )

7338

assert(row1->

cols

[i1]->

index

== row1colsidx[i1]);

7339

assert(row2->

cols

[i2]->

index

== row2colsidx[i2]);

7340

assert((row1->

cols

[i1] == row2->

cols

[i2]) == (row1colsidx[i1] == row2colsidx[i2]));

7343 if

( row1colsidx[i1] == row2colsidx[i2] && (lpcols || row1->

cols

[i1]->

lppos

>= 0) )

7345

scalarprod += row1->

vals

[i1] * row2->

vals

[i2];

7350 else if

( row1colsidx[i1] < row2colsidx[i2] )

7374

assert(row1 !=

NULL

);

7375

assert(row2 !=

NULL

);

7429 while

( i1 < row1->nlpcols && i2 < row2->len )

7431

assert(row1->

cols

[i1] != row2->

cols

[i2]);

7440

assert(i1 == row1->

nlpcols

|| i2 == row2->

len

);

7444 while

( i1 < row1->len && i2 < row2->nlpcols )

7446

assert(row1->

cols

[i1] != row2->

cols

[i2]);

7455

assert(i1 == row1->

len

|| i2 == row2->

nlpcols

);

7476 while

( i1 >= 0 && i2 >= 0 )

7478

assert(row1->

cols

[i1]->

index

== row1colsidx[i1]);

7479

assert(row2->

cols

[i2]->

index

== row2colsidx[i2]);

7480

assert((row1->

cols

[i1] == row2->

cols

[i2]) == (row1colsidx[i1] == row2colsidx[i2]));

7481 if

( row1colsidx[i1] < row2colsidx[i2] )

7483 else if

( row1colsidx[i1] > row2colsidx[i2] )

7515 while

( ilp1 < row1->nlpcols && inlp1 < row1->len && ilp2 < row2->nlpcols && inlp2 < row2->len )

7517

assert(row1->

cols

[ilp1]->

index

== row1colsidx[ilp1]);

7518

assert(row1->

cols

[inlp1]->

index

== row1colsidx[inlp1]);

7519

assert(row2->

cols

[ilp2]->

index

== row2colsidx[ilp2]);

7520

assert(row2->

cols

[inlp2]->

index

== row2colsidx[inlp2]);

7521

assert((row1->

cols

[ilp1] == row2->

cols

[ilp2]) == (row1colsidx[ilp1] == row2colsidx[ilp2]));

7522

assert((row1->

cols

[ilp1] == row2->

cols

[inlp2]) == (row1colsidx[ilp1] == row2colsidx[inlp2]));

7523

assert((row1->

cols

[inlp1] == row2->

cols

[ilp2]) == (row1colsidx[inlp1] == row2colsidx[ilp2]));

7524

assert((row1->

cols

[inlp1] == row2->

cols

[inlp2]) == (row1colsidx[inlp1] == row2colsidx[inlp2]));

7527 if

( row1colsidx[ilp1] == row2colsidx[ilp2] )

7534 else if

( row1colsidx[ilp1] == row2colsidx[inlp2] )

7541 else if

( row1colsidx[inlp1] == row2colsidx[ilp2] )

7548 else if

( row1colsidx[inlp1] == row2colsidx[inlp2] && row1->

cols

[inlp1]->

lppos

>= 0 )

7555 else if

( row1colsidx[ilp1] < row1colsidx[inlp1] )

7557 if

( row2colsidx[ilp2] < row2colsidx[inlp2] )

7559 if

( row1colsidx[ilp1] < row2colsidx[ilp2] )

7566 if

( row1colsidx[ilp1] < row2colsidx[inlp2] )

7574 if

( row2colsidx[ilp2] < row2colsidx[inlp2] )

7576 if

( row1colsidx[inlp1] < row2colsidx[ilp2] )

7583 if

( row1colsidx[inlp1] < row2colsidx[inlp2] )

7595 if

( ilp1 != row1->

nlpcols

&& inlp1 != row1->

len

)

7600

assert(ilp2 == row2->

nlpcols

|| inlp2 == row2->

len

);

7623

assert(inlp1 == row1->

len

);

7633 while

( i1 < end1 && ilp2 < row2->nlpcols && inlp2 < row2->len )

7635

assert(row1->

cols

[i1]->

index

== row1colsidx[i1]);

7636

assert(row2->

cols

[ilp2]->

index

== row2colsidx[ilp2]);

7637

assert(row2->

cols

[inlp2]->

index

== row2colsidx[inlp2]);

7638

assert((row1->

cols

[i1] == row2->

cols

[ilp2]) == (row1colsidx[i1] == row2colsidx[ilp2]));

7639

assert((row1->

cols

[i1] == row2->

cols

[inlp2]) == (row1colsidx[i1] == row2colsidx[inlp2]));

7642 if

( row1colsidx[i1] == row2colsidx[ilp2] )

7649 else if

( row1colsidx[i1] == row2colsidx[inlp2] && (lpcols || row1->

cols

[i1]->

lppos

>= 0) )

7656 else if

( row2colsidx[ilp2] < row2colsidx[inlp2] )

7658 if

( row1colsidx[i1] < row2colsidx[ilp2] )

7665 if

( row1colsidx[i1] < row2colsidx[inlp2] )

7686

assert(inlp2 == row2->

len

);

7693 while

( i1 < end1 && i2 < end2 )

7695

assert(row1->

cols

[i1]->

index

== row1colsidx[i1]);

7696

assert(row2->

cols

[i2]->

index

== row2colsidx[i2]);

7697

assert((row1->

cols

[i1] == row2->

cols

[i2]) == (row1colsidx[i1] == row2colsidx[i2]));

7700 if

( row1colsidx[i1] == row2colsidx[i2] && (lpcols || row1->

cols

[i1]->

lppos

>= 0) )

7707 else if

( row1colsidx[i1] < row2colsidx[i2] )

7731 switch

( orthofunc )

7735 if

( scalarprod == 0.0 )

7749 for

( i = 0; i < row1->

len

; ++i )

7759 for

( i = 0; i < row2->

len

; ++i )

7774 SCIPerrorMessage

(

"invalid orthogonality function parameter '%c'\n"

, orthofunc);

7807

assert(row !=

NULL

);

7808

assert(lp !=

NULL

);

7824

parallelism =

MIN

(parallelism, 1.0);

7825

parallelism =

MAX

(parallelism, 0.0);

7841

assert(row !=

NULL

);

7847

eventtype, row->

name

, (

void

*)eventhdlr, (

void

*)eventdata);

7865

assert(row !=

NULL

);

7868 SCIPsetDebugMsg

(

set

,

"drop event of row <%s> with handler %p and data %p\n"

, row->

name

, (

void

*)eventhdlr, (

void

*)eventdata);

7881

assert(row !=

NULL

);

7882

assert(stat !=

NULL

);

7883

assert(stat->

nnodes

> 0);

7899

assert(col !=

NULL

);

7921

assert(lp !=

NULL

);

7977

assert(lp !=

NULL

);

7979

assert(col !=

NULL

);

7980

assert(lb !=

NULL

);

7981

assert(ub !=

NULL

);

8027

assert(lp !=

NULL

);

8029

assert(blkmem !=

NULL

);

8047 for

( c = lp->

nlpicols

; c < lp->ncols; ++c )

8048

naddcoefs += lp->

cols

[c]->

len

;

8049

assert(naddcols > 0);

8062 for

( pos = 0, c = lp->

nlpicols

; c < lp->ncols; ++pos, ++c )

8064

col = lp->

cols

[c];

8065

assert(col !=

NULL

);

8069

assert(col->

lppos

== c);

8070

assert(nnonz + col->

nlprows

<= naddcoefs);

8097

obj[pos] = col->

obj

;

8109 for

( i = 0; i < col->

nlprows

; ++i )

8115

assert(lpipos < lp->nrows);

8116

assert(nnonz < naddcoefs);

8117

ind[nnonz] = lpipos;

8118

val[nnonz] = col->

vals

[i];

8123 for

( i = col->

nlprows

; i < col->len; ++i )

8165

assert(row !=

NULL

);

8183

assert(lp !=

NULL

);

8249

assert(lp !=

NULL

);

8251

assert(blkmem !=

NULL

);

8267 for

(

r

= lp->

nlpirows

; r < lp->nrows; ++

r

)

8268

naddcoefs += lp->

rows

[

r

]->

len

;

8269

assert(naddrows > 0);

8281 for

( pos = 0,

r

= lp->

nlpirows

; r < lp->nrows; ++pos, ++

r

)

8283

row = lp->

rows

[

r

];

8284

assert(row !=

NULL

);

8285

assert(row->

lppos

==

r

);

8286

assert(nnonz + row->

nlpcols

<= naddcoefs);

8316

name[pos] = row->

name

;

8322 for

( i = 0; i < row->

nlpcols

; ++i )

8328

assert(lpipos < lp->ncols);

8329

assert(nnonz < naddcoefs);

8331

ind[nnonz] = lpipos;

8332

val[nnonz] = row->

vals

[i];

8338 for

( i = row->

nlpcols

; i < row->len; ++i )

8393

assert(lp !=

NULL

);

8411 for

( i = 0; i < lp->

nchgcols

; ++i )

8414

assert(col !=

NULL

);

8443

newobj = col->

obj

;

8446

assert(nobjchg < lp->ncols);

8447

objind[nobjchg] = col->

lpipos

;

8448

obj[nobjchg] = newobj;

8465

assert(nbdchg < lp->ncols);

8466

bdind[nbdchg] = col->

lpipos

;

8483 SCIPsetDebugMsg

(

set

,

"flushing objective changes: change %d objective values of %d changed columns\n"

, nobjchg, lp->

nchgcols

);

8538

assert(lp !=

NULL

);

8553 for

( i = 0; i < lp->

nchgrows

; ++i )

8556

assert(row !=

NULL

);

8581

assert(nchg < lp->nrows);

8582

ind[nchg] = row->

lpipos

;

8631

assert(lp !=

NULL

);

8638 for

( i = 0; i < lp->

ncols

; ++i )

8651 if

( nintegers > 0 )

8677

assert(lp !=

NULL

);

8678

assert(blkmem !=

NULL

);

8680 SCIPsetDebugMsg

(

set

,

"flushing LP changes: old (%d cols, %d rows), nchgcols=%d, nchgrows=%d, firstchgcol=%d, firstchgrow=%d, new (%d cols, %d rows), flushed=%u\n"

,

8724

assert(ncols == lp->

ncols

);

8725

assert(nrows == lp->

nrows

);

8743

assert(lp !=

NULL

);

8776 for

( i = 0; i < lp->

nchgcols

; ++i )

8781

assert(col !=

NULL

);

8815 for

( i = 0; i < lp->

nchgrows

; ++i )

8820

assert(row !=

NULL

);

8870

assert(col !=

NULL

);

8871

assert(col->

lppos

>= 0);

8874 for

( i = 0; i < col->

len

; ++i )

8879

row = col->

rows

[i];

8880

assert(row !=

NULL

);

8881

assert(row->

linkpos

[pos] == i);

8882

assert(row->

cols

[pos] == col);

8883

assert(row->

nlpcols

<= pos && pos < row->len);

8890 if

( pos == row->

nlpcols

-1 )

8909

assert(row !=

NULL

);

8910

assert(row->

lppos

>= 0);

8913 for

( i = 0; i < row->

len

; ++i )

8918

col = row->

cols

[i];

8919

assert(col !=

NULL

);

8920

assert(col->

linkpos

[pos] == i);

8921

assert(col->

rows

[pos] == row);

8922

assert(col->

nlprows

<= pos && pos < col->len);

8928 if

( pos == col->

nlprows

-1 )

8945

assert(col !=

NULL

);

8946

assert(col->

lppos

== -1);

8949 for

( i = 0; i < col->

len

; ++i )

8954

row = col->

rows

[i];

8955

assert(row !=

NULL

);

8956

assert(row->

linkpos

[pos] == i);

8957

assert(row->

cols

[pos] == col);

8958

assert(0 <= pos && pos < row->nlpcols);

8983

assert(row !=

NULL

);

8984

assert(row->

lppos

== -1);

8987 for

( i = 0; i < row->

len

; ++i )

8992

col = row->

cols

[i];

8993

assert(col !=

NULL

);

8994

assert(0 <= pos && pos < col->nlprows);

8995

assert(col->

linkpos

[pos] == i);

8996

assert(col->

rows

[pos] == row);

9014

assert(lp !=

NULL

);

9020

assert(initsize > 0);

9037

assert(lp !=

NULL

);

9043

assert(minsize > 0);

9045 if

( minsize <= lp->divechgsidessize )

9061

assert(lp !=

NULL

);

9074#define DIVESTACKINITSIZE 100 9087

assert(lp !=

NULL

);

9089

assert(stat !=

NULL

);

9090

assert(name !=

NULL

);

9097

(*lp)->lpicols =

NULL

;

9098

(*lp)->lpirows =

NULL

;

9099

(*lp)->chgcols =

NULL

;

9100

(*lp)->chgrows =

NULL

;

9101

(*lp)->cols =

NULL

;

9102

(*lp)->soldirection =

NULL

;

9103

(*lp)->lazycols =

NULL

;

9104

(*lp)->rows =

NULL

;

9105

(*lp)->lpobjval = 0.0;

9106

(*lp)->glbpseudoobjval = 0.0;

9107

(*lp)->relglbpseudoobjval = 0.0;

9108

(*lp)->glbpseudoobjvalid =

TRUE

;

9109

(*lp)->glbpseudoobjvalinf = 0;

9110

(*lp)->pseudoobjval = 0.0;

9111

(*lp)->relpseudoobjval = 0.0;

9112

(*lp)->pseudoobjvalid =

TRUE

;

9113

(*lp)->pseudoobjvalinf = 0;

9114

(*lp)->looseobjval = 0.0;

9115

(*lp)->rellooseobjval = 0.0;

9116

(*lp)->looseobjvalid =

TRUE

;

9117

(*lp)->looseobjvalinf = 0;

9118

(*lp)->nloosevars = 0;

9124

(*lp)->validdegeneracylp = -1;

9125

(*lp)->objsqrnorm = 0.0;

9126

(*lp)->objsumnorm = 0.0;

9127

(*lp)->lpicolssize = 0;

9128

(*lp)->nlpicols = 0;

9129

(*lp)->lpirowssize = 0;

9130

(*lp)->nlpirows = 0;

9131

(*lp)->lpifirstchgcol = 0;

9132

(*lp)->lpifirstchgrow = 0;

9133

(*lp)->colssize = 0;

9134

(*lp)->soldirectionsize = 0;

9136

(*lp)->lazycolssize = 0;

9137

(*lp)->nlazycols = 0;

9138

(*lp)->rowssize = 0;

9140

(*lp)->chgcolssize = 0;

9141

(*lp)->nchgcols = 0;

9142

(*lp)->chgrowssize = 0;

9143

(*lp)->nchgrows = 0;

9144

(*lp)->firstnewcol = 0;

9145

(*lp)->firstnewrow = 0;

9146

(*lp)->nremovablecols = 0;

9147

(*lp)->nremovablerows = 0;

9148

(*lp)->validsollp = stat->

lpcount

;

9149

(*lp)->validfarkaslp = -1;

9150

(*lp)->validsoldirlp = -1;

9151

(*lp)->validsoldirsol =

NULL

;

9152

(*lp)->objsqrnormunreliable =

FALSE

;

9153

(*lp)->flushdeletedcols =

FALSE

;

9154

(*lp)->flushaddedcols =

FALSE

;

9155

(*lp)->flushdeletedrows =

FALSE

;

9156

(*lp)->flushaddedrows =

FALSE

;

9157

(*lp)->updateintegrality =

TRUE

;

9158

(*lp)->flushed =

TRUE

;

9160

(*lp)->solved =

TRUE

;

9161

(*lp)->primalfeasible =

TRUE

;

9162

(*lp)->primalchecked =

TRUE

;

9163

(*lp)->dualfeasible =

TRUE

;

9164

(*lp)->dualchecked =

TRUE

;

9165

(*lp)->solisbasic =

FALSE

;

9166

(*lp)->rootlpisrelax =

TRUE

;

9167

(*lp)->isrelax =

TRUE

;

9168

(*lp)->installing =

FALSE

;

9169

(*lp)->strongbranching =

FALSE

;

9170

(*lp)->strongbranchprobing =

FALSE

;

9171

(*lp)->probing =

FALSE

;

9172

(*lp)->diving =

FALSE

;

9173

(*lp)->divingobjchg =

FALSE

;

9174

(*lp)->divinglazyapplied =

FALSE

;

9175

(*lp)->divelpistate =

NULL

;

9176

(*lp)->divelpwasprimfeas =

TRUE

;

9177

(*lp)->divelpwasprimchecked =

TRUE

;

9178

(*lp)->divelpwasdualfeas =

TRUE

;

9179

(*lp)->divelpwasdualchecked =

TRUE

;

9180

(*lp)->divechgsides =

NULL

;

9181

(*lp)->divechgsidetypes =

NULL

;

9182

(*lp)->divechgrows =

NULL

;

9183

(*lp)->ndivechgsides = 0;

9184

(*lp)->divechgsidessize = 0;

9185

(*lp)->ndivingrows = 0;

9186

(*lp)->divinglpiitlim = INT_MAX;

9187

(*lp)->resolvelperror =

FALSE

;

9188

(*lp)->divenolddomchgs = 0;

9189

(*lp)->adjustlpval =

FALSE

;

9191

(*lp)->lpifeastol = (*lp)->feastol;

9194

(*lp)->lpifromscratch =

FALSE

;

9195

(*lp)->lpifastmip =

set

->lp_fastmip;

9196

(*lp)->lpiscaling =

set

->lp_scaling;

9197

(*lp)->lpipresolving =

set

->lp_presolving;

9198

(*lp)->lpilpinfo =

set

->disp_lpinfo;

9199

(*lp)->lpirowrepswitch =

set

->lp_rowrepswitch;

9200

(*lp)->lpisolutionpolishing = (

set

->lp_solutionpolishing > 0);

9201

(*lp)->lpirefactorinterval =

set

->lp_refactorinterval;

9202

(*lp)->lpiconditionlimit =

set

->lp_conditionlimit;

9203

(*lp)->lpimarkowitz =

set

->lp_markowitz;

9204

(*lp)->lpiitlim = INT_MAX;

9207

(*lp)->lpithreads =

set

->lp_threads;

9208

(*lp)->lpitiming = (int)

set

->time_clocktype;

9209

(*lp)->lpirandomseed =

set

->random_randomseed;

9210

(*lp)->storedsolvals =

NULL

;

9220 "LP Solver <%s>: objective limit cannot be set -- can lead to unnecessary simplex iterations\n"

,

9224

(*lp)->lpihasfeastol = success;

9228 "LP Solver <%s>: primal feasibility tolerance cannot be set -- tolerance of SCIP and LP solver may differ\n"

,

9232

(*lp)->lpihasdualfeastol = success;

9236 "LP Solver <%s>: dual feasibility tolerance cannot be set -- tolerance of SCIP and LP solver may differ\n"

,

9240

(*lp)->lpihasbarrierconvtol = success;

9244 "LP Solver <%s>: barrier convergence tolerance cannot be set -- tolerance of SCIP and LP solver may differ\n"

,

9249

(*lp)->lpihasfastmip = success;

9253 "LP Solver <%s>: fastmip setting not available -- SCIP parameter has no effect\n"

,

9257

(*lp)->lpihasscaling = success;

9261 "LP Solver <%s>: scaling not available -- SCIP parameter has no effect\n"

,

9265

(*lp)->lpihaspresolving = success;

9269 "LP Solver <%s>: presolving not available -- SCIP parameter has no effect\n"

,

9276 "LP Solver <%s>: clock type cannot be set\n"

,

9283 "LP Solver <%s>: iteration limit cannot be set -- can lead to unnecessary simplex iterations\n"

,

9290 "LP Solver <%s>: pricing strategy cannot be set -- SCIP parameter has no effect\n"

,

9297 "LP Solver <%s>: lpinfo setting not available -- SCIP parameter has no effect\n"

,

9301

(*lp)->lpihasrowrep = success;

9305 "LP Solver <%s>: row representation of the basis not available -- SCIP parameter lp/rowrepswitch has no effect\n"

,

9309

(*lp)->lpihaspolishing = success;

9313 "LP Solver <%s>: solution polishing not available -- SCIP parameter lp/solutionpolishing has no effect\n"

,

9317

(*lp)->lpihasrefactor = success;

9321 "LP Solver <%s>: refactorization interval not available -- SCIP parameter lp/refactorinterval has no effect\n"

,

9328 "LP Solver <%s>: condition number limit for the basis not available -- SCIP parameter lp/conditionlimit has no effect\n"

,

9335 "LP Solver <%s>: markowitz threshhold not available -- SCIP parameter lp/minmarkowitz has no effect\n"

,

9342 "LP Solver <%s>: number of threads settings not available -- SCIP parameter has no effect\n"

,

9346 if

( (*lp)->lpirandomseed != 0 )

9352 "LP Solver <%s>: random seed parameter not available -- SCIP parameter has no effect\n"

,

9361 SCIPerrorMessage

(

"The infinity value of the LP solver has to be at least as large as the one of SCIP.\n"

);

9379

assert(lp !=

NULL

);

9380

assert(*lp !=

NULL

);

9387 for

( i = 0; i < (*lp)->nlpirows; ++i )

9392 if

( (*lp)->lpi !=

NULL

)

9424

assert(stat !=

NULL

);

9456

assert(lp !=

NULL

);

9458

assert(col !=

NULL

);

9460

assert(col->

lppos

== -1);

9471 for

( i = 0; i < col->

len

; ++i )

9518

assert(lp !=

NULL

);

9519

assert(row !=

NULL

);

9521

assert(row->

lppos

== -1);

9531 for

( i = 0; i < row->

len

; ++i )

9588

assert(lp !=

NULL

);

9598 for

( c = 0; c < lp->

ncols

; ++c )

9611 for

( c = 0; c < lp->

ncols

; ++c )

9628#define checkLazyColArray(lp, set) 9641

assert(lp !=

NULL

);

9644

assert(0 <= newncols);

9645

assert(newncols <= lp->ncols);

9647 if

( newncols < lp->ncols )

9651 for

( c = lp->

ncols

-1; c >= newncols; --c )

9653

col = lp->

cols

[c];

9654

assert(col !=

NULL

);

9659

assert(col->

lppos

== c);

9676

assert(lp->

ncols

== newncols);

9681 while

( c < lp->nlazycols )

9716

assert(lp !=

NULL

);

9717

assert(0 <= newnrows && newnrows <= lp->nrows);

9720 if

( newnrows < lp->nrows )

9722 for

(

r

= lp->

nrows

-1;

r

>= newnrows; --

r

)

9724

row = lp->

rows

[

r

];

9725

assert(row !=

NULL

);

9727

assert(row->

lppos

==

r

);

9756

assert(lp->

nrows

== newnrows);

9778

assert(lp !=

NULL

);

9793

assert(lp !=

NULL

);

9807

assert(lp !=

NULL

);

9820

assert(lp !=

NULL

);

9824

assert(basisind !=

NULL

);

9838

assert(lp !=

NULL

);

9858

assert(lp !=

NULL

);

9862

assert(0 <=

r

&& r < lp->nrows);

9863

assert(coef !=

NULL

);

9884

assert(lp !=

NULL

);

9888

assert(0 <= c && c < lp->nrows);

9889

assert(coef !=

NULL

);

9907

assert(lp !=

NULL

);

9911

assert(0 <=

r

&& r < lp->nrows);

9912

assert(coef !=

NULL

);

9931

assert(lp !=

NULL

);

9935

assert(0 <= c && c < lp->ncols);

9936

assert(coef !=

NULL

);

9963

assert(lp !=

NULL

);

9964

assert(prob !=

NULL

);

9965

assert(weights !=

NULL

);

9966

assert(sumcoef !=

NULL

);

9967

assert(sumlhs !=

NULL

);

9968

assert(sumrhs !=

NULL

);

9976

lhsinfinite =

FALSE

;

9977

rhsinfinite =

FALSE

;

9978 for

(

r

= 0;

r

< lp->

nrows

; ++

r

)

9982

row = lp->

rows

[

r

];

9983

assert(row !=

NULL

);

9989 for

( i = 0; i < row->

len

; ++i )

9997

assert(0 <= idx && idx < prob->nvars);

10002 if

( weights[

r

] > 0.0 )

10005 if

( !lhsinfinite )

10006

(*sumlhs) += weights[

r

] * (row->

lhs

- row->

constant

);

10008 if

( !rhsinfinite )

10009

(*sumrhs) += weights[

r

] * (row->

rhs

- row->

constant

);

10014 if

( !lhsinfinite )

10015

(*sumlhs) += weights[

r

] * (row->

rhs

- row->

constant

);

10017 if

( !rhsinfinite )

10018

(*sumrhs) += weights[

r

] * (row->

lhs

- row->

constant

);

10038

assert(lp !=

NULL

);

10041

assert(blkmem !=

NULL

);

10042

assert(lpistate !=

NULL

);

10069

assert(lp !=

NULL

);

10070

assert(blkmem !=

NULL

);

10080 if

( lpistate ==

NULL

)

10105

assert(lp !=

NULL

);

10107 if

( *lpistate !=

NULL

)

10121

assert(lp !=

NULL

);

10138

assert(lp !=

NULL

);

10141

assert(blkmem !=

NULL

);

10142

assert(lpinorms !=

NULL

);

10162

assert(lp !=

NULL

);

10163

assert(blkmem !=

NULL

);

10167 if

( lpinorms !=

NULL

)

10182

assert(lp !=

NULL

);

10194

assert(lp !=

NULL

);

10207

assert(lp !=

NULL

);

10249

assert(lp !=

NULL

);

10261

assert(lp !=

NULL

);

10262

assert(newfeastol > 0.0);

10267 if

( newfeastol < lp->feastol )

10285

assert(lp !=

NULL

);

10304 return "primal simplex"

;

10306 return "dual simplex"

;

10310 return "barrier/crossover"

;

10334

assert(lp !=

NULL

);

10337

assert(stat !=

NULL

);

10338

assert(lperror !=

NULL

);

10345#ifdef SCIP_MORE_DEBUG 10351 SCIPsetDebugMsg

(

set

,

"wrote LP to file <%s> (primal simplex, objlim=%.15g, feastol=%.15g/%.15g, fromscratch=%d, fastmip=%d, scaling=%d, presolving=%d)\n"

,

10415 if

( iterations > 0 )

10425 SCIPstatAdd

(stat,

set

, nprimalresolvelpiterations, iterations);

10460 if

( keepsol && !(*lperror) )

10492

assert(lp !=

NULL

);

10495

assert(stat !=

NULL

);

10496

assert(lperror !=

NULL

);

10503#ifdef SCIP_MORE_DEBUG 10509 SCIPsetDebugMsg

(

set

,

"wrote LP to file <%s> (dual simplex, objlim=%.15g, feastol=%.15g/%.15g, fromscratch=%d, fastmip=%d, scaling=%d, presolving=%d)\n"

,

10573 if

( iterations > 0 )

10618 if

( keepsol && !(*lperror) )

10680 int

totalIterations;

10685

assert(lp !=

NULL

);

10688

assert(stat !=

NULL

);

10689

assert(lperror !=

NULL

);

10724

totalIterations = iterations;

10742 if

( iterations > 0 )

10816

chooseBasic =

set

->lp_lexdualbasic;

10862 for

( c = 0; c < lp->

nlpicols

; ++c )

10869

fixedc[c] =

FALSE

;

10875

indallrow[

r

] =

r

;

10877

fixedr[

r

] =

TRUE

;

10882#ifdef DEBUG_LEXDUAL 10886 if

( !chooseBasic )

10888

assert(primsol ==

NULL

);

10891

assert(primsol !=

NULL

);

10895 for

( j = 0; j < lp->

nlpicols

; ++j )

10928 if

( !chooseBasic )

10931

assert(primsol ==

NULL

);

10955

assert(primsol ==

NULL

);

10966 for

( c = 0; c < lp->

nlpicols

; ++c )

10974 if

( pos == -1 && c > oldpos )

10987 if

( pos == -1 && c > oldpos )

10992

newlb[cntcol] = oldlb[c];

10993

newub[cntcol] = oldlb[c];

10994

indcol[cntcol++] = c;

10999 if

( !chooseBasic )

11009

newlb[cntcol] = oldlb[c];

11010

newub[cntcol] = oldlb[c];

11016

newlb[cntcol] = oldub[c];

11017

newub[cntcol] = oldub[c];

11022

newlb[cntcol] = 0.0;

11023

newub[cntcol] = 0.0;

11026

indcol[cntcol++] = c;

11037 if

( !fixedr[

r

] )

11050

newlhs[cntrow] = oldlhs[

r

];

11051

newrhs[cntrow] = oldlhs[

r

];

11056

newlhs[cntrow] = oldrhs[

r

];

11057

newrhs[cntrow] = oldrhs[

r

];

11059

indrow[cntrow++] =

r

;

11060

fixedr[

r

] =

TRUE

;

11066 if

( nDualDeg > 0 && pos >= 0 )

11068

assert(0 <= pos && pos < lp->nlpicols && pos > oldpos);

11100

lexIterations += iterations;

11102#ifdef DEBUG_LEXDUAL 11103 if

( iterations > 0 )

11107 if

( !chooseBasic )

11109

assert(primsol ==

NULL

);

11112

assert(primsol !=

NULL

);

11115 for

( j = 0; j < lp->

nlpicols

; ++j )

11123 char

cstart =

'['

;

11157 if

( !chooseBasic )

11160

assert(primsol ==

NULL

);

11166 if

( iterations > 0 )

11171 while

( pos >= 0 && nDualDeg > 0 && (

set

->lp_lexdualmaxrounds == -1 || rounds < set->lp_lexdualmaxrounds) );

11197

lexIterations += iterations;

11205 if

( lexIterations > 0 )

11211 SCIPstatAdd

(stat,

set

, nlexdualresolvelpiterations, lexIterations);

11216

totalIterations += lexIterations;

11263 if

( keepsol && !(*lperror) )

11291

assert(lp !=

NULL

);

11294

assert(stat !=

NULL

);

11295

assert(lperror !=

NULL

);

11303#ifdef SCIP_MORE_DEBUG 11309 SCIPsetDebugMsg

(

set

,

"wrote LP to file <%s> (barrier, objlim=%.15g, feastol=%.15g/%.15g, convtol=%.15g, fromscratch=%d, fastmip=%d, scaling=%d, presolving=%d)\n"

,

11362 if

( iterations > 0 )

11397 if

( keepsol && !(*lperror) )

11430

assert(lp !=

NULL

);

11432

assert(lperror !=

NULL

);

11436 if

(

set

->istimelimitfinite )

11440 if

( lptimelimit > 0.0 )

11443 if

( lptimelimit <= 0.0 || !success )

11445 SCIPsetDebugMsg

(

set

,

"time limit of %f seconds could not be set\n"

, lptimelimit);

11446

*lperror = ((lptimelimit > 0.0) ?

TRUE

:

FALSE

);

11447

*timelimit =

TRUE

;

11461 if

(

set

->lp_lexdualalgo && (!

set

->lp_lexdualrootonly || stat->

maxdepth

== 0) && (!

set

->lp_lexdualstalling || lp->

installing

) )

11498#define MAXNUMTROUBLELPMSGS 10 11512 const char

* formatstr,

11535 if

( verblevel >

set

->disp_verblevel )

11545

va_start(ap, formatstr);

11552 SCIPmessagePrintInfo

(messagehdlr,

" -- further messages will be suppressed (use display/verblevel=5 to see all)"

);

11569

assert(lp !=

NULL

);

11577 if

( !

set

->lp_checkdualfeas )

11579 if

( !

set

->lp_checkprimfeas )

11586#define FEASTOLTIGHTFAC 0.001 11616

assert(lp !=

NULL

);

11619

assert(stat !=

NULL

);

11620

assert(lperror !=

NULL

);

11621

assert(timelimit !=

NULL

);

11632 SCIPerrorMessage

(

"cannot solve LP when loose variable with infinite best bound is present\n"

);

11640

itlimishard = (itlim == harditlim);

11646

usepolishing =

TRUE

;

11653

usepolishing =

FALSE

;

11695 if

( !

set

->lp_checkstability )

11722 if

( !

set

->lp_checkstability )

11742 lpalgoName

(lpalgo), (scaling == 0) ?

"with"

:

"without"

);

11749 if

( !

set

->lp_checkstability )

11772 lpalgoName

(lpalgo), !

set

->lp_presolving ?

"with"

:

"without"

);

11779 if

( !

set

->lp_checkstability )

11796 if

( ((simplex && (!tightprimfeastol || !tightdualfeastol)) || (!tightprimfeastol && !tightdualfeastol)) &&

11800 if

( !tightprimfeastol )

11806 if

( !tightdualfeastol )

11812 if

( !simplex && !tightprimfeastol && !tightdualfeastol )

11818 if

( success || success2 || success3 )

11828 if

( !

set

->lp_checkstability )

11837 if

( !tightprimfeastol )

11841 if

( !tightdualfeastol )

11845 if

( !simplex && !tightprimfeastol && !tightdualfeastol )

11857 if

( !fromscratch && simplex )

11869 if

( !

set

->lp_checkstability )

11890 if

( !

set

->lp_checkstability )

11903 lpalgoName

(lpalgo), (scaling == 0) ?

"with"

:

"without"

);

11910 if

( !

set

->lp_checkstability )

11928 lpalgoName

(lpalgo), !

set

->lp_presolving ?

"with"

:

"without"

);

11935 if

( !

set

->lp_checkstability )

11949 if

( !tightprimfeastol || !tightdualfeastol )

11952 if

( !tightprimfeastol )

11958 if

( !tightdualfeastol )

11964 if

( success || success2 )

11974 if

( !

set

->lp_checkstability )

11983 if

( !tightprimfeastol )

11987 if

( !tightdualfeastol )

12011

assert(lp !=

NULL

);

12062

assert(lp !=

NULL

);

12065

assert(stat !=

NULL

);

12066

assert(lperror !=

NULL

);

12070

solvedprimal =

FALSE

;

12071

solveddual =

FALSE

;

12072

timelimit =

FALSE

;

12075

itlim = ( resolve ? resolveitlim : harditlim );

12079 SCIP_CALL

(

lpSolveStable

(lp,

set

, messagehdlr, stat, prob, lpalgo, itlim, harditlim, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch,

12080

scaling, keepsol, &timelimit, lperror) );

12216 SCIPsetDebugMsg

(

set

,

"solving LP with %s returned solstat=%d (internal status: %d, primalfeasible=%u, dualfeasible=%u)\n"

,

12249

assert(lp !=

NULL

);

12251

assert(lperror !=

NULL

);

12259

algo = resolve ?

set

->lp_resolvealgorithm :

set

->lp_initalgorithm;

12269

needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12275

needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12282

needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12288

needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12294

needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12300

needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12304 SCIPerrorMessage

(

"invalid parameter setting <%c> for LP algorithm\n"

, algo);

12307

assert(!(*lperror) || !lp->

solved

);

12325 for

( c = 0; c < lp->

nlazycols

; ++c )

12335#define checkLazyBounds(lp, set) 12358 SCIPsetDebugMsg

(

set

,

"mark all lazy columns as changed in order to reload bounds (diving=%u, applied=%u)\n"

,

12361 for

( c = 0; c < lp->

nlazycols

; ++c )

12411 if

( (

set

->lp_resolveiterfac == -1) || stat->

nlps

- stat->

nrootlps

< 5 )

12417 return

(

int

)

MIN

(itlim,

MAX

(

set

->lp_resolveitermin, \

12448

assert(lp !=

NULL

);

12449

assert(prob !=

NULL

);

12451

assert(lperror !=

NULL

);

12462 SCIPsetDebugMsg

(

set

,

"solving LP: %d rows, %d cols, primalfeasible=%u, dualfeasible=%u, solved=%u, diving=%u, probing=%u, cutoffbnd=%g\n"

,

12466

needprimalray =

TRUE

;

12468

|| (

set

->conf_enable &&

set

->conf_useinflp !=

'o'

));

12471

harditlim = (int)

MIN

(itlim, INT_MAX);

12472

resolveitlim = ( limitresolveiters ?

lpGetResolveItlim

(

set

, stat, harditlim) : harditlim );

12473

assert(harditlim == -1 || (resolveitlim <= harditlim));

12512

tightprimfeastol =

FALSE

;

12513

tightdualfeastol =

FALSE

;

12514

fromscratch =

FALSE

;

12515

primalfeasible =

FALSE

;

12516

dualfeasible =

FALSE

;

12517

wasfromscratch = (stat->

nlps

== 0);

12518

scaling =

set

->lp_scaling;

12522

oldnlps = stat->

nlps

;

12523 SCIP_CALL

(

lpFlushAndSolve

(lp, blkmem,

set

, messagehdlr, stat, prob, eventqueue, resolveitlim, harditlim, needprimalray,

12524

needdualray, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12526

assert(!(*lperror) || !lp->

solved

);

12540 if

(

set

->lp_checkprimfeas )

12542

primalfeaspointer = &primalfeasible;

12548

primalfeasible =

TRUE

;

12549

primalfeaspointer =

NULL

;

12552 if

(

set

->lp_checkdualfeas )

12554

dualfeaspointer = &dualfeasible;

12560

dualfeasible =

TRUE

;

12561

dualfeaspointer =

NULL

;

12570 if

( primalfeasible && dualfeasible && aging && !lp->

diving

&& stat->

nlps

> oldnlps )

12574 if

( stat->

nlps

% ((

set

->lp_rowagelimit+1)/2 + 1) == 0 )

12587 if

( !primalfeasible || !dualfeasible )

12591 if

( (fastmip > 0) && simplex )

12596

stat->

nnodes

, stat->

nlps

, primalfeasible, dualfeasible);

12600 else if

( (!primalfeasible && !tightprimfeastol) || (!dualfeasible && !tightdualfeastol) )

12607

stat->

nnodes

, stat->

nlps

, primalfeasible, dualfeasible);

12608

tightprimfeastol = tightprimfeastol || !primalfeasible;

12609

tightdualfeastol = tightdualfeastol || !dualfeasible;

12612 else if

( !fromscratch && !wasfromscratch && simplex )

12617

stat->

nnodes

, stat->

nlps

, primalfeasible, dualfeasible);

12618

fromscratch =

TRUE

;

12629 SCIPsetDebugMsg

(

set

,

" -> LP objective value: %g + %g = %g (solstat=%d, cutoff=%g)\n"

,

12651

farkasvalid =

FALSE

;

12656

farkasvalid =

TRUE

;

12659 if

( !farkasvalid && !(*lperror) )

12663 if

( (fastmip > 0) && simplex )

12674 else if

( !tightdualfeastol )

12682

tightdualfeastol =

TRUE

;

12685 else if

( !fromscratch && simplex )

12693

fromscratch =

TRUE

;

12711 if

(

set

->lp_checkprimfeas )

12723

primalfeasible =

TRUE

;

12724

rayfeasible =

TRUE

;

12731 SCIPsetDebugMsg

(

set

,

" -> LP has unbounded primal ray (primalfeas=%u, rayfeas=%u)\n"

,

12732

primalfeasible, rayfeasible);

12734 if

( !primalfeasible || !rayfeasible )

12738 if

( (fastmip > 0) && simplex )

12743

stat->

nnodes

, stat->

nlps

, primalfeasible, rayfeasible);

12747 else if

( !tightprimfeastol )

12754

stat->

nnodes

, stat->

nlps

, primalfeasible, rayfeasible);

12755

tightprimfeastol =

TRUE

;

12758 else if

( !fromscratch && simplex )

12763

stat->

nnodes

, stat->

nlps

, primalfeasible, rayfeasible);

12764

fromscratch =

TRUE

;

12767 else if

( scaling > 0 )

12772

stat->

nnodes

, stat->

nlps

, primalfeasible, rayfeasible);

12806

assert(lpi !=

NULL

);

12818 char

tmppricingchar;

12824

fromscratch =

FALSE

;

12836 FALSE

,

FALSE

,

TRUE

, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12849 SCIPsetDebugMsg

(

set

,

" ---> new objval = %f (solstat: %d, 1 add. step)\n"

, objval, solstat);

12858 if

( !(*lperror) && (fastmip > 0) && simplex )

12862 FALSE

,

FALSE

,

TRUE

, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, scaling, keepsol, lperror) );

12870 SCIPsetDebugMsg

(

set

,

" ---> new objval = %f (solstat: %d, without fastmip)\n"

, objval, solstat);

12877 SCIPsetDebugMsg

(

set

,

"unresolved error while resolving LP in order to exceed the objlimit\n"

);

12893 if

(

set

->lp_checkprimfeas )

12895

primalfeaspointer = &primalfeasible;

12901

primalfeasible =

TRUE

;

12902

primalfeaspointer =

NULL

;

12905 if

(

set

->lp_checkdualfeas )

12907

dualfeaspointer = &dualfeasible;

12913

dualfeasible =

TRUE

;

12914

dualfeaspointer =

NULL

;

12939 if

( !primalfeasible || !dualfeasible

12949 SCIPsetDebugMsg

(

set

,

" -> LP objective value: %g + %g = %g (solstat=%d, cutoff=%g)\n"

,

12973

farkasvalid =

FALSE

;

12978

farkasvalid =

TRUE

;

12980 if

( !farkasvalid )

12984 if

( !tightprimfeastol )

12992

tightprimfeastol =

TRUE

;

12995 else if

( simplex )

13003

fromscratch =

TRUE

;

13021 if

(

set

->lp_checkprimfeas )

13033

primalfeasible =

TRUE

;

13034

rayfeasible =

TRUE

;

13043 if

( !primalfeasible || !rayfeasible )

13081 SCIPmessagePrintWarning

(messagehdlr,

"LP solver reached time limit, but SCIP time limit is not exceeded yet; " 13082 "you might consider switching the clock type of SCIP\n"

);

13099

assert(!(*lperror) || !lp->

solved

);

13108 SCIPsetDebugMsg

(

set

,

"resetting parameter SCIP_LPPARAM_FROMSCRATCH to FALSE %s\n"

, success ?

""

:

"failed"

);

13120

assert(lp !=

NULL

);

13138

assert(lp !=

NULL

);

13164

assert(lp !=

NULL

);

13177

assert(lp !=

NULL

);

13197

assert(lp !=

NULL

);

13208

assert(lp !=

NULL

);

13225

assert(lp !=

NULL

);

13227

assert(prob !=

NULL

);

13229

vars = prob->

vars

;

13230

nvars = prob->

nvars

;

13238 for

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

13289

assert(lp !=

NULL

);

13321

assert(lp !=

NULL

);

13356 int

pseudoobjvalinf;

13367

pseudoobjval -= oldbound * obj;

13368

assert(pseudoobjvalinf >= 0);

13372

pseudoobjval += newbound * obj;

13374

assert(pseudoobjvalinf >= 0);

13376 if

( pseudoobjvalinf > 0 ||

set

->nactivepricers > 0 )

13379 return

pseudoobjval;

13395 int

pseudoobjvalinf;

13421

assert(pseudoobjvalinf >= 0);

13433

assert(pseudoobjvalinf >= 0);

13435 if

( pseudoobjvalinf > 0 ||

set

->nactivepricers > 0 )

13438 return

pseudoobjval;

13469

(*deltaval) = lb * (newobj - oldobj);

13480

(*deltaval) = ub * newobj;

13489

(*deltaval) = -lb * oldobj;

13494

(*deltaval) = (ub * newobj) - (lb * oldobj);

13504

(*deltaval) = -lb * oldobj;

13514

(*deltaval) = ub * (newobj - oldobj);

13525

(*deltaval) = lb * newobj;

13534

(*deltaval) = -ub * oldobj;

13539

(*deltaval) = (lb * newobj) - (ub * oldobj);

13549

(*deltaval) = -ub * oldobj;

13560

(*deltaval) = ub * newobj;

13567

(*deltaval) = lb * newobj;

13587

assert(newlb != oldlb);

13594

*deltaval = -obj * oldlb;

13601

*deltaval = obj * newlb;

13606

*deltaval = obj * (newlb - oldlb);

13625

assert(newub != oldub);

13632

*deltaval = -obj * oldub;

13639

*deltaval = obj * newub;

13644

*deltaval = obj * (newub - oldub);

13661

assert(lp !=

NULL

);

13751

assert(lp !=

NULL

);

13760

assert(var !=

NULL

);

13764 SCIPerrorMessage

(

"LP was informed of an objective change of a non-active variable\n"

);

13774 if

( oldobj > 0.0 )

13786 else if

( oldobj < 0.0 )

13800 if

( newobj > 0.0 )

13812 else if

( newobj < 0.0 )

13854

assert(var !=

NULL

);

13856 if

(

set

->misc_exactsolve )

13858 if

( oldobj != newobj )

13908

assert(var !=

NULL

);

13935

assert(var !=

NULL

);

13937 if

(

set

->misc_exactsolve )

13976

assert(var !=

NULL

);

14003

assert(var !=

NULL

);

14005 if

(

set

->misc_exactsolve )

14041

assert(lp !=

NULL

);

14062

assert(lp !=

NULL

);

14090

assert(lp !=

NULL

);

14141

assert(lp !=

NULL

);

14200 if

(

set

->misc_exactsolve )

14224

assert(lp !=

NULL

);

14273

assert(lp !=

NULL

);

14324 if

(

set

->misc_exactsolve )

14341

assert(lp !=

NULL

);

14381

assert(lp !=

NULL

);

14385

assert(stat !=

NULL

);

14393 if

( primalfeasible ==

NULL

)

14394

stillprimalfeasible =

FALSE

;

14397

*primalfeasible =

TRUE

;

14398

stillprimalfeasible =

TRUE

;

14400 if

( dualfeasible ==

NULL

)

14401

stilldualfeasible =

FALSE

;

14404

*dualfeasible =

TRUE

;

14405

stilldualfeasible =

TRUE

;

14425#ifdef SCIP_USE_LPSOLVER_ACTIVITY 14447 for

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

14449

assert( 0 <= cstat[c] && cstat[c] < 4 );

14450

lpicols[c]->

primsol

= primsol[c];

14457

stillprimalfeasible =

FALSE

;

14458

stilldualfeasible =

FALSE

;

14462

lpicols[c]->

minprimsol

=

MIN

(lpicols[c]->minprimsol, primsol[c]);

14463

lpicols[c]->

maxprimsol

=

MAX

(lpicols[c]->maxprimsol, primsol[c]);

14464

lpicols[c]->

redcost

= redcost[c];

14465

lpicols[c]->

basisstatus

= (

unsigned

int) cstat[c];

14467 if

( stillprimalfeasible )

14469

stillprimalfeasible =

14472

primalbound += (lpicols[c]->

primsol

* lpicols[c]->

obj

);

14482 if

( stilldualfeasible )

14484

compslack =

MIN

((lpicols[c]->primsol - lpicols[c]->lb), 1.0) * lpicols[c]->

redcost

;

14487 if

( stilldualfeasible )

14489

compslack =

MIN

((lpicols[c]->ub - lpicols[c]->primsol), 1.0) * lpicols[c]->

redcost

;

14493 SCIPsetDebugMsg

(

set

,

" col <%s> [%.9g,%.9g]: primsol=%.9f, redcost=%.9f, pfeas=%u/%u(%u), dfeas=%d/%d(%u)\n"

,

14494 SCIPvarGetName

(lpicols[c]->var), lpicols[c]->lb, lpicols[c]->ub, lpicols[c]->primsol, lpicols[c]->redcost,

14497

primalfeasible !=

NULL

? stillprimalfeasible :

TRUE

,

14500

dualfeasible !=

NULL

? stilldualfeasible :

TRUE

);

14514 if

( stilldualfeasible

14517 if

( stilldualfeasible

14521 SCIPsetDebugMsg

(

set

,

" col <%s> [%.9g,%.9g]: primsol=%.9f, redcost=%.9f, pfeas=%u/%u(%u), dfeas=%d/%d(%u)\n"

,

14522 SCIPvarGetName

(lpicols[c]->var), lpicols[c]->lb, lpicols[c]->ub, lpicols[c]->primsol, lpicols[c]->redcost,

14525

primalfeasible !=

NULL

? stillprimalfeasible :

TRUE

,

14528

dualfeasible !=

NULL

? stilldualfeasible :

TRUE

);

14535 if

( stilldualfeasible )

14538

dualbound += (lpicols[c]->

redcost

* lpicols[c]->

lb

);

14540

dualbound += (lpicols[c]->redcost * lpicols[c]->ub);

14545 for

(

r

= 0;

r

< nlpirows; ++

r

)

14547

assert( 0 <= rstat[

r

] && rstat[

r

] < 4 );

14549#ifdef SCIP_USE_LPSOLVER_ACTIVITY 14553 if

( lpirows[

r

]->validactivitylp != stat->

lpcount

)

14558 if

( stillprimalfeasible )

14560

stillprimalfeasible =

14572 if

( stilldualfeasible )

14574

compslack =

MIN

((lpirows[

r

]->activity - lpirows[

r

]->lhs), 1.0) * lpirows[

r

]->

dualsol

;

14577 if

( stilldualfeasible )

14579

compslack =

MIN

((lpirows[

r

]->rhs - lpirows[

r

]->activity), 1.0) * lpirows[

r

]->

dualsol

;

14583 SCIPsetDebugMsg

(

set

,

" row <%s> [%.9g,%.9g]: activity=%.9f, dualsol=%.9f, pfeas=%u/%u(%u), dfeas=%d/%d(%u)\n"

,

14584

lpirows[

r

]->name, lpirows[

r

]->lhs, lpirows[

r

]->rhs, lpirows[

r

]->activity, lpirows[

r

]->dualsol,

14587

primalfeasible !=

NULL

? stillprimalfeasible :

TRUE

,

14590

dualfeasible !=

NULL

? stilldualfeasible :

TRUE

);

14598 if

( stilldualfeasible &&

14601 if

( stilldualfeasible &&

14605 SCIPsetDebugMsg

(

set

,

" row <%s> [%.9g,%.9g] + %.9g: activity=%.9f, dualsol=%.9f, pfeas=%u/%u(%u), dfeas=%d/%d(%u)\n"

,

14606

lpirows[

r

]->name, lpirows[

r

]->lhs, lpirows[

r

]->rhs, lpirows[

r

]->constant, lpirows[

r

]->activity, lpirows[

r

]->dualsol,

14609

primalfeasible !=

NULL

? stillprimalfeasible :

TRUE

,

14612

dualfeasible !=

NULL

? stilldualfeasible :

TRUE

);

14619 if

( stilldualfeasible )

14624

dualbound += (lpirows[

r

]->dualsol * (lpirows[

r

]->rhs - lpirows[

r

]->constant));

14653 if

( primalfeasible !=

NULL

)

14654

*primalfeasible = stillprimalfeasible;

14655 if

( dualfeasible !=

NULL

)

14656

*dualfeasible = stilldualfeasible;

14662#ifdef SCIP_USE_LPSOLVER_ACTIVITY 14694

assert(lp !=

NULL

);

14700

assert(stat !=

NULL

);

14703 if

( primalfeasible !=

NULL

)

14704

*primalfeasible =

TRUE

;

14705 if

( rayfeasible !=

NULL

)

14706

*rayfeasible =

TRUE

;

14716 SCIPerrorMessage

(

"LP solver has no primal ray to prove unboundedness.\n"

);

14738 for

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

14740

assert(lpicols[c] !=

NULL

);

14741

assert(lpicols[c]->var !=

NULL

);

14746 if

( rayfeasible !=

NULL

)

14748

*rayfeasible = *rayfeasible

14754

rayobjval += ray[c] * col->

obj

;

14764

primsol[c] = col->

lb

;

14766

primsol[c] = col->

ub

;

14770

primsol[c] =

MAX

(primsol[c], col->

lb

);

14771

primsol[c] =

MIN

(primsol[c], col->

ub

);

14777 for

(

r

= 0;

r

< nlpirows; ++

r

)

14782

row = lpirows[

r

];

14783

assert( row !=

NULL

);

14786 for

( c = 0; c < row->

nlpcols

; ++c )

14788

col = row->

cols

[c];

14790

assert( col !=

NULL

);

14791

assert( col->

lppos

>= 0 );

14792

assert( row->

linkpos

[c] >= 0 );

14795

act += row->

vals

[c] * primsol[col->

lppos

];

14800 for

( c = row->

nlpcols

; c < row->len; ++c )

14802

col = row->

cols

[c];

14803

assert( col !=

NULL

);

14805 if

( col->

lppos

>= 0 )

14806

act += row->

vals

[c] * primsol[col->

lppos

];

14817 if

(

r

< nlpirows )

14823 if

( primalfeasible !=

NULL

)

14825

assert( *primalfeasible );

14826 for

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

14828

assert( lpicols[c] !=

NULL

);

14829

assert( lpicols[c]->var !=

NULL

);

14836

*primalfeasible =

FALSE

;

14844 for

(

r

= 0;

r

< nlpirows; ++

r

)

14850

row = lpirows[

r

];

14851

assert( row !=

NULL

);

14855 for

( c = 0; c < row->

nlpcols

; ++c )

14857

col = row->

cols

[c];

14859

assert( col !=

NULL

);

14860

assert( col->

lppos

>= 0 );

14861

assert( row->

linkpos

[c] >= 0 );

14864

primact += row->

vals

[c] * primsol[col->

lppos

];

14865

rayact += row->

vals

[c] * ray[col->

lppos

];

14870 for

( c = row->

nlpcols

; c < row->len; ++c )

14872

col = row->

cols

[c];

14873

assert( col !=

NULL

);

14875 if

( col->

lppos

>= 0 )

14877

primact += row->

vals

[c] * primsol[col->

lppos

];

14878

rayact += row->

vals

[c] * ray[col->

lppos

];

14884 if

( primalfeasible !=

NULL

&& *primalfeasible )

14888

*primalfeasible =

FALSE

;

14892 if

( rayfeasible !=

NULL

&& *rayfeasible )

14896

*rayfeasible =

FALSE

;

14900

activity[

r

] = primact;

14903 if

( primalfeasible !=

NULL

&& !(*primalfeasible) )

14908 else if

( rayfeasible !=

NULL

&& !(*rayfeasible) )

14919 if

( rayfeasible !=

NULL

)

14920

*rayfeasible =

FALSE

;

14926

assert(rayobjval != 0.0);

14933 for

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

14938

rayscale =

MIN

(rayscale, (lpicols[c]->ub - primsol[c]) / ray[c]);

14943

rayscale =

MIN

(rayscale, 1.0 / ray[c]);

14949

rayscale =

MIN

(rayscale, (lpicols[c]->lb - primsol[c]) / ray[c]);

14954

rayscale =

MIN

(rayscale, -1.0 / ray[c]);

14962 SCIPsetDebugMsg

(

set

,

"unbounded LP solution: rayobjval=%f, rayscale=%f\n"

, rayobjval, rayscale);

14967 for

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

14970

lpicols[c]->

primsol

= primsol[c];

14974

primsolval = primsol[c] + rayscale * ray[c];

14982 for

(

r

= 0;

r

< nlpirows; ++

r

)

15012

assert(lp !=

NULL

);

15014

assert(ray !=

NULL

);

15039 for

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

15041

assert(lpicols[c] !=

NULL

);

15043

var = lpicols[c]->

var

;

15044

assert(var !=

NULL

);

15079

assert(lp !=

NULL

);

15084

assert(stat !=

NULL

);

15087 if

( valid !=

NULL

)

15095

farkascoefs =

NULL

;

15098

checkfarkas =

set

->lp_checkfarkas && valid !=

NULL

;

15119 for

(

r

= 0;

r

< nlpirows; ++

r

)

15128 if

( checkfarkas && dualfarkas[

r

] != 0.0 )

15130

assert(valid !=

NULL

);

15131

assert(farkascoefs !=

NULL

);

15141 SCIPsetDebugMsg

(

set

,

"farkas proof is invalid: row <%s>[lhs=%g,rhs=%g,c=%g] has multiplier %g\n"

,

15142 SCIProwGetName

(lpirows[

r

]), lpirows[

r

]->lhs, lpirows[

r

]->rhs, lpirows[

r

]->constant, dualfarkas[

r

]);

15156 for

( c = 0; c < lpirows[

r

]->

len

; c++ )

15163

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

15165

farkascoefs[pos] += dualfarkas[

r

] * lpirows[

r

]->

vals

[c];

15169 if

( dualfarkas[

r

] > 0.0 )

15173

farkaslhs += dualfarkas[

r

] * lpirows[

r

]->

lhs

;

15176 else if

( dualfarkas[

r

] < 0.0 )

15180

farkaslhs += dualfarkas[

r

] * lpirows[

r

]->

rhs

;

15183

maxactivity += dualfarkas[

r

] * lpirows[

r

]->

constant

;

15188 for

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

15197

assert(valid !=

NULL

);

15198

assert(farkascoefs !=

NULL

);

15206 if

( farkascoefs[c] > 0.0 )

15208

maxactivity += farkascoefs[c] * lpicols[c]->

ub

;

15212 SCIPsetDebugMsg

(

set

,

"farkas proof is invalid: col <%s>[lb=%g,ub=%g] has coefficient %g\n"

,

15221

maxactivity += farkascoefs[c] * lpicols[c]->

lb

;

15225 SCIPsetDebugMsg

(

set

,

"farkas proof is invalid: col <%s>[lb=%g,ub=%g] has coefficient %g\n"

,

15239

assert(valid !=

NULL

);

15241 SCIPsetDebugMsg

(

set

,

"farkas proof is invalid: maxactivity=%.12f, lhs=%.12f\n"

, maxactivity, farkaslhs);

15243 if

( forcedlpsolve &&

SCIPsetIsLT

(

set

, maxactivity, farkaslhs) )

15244 SCIPmessagePrintWarning

(

set

->scip->messagehdlr,

"Unreliable farkas proof forced valid, result might not be optimal.\n"

);

15265

assert(lp !=

NULL

);

15287

assert(lp !=

NULL

);

15292

assert(stat !=

NULL

);

15302 for

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

15304

assert(lpicols[c] == lp->

cols

[c]);

15305 if

( lpicols[c]->primsol == 0.0 )

15306

lpicols[c]->

age

++;

15308

lpicols[c]->

age

= 0;

15313 for

(

r

= 0;

r

< nlpirows; ++

r

)

15316

assert(lpirows[

r

] == lp->

rows

[

r

]);

15318 if

( lpirows[

r

]->dualsol == 0.0 )

15320

lpirows[

r

]->

age

++;

15325

lpirows[

r

]->

age

= 0;

15345

assert(lp !=

NULL

);

15349

assert(coldstat !=

NULL

);

15352

ncols = lp->

ncols

;

15358 for

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

15360

col = lp->

cols

[c];

15361

assert(col !=

NULL

);

15362

assert(col == lp->

lpicols

[c]);

15363

assert(coldstat[c] <= c);

15364

col->

lppos

= coldstat[c];

15365 if

( coldstat[c] == -1 )

15383 else if

( coldstat[c] < c )

15385

assert(lp->

cols

[coldstat[c]] ==

NULL

);

15387

lp->

cols

[coldstat[c]] = col;

15388

lp->

lpicols

[coldstat[c]] = col;

15389

lp->

cols

[coldstat[c]]->

lppos

= coldstat[c];

15390

lp->

cols

[coldstat[c]]->

lpipos

= coldstat[c];

15398 while

( c < lp->nlazycols )

15410 if

( lp->

ncols

< ncols )

15447

assert(lp !=

NULL

);

15451

assert(rowdstat !=

NULL

);

15453

nrows = lp->

nrows

;

15459 for

(

r

= 0;

r

< nrows; ++

r

)

15461

row = lp->

rows

[

r

];

15462

assert(row == lp->

lpirows

[

r

]);

15463

assert(rowdstat[

r

] <=

r

);

15464

assert(row !=

NULL

);

15465

row->

lppos

= rowdstat[

r

];

15466 if

( rowdstat[

r

] == -1 )

15495 else if

( rowdstat[

r

] <

r

)

15497

assert(lp->

rows

[rowdstat[

r

]] ==

NULL

);

15499

lp->

rows

[rowdstat[

r

]] = row;

15500

lp->

lpirows

[rowdstat[

r

]] = row;

15501

lp->

rows

[rowdstat[

r

]]->

lppos

= rowdstat[

r

];

15509 if

( lp->

nrows

< nrows )

15548

assert(lp !=

NULL

);

15554

assert(stat !=

NULL

);

15559

ncols = lp->

ncols

;

15571 for

( c = firstcol; c < ncols; ++c )

15573

assert(cols[c] == lpicols[c]);

15574

assert(cols[c]->lppos == c);

15575

assert(cols[c]->lpipos == c);

15576 if

( cols[c]->removable

15577

&& cols[c]->obsoletenode != stat->

nnodes 15578

&& cols[c]->

age

>

set

->lp_colagelimit

15582

assert(cols[c]->primsol == 0.0);

15586 SCIPsetDebugMsg

(

set

,

"removing obsolete col <%s>: primsol=%f, bounds=[%g,%g]\n"

,

15587 SCIPvarGetName

(cols[c]->var), cols[c]->primsol, cols[c]->lb, cols[c]->ub);

15591 SCIPsetDebugMsg

(

set

,

"removing %d/%d obsolete columns from LP\n"

, ndelcols, ncols);

15594 if

( ndelcols > 0 )

15598

assert(lp->

ncols

== ncols - ndelcols);

15627

assert(lp !=

NULL

);

15633

assert(stat !=

NULL

);

15638

nrows = lp->

nrows

;

15650 for

(

r

= firstrow;

r

< nrows; ++

r

)

15652

assert(rows[

r

] == lpirows[

r

]);

15653

assert(rows[

r

]->lppos ==

r

);

15654

assert(rows[

r

]->lpipos ==

r

);

15655 if

( rows[

r

]->removable

15656

&& rows[

r

]->obsoletenode != stat->

nnodes 15657

&& rows[

r

]->

age

>

set

->lp_rowagelimit

15663 SCIPsetDebugMsg

(

set

,

"removing obsolete row <%s>: activity=%f, sides=[%g,%g]\n"

,

15664

rows[

r

]->name, rows[

r

]->activity, rows[

r

]->lhs, rows[

r

]->rhs);

15668 SCIPsetDebugMsg

(

set

,

"removing %d/%d obsolete rows from LP\n"

, ndelrows, nrows);

15671 if

( ndelrows > 0 )

15675

assert(lp->

nrows

== nrows - ndelrows);

15693

assert(lp !=

NULL

);

15699 SCIPsetDebugMsg

(

set

,

"removing obsolete columns starting with %d/%d, obsolete rows starting with %d/%d\n"

,

15724

assert(lp !=

NULL

);

15732 if

( 0 < lp->

ncols

)

15736 if

( 0 < lp->

nrows

)

15760

assert(lp !=

NULL

);

15764

assert(stat !=

NULL

);

15766

assert(0 <= firstcol && firstcol < lp->ncols);

15771

ncols = lp->

ncols

;

15781 for

( c = firstcol; c < ncols; ++c )

15783

assert(cols[c] == lpicols[c]);

15784

assert(cols[c]->lppos == c);

15785

assert(cols[c]->lpipos == c);

15786 if

( lpicols[c]->removable

15788

&& lpicols[c]->primsol == 0.0

15796 SCIPsetDebugMsg

(

set

,

"removing %d/%d unused columns from LP\n"

, ndelcols, ncols);

15799 if

( ndelcols > 0 )

15803

assert(lp->

ncols

== ncols - ndelcols);

15832

assert(lp !=

NULL

);

15837

assert(stat !=

NULL

);

15839

assert(0 <= firstrow && firstrow < lp->nrows);

15847

nrows = lp->

nrows

;

15856 for

(

r

= firstrow;

r

< nrows; ++

r

)

15858

assert(rows[

r

] == lpirows[

r

]);

15859

assert(rows[

r

]->lppos ==

r

);

15860

assert(rows[

r

]->lpipos ==

r

);

15871 if

( ndelrows > 0 )

15875

assert(lp->

nrows

== nrows - ndelrows);

15897

assert(lp !=

NULL

);

15904

cleanupcols = (root ?

set

->lp_cleanupcolsroot :

set

->lp_cleanupcols);

15905

cleanuprows = (root ?

set

->lp_cleanuprowsroot :

set

->lp_cleanuprows);

15907 SCIPsetDebugMsg

(

set

,

"removing unused columns starting with %d/%d (%u), unused rows starting with %d/%d (%u), LP algo: %d, basic sol: %u\n"

,

15936

assert(lp !=

NULL

);

15943

cleanupcols = (root ?

set

->lp_cleanupcolsroot :

set

->lp_cleanupcols);

15944

cleanuprows = (root ?

set

->lp_cleanuprowsroot :

set

->lp_cleanuprows);

15946 SCIPsetDebugMsg

(

set

,

"removing all unused columns (%u) and rows (%u), LP algo: %d, basic sol: %u\n"

,

15949 if

( cleanupcols && 0 < lp->

ncols

)

15953 if

( cleanuprows && 0 < lp->

nrows

)

15980

assert(lp !=

NULL

);

15985

assert(stat !=

NULL

);

15995

nrows = lp->

nrows

;

16006

assert(rows[

r

] == lpirows[

r

]);

16007

assert(rows[

r

]->lppos ==

r

);

16008

assert(rows[

r

]->lpipos ==

r

);

16012 SCIPsetDebugMsg

(

set

,

"basic row <%s> is redundant: sides=[%g,%g], act=[%g,%g]\n"

,

16020 SCIPsetDebugMsg

(

set

,

"removing %d/%d redundant basic rows from LP\n"

, ndelrows, nrows);

16023 if

( ndelrows > 0 )

16027

assert(lp->

nrows

== nrows - ndelrows);

16046

assert(lp !=

NULL

);

16054

assert(blkmem !=

NULL

);

16058 SCIPsetDebugMsg

(

set

,

"diving started (LP flushed: %u, LP solved: %u, solstat: %d)\n"

,

16062 for

( c = 0; c < lp->

ncols

; ++c )

16084 if

( !

set

->lp_resolverestore && lp->

solved

)

16115 for

( c = 0; c < lp->

ncols

; ++c )

16119 for

(

r

= 0;

r

< lp->

nrows

; ++

r

)

16158

assert(lp !=

NULL

);

16160

assert(blkmem !=

NULL

);

16161

assert(nvars == 0 || vars !=

NULL

);

16166 for

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

16169

assert(var !=

NULL

);

16234 SCIP_CALL

(

SCIPlpSolveAndEval

(lp,

set

, messagehdlr, blkmem, stat, eventqueue, eventfilter, prob, -1LL,

FALSE

,

FALSE

,

FALSE

,

FALSE

, &lperror) );

16246 "LP was not resolved to a sufficient status after diving\n"

);

16287 for

( c = 0; c < lp->

ncols

; ++c )

16291 for

(

r

= 0;

r

< lp->

nrows

; ++

r

)

16305 for

( c = 0; c < lp->

ncols

; ++c )

16321#define DIVESTACKGROWFACT 1.5 16330

assert(lp !=

NULL

);

16331

assert(row !=

NULL

);

16352

assert(lp !=

NULL

);

16367

assert(lp !=

NULL

);

16382

assert(lp !=

NULL

);

16395

assert(lp !=

NULL

);

16436

assert(lp !=

NULL

);

16446 for

( j = 0; j < lp->

nrows

; ++j )

16448

row = lp->

rows

[j];

16449

assert(row !=

NULL

);

16475 for

( j = 0; j < lp->

ncols

; ++j )

16477

col = lp->

cols

[j];

16478

assert(col !=

NULL

);

16483

c = usefarkas ? 0.0 : col->

obj

;

16486 for

( i = 0; i < col->

nlprows

; ++i )

16490

assert(col->

linkpos

[i] >= 0);

16497 for

( i = col->

nlprows

; i < col->len; ++i )

16503

assert(col->

linkpos

[i] >= 0);

16546

assert(proved !=

NULL

);

16550

*proved = (

bound

> 0.0);

16552 SCIPsetDebugMsg

(

set

,

"proved Farkas value of LP: %g -> infeasibility %sproved\n"

,

bound

, *proved ?

""

:

"not "

);

16565

assert(lp !=

NULL

);

16567

assert(fname !=

NULL

);

16579 const char

* fname,

16595

assert(lp !=

NULL

);

16597

assert(fname !=

NULL

);

16600

file = fopen(fname,

"w"

);

16601 if

( file ==

NULL

)

16609 if

( genericnames )

16610 SCIPmessageFPrintInfo

(messagehdlr, file,

"\\ Original Variable and Constraint Names have been replaced by generic names.\n"

);

16613 SCIPmessageFPrintInfo

(messagehdlr, file,

"\\ Warning: Variable and Constraint Names should not contain special characters like '+', '=' etc.\n"

);

16614 SCIPmessageFPrintInfo

(messagehdlr, file,

"\\ If this is the case, the model may be corrupted!\n"

);

16617 if

( origobj && objoffset != 0.0 )

16619 SCIPmessageFPrintInfo

(messagehdlr, file,

"\\ An artificial variable 'objoffset' has been added and fixed to 1.\n"

);

16620 SCIPmessageFPrintInfo

(messagehdlr, file,

"\\ Switching this variable to 0 will disable the offset in the objective.\n\n"

);

16633 for

( i = 0; i < lp->

ncols

; ++i )

16635 if

( lp->

cols

[i]->

obj

!= 0.0 )

16637

coeff = lp->

cols

[i]->

obj

;

16644 if

( genericnames )

16655 if

( origobj && objoffset != 0.0 )

16660 for

( i = 0; i < lp->

nrows

; i++ )

16682 if

( genericnames )

16693 if

( strlen(rowname) > 0 )

16698 SCIPmessageFPrintInfo

(messagehdlr, file,

"are not in a valid range. The following two constraints may be corrupted!\n"

);

16706

assert(type ==

'B'

);

16714 if

( genericnames )

16719 if

( (j+1) % 10 == 0 )

16751 for

( i = 0; i < lp->

nrows

; i++ )

16773 if

( genericnames )

16784 if

( strlen(rowname) > 0 )

16789 SCIPmessageFPrintInfo

(messagehdlr, file,

"are not in a valid range. The following two constraints may be corrupted!\n"

);

16797

assert(type ==

'B'

);

16805 if

( genericnames )

16810 if

( (j+1) % 10 == 0 )

16841 for

( i = 0; i < lp->

ncols

; ++i )

16850 if

( genericnames )

16861 if

( origobj && objoffset != 0.0 )

16867 for

( i = 0; i < lp->

ncols

; ++i )

16872 if

( genericnames )

16899#undef SCIPcolGetObj 16902#undef SCIPcolGetBestBound 16903#undef SCIPcolGetPrimsol 16904#undef SCIPcolGetMinPrimsol 16905#undef SCIPcolGetMaxPrimsol 16906#undef SCIPcolGetBasisStatus 16907#undef SCIPcolGetVar 16908#undef SCIPcolGetIndex 16909#undef SCIPcolGetVarProbindex 16910#undef SCIPcolIsIntegral 16911#undef SCIPcolIsRemovable 16912#undef SCIPcolGetLPPos 16913#undef SCIPcolGetLPDepth 16914#undef SCIPcolIsInLP 16915#undef SCIPcolGetNNonz 16916#undef SCIPcolGetNLPNonz 16917#undef SCIPcolGetRows 16918#undef SCIPcolGetVals 16919#undef SCIPcolGetStrongbranchNode 16920#undef SCIPcolGetNStrongbranchs 16921#undef SCIPcolGetAge 16922#undef SCIPboundtypeOpposite 16923#undef SCIProwGetNNonz 16924#undef SCIProwGetNLPNonz 16925#undef SCIProwGetCols 16926#undef SCIProwGetVals 16927#undef SCIProwGetConstant 16928#undef SCIProwGetNorm 16929#undef SCIProwGetSumNorm 16930#undef SCIProwGetLhs 16931#undef SCIProwGetRhs 16932#undef SCIProwGetDualsol 16933#undef SCIProwGetDualfarkas 16934#undef SCIProwGetBasisStatus 16935#undef SCIProwGetName 16936#undef SCIProwGetIndex 16937#undef SCIProwGetAge 16938#undef SCIProwGetRank 16939#undef SCIProwIsIntegral 16940#undef SCIProwIsLocal 16941#undef SCIProwIsModifiable 16942#undef SCIProwIsRemovable 16943#undef SCIProwGetOrigintype 16944#undef SCIProwGetOriginCons 16945#undef SCIProwGetOriginConshdlr 16946#undef SCIProwGetOriginSepa 16947#undef SCIProwIsInGlobalCutpool 16948#undef SCIProwGetLPPos 16949#undef SCIProwGetLPDepth 16950#undef SCIProwIsInLP 16951#undef SCIProwGetActiveLPCount 16952#undef SCIProwGetNLPsAfterCreation 16953#undef SCIProwChgRank 16954#undef SCIPlpGetCols 16955#undef SCIPlpGetNCols 16956#undef SCIPlpGetRows 16957#undef SCIPlpGetNRows 16958#undef SCIPlpGetNewcols 16959#undef SCIPlpGetNNewcols 16960#undef SCIPlpGetNewrows 16961#undef SCIPlpGetNNewrows 16962#undef SCIPlpGetObjNorm 16963#undef SCIPlpGetRootObjval 16964#undef SCIPlpGetRootColumnObjval 16965#undef SCIPlpGetRootLooseObjval 16967#undef SCIPlpSetIsRelax 16968#undef SCIPlpIsRelax 16969#undef SCIPlpIsSolved 16970#undef SCIPlpIsSolBasic 16972#undef SCIPlpDivingObjChanged 16973#undef SCIPlpMarkDivingObjChanged 16974#undef SCIPlpUnmarkDivingObjChanged 16975#undef SCIPlpDivingRowsChanged 16976#undef SCIPlpIsFeasEQ 16977#undef SCIPlpIsFeasLT 16978#undef SCIPlpIsFeasLE 16979#undef SCIPlpIsFeasGT 16980#undef SCIPlpIsFeasGE 16981#undef SCIPlpIsFeasZero 16982#undef SCIPlpIsFeasPositive 16983#undef SCIPlpIsFeasNegative 16990

assert(col !=

NULL

);

17000

assert(col !=

NULL

);

17010

assert(col !=

NULL

);

17020

assert(col !=

NULL

);

17022 if

( col->

obj

>= 0.0 )

17033

assert(col !=

NULL

);

17035 if

( col->

lppos

>= 0 )

17046

assert(col !=

NULL

);

17056

assert(col !=

NULL

);

17068

assert(col !=

NULL

);

17079

assert(col !=

NULL

);

17089

assert(col !=

NULL

);

17091 return

col->

index

;

17099

assert(col !=

NULL

);

17109

assert(col !=

NULL

);

17120

assert(col !=

NULL

);

17130

assert(col !=

NULL

);

17133 return

col->

lppos

;

17141

assert(col !=

NULL

);

17152

assert(col !=

NULL

);

17155 return

(col->

lppos

>= 0);

17163

assert(col !=

NULL

);

17177

assert(col !=

NULL

);

17188

assert(col !=

NULL

);

17190 return

col->

rows

;

17198

assert(col !=

NULL

);

17200 return

col->

vals

;

17210

assert(col !=

NULL

);

17220

assert(col !=

NULL

);

17230

assert(col !=

NULL

);

17250

assert(row !=

NULL

);

17264

assert(row !=

NULL

);

17275

assert(row !=

NULL

);

17277 return

row->

cols

;

17285

assert(row !=

NULL

);

17287 return

row->

vals

;

17295

assert(row !=

NULL

);

17305

assert(row !=

NULL

);

17317

assert(row !=

NULL

);

17329

assert(row !=

NULL

);

17339

assert(row !=

NULL

);

17349

assert(row !=

NULL

);

17351 if

( row->

lppos

>= 0 )

17362

assert(row !=

NULL

);

17364 if

( row->

lppos

>= 0 )

17377

assert(row !=

NULL

);

17388

assert(row !=

NULL

);

17390 return

row->

name

;

17398

assert(row !=

NULL

);

17400 return

row->

index

;

17408

assert(row !=

NULL

);

17418

assert(row !=

NULL

);

17420 return

row->

rank

;

17428

assert(row !=

NULL

);

17438

assert(row !=

NULL

);

17440 return

row->

local

;

17448

assert(row !=

NULL

);

17458

assert(row !=

NULL

);

17468

assert( row !=

NULL

);

17478

assert( row !=

NULL

);

17493

assert( row !=

NULL

);

17513

assert( row !=

NULL

);

17528

assert(row !=

NULL

);

17538

assert(row !=

NULL

);

17541 return

row->

lppos

;

17549

assert(row !=

NULL

);

17560

assert(row !=

NULL

);

17563 return

(row->

lppos

>= 0);

17572

assert(row !=

NULL

);

17582

assert(row !=

NULL

);

17592

assert(row !=

NULL

);

17602

assert(lp !=

NULL

);

17612

assert(lp !=

NULL

);

17614 return

lp->

ncols

;

17628

assert(lp !=

NULL

);

17629

assert(

eps

> 0.0);

17631

lpcols = lp->

cols

;

17632

nlpcols = lp->

ncols

;

17635 for

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

17637 if

( lpcols[c]->ub - lpcols[c]->lb >

eps

)

17641 return

nunfixedcols;

17649

assert(lp !=

NULL

);

17659

assert(lp !=

NULL

);

17661 return

lp->

nrows

;

17669

assert(lp !=

NULL

);

17680

assert(lp !=

NULL

);

17691

assert(lp !=

NULL

);

17702

assert(lp !=

NULL

);

17720

assert(cols !=

NULL

|| lp->

ncols

== 0);

17724 for

( c = lp->

ncols

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

17744

assert(lp !=

NULL

);

17757

assert(lp !=

NULL

);

17767

assert(lp !=

NULL

);

17777

assert(lp !=

NULL

);

17789

assert(lp !=

NULL

);

17801

assert(lp !=

NULL

);

17811

assert(lp !=

NULL

);

17822

assert(lp !=

NULL

);

17834

assert(lp !=

NULL

);

17844

assert(lp !=

NULL

);

17854

assert(lp !=

NULL

);

17864

assert(lp !=

NULL

);

17874

assert(lp !=

NULL

);

17884

assert(lp !=

NULL

);

17894

assert(lp !=

NULL

);

17904

assert(lp !=

NULL

);

17915

assert(lp !=

NULL

);

17926

assert(lp !=

NULL

);

17972

assert(lpi !=

NULL

);

17978 SCIPmessagePrintWarning

(messagehdlr,

"Could not set feasibility tolerance of LP solver for relative interior point computation.\n"

);

17986 SCIPmessagePrintWarning

(messagehdlr,

"Could not set dual feasibility tolerance of LP solver for relative interior point computation.\n"

);

17991

nnewcols = 3*lp->

ncols

+ 2*lp->

nrows

+ (inclobjcutoff ? 1 : 0) + 1;

17997 for

( j = 0; j < lp->

ncols

; ++j )

18007

nnewcols = lp->

ncols

;

18008

obj[nnewcols] = 0.0;

18009

lb[nnewcols] = 1.0;

18014 for

( i = 0; i < lp->

nrows

; ++i )

18018

row = lp->

rows

[i];

18019

assert( row !=

NULL

);

18033

ntotnonz += row->

nlpcols

+ 1;

18043

lb[nnewcols] = 0.0;

18044

ub[nnewcols] = 1.0;

18045

obj[nnewcols++] = 1.0;

18046

ntotnonz += row->

nlpcols

+ 2;

18049

ntotnonz += row->

nlpcols

+ 1;

18056

lb[nnewcols] = 0.0;

18057

ub[nnewcols] = 1.0;

18058

obj[nnewcols++] = 1.0;

18059

ntotnonz += row->

nlpcols

+ 2;

18062

ntotnonz += row->

nlpcols

+ 1;

18069 if

( inclobjcutoff && relaxrows )

18072

lb[nnewcols] = 0.0;

18073

ub[nnewcols] = 1.0;

18074

obj[nnewcols++] = 1.0;

18075

ntotnonz += lp->

ncols

+ 2;

18080 for

( j = 0; j < lp->

ncols

; ++j )

18084

col = lp->

cols

[j];

18085

assert( col !=

NULL

);

18098

lb[nnewcols] = 0.0;

18099

ub[nnewcols] = 1.0;

18100

obj[nnewcols++] = 1.0;

18106

lb[nnewcols] = 0.0;

18107

ub[nnewcols] = 1.0;

18108

obj[nnewcols++] = 1.0;

18115

nslacks = nnewcols - lp->

ncols

- 1;

18116

assert( nslacks >= 0 );

18117

assert( nnewcols <= 3*lp->ncols + 2*lp->

nrows

+ (inclobjcutoff ? 1 : 0) + 1 );

18139 for

( i = 0; i < lp->

nrows

; ++i )

18148

row = lp->

rows

[i];

18149

assert( row !=

NULL

);

18159

assert( nnonz <= lp->ncols );

18160

rowcols = row->

cols

;

18161

rowvals = row->

vals

;

18167

matbeg[matrowidx] = matidx;

18168 for

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

18170

assert( rowcols[j] !=

NULL

);

18171

assert( 0 <= rowcols[j]->lppos && rowcols[j]->lppos < lp->ncols );

18172

assert( lp->

cols

[rowcols[j]->

lppos

] == rowcols[j] );

18174

matinds[matidx] = rowcols[j]->

lppos

;

18175

matvals[matidx++] = rowvals[j];

18176

assert( matidx <= ntotnonz );

18182

matinds[matidx] = lp->

ncols

;

18183

matvals[matidx++] = -rhs;

18184

assert( matidx <= ntotnonz );

18187

matlhs[matrowidx] = 0.0;

18188

matrhs[matrowidx++] = 0.0;

18189

assert( matrowidx <= ntotrows );

18202

matbeg[matrowidx] = matidx;

18203 for

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

18205

assert( rowcols[j] !=

NULL

);

18206

assert( 0 <= rowcols[j]->lppos && rowcols[j]->lppos < lp->ncols );

18207

assert( lp->

cols

[rowcols[j]->

lppos

] == rowcols[j] );

18209

matinds[matidx] = rowcols[j]->

lppos

;

18210

matvals[matidx++] = rowvals[j];

18211

assert( matidx <= ntotnonz );

18217

matinds[matidx] = lp->

ncols

;

18218

matvals[matidx++] = -lhs;

18219

assert( matidx <= ntotnonz );

18225

matvals[matidx] = -

MAX

(1.0, lhs);

18226

matinds[matidx++] = lp->

ncols

+ 1 + cnt;

18227

assert( matidx <= ntotnonz );

18231

matlhs[matrowidx] = 0.0;

18233

assert( matrowidx <= ntotrows );

18240

matbeg[matrowidx] = matidx;

18241 for

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

18243

assert( rowcols[j] !=

NULL

);

18244

assert( 0 <= rowcols[j]->lppos && rowcols[j]->lppos < lp->ncols );

18245

assert( lp->

cols

[rowcols[j]->

lppos

] == rowcols[j] );

18247

matinds[matidx] = rowcols[j]->

lppos

;

18248

matvals[matidx++] = rowvals[j];

18249

assert( matidx <= ntotnonz );

18255

matinds[matidx] = lp->

ncols

;

18256

matvals[matidx++] = -rhs;

18257

assert( matidx <= ntotnonz );

18263

matvals[matidx] =

MAX

(1.0, absrhs);

18264

matinds[matidx++] = lp->

ncols

+ 1 + cnt;

18269

matrhs[matrowidx++] = 0.0;

18270

assert( matrowidx <= ntotrows );

18276 if

( inclobjcutoff )

18285

matbeg[matrowidx] = matidx;

18286 for

( j = 0; j < lp->

ncols

; ++j )

18294

matinds[matidx] = lp->

cols

[j]->

lppos

;

18295

matvals[matidx++] = lp->

cols

[j]->

obj

;

18296

assert( matidx <= ntotnonz );

18305

matinds[matidx] = lp->

ncols

;

18306

matvals[matidx++] = -rhs;

18307

assert( matidx <= ntotnonz );

18315

matvals[matidx] =

MAX

(1.0, absrhs);

18316

matinds[matidx++] = lp->

ncols

+ 1 + cnt;

18317

assert( matidx <= ntotnonz );

18321

matrhs[matrowidx++] = 0.0;

18322

assert( matrowidx <= ntotrows );

18326 for

( j = 0; j < lp->

ncols

; ++j )

18332

col = lp->

cols

[j];

18333

assert( col !=

NULL

);

18334

assert( col->

lppos

== j );

18340

matbeg[matrowidx] = matidx;

18342

matinds[matidx] = j;

18343

matvals[matidx++] = 1.0;

18344

assert( matidx <= ntotnonz );

18349

matinds[matidx] = lp->

ncols

;

18350

matvals[matidx++] = -col->

ub

;

18351

assert( matidx <= ntotnonz );

18354

matlhs[matrowidx] = 0.0;

18355

matrhs[matrowidx++] = 0.0;

18356

assert( matrowidx <= ntotrows );

18368

matbeg[matrowidx] = matidx;

18370

matinds[matidx] = j;

18371

matvals[matidx++] = 1.0;

18372

assert( matidx <= ntotnonz );

18377

matinds[matidx] = lp->

ncols

;

18378

matvals[matidx++] = -col->

lb

;

18379

assert( matidx <= ntotnonz );

18383

matvals[matidx] = -

MAX

(1.0, abscollb);

18384

matinds[matidx++] = lp->

ncols

+ 1 + cnt;

18385

assert( matidx <= ntotnonz );

18388

matlhs[matrowidx] = 0.0;

18390

assert( matrowidx <= ntotrows );

18397

matbeg[matrowidx] = matidx;

18399

matinds[matidx] = j;

18400

matvals[matidx++] = 1.0;

18401

assert( matidx <= ntotnonz );

18406

matinds[matidx] = lp->

ncols

;

18407

matvals[matidx++] = -col->

ub

;

18408

assert( matidx <= ntotnonz );

18412

matvals[matidx] =

MAX

(1.0, abscolub);

18413

matinds[matidx++] = lp->

ncols

+ 1 + cnt;

18414

assert( matidx <= ntotnonz );

18418

matrhs[matrowidx++] = 0.0;

18419

assert( matrowidx <= ntotrows );

18422

assert( cnt == nslacks );

18423

assert( matrowidx == ntotrows );

18442

assert( ncols == nnewcols );

18453 SCIPmessagePrintWarning

(messagehdlr,

"Could not set time limit of LP solver for relative interior point computation.\n"

);

18462 SCIPmessagePrintWarning

(messagehdlr,

"Could not set iteration limit of LP solver for relative interior point computation.\n"

);

18472 SCIPmessagePrintWarning

(messagehdlr,

"Iteration limit exceeded in relative interior point computation.\n"

);

18482

alpha = primal[lp->

ncols

];

18485 SCIPsetDebugMsg

(

set

,

"Solved relative interior lp with objective %g.\n"

, objval);

18488 for

( j = 0; j < lp->

ncols

; ++j )

18489

point[j] = primal[j]/alpha;

18496 for

( i = 0; i < lp->

nrows

; ++i )

18506

row = lp->

rows

[i];

18507

assert( row !=

NULL

);

18513

assert( nnonz <= lp->ncols );

18514

rowcols = row->

cols

;

18515

rowvals = row->

vals

;

18518 for

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

18519

sum += rowvals[j] * primal[rowcols[j]->lppos];

18543 if

( inclobjcutoff )

18552 for

( j = 0; j < lp->

ncols

; ++j )

18561 for

( j = 0; j < lp->

ncols

; ++j )

18568

col = lp->

cols

[j];

18569

assert( col !=

NULL

);

18571

val = primal[col->

lppos

] / alpha;

18653

assert(lp !=

NULL

);

18654

assert(point !=

NULL

);

18655

assert(success !=

NULL

);

18660 if

( timelimit <= 0.0 || iterlimit <= 0 )

18664

assert(lp->

nrows

>= 0);

18665

assert(lp->

ncols

>= 0);

18666 if

( lp->

ncols

== 0 )

18671

inclobjcutoff =

FALSE

;

18676 if

( lp->

nrows

== 0 && !inclobjcutoff )

18689

retcode =

computeRelIntPoint

(lpi,

set

, messagehdlr, lp, prob, relaxrows, inclobjcutoff, timelimit, iterlimit, point, success);

18716

assert(lp !=

NULL

);

18732 int

nfixedcols = 0;

18733 int

nalreadyfixedcols = 0;

18734 int

nfixedrows = 0;

18736 int

nimplicitfixedrows = 0;

18741 int

nbasicequalities = 0;

18745

ncols = lp->

ncols

;

18746

nrows = lp->

nrows

;

18749 for

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

18762

++nalreadyfixedcols;

18767 for

(

r

= nrows - 1;

r

>= 0; --

r

)

18800

++nimplicitfixedrows;

18806

++nbasicequalities;

18808

assert(nfixedcols + nfixedrows <= ncols + nineq + nbasicequalities - nrows - nalreadyfixedcols - nimplicitfixedrows);

18810 if

( ncols + nineq - nrows + nbasicequalities - nalreadyfixedcols > 0 )

18811

lp->

degeneracy

= 1.0 - 1.0 * (nfixedcols + nfixedrows) / (ncols + nineq - nrows + nbasicequalities - nalreadyfixedcols);

18816

lp->

varconsratio

= 1.0 * (ncols + nineq + nbasicequalities - nfixedcols - nfixedrows - nalreadyfixedcols) / nrows;

18845

assert(lp !=

NULL

);

18865

assert(lp !=

NULL

);

18885

assert(lp !=

NULL

);

18905

assert(lp !=

NULL

);

18925

assert(lp !=

NULL

);

18942

assert(lp !=

NULL

);

18953

assert(lp !=

NULL

);

18964

assert(lp !=

NULL

);

void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)

void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)

SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)

internal methods for clocks and timing issues

void SCIPconsCapture(SCIP_CONS *cons)

SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)

internal methods for constraints and constraint handlers

#define SCIP_DEFAULT_SUMEPSILON

#define SCIP_DEFAULT_EPSILON

#define SCIP_CALL_ABORT(x)

#define SCIP_LONGINT_FORMAT

SCIP_RETCODE SCIPeventCreateRowDeletedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)

SCIP_RETCODE SCIPeventqueueAdd(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENT **event)

SCIP_RETCODE SCIPeventfilterFree(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set)

SCIP_RETCODE SCIPeventCreateRowSideChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_SIDETYPE side, SCIP_Real oldval, SCIP_Real newval)

SCIP_RETCODE SCIPeventfilterDel(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)

SCIP_RETCODE SCIPeventfilterCreate(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem)

SCIP_RETCODE SCIPeventCreateRowConstChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_Real oldval, SCIP_Real newval)

SCIP_RETCODE SCIPeventfilterAdd(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)

SCIP_RETCODE SCIPeventCreateRowCoefChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_COL *col, SCIP_Real oldval, SCIP_Real newval)

SCIP_RETCODE SCIPeventCreateRowAddedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)

internal methods for managing events

SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs)

SCIP_RETCODE SCIPlpiSetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPISTATE *lpistate)

SCIP_RETCODE SCIPlpiGetBInvACol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)

SCIP_RETCODE SCIPlpiGetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real *dval)

SCIP_Real SCIPlpiInfinity(SCIP_LPI *lpi)

SCIP_Bool SCIPlpiIsObjlimExc(SCIP_LPI *lpi)

SCIP_Bool SCIPlpiExistsPrimalRay(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiGetBase(SCIP_LPI *lpi, int *cstat, int *rstat)

SCIP_RETCODE SCIPlpiAddRows(SCIP_LPI *lpi, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)

SCIP_RETCODE SCIPlpiGetPrimalRay(SCIP_LPI *lpi, SCIP_Real *ray)

SCIP_RETCODE SCIPlpiGetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int *ival)

SCIP_RETCODE SCIPlpiWriteLP(SCIP_LPI *lpi, const char *fname)

SCIP_RETCODE SCIPlpiSetIntegralityInformation(SCIP_LPI *lpi, int ncols, int *intInfo)

SCIP_RETCODE SCIPlpiSetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real dval)

SCIP_RETCODE SCIPlpiStrongbranchFrac(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)

SCIP_RETCODE SCIPlpiSetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPINORMS *lpinorms)

SCIP_RETCODE SCIPlpiStrongbranchInt(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)

SCIP_RETCODE SCIPlpiGetBounds(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lbs, SCIP_Real *ubs)

SCIP_RETCODE SCIPlpiGetDualfarkas(SCIP_LPI *lpi, SCIP_Real *dualfarkas)

SCIP_RETCODE SCIPlpiGetObjval(SCIP_LPI *lpi, SCIP_Real *objval)

int SCIPlpiGetInternalStatus(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiStartStrongbranch(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiGetSolFeasibility(SCIP_LPI *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)

SCIP_RETCODE SCIPlpiFreeNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)

SCIP_Bool SCIPlpiIsIterlimExc(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub)

SCIP_Bool SCIPlpiIsPrimalUnbounded(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiIgnoreInstability(SCIP_LPI *lpi, SCIP_Bool *success)

SCIP_RETCODE SCIPlpiFree(SCIP_LPI **lpi)

SCIP_RETCODE SCIPlpiStrongbranchesFrac(SCIP_LPI *lpi, int *cols, int ncols, SCIP_Real *psols, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)

SCIP_Bool SCIPlpiIsPrimalFeasible(SCIP_LPI *lpi)

SCIP_Bool SCIPlpiIsDualFeasible(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiGetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)

SCIP_Bool SCIPlpiIsTimelimExc(SCIP_LPI *lpi)

SCIP_Bool SCIPlpiHasStateBasis(SCIP_LPI *lpi, SCIP_LPISTATE *lpistate)

SCIP_RETCODE SCIPlpiSetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int ival)

const char * SCIPlpiGetSolverName(void)

SCIP_Bool SCIPlpiHasPrimalRay(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiGetBInvRow(SCIP_LPI *lpi, int r, SCIP_Real *coef, int *inds, int *ninds)

SCIP_RETCODE SCIPlpiDelRows(SCIP_LPI *lpi, int firstrow, int lastrow)

SCIP_RETCODE SCIPlpiGetBInvCol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)

SCIP_RETCODE SCIPlpiGetBInvARow(SCIP_LPI *lpi, int r, const SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)

SCIP_RETCODE SCIPlpiSolveBarrier(SCIP_LPI *lpi, SCIP_Bool crossover)

SCIP_Bool SCIPlpiIsOptimal(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiEndStrongbranch(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiGetSides(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhss, SCIP_Real *rhss)

SCIP_RETCODE SCIPlpiStrongbranchesInt(SCIP_LPI *lpi, int *cols, int ncols, SCIP_Real *psols, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)

SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost)

SCIP_Bool SCIPlpiHasDualRay(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiDelColset(SCIP_LPI *lpi, int *dstat)

SCIP_RETCODE SCIPlpiGetObj(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *vals)

SCIP_RETCODE SCIPlpiFreeState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)

SCIP_Bool SCIPlpiIsPrimalInfeasible(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiSolveDual(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiAddCols(SCIP_LPI *lpi, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)

SCIP_RETCODE SCIPlpiSolvePrimal(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiGetIterations(SCIP_LPI *lpi, int *iterations)

SCIP_RETCODE SCIPlpiGetBasisInd(SCIP_LPI *lpi, int *bind)

SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)

SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *obj)

SCIP_Bool SCIPlpiIsStable(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiGetNCols(SCIP_LPI *lpi, int *ncols)

SCIP_RETCODE SCIPlpiInterrupt(SCIP_LPI *lpi, SCIP_Bool interrupt)

SCIP_RETCODE SCIPlpiDelCols(SCIP_LPI *lpi, int firstcol, int lastcol)

SCIP_RETCODE SCIPlpiDelRowset(SCIP_LPI *lpi, int *dstat)

SCIP_RETCODE SCIPlpiGetNRows(SCIP_LPI *lpi, int *nrows)

SCIP_RETCODE SCIPlpiGetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)

SCIP_Longint SCIPcalcGreComDiv(SCIP_Longint val1, SCIP_Longint val2)

SCIP_Bool SCIPrealToRational(SCIP_Real val, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Longint *numerator, SCIP_Longint *denominator)

SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)

void SCIPswapPointers(void **pointer1, void **pointer2)

SCIP_Real SCIPcolGetMinPrimsol(SCIP_COL *col)

int SCIPcolGetLPPos(SCIP_COL *col)

int SCIPcolGetVarProbindex(SCIP_COL *col)

SCIP_Bool SCIPcolIsRemovable(SCIP_COL *col)

SCIP_VAR * SCIPcolGetVar(SCIP_COL *col)

SCIP_Bool SCIPcolIsIntegral(SCIP_COL *col)

SCIP_Real SCIPcolGetObj(SCIP_COL *col)

int SCIPcolGetNNonz(SCIP_COL *col)

SCIP_Real * SCIPcolGetVals(SCIP_COL *col)

SCIP_ROW ** SCIPcolGetRows(SCIP_COL *col)

void SCIPcolSort(SCIP_COL *col)

int SCIPcolGetIndex(SCIP_COL *col)

SCIP_Real SCIPcolGetBestBound(SCIP_COL *col)

SCIP_Real SCIPcolGetLb(SCIP_COL *col)

SCIP_Real SCIPcolGetPrimsol(SCIP_COL *col)

SCIP_Real SCIPcolGetUb(SCIP_COL *col)

SCIP_Longint SCIPcolGetStrongbranchNode(SCIP_COL *col)

int SCIPcolGetNLPNonz(SCIP_COL *col)

int SCIPcolGetNStrongbranchs(SCIP_COL *col)

int SCIPcolGetAge(SCIP_COL *col)

SCIP_Bool SCIPcolIsInLP(SCIP_COL *col)

int SCIPcolGetLPDepth(SCIP_COL *col)

SCIP_BASESTAT SCIPcolGetBasisStatus(SCIP_COL *col)

SCIP_BOUNDTYPE SCIPboundtypeOpposite(SCIP_BOUNDTYPE boundtype)

SCIP_Real SCIPcolGetMaxPrimsol(SCIP_COL *col)

SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)

SCIP_Real SCIPintervalGetInf(SCIP_INTERVAL interval)

void SCIPintervalSub(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)

void SCIPintervalSet(SCIP_INTERVAL *resultant, SCIP_Real value)

void SCIPintervalSetBounds(SCIP_INTERVAL *resultant, SCIP_Real inf, SCIP_Real sup)

void SCIPintervalMul(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)

void SCIPintervalAdd(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)

SCIP_Bool SCIProwIsIntegral(SCIP_ROW *row)

void SCIProwSort(SCIP_ROW *row)

SCIP_Real SCIProwGetLhs(SCIP_ROW *row)

SCIP_Bool SCIProwIsModifiable(SCIP_ROW *row)

SCIP_Longint SCIProwGetActiveLPCount(SCIP_ROW *row)

SCIP_Real SCIProwGetOrthogonality(SCIP_ROW *row1, SCIP_ROW *row2, char orthofunc)

SCIP_Real SCIProwGetScalarProduct(SCIP_ROW *row1, SCIP_ROW *row2)

int SCIProwGetLPDepth(SCIP_ROW *row)

SCIP_Real SCIProwGetParallelism(SCIP_ROW *row1, SCIP_ROW *row2, char orthofunc)

SCIP_CONS * SCIProwGetOriginCons(SCIP_ROW *row)

int SCIProwGetNNonz(SCIP_ROW *row)

SCIP_COL ** SCIProwGetCols(SCIP_ROW *row)

SCIP_Bool SCIProwIsInGlobalCutpool(SCIP_ROW *row)

SCIP_Real SCIProwGetRhs(SCIP_ROW *row)

int SCIProwGetAge(SCIP_ROW *row)

int SCIProwGetNLPNonz(SCIP_ROW *row)

SCIP_Real SCIProwGetNorm(SCIP_ROW *row)

int SCIProwGetLPPos(SCIP_ROW *row)

SCIP_Bool SCIProwIsLocal(SCIP_ROW *row)

SCIP_CONSHDLR * SCIProwGetOriginConshdlr(SCIP_ROW *row)

SCIP_Longint SCIProwGetNLPsAfterCreation(SCIP_ROW *row)

void SCIProwLock(SCIP_ROW *row)

SCIP_Bool SCIProwIsRemovable(SCIP_ROW *row)

const char * SCIProwGetName(SCIP_ROW *row)

SCIP_SEPA * SCIProwGetOriginSepa(SCIP_ROW *row)

void SCIProwUnlock(SCIP_ROW *row)

SCIP_Real SCIProwGetSumNorm(SCIP_ROW *row)

SCIP_DECL_SORTPTRCOMP(SCIProwComp)

int SCIProwGetRank(SCIP_ROW *row)

SCIP_Real SCIProwGetDualfarkas(SCIP_ROW *row)

int SCIProwGetIndex(SCIP_ROW *row)

void SCIProwChgRank(SCIP_ROW *row, int rank)

SCIP_Real SCIProwGetConstant(SCIP_ROW *row)

SCIP_Bool SCIProwIsInLP(SCIP_ROW *row)

SCIP_Real SCIProwGetDualsol(SCIP_ROW *row)

SCIP_Real * SCIProwGetVals(SCIP_ROW *row)

SCIP_ROWORIGINTYPE SCIProwGetOrigintype(SCIP_ROW *row)

SCIP_BASESTAT SCIProwGetBasisStatus(SCIP_ROW *row)

SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)

SCIP_BOUNDTYPE SCIPvarGetBestBoundType(SCIP_VAR *var)

SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)

SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)

SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)

int SCIPvarGetNLocksDown(SCIP_VAR *var)

SCIP_Real SCIPvarGetObj(SCIP_VAR *var)

SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)

int SCIPvarGetProbindex(SCIP_VAR *var)

const char * SCIPvarGetName(SCIP_VAR *var)

SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)

SCIP_Real SCIPvarGetUbLazy(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)

int SCIPvarGetNLocksUp(SCIP_VAR *var)

SCIP_Real SCIPvarGetNLPSol(SCIP_VAR *var)

SCIP_Real SCIPvarGetUnchangedObj(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbLazy(SCIP_VAR *var)

void SCIPsortPtrRealInt(void **ptrarray, SCIP_Real *realarray, int *intarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)

void SCIPsortIntPtrIntReal(int *intarray1, void **ptrarray, int *intarray2, SCIP_Real *realarray, int len)

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

void SCIPprintSysError(const char *message)

interval arithmetics for provable bounds

static SCIP_RETCODE lpFlushDelRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set)

static void rowCalcIdxsAndVals(SCIP_ROW *row, SCIP_SET *set)

SCIP_RETCODE SCIPlpCleanupNew(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)

SCIP_Bool SCIPlpIsSolBasic(SCIP_LP *lp)

#define debugColPrint(x, y)

static void getObjvalDeltaObj(SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj, SCIP_Real lb, SCIP_Real ub, SCIP_Real *deltaval, int *deltainf)

static SCIP_RETCODE lpSetObjlim(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real objlim, SCIP_Bool *success)

static SCIP_RETCODE insertColChgcols(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp)

SCIP_Real SCIProwGetMaxval(SCIP_ROW *row, SCIP_SET *set)

SCIP_Real SCIProwGetRelaxEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

SCIP_RETCODE SCIPcolChgUb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newub)

SCIP_Real SCIProwGetLPFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)

SCIP_Real SCIPcolCalcRedcost(SCIP_COL *col, SCIP_Real *dualsol)

SCIP_RETCODE SCIPlpGetBInvRow(SCIP_LP *lp, int r, SCIP_Real *coef, int *inds, int *ninds)

static SCIP_RETCODE lpSetRefactorInterval(SCIP_LP *lp, int refactor, SCIP_Bool *success)

SCIP_Real SCIProwGetNLPFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

SCIP_RETCODE SCIPcolFree(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)

static SCIP_RETCODE lpSolveStable(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LPALGO lpalgo, int itlim, int harditlim, SCIP_Bool resolve, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, int scaling, SCIP_Bool keepsol, SCIP_Bool *timelimit, SCIP_Bool *lperror)

SCIP_Real SCIPlpGetModifiedProvedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)

void SCIProwCapture(SCIP_ROW *row)

SCIP_RETCODE SCIPlpFreeState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)

SCIP_Real SCIProwGetPseudoFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

SCIP_RETCODE SCIPlpUpdateAges(SCIP_LP *lp, SCIP_STAT *stat)

SCIP_RETCODE SCIPlpGetBInvCol(SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)

SCIP_RETCODE SCIPcolChgLb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)

#define DIVESTACKGROWFACT

static SCIP_RETCODE lpSetTiming(SCIP_LP *lp, SCIP_CLOCKTYPE timing, SCIP_Bool enabled, SCIP_Bool *success)

SCIP_RETCODE SCIPlpInterrupt(SCIP_LP *lp, SCIP_Bool interrupt)

static SCIP_RETCODE lpLexDualSimplex(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool *lperror)

static void rowDelNorms(SCIP_ROW *row, SCIP_SET *set, SCIP_COL *col, SCIP_Real val, SCIP_Bool forcenormupdate, SCIP_Bool updateindex, SCIP_Bool updateval)

SCIP_RETCODE SCIProwChgCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)

static SCIP_RETCODE lpSetFromscratch(SCIP_LP *lp, SCIP_Bool fromscratch, SCIP_Bool *success)

static void colSortNonLP(SCIP_COL *col)

static SCIP_RETCODE ensureLpicolsSize(SCIP_LP *lp, SCIP_SET *set, int num)

SCIP_Real SCIPcolCalcFarkasCoef(SCIP_COL *col, SCIP_Real *dualfarkas)

static void rowMoveCoef(SCIP_ROW *row, int oldpos, int newpos)

static SCIP_RETCODE lpSetFastmip(SCIP_LP *lp, int fastmip, SCIP_Bool *success)

SCIP_RETCODE SCIPlpGetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)

static SCIP_RETCODE lpSetRealpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Real value, SCIP_Bool *success)

static SCIP_RETCODE lpCopyIntegrality(SCIP_LP *lp, SCIP_SET *set)

static SCIP_RETCODE lpStoreSolVals(SCIP_LP *lp, SCIP_STAT *stat, BMS_BLKMEM *blkmem)

void SCIPlpMarkSize(SCIP_LP *lp)

int SCIProwGetNumIntCols(SCIP_ROW *row, SCIP_SET *set)

static SCIP_RETCODE lpSetLPInfo(SCIP_LP *lp, SCIP_Bool lpinfo)

SCIP_RETCODE SCIPlpGetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)

void SCIPlpRecalculateObjSqrNorm(SCIP_SET *set, SCIP_LP *lp)

static void lpUpdateObjNorms(SCIP_LP *lp, SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj)

static SCIP_RETCODE lpRemoveObsoleteRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int firstrow)

int SCIPlpGetNNewcols(SCIP_LP *lp)

SCIP_Real SCIProwGetSolFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)

void SCIProwRecalcPseudoActivity(SCIP_ROW *row, SCIP_STAT *stat)

SCIP_RETCODE SCIProwEnsureSize(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)

SCIP_Bool SCIPlpIsFeasPositive(SCIP_LP *lp, SCIP_Real val)

SCIP_Bool SCIPlpIsFeasGT(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)

SCIP_RETCODE SCIPlpIsInfeasibilityProved(SCIP_LP *lp, SCIP_SET *set, SCIP_Bool *proved)

SCIP_Real SCIProwGetRelaxFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

SCIP_RETCODE SCIPlpAddCol(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, int depth)

#define MAXNUMTROUBLELPMSGS

SCIP_Real SCIPlpGetLooseObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

SCIP_RETCODE SCIPlpSetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, SCIP_LPISTATE *lpistate, SCIP_Bool wasprimfeas, SCIP_Bool wasprimchecked, SCIP_Bool wasdualfeas, SCIP_Bool wasdualchecked)

static SCIP_RETCODE colDelCoefPos(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, int pos)

static void colSwapCoefs(SCIP_COL *col, int pos1, int pos2)

static void rowCalcActivityBounds(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

static SCIP_RETCODE lpUpdateVarProved(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real oldlb, SCIP_Real oldub, SCIP_Real newobj, SCIP_Real newlb, SCIP_Real newub)

SCIP_Real SCIPlpGetObjNorm(SCIP_LP *lp)

SCIP_Real SCIProwGetMaxActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

SCIP_RETCODE SCIProwMakeIntegral(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Bool *success)

static SCIP_RETCODE lpSetPresolving(SCIP_LP *lp, SCIP_Bool presolving, SCIP_Bool *success)

SCIP_RETCODE SCIPlpRemoveNewObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)

SCIP_Bool SCIProwIsLPEfficacious(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Bool root)

SCIP_Real SCIProwGetSolEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)

static int colSearchCoefPart(SCIP_COL *col, const SCIP_ROW *row, int minpos, int maxpos)

SCIP_RETCODE SCIPlpStartStrongbranch(SCIP_LP *lp)

static int rowSearchCoefPart(SCIP_ROW *row, const SCIP_COL *col, int minpos, int maxpos)

SCIP_Bool SCIPlpDivingObjChanged(SCIP_LP *lp)

#define checkRowSumnorm(row)

static int colSearchCoef(SCIP_COL *col, const SCIP_ROW *row)

SCIP_RETCODE SCIPlpFlush(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue)

static SCIP_RETCODE rowDelCoefPos(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, int pos)

SCIP_RETCODE SCIPlpUpdateVarLb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)

void SCIPlpDecNLoosevars(SCIP_LP *lp)

static void rowSwapCoefs(SCIP_ROW *row, int pos1, int pos2)

SCIP_RETCODE SCIProwAddConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real addval)

static SCIP_RETCODE rowChgCoefPos(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, int pos, SCIP_Real val)

static SCIP_RETCODE rowEventCoefChanged(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_COL *col, SCIP_Real oldval, SCIP_Real newval)

static void recomputePseudoObjectiveValue(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

void SCIPlpSetFeastol(SCIP_LP *lp, SCIP_SET *set, SCIP_Real newfeastol)

SCIP_RETCODE SCIPcolChgCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)

SCIP_RETCODE rowUnlink(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)

#define lpCutoffDisabled(set, prob, lp)

SCIP_RETCODE SCIPlpWrite(SCIP_LP *lp, const char *fname)

int SCIProwGetMaxidx(SCIP_ROW *row, SCIP_SET *set)

static void colSortLP(SCIP_COL *col)

static void adjustLPobjval(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)

static SCIP_RETCODE lpFlushAddRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)

SCIP_Real SCIPlpGetModifiedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)

static int rowSearchCoef(SCIP_ROW *row, const SCIP_COL *col)

SCIP_Real SCIProwGetLPActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)

void SCIProwMarkNotRemovableLocal(SCIP_ROW *row, SCIP_STAT *stat)

static SCIP_RETCODE lpSetPricing(SCIP_LP *lp, SCIP_PRICING pricing)

SCIP_RETCODE SCIPlpUpdateVarLbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)

static SCIP_RETCODE colRestoreSolVals(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer)

SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)

SCIP_RETCODE SCIPlpShrinkCols(SCIP_LP *lp, SCIP_SET *set, int newncols)

void SCIPlpStoreRootObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

static SCIP_RETCODE lpSetPricingChar(SCIP_LP *lp, char pricingchar)

SCIP_RETCODE SCIProwCreate(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_ROWORIGINTYPE origintype, void *origin, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)

static SCIP_RETCODE colStoreSolVals(SCIP_COL *col, BMS_BLKMEM *blkmem)

static SCIP_RETCODE rowAddCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val, int linkpos)

SCIP_ROW ** SCIPlpGetNewrows(SCIP_LP *lp)

static SCIP_RETCODE ensureSoldirectionSize(SCIP_LP *lp, int num)

void SCIPlpRecomputeLocalAndGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

static SCIP_RETCODE lpSetMarkowitz(SCIP_LP *lp, SCIP_Real threshhold, SCIP_Bool *success)

static void rowUpdateAddLP(SCIP_ROW *row)

static SCIP_RETCODE lpCheckIntpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, int value)

SCIP_Real SCIPlpGetColumnObjval(SCIP_LP *lp)

SCIP_RETCODE SCIPlpUpdateAddVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)

SCIP_RETCODE SCIPlpClear(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)

SCIP_Bool SCIPlpIsPrimalReliable(SCIP_LP *lp)

static SCIP_RETCODE colEnsureSize(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)

static void rowSortNonLP(SCIP_ROW *row)

void SCIPlpSetIsRelax(SCIP_LP *lp, SCIP_Bool relax)

static SCIP_RETCODE ensureChgcolsSize(SCIP_LP *lp, SCIP_SET *set, int num)

SCIP_RETCODE SCIProwDelCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col)

SCIP_RETCODE SCIPlpGetBase(SCIP_LP *lp, int *cstat, int *rstat)

SCIP_Bool SCIPlpIsRelax(SCIP_LP *lp)

static SCIP_RETCODE rowEventConstantChanged(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_Real oldval, SCIP_Real newval)

void SCIPcolInvalidateStrongbranchData(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)

static SCIP_RETCODE lpSolve(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LPALGO lpalgo, int resolveitlim, int harditlim, SCIP_Bool needprimalray, SCIP_Bool needdualray, SCIP_Bool resolve, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, int scaling, SCIP_Bool keepsol, SCIP_Bool *lperror)

static int lpGetResolveItlim(SCIP_SET *set, SCIP_STAT *stat, int itlim)

SCIP_RETCODE SCIPlpSolveAndEval(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool limitresolveiters, SCIP_Bool aging, SCIP_Bool keepsol, SCIP_Bool forcedlpsolve, SCIP_Bool *lperror)

SCIP_RETCODE SCIPcolGetStrongbranch(SCIP_COL *col, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Bool updatecol, SCIP_Bool updatestat, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)

static SCIP_RETCODE lpCheckRealpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Real value)

SCIP_RETCODE SCIPcolDelCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row)

static void rowMerge(SCIP_ROW *row, SCIP_SET *set)

static void colMoveCoef(SCIP_COL *col, int oldpos, int newpos)

static SCIP_Bool isIntegralScalar(SCIP_Real val, SCIP_Real scalar, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Real *intval)

SCIP_Real SCIPlpGetObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

static void computeLPBounds(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, SCIP_Real lpiinf, SCIP_Real *lb, SCIP_Real *ub)

SCIP_RETCODE SCIPlpCleanupAll(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)

void SCIProwRecalcLPActivity(SCIP_ROW *row, SCIP_STAT *stat)

static SCIP_Bool isNewValueUnreliable(SCIP_SET *set, SCIP_Real newvalue, SCIP_Real oldvalue)

static SCIP_RETCODE provedBound(SCIP_LP *lp, SCIP_SET *set, SCIP_Bool usefarkas, SCIP_Real *bound)

SCIP_Real SCIProwGetMinval(SCIP_ROW *row, SCIP_SET *set)

SCIP_RETCODE SCIPlpEndStrongbranch(SCIP_LP *lp)

SCIP_Longint SCIPcolGetStrongbranchLPAge(SCIP_COL *col, SCIP_STAT *stat)

static SCIP_RETCODE lpDelColset(SCIP_LP *lp, SCIP_SET *set, int *coldstat)

static SCIP_RETCODE lpRemoveObsoleteCols(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, int firstcol)

SCIP_Real SCIPlpGetRootObjval(SCIP_LP *lp)

static SCIP_RETCODE rowScale(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real scaleval, SCIP_Bool integralcontvars, SCIP_Real minrounddelta, SCIP_Real maxrounddelta)

static SCIP_RETCODE ensureLazycolsSize(SCIP_LP *lp, SCIP_SET *set, int num)

SCIP_Bool SCIPlpIsFeasGE(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)

static SCIP_RETCODE ignoreInstability(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_LPALGO lpalgo, SCIP_Bool *success)

SCIP_RETCODE SCIPlpGetProvedLowerbound(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *bound)

static void checkLazyColArray(SCIP_LP *lp, SCIP_SET *set)

SCIP_RETCODE SCIPcolChgObj(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)

static void colUpdateAddLP(SCIP_COL *col, SCIP_SET *set)

SCIP_Real SCIProwGetLPSolCutoffDistance(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_LP *lp)

static SCIP_RETCODE lpSetRandomseed(SCIP_LP *lp, int randomseed, SCIP_Bool *success)

static SCIP_RETCODE rowRestoreSolVals(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer, SCIP_Bool infeasible)

static SCIP_RETCODE ensureChgrowsSize(SCIP_LP *lp, SCIP_SET *set, int num)

SCIP_Real SCIProwGetSolActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)

static SCIP_RETCODE lpSetScaling(SCIP_LP *lp, int scaling, SCIP_Bool *success)

static SCIP_RETCODE colChgCoefPos(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, int pos, SCIP_Real val)

SCIP_RETCODE SCIPlpFree(SCIP_LP **lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)

static SCIP_RETCODE lpSetIntpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, int value, SCIP_Bool *success)

void SCIPlpMarkDivingObjChanged(SCIP_LP *lp)

SCIP_COL ** SCIPlpGetNewcols(SCIP_LP *lp)

SCIP_RETCODE SCIPlpFreeNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)

static SCIP_RETCODE lpBarrier(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool crossover, SCIP_Bool keepsol, SCIP_Bool *lperror)

SCIP_RETCODE SCIProwAddCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)

static void freeDiveChgSideArrays(SCIP_LP *lp)

SCIP_RETCODE SCIPlpGetBInvARow(SCIP_LP *lp, int r, SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)

SCIP_LPI * SCIPlpGetLPI(SCIP_LP *lp)

SCIP_Bool SCIPlpIsFeasLT(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)

static SCIP_RETCODE rowStoreSolVals(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_Bool infeasible)

SCIP_RETCODE SCIProwIncCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real incval)

static SCIP_RETCODE lpUpdateVarColumnProved(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)

#define debugRowPrint(x, y)

SCIP_RETCODE SCIPlpRemoveRedundantRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)

SCIP_Bool SCIPlpDiving(SCIP_LP *lp)

static void rowUpdateDelLP(SCIP_ROW *row)

void SCIPlpUnmarkDivingObjChanged(SCIP_LP *lp)

SCIP_RETCODE SCIPlpGetBasisInd(SCIP_LP *lp, int *basisind)

SCIP_Real SCIProwGetNLPEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

SCIP_RETCODE SCIPlpSetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS *lpinorms)

SCIP_RETCODE SCIProwChgLocal(SCIP_ROW *row, SCIP_Bool local)

SCIP_RETCODE SCIPlpComputeRelIntPoint(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_LP *lp, SCIP_PROB *prob, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_Real *point, SCIP_Bool *success)

#define DIVESTACKINITSIZE

SCIP_RETCODE SCIPlpGetDualDegeneracy(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *degeneracy, SCIP_Real *varconsratio)

static SCIP_RETCODE lpSetBoolpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Bool value, SCIP_Bool *success)

static SCIP_RETCODE ensureColsSize(SCIP_LP *lp, SCIP_SET *set, int num)

static void rowCalcNorms(SCIP_ROW *row, SCIP_SET *set)

SCIP_Real SCIProwGetLPEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)

SCIP_RETCODE SCIPlpGetSol(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)

static void markRowDeleted(SCIP_ROW *row)

static void rowAddNorms(SCIP_ROW *row, SCIP_SET *set, SCIP_COL *col, SCIP_Real val, SCIP_Bool updateidxvals)

static void lpUpdateObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real deltaval, int deltainf, SCIP_Bool local, SCIP_Bool loose, SCIP_Bool global)

static const int nscalars

void SCIPcolGetStrongbranchLast(SCIP_COL *col, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Real *solval, SCIP_Real *lpobjval)

SCIP_RETCODE SCIPcolAddCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)

static SCIP_RETCODE computeRelIntPoint(SCIP_LPI *lpi, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_LP *lp, SCIP_PROB *prob, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_Real *point, SCIP_Bool *success)

SCIP_RETCODE SCIPcolIncCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real incval)

SCIP_Real SCIPlpGetRootLooseObjval(SCIP_LP *lp)

SCIP_RETCODE SCIPlpGetDualfarkas(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool forcedlpsolve, SCIP_Bool *valid)

void SCIProwPrint(SCIP_ROW *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)

SCIP_RETCODE SCIPlpSetCutoffbound(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real cutoffbound)

SCIP_RETCODE SCIPlpRecordOldRowSideDive(SCIP_LP *lp, SCIP_ROW *row, SCIP_SIDETYPE sidetype)

static SCIP_RETCODE lpCleanupCols(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, int firstcol)

SCIP_RETCODE SCIPlpMarkFlushed(SCIP_LP *lp, SCIP_SET *set)

static SCIP_RETCODE lpAlgorithm(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPALGO lpalgo, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool instable, SCIP_Bool *timelimit, SCIP_Bool *lperror)

SCIP_Real SCIPcolGetFeasibility(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)

#define checkRowSqrnorm(row)

SCIP_RETCODE SCIPlpShrinkRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int newnrows)

SCIP_Bool SCIProwIsRedundant(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

void SCIPlpStartStrongbranchProbing(SCIP_LP *lp)

static SCIP_RETCODE lpFlushDelCols(SCIP_LP *lp)

static SCIP_RETCODE lpSetRowrepswitch(SCIP_LP *lp, SCIP_Real rowrepswitch, SCIP_Bool *success)

SCIP_RETCODE SCIPlpGetIterations(SCIP_LP *lp, int *iterations)

static void recomputeLooseObjectiveValue(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

static void colUpdateDelLP(SCIP_COL *col, SCIP_SET *set)

SCIP_RETCODE SCIProwChgConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real constant)

SCIP_RETCODE SCIPlpStartProbing(SCIP_LP *lp)

SCIP_Real SCIPlpGetFeastol(SCIP_LP *lp)

static SCIP_RETCODE lpSetFeastol(SCIP_LP *lp, SCIP_Real feastol, SCIP_Bool *success)

SCIP_Bool SCIProwIsSolEfficacious(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool root)

static SCIP_RETCODE lpUpdateVarColumn(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)

SCIP_RETCODE SCIPlpUpdateDelVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)

void SCIPlpEndStrongbranchProbing(SCIP_LP *lp)

SCIP_RETCODE SCIPlpGetBInvACol(SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)

SCIP_Bool SCIPlpIsFeasZero(SCIP_LP *lp, SCIP_Real val)

static SCIP_RETCODE lpSetThreads(SCIP_LP *lp, int threads, SCIP_Bool *success)

SCIP_RETCODE SCIPlpRemoveAllObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)

static SCIP_RETCODE lpFlushChgCols(SCIP_LP *lp, SCIP_SET *set)

static SCIP_RETCODE lpUpdateVarLooseProved(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)

SCIP_RETCODE SCIProwCatchEvent(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)

SCIP_RETCODE colLink(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)

SCIP_RETCODE SCIProwFree(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)

static SCIP_Real getFiniteLooseObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

SCIP_Real SCIPcolGetFarkasValue(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)

static SCIP_RETCODE lpDualSimplex(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool instable, SCIP_Bool *lperror)

static const char * lpalgoName(SCIP_LPALGO lpalgo)

static void coefChanged(SCIP_ROW *row, SCIP_COL *col, SCIP_LP *lp)

static SCIP_RETCODE lpUpdateVarLoose(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)

static void getObjvalDeltaUb(SCIP_SET *set, SCIP_Real obj, SCIP_Real oldub, SCIP_Real newub, SCIP_Real *deltaval, int *deltainf)

static SCIP_RETCODE lpRestoreSolVals(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_Longint validlp)

static SCIP_RETCODE rowSideChanged(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp, SCIP_SIDETYPE sidetype)

static void rowSortLP(SCIP_ROW *row)

static SCIP_Real colCalcInternalFarkasCoef(SCIP_COL *col)

SCIP_RETCODE colUnlink(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)

SCIP_RETCODE SCIPlpCreate(SCIP_LP **lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)

SCIP_Bool SCIPlpDivingRowsChanged(SCIP_LP *lp)

SCIP_RETCODE SCIPlpUpdateVarUbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)

static SCIP_RETCODE lpFlushAndSolve(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, int resolveitlim, int harditlim, SCIP_Bool needprimalray, SCIP_Bool needdualray, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, int scaling, SCIP_Bool keepsol, SCIP_Bool *lperror)

SCIP_RETCODE SCIPlpReset(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)

static SCIP_RETCODE lpCheckBoolpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Bool value)

SCIP_Real SCIPcolGetRedcost(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)

SCIP_RETCODE SCIPlpEndProbing(SCIP_LP *lp)

SCIP_RETCODE SCIProwDropEvent(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)

static SCIP_RETCODE colAddCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val, int linkpos)

SCIP_RETCODE SCIPcolCreate(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROW **rows, SCIP_Real *vals, SCIP_Bool removable)

SCIP_Bool SCIPlpIsRootLPRelax(SCIP_LP *lp)

SCIP_Bool SCIPlpIsSolved(SCIP_LP *lp)

SCIP_RETCODE SCIPlpUpdateVarUb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)

static SCIP_RETCODE lpSetConditionLimit(SCIP_LP *lp, SCIP_Real condlimit, SCIP_Bool *success)

SCIP_RETCODE SCIPlpUpdateVarObj(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)

static void lpNumericalTroubleMessage(SCIP_MESSAGEHDLR *messagehdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_VERBLEVEL verblevel, const char *formatstr,...)

SCIP_Real SCIPcolGetFarkasCoef(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)

SCIP_RETCODE SCIPlpUpdateVarLoose(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)

SCIP_Real SCIPlpGetGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

static SCIP_RETCODE reallocDiveChgSideArrays(SCIP_LP *lp, int minsize, SCIP_Real growfact)

SCIP_Bool SCIPlpIsDualReliable(SCIP_LP *lp)

SCIP_RETCODE SCIPlpAddRow(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_ROW *row, int depth)

SCIP_RETCODE SCIPlpWriteMip(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *fname, SCIP_Bool genericnames, SCIP_Bool origobj, SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, SCIP_Bool lazyconss)

static void getObjvalDeltaLb(SCIP_SET *set, SCIP_Real obj, SCIP_Real oldlb, SCIP_Real newlb, SCIP_Real *deltaval, int *deltainf)

int SCIProwGetMinidx(SCIP_ROW *row, SCIP_SET *set)

static SCIP_Real colCalcInternalRedcost(SCIP_COL *col)

SCIP_RETCODE SCIPlpStartDive(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)

SCIP_Bool SCIPlpIsFeasNegative(SCIP_LP *lp, SCIP_Real val)

SCIP_RETCODE SCIPlpEndDive(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_VAR **vars, int nvars)

SCIP_COL ** SCIPlpGetCols(SCIP_LP *lp)

int SCIPlpGetNCols(SCIP_LP *lp)

static SCIP_RETCODE lpSetBarrierconvtol(SCIP_LP *lp, SCIP_Real barrierconvtol, SCIP_Bool *success)

SCIP_RETCODE SCIProwChgRhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real rhs)

SCIP_Real SCIPlpGetRootColumnObjval(SCIP_LP *lp)

static SCIP_RETCODE rowEventSideChanged(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_SIDETYPE side, SCIP_Real oldval, SCIP_Real newval)

SCIP_RETCODE SCIPlpGetUnboundedSol(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)

static SCIP_RETCODE lpSetDualfeastol(SCIP_LP *lp, SCIP_Real dualfeastol, SCIP_Bool *success)

SCIP_RETCODE SCIProwCalcIntegralScalar(SCIP_ROW *row, SCIP_SET *set, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Real *intscalar, SCIP_Bool *success)

SCIP_Real SCIPlpGetCutoffbound(SCIP_LP *lp)

SCIP_Bool SCIPlpIsFeasEQ(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)

static void markColDeleted(SCIP_COL *col)

SCIP_Real SCIProwGetPseudoActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

static void checkLazyBounds(SCIP_LP *lp, SCIP_SET *set)

static SCIP_RETCODE lpSetIterationLimit(SCIP_LP *lp, int itlim)

static SCIP_RETCODE ensureRowsSize(SCIP_LP *lp, SCIP_SET *set, int num)

static SCIP_Real getFinitePseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

static SCIP_RETCODE allocDiveChgSideArrays(SCIP_LP *lp, int initsize)

SCIP_ROW ** SCIPlpGetRows(SCIP_LP *lp)

void SCIPlpSetRootLPIsRelax(SCIP_LP *lp, SCIP_Bool isrelax)

static SCIP_RETCODE ensureLpirowsSize(SCIP_LP *lp, SCIP_SET *set, int num)

SCIP_RETCODE SCIProwChgLhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real lhs)

void SCIProwForceSort(SCIP_ROW *row, SCIP_SET *set)

void SCIPcolMarkNotRemovableLocal(SCIP_COL *col, SCIP_STAT *stat)

static SCIP_RETCODE updateLazyBounds(SCIP_LP *lp, SCIP_SET *set)

SCIP_RETCODE rowLink(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)

int SCIPlpGetNUnfixedCols(SCIP_LP *lp, SCIP_Real eps)

SCIP_Real SCIProwGetMinActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)

#define checkRowObjprod(row)

static const SCIP_Real scalars[]

void SCIPcolSetStrongbranchData(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real lpobjval, SCIP_Real primsol, SCIP_Real sbdown, SCIP_Real sbup, SCIP_Bool sbdownvalid, SCIP_Bool sbupvalid, SCIP_Longint iter, int itlim)

SCIP_Bool SCIPlpIsFeasLE(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)

int SCIPlpGetNNewrows(SCIP_LP *lp)

void SCIPlpResetFeastol(SCIP_LP *lp, SCIP_SET *set)

SCIP_RETCODE SCIPlpGetPrimalRay(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *ray)

void SCIProwDelaySort(SCIP_ROW *row)

static SCIP_RETCODE lpSetSolutionPolishing(SCIP_LP *lp, SCIP_Bool polishing, SCIP_Bool *success)

void SCIPlpInvalidateRootObjval(SCIP_LP *lp)

int SCIPlpGetNRows(SCIP_LP *lp)

static SCIP_RETCODE lpFlushChgRows(SCIP_LP *lp, SCIP_SET *set)

static SCIP_RETCODE lpPrimalSimplex(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool instable, SCIP_Bool *lperror)

SCIP_Real SCIProwGetObjParallelism(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)

static void recomputeGlbPseudoObjectiveValue(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

SCIP_RETCODE SCIPlpSumRows(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real *weights, SCIP_REALARRAY *sumcoef, SCIP_Real *sumlhs, SCIP_Real *sumrhs)

SCIP_RETCODE SCIPcolGetStrongbranches(SCIP_COL **cols, int ncols, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)

static SCIP_RETCODE lpCleanupRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int firstrow)

SCIP_Real SCIPlpGetPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

static SCIP_RETCODE lpDelRowset(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int *rowdstat)

void SCIPlpSetSizeMark(SCIP_LP *lp, int nrows, int ncols)

static int SCIProwGetDiscreteScalarProduct(SCIP_ROW *row1, SCIP_ROW *row2)

SCIP_RETCODE SCIPlpUpdateVarColumn(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)

SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)

static SCIP_RETCODE lpFlushAddCols(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)

void SCIPcolPrint(SCIP_COL *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)

internal methods for LP management

interface methods for specific LP solvers

#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)

#define BMSfreeMemory(ptr)

#define BMSfreeBlockMemory(mem, ptr)

#define BMSallocBlockMemory(mem, ptr)

#define BMSreallocMemoryArray(ptr, num)

#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)

#define BMSfreeMemoryNull(ptr)

#define BMSallocMemoryArray(ptr, num)

#define BMSallocBlockMemoryArray(mem, ptr, num)

#define BMSfreeBlockMemoryNull(mem, ptr)

#define BMSfreeBlockMemoryArray(mem, ptr, num)

#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)

#define BMSclearMemoryArray(ptr, num)

struct BMS_BlkMem BMS_BLKMEM

#define BMSfreeMemoryArrayNull(ptr)

#define BMSallocMemory(ptr)

void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)

void SCIPmessageVFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr, va_list ap)

void SCIPmessagePrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)

void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)

void SCIPmessagePrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr,...)

SCIP_RETCODE SCIPrealarrayExtend(SCIP_REALARRAY *realarray, int arraygrowinit, SCIP_Real arraygrowfac, int minidx, int maxidx)

SCIP_RETCODE SCIPrealarrayIncVal(SCIP_REALARRAY *realarray, int arraygrowinit, SCIP_Real arraygrowfac, int idx, SCIP_Real incval)

SCIP_RETCODE SCIPrealarrayClear(SCIP_REALARRAY *realarray)

internal miscellaneous methods

SCIP_Bool SCIPprobAllColsInLP(SCIP_PROB *prob, SCIP_SET *set, SCIP_LP *lp)

internal methods for storing and manipulating the main problem

public methods for LP management

public methods for message output

public data structures and miscellaneous methods

methods for sorting joint arrays of various types

public methods for problem variables

SCIP_Bool SCIPsetIsDualfeasZero(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsEfficacious(SCIP_SET *set, SCIP_Bool root, SCIP_Real efficacy)

SCIP_Bool SCIPsetIsFeasPositive(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_RETCODE SCIPsetGetCharParam(SCIP_SET *set, const char *name, char *value)

SCIP_Real SCIPsetSumFloor(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsFeasNegative(SCIP_SET *set, SCIP_Real val)

SCIP_Real SCIPsetFeastol(SCIP_SET *set)

SCIP_Bool SCIPsetIsDualfeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsFeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsFeasEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Real SCIPsetRelaxfeastol(SCIP_SET *set)

SCIP_Bool SCIPsetIsSumLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsDualfeasNegative(SCIP_SET *set, SCIP_Real val)

SCIP_Real SCIPsetDualfeastol(SCIP_SET *set)

SCIP_Bool SCIPsetIsSumGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsFeasZero(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsFeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_RETCODE SCIPsetSetCharParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, char value)

SCIP_Real SCIPsetLPFeastolFactor(SCIP_SET *set)

SCIP_Real SCIPsetInfinity(SCIP_SET *set)

SCIP_Real SCIPsetSumepsilon(SCIP_SET *set)

SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsSumZero(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsRelGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsDualfeasPositive(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsDualfeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsSumEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsIntegral(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsUpdateUnreliable(SCIP_SET *set, SCIP_Real newvalue, SCIP_Real oldvalue)

SCIP_Real SCIPsetSumCeil(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Real SCIPsetBarrierconvtol(SCIP_SET *set)

SCIP_Real SCIPsetRound(SCIP_SET *set, SCIP_Real val)

int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)

SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)

unsigned int SCIPsetInitializeRandomSeed(SCIP_SET *set, unsigned int initialseedvalue)

internal methods for global SCIP settings

#define SCIPsetFreeBufferArray(set, ptr)

#define SCIPsetDebugMsgPrint

#define SCIPsetAllocBufferArray(set, ptr, num)

SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)

internal methods for storing primal CIP solutions

SCIP_Bool SCIPsolveIsStopped(SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool checknodelimits)

internal methods for main solving loop and node processing

internal methods for problem statistics

#define SCIPstatAdd(stat, set, field, val)

#define SCIPstatIncrement(stat, set, field)

#define SCIPstatUpdate(stat, set, field, val)

SCIP_COLSOLVALS * storedsolvals

SCIP_Longint obsoletenode

unsigned int lprowssorted

SCIP_Longint validredcostlp

unsigned int nonlprowssorted

SCIP_Longint validfarkaslp

SCIP_Bool glbpseudoobjvalid

SCIP_Real lpirowrepswitch

SCIP_Longint validsoldirlp

SCIP_Real relglbpseudoobjval

SCIP_SIDETYPE * divechgsidetypes

SCIP_Bool strongbranching

SCIP_Bool updateintegrality

SCIP_Bool objsqrnormunreliable

SCIP_Real lpiconditionlimit

SCIP_Bool strongbranchprobing

SCIP_Real rootlooseobjval

SCIP_Bool divelpwasdualfeas

SCIP_Bool lpisolutionpolishing

SCIP_Bool divelpwasprimchecked

SCIP_LPSOLVALS * storedsolvals

SCIP_LPISTATE * divelpistate

SCIP_SOL * validsoldirsol

SCIP_Real relpseudoobjval

SCIP_Real lpibarrierconvtol

SCIP_Longint validdegeneracylp

SCIP_Longint divenolddomchgs

SCIP_Bool divinglazyapplied

SCIP_Bool divelpwasdualchecked

SCIP_Longint validfarkaslp

SCIP_Real glbpseudoobjval

SCIP_Bool lpihaspolishing

SCIP_Bool flushdeletedrows

SCIP_Bool divelpwasprimfeas

SCIP_Bool flushdeletedcols

SCIP_Longint nlpsaftercreation

SCIP_Longint activeinlpcounter

unsigned int lpcolssorted

unsigned int inglobalcutpool

SCIP_Longint obsoletenode

unsigned int nonlpcolssorted

unsigned int validminmaxidx

SCIP_Longint validpsactivitydomchg

SCIP_Longint validactivitybdsdomchg

SCIP_ROWSOLVALS * storedsolvals

SCIP_EVENTFILTER * eventfilter

SCIP_Longint validactivitylp

SCIP_Longint ndualresolvelpiterations

SCIP_Longint nprimalresolvelpiterations

SCIP_CLOCK * strongbranchtime

SCIP_CLOCK * barrierlptime

SCIP_Longint nduallpiterations

SCIP_Longint ndualresolvelps

SCIP_CLOCK * divinglptime

SCIP_Longint nlpiterations

SCIP_Longint nprimalresolvelps

SCIP_Longint nrootlpiterations

SCIP_Longint nnumtroublelpmsgs

SCIP_CLOCK * resolveinstablelptime

SCIP_CLOCK * primallptime

SCIP_Longint nprimallpiterations

SCIP_CLOCK * lexduallptime

datastructures for managing events

data structures for LP management

datastructures for storing and manipulating the main problem

SCIP main data structure.

datastructures for global SCIP settings

datastructures for problem statistics

datastructures for problem variables

enum SCIP_ClockType SCIP_CLOCKTYPE

#define SCIP_EVENTTYPE_ROWSIDECHANGED

#define SCIP_EVENTTYPE_ROWADDEDLP

struct SCIP_EventData SCIP_EVENTDATA

#define SCIP_EVENTTYPE_ROWCHANGED

#define SCIP_EVENTTYPE_FORMAT

#define SCIP_EVENTTYPE_ROWDELETEDLP

#define SCIP_EVENTTYPE_ROWCOEFCHANGED

#define SCIP_EVENTTYPE_ROWCONSTCHANGED

enum SCIP_RowOriginType SCIP_ROWORIGINTYPE

@ SCIP_LPALGO_PRIMALSIMPLEX

@ SCIP_LPALGO_BARRIERCROSSOVER

@ SCIP_LPALGO_DUALSIMPLEX

enum SCIP_LPSolStat SCIP_LPSOLSTAT

@ SCIP_ROWORIGINTYPE_CONSHDLR

@ SCIP_ROWORIGINTYPE_SEPA

@ SCIP_ROWORIGINTYPE_CONS

enum SCIP_BoundType SCIP_BOUNDTYPE

@ SCIP_LPSOLSTAT_NOTSOLVED

@ SCIP_LPSOLSTAT_TIMELIMIT

@ SCIP_LPSOLSTAT_UNBOUNDEDRAY

@ SCIP_LPSOLSTAT_INFEASIBLE

@ SCIP_LPSOLSTAT_OBJLIMIT

@ SCIP_LPSOLSTAT_ITERLIMIT

enum SCIP_LPAlgo SCIP_LPALGO

enum SCIP_SideType SCIP_SIDETYPE

@ SCIP_PRICING_STEEPQSTART

@ SCIP_PRICING_LPIDEFAULT

enum SCIP_Pricing SCIP_PRICING

enum SCIP_LPParam SCIP_LPPARAM

@ SCIP_LPPAR_BARRIERCONVTOL

@ SCIP_LPPAR_CONDITIONLIMIT

@ SCIP_LPPAR_ROWREPSWITCH

enum SCIP_BaseStat SCIP_BASESTAT

enum SCIP_VerbLevel SCIP_VERBLEVEL

enum SCIP_Objsense SCIP_OBJSENSE

enum SCIP_Retcode SCIP_RETCODE

SCIP_Real SCIPvarGetRelaxSol(SCIP_VAR *var, SCIP_SET *set)

internal methods for problem variables


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