coin lp a status report

23
Coin LP A Status Report John Forrest IBM Research

Upload: sabine

Post on 18-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

Coin LP A Status Report. John Forrest IBM Research. Goals for CLP. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Coin LP A Status Report

Coin LPA Status Report

John ForrestIBM Research

Page 2: Coin LP A Status Report

"... and my target would be to provide a solver which is no slower than a factor of 5 when compared to the best available simplex solvers. I would not aim for much better than that as the coding can get ugly." (April 26, 2002)

make it available under the Common Public License have the solver be as reliable as any commercially available solver reasonably modular first release July 30, 2002

Goals for CLP

Page 3: Coin LP A Status Report

Features

Dual Simplex, Primal Simplex - Quadratic to come. Single phase method using weighted components (but not using

heuristic to make more efficient (later)). Abstract class for pivot choice - relatively easy for user to create

own. Abstract class for matrix storage - easy for user to create own -

could even do column generation or dynamic matrices. Network matrix storage and factorization. May extend to ClpInterior in future.

Page 4: Coin LP A Status Report

Speed

Abstract matrix class and abstract pivot class make for slower code (especially in Primal).

Abstract matrix class means that there can not be tight coupling for network problems - but there is flexibility.

Aimed at large sparse problems - never touch a zero! Only version 0.98.5 Needs more pricing flexibility in Primal

Osl Osl network Clp Clp networkIterations 10057 13747 3293 3524Time 11.81 0.27 28.89 10.26

Page 5: Coin LP A Status Report

Changes since first release

0

50

100

150

200

250

300

350

400

450

500

unitTest Primal/no Dual/no

OSL

Clp then

Clp now

Presolve (Vernon Austel - tweaked by me). Now moved to Coin so other solvers can use.

Aggressive use of perturbation Tuning and advanced solutions,

especially for large problems Still no partial pricing in primal OSL withdrawn from marketing on

Tuesday All numbers based on runs done on

1.7Ghz ThinkPad Linux gcc 3.2 clp "file" or clp "file" -primalsimplex

Page 6: Coin LP A Status Report

Netlib comparisons(Primal)

0

100

200

300

400

500

600

netlib maros-r7 pilot pilot87 d2q06c dfl001 fit2d fit2p

Glpk 4.0

Osl 3

Cplex 8.1

Clp 0.98.5

Page 7: Coin LP A Status Report

Netlib comparisons(Dual)

0

100

200

300

400

500

600

netlib maros-r7 pilot pilot87 d2q06c dfl001 fit2d fit2p

Glpk

Osl

Cplex

Clp

Page 8: Coin LP A Status Report

First Mittelmann test set(without nug15 and qap15)

Rows Columns Elements

baxter 27441 15128 95971

dano3mip 3202 13873 79655

dbir2 18906 27355 1139637

dfl001 6071 12230 35632

fit2p 3000 13525 50284

fome12 24284 48920 145528

gen4 1537 4297 107102

ken-18 105127 154699 358171

l30 2701 15380 51169

lp22 2958 13434 65560

mod2 34774 31728 165129

nsct2 23003 14981 675156

nug12 3192 8856 38304

nw04 36 87482 636666

nw14 73 123409 904910

osa-60 10280 232966 1397793

pds-20 33874 105728 230200

pds-40 66844 212859 462128

pilot87 2030 4883 73152

qap12 3192 8856 38304

rlfprim 58866 8052 265927

route 20894 23923 187686

self 960 7364 1148845

seymour 4944 1372 33549

sgpf5y6 246077 308634 828070

storm-125 66185 157496 418321

watson_1 201155 383927 1052028

Page 9: Coin LP A Status Report

Importance of Presolve

Modern modelers expect Presolve to do a lot of work Capability and speed important in Presolve Problem sgpf5y6 looks large

246,077 rows308,634 columns828,070 elements

glpk osl clp cplexRows 143546 19499 19499 19499Columns 170888 81995 39029 39020Elements 465756 256439 109256 109247Time 2869 50.7 55.0 4.5Pre/Post time ? 15.3 36.4! 2.6

Page 10: Coin LP A Status Report

0

2

4

6

8

10

12

Glp

k >

150

%

Glp

k >

110%

SA

ME

**

Clp

> 1

10%

Clp

>15

0%

Clp

> 2

00%

Clp

> 1

000%

Glp

k fa

iled

< 1 hour

< 10 minutes

< 1 minutes

< 10 seconds

Primal comparisons on Mittelmann test set 1(28 problems)

0

2

4

6

8

10

12

< 1 hour

< 10 minutes

< 1 minutes

< 10 seconds

Glpk / Clp Osl / Clp

Page 11: Coin LP A Status Report

0

2

4

6

8

10

12

Glp

k >

150

%

Glp

k >

110%

SA

ME

**

Clp

> 1

10%

Clp

>15

0%

Clp

> 2

00%

Clp

> 1

000%

Clp

>10

000%

Glp

k fa

iled

< 10 minutes

< 1 minutes

< 10 seconds

Dual comparisons on Mittelmann test set 1(28 problems)

0

1

2

3

4

5

6

7

8

9

< 10 minutes

< 1 minutes

< 10 seconds

Glpk **/ Clp Osl / Clp

Page 12: Coin LP A Status Report

Large ? small? Primal ? Dual ?

rows columns nonzeros

pilot87 2030 4883 73152

ken-18 105127 154699 358171

iters glpk iters osl iters clp iters cplex

pilot 87 (P) 6512 49 6679 22.9 7045 41.8 9746 29.8

(D) dual 11257 54.8 9112 43.7 10532 39.5

ken-18 (P) 106319 6842 225468 544.4 86136 249.8 108988 122.4

(D) dual 11257 54.8 9112 43.7 49781 23.4

Page 13: Coin LP A Status Report

Comparisons on Mittelmann test set 1(Osl against Clp)

0

1

2

3

4

5

6

7

8

9

< 10 minutes

< 1 minutes

< 10 seconds

Primal Dual

0

2

4

6

8

10

12

< 1 hour

< 10 minutes

< 1 minutes

< 10 seconds

Page 14: Coin LP A Status Report

To do with Clp

Investigate Primal Simplex performance issues Improve performance on small problems Investigate dual infeasibilities after postsolve More stress testing Go to Version 1.00 and declare victory ... then back to Simple Branch and Bound

Page 15: Coin LP A Status Report

To do with Clp

Investigate Primal Simplex performance issues Improve performance on small problems Investigate dual infeasibilities after postsolve More stress testing Go to Version 1.00 and declare victory ... then back to Simple Branch and Bound

"... and my target would be to provide a solver which is no slower than a factor of 5 when compared to the best available simplex solvers."

... has Clp met its goals?

Page 16: Coin LP A Status Report

0

1

2

3

4

5

6

7

8

9

< 1 hour

< 10 minutes

< 1 minutes

< 10 seconds

Cplex/ Clp comparisons on Mittelmann test set 1(28 problems)

0

1

2

3

4

5

6

7

< 10 minutes

< 1 minutes

< 10 seconds

Primal Dual

Page 17: Coin LP A Status Report

Second Mittelmann test set(includes nug15,20 and qap15)

Rows Columns Elements

dano3mip 3202 13873 79655

dbic1 43200 183235 1038761

dfl001 6071 12230 35632

fome12 24284 48920 145528

fome13 48568 97840 285056

gen4 1537 4297 107102

ken-18 105127 154699 358171

l30 2701 15380 51169

lp22 2958 13434 65560

mod2 34774 31728 165129

neos 479119 36786 1047675

neos1 131581 1892 468009

neos2 132568 1560 552519

neos3 132568 1560 552519

nsct2 23003 14981 675156

nug15 6330 22275 94950

nug20 15240 72600 304800

pds-40 66844 212859 462128

pds-100 156243 505360 1086785

qap12 3192 8856 38304

qap15 6330 22275 94950

rail4284 4284 1092610 11279748

rlfprim 58866 8052 265927

sgpf5y6 246077 308634 828070

storm-125 66185 157496 418321

storm-1000 528185 1259121 3341696

watson_2 352013 671861 1841028

Page 18: Coin LP A Status Report

Primal Cplex - Clp comparison(Second Mittelmann test set)

0

1

2

3

4

5

6

7

8

Cplex

> 100

0%

Cplex

> 500

%

Cplex

> 200

%

Cplex

>150%

Cplex

>120%

Cplex

>110%

Same

***

Clp >

110

%

Clp >

120

%

Clp >

150

%

Clp >

200

%

Clp >

500

%

Clp >

100

0%

Cplex

DNF

> 1 hour

< 1 hour

< 10 minutes

< 1 minutes

< 10 seconds

Page 19: Coin LP A Status Report

Dual Cplex - Clp comparison(Second Mittelmann test set)

0

1

2

3

4

5

6

Cplex

> 100

0%

Cplex

> 500

%

Cplex

> 200

%

Cplex

>150%

Cplex

>120%

Cplex

>110%

Same

***

Clp >

110

%

Clp >

120

%

Clp >

150

%

Clp >

200

%

Clp >

500

%

Clp >

100

0%

Cplex

DNF

> 1 hour

< 1 hour

< 10 minutes

< 1 minutes

< 10 seconds

Page 20: Coin LP A Status Report

Large ? small? Primal ? Dual ?

rows columns nonzerosneos3 132568 1560 552519nug20 15240 72600 304800stormG2_1000 528185 1259121 3341696watson_2 352013 671861 1841028

iters time iters time iters time iters time

neos3 89186 7446 42805 6930 5726 322 5501 355

nug20 long long 200049 17776 204833 17831

stormG2 824851 16538 582408 3180 1344966 47586 557884 2741

watson 193052 1486 173247 307 471995 6609 203932 267

Cplex primal Cplex dual Clp primal Clp dual

Page 21: Coin LP A Status Report

Primal Cplex - Clp comparison(problems added to test set)

0

1

2

3

4

5

6

7

Cplex

> 100

0%

Cplex

> 500

%

Cplex

> 200

%

Cplex

>150%

Cplex

>120%

Cplex

>110%

Same

***

Clp >

110

%

Clp >

120

%

Clp >

150

%

Clp >

200

%

Clp >

500

%

Clp >

100

0%

Cplex

DNF

> 1 hour

< 1 hour

< 10 minutes

Page 22: Coin LP A Status Report

Dual Cplex - Clp comparison(problems added to test set)

0

0.5

1

1.5

2

2.5

3

3.5

Cplex

> 100

0%

Cplex

> 500

%

Cplex

> 200

%

Cplex

>150%

Cplex

>120%

Cplex

>110%

Same

***

Clp >

110

%

Clp >

120

%

Clp >

150

%

Clp >

200

%

Clp >

500

%

Clp >

100

0%

Cplex

DNF

> 1 hour

< 1 hour

< 10 minutes

Page 23: Coin LP A Status Report

To do with Clp

Investigate Primal Simplex performance issues More stress testing Still more to be done on Presolve (and speed) Improve performance on small problems Investigate dual infeasibilities after postsolve Go to Version 1.00 and declare victory ... then back to Simple Branch and Bound

"... and my target would be to provide a solver which is no slower than a factor of 5 when compared to the best available simplex solvers."

... has Clp met its goals?