coin lp a status report
DESCRIPTION
Coin LP A Status Report. John Forrest IBM Research. Goals for CLP. - PowerPoint PPT PresentationTRANSCRIPT
Coin LPA Status Report
John ForrestIBM Research
"... 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
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.
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
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
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
Netlib comparisons(Dual)
0
100
200
300
400
500
600
netlib maros-r7 pilot pilot87 d2q06c dfl001 fit2d fit2p
Glpk
Osl
Cplex
Clp
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
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
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
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
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
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
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
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?
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
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
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
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
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
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
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
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?