Download presentation
Presentation is loading. Please wait.
Published byPekka Niemelä Modified over 5 years ago
1
Coin LP A Status Report John Forrest IBM Research
2
Goals for CLP "... 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
3
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.
4
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 Needs more pricing flexibility in Primal Osl Osl network Clp Clp network Iterations 10057 13747 3293 3524 Time 11.81 0.27 28.89 10.26
5
Changes since first release
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
6
Netlib comparisons (Primal)
7
Netlib comparisons (Dual)
8
First Mittelmann test set
(without nug15 and qap15) Rows Columns Elements baxter 27441 15128 95971 dano3mip 3202 13873 79655 dbir2 18906 27355 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 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 seymour 4944 1372 33549 sgpf5y6 246077 308634 828070 storm-125 66185 157496 418321 watson_1 201155 383927 world 34506 32734 164470
9
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 rows 308,634 columns 828,070 elements Not like old days Interestingly Osl spends all its time in presolve while Clp spends its time in postsolve glpk osl clp cplex Rows 143546 19499 19499 19499 Columns 170888 81995 39029 39020 Elements 465756 256439 109256 109247 Time 2869 50.7 55.0 4.5 Pre/Post time ? 15.3 36.4! 2.6
10
Primal comparisons on Mittelmann test set 1
(28 problems) Glpk / Clp Osl / Clp small is < 60 secs, medium < 10 mins (of 3 probs > rows, 2 are small!) glpk only does dual if dual feasible (FOUR cases)
11
Dual comparisons on Mittelmann test set 1
(28 problems) Glpk **/ Clp Osl / Clp small is < 60 secs, medium < 10 mins (of 3 probs > rows, 2 are small!) glpk only does dual if dual feasible (FOUR cases)
12
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
13
Comparisons on Mittelmann test set 1
(Osl against Clp) Primal Dual small is < 60 secs, medium < 10 mins (of 3 probs > rows, 2 are small!) glpk only does dual if dual feasible (FOUR cases)
14
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
15
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?
16
Cplex/ Clp comparisons on Mittelmann test set 1
(28 problems) Primal Dual small is < 60 secs, medium < 10 mins (of 3 probs > rows, 2 are small!) glpk only does dual if dual feasible (FOUR cases)
17
Second Mittelmann test set
(includes nug15,20 and qap15) Rows Columns Elements dano3mip 3202 13873 79655 dbic1 43200 183235 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 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 qap12 3192 8856 38304 qap15 6330 22275 94950 rail4284 4284 rlfprim 58866 8052 265927 sgpf5y6 246077 308634 828070 storm-125 66185 157496 418321 storm-1000 528185 watson_2 352013 671861 world 34506 32734 164470
18
Primal Cplex - Clp comparison (Second Mittelmann test set)
small - faster < a minutes, medium faster < 10 minutes
19
Dual Cplex - Clp comparison (Second Mittelmann test set)
small - faster < a minutes, medium faster < 10 minutes
20
Large ? small? Primal ? Dual ?
rows columns nonzeros neos3 132568 1560 552519 nug20 15240 72600 304800 stormG2_1000 528185 watson_2 352013 671861 Cplex primal Cplex dual Clp primal Clp dual neos difference could be scaling storm and watson primal ? cache and disconnect 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 47586 557884 2741 watson 193052 1486 173247 307 471995 6609 203932 267
21
Primal Cplex - Clp comparison (problems added to test set)
small - faster < a minutes, medium faster < 10 minutes
22
Dual Cplex - Clp comparison (problems added to test set)
small - faster < a minutes, medium faster < 10 minutes
23
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?
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.