@@ -8,32 +8,50 @@ All code to run the benchmarks is available at [https://github.com/metab0t/PyOpt
88:widths: auto
99:align: center
1010
11- | Model | Variables | C++ | PyOptInterface | JuMP | gurobipy | Pyomo |
12- | ---------- | ----------- | ----- | ---------------- | ------ | ---------- | ------- |
13- | fac-25 | 67651 | 0.2 | 0.2 | 0.2 | 1.2 | 4.1 |
14- | fac-50 | 520301 | 0.8 | 1.2 | 1.8 | 9.7 | 32.7 |
15- | fac-75 | 1732951 | 2.7 | 4.1 | 6.6 | 32.5 | 119.3 |
16- | fac-100 | 4080601 | 6.3 | 10.0 | 17.8 | 79.1 | 286.3 |
17- | lqcp-500 | 251501 | 0.9 | 1.5 | 1.3 | 6.3 | 23.8 |
18- | lqcp-1000| 1003001 | 3.7 | 6.0 | 6.1 | 26.7 | 106.6 |
19- | lqcp-1500| 2254501 | 8.3 | 14.0 | 17.7 | 61.8 | 234.0 |
20- | lqcp-2000| 4006001 | 14.5| 24.9 | 38.3 | 106.9 | 444.1 |
11+ | Model | Variables | C++ | PyOptInterface | JuMP | gurobipy | Pyomo |
12+ | --------- | --------- | ---- | -------------- | ---- | -------- | ----- |
13+ | fac-25 | 67651 | 0.2 | 0.2 | 0.2 | 1.2 | 4.1 |
14+ | fac-50 | 520301 | 0.8 | 1.2 | 1.8 | 9.7 | 32.7 |
15+ | fac-75 | 1732951 | 2.7 | 4.1 | 6.6 | 32.5 | 119.3 |
16+ | fac-100 | 4080601 | 6.3 | 10.0 | 17.8 | 79.1 | 286.3 |
17+ | lqcp-500 | 251501 | 0.9 | 1.5 | 1.3 | 6.3 | 23.8 |
18+ | lqcp-1000 | 1003001 | 3.7 | 6.0 | 6.1 | 26.7 | 106.6 |
19+ | lqcp-1500 | 2254501 | 8.3 | 14.0 | 17.7 | 61.8 | 234.0 |
20+ | lqcp-2000 | 4006001 | 14.5 | 24.9 | 38.3 | 106.9 | 444.1 |
2121
2222:::
2323
2424:::{table} Time (second) to generate model and pass it to COPT optimizer.
2525:widths: auto
2626:align: center
2727
28- | Model | Variables | C++ | PyOptInterface | JuMP | coptpy | Pyomo |
29- | ---------- | ----------- | ----- | ---------------- | ------ | -------- | ------- |
30- | fac-25 | 67651 | 0.3 | 0.2 | 0.3 | 0.6 | 4.1 |
31- | fac-50 | 520301 | 2.2 | 1.5 | 2.7 | 5.4 | 32.8 |
32- | fac-75 | 1732951 | 8.1 | 6.6 | 10.2 | 20.3 | 117.4 |
33- | fac-100 | 4080601 | 22.4| 23.4 | 30.3 | 58.0 | 284.0 |
34- | lqcp-500 | 251501 | 3.8 | 3.1 | 3.0 | 6.6 | 26.4 |
35- | lqcp-1000| 1003001 | 16.0| 15.5 | 13.9 | 28.1 | 112.1 |
36- | lqcp-1500| 2254501 | 37.6| 32.4 | 33.7 | 64.6 | 249.3 |
37- | lqcp-2000| 4006001 | 68.2| 60.3 | 66.2 | 118.4 | 502.4 |
28+ | Model | Variables | C++ | PyOptInterface | JuMP | coptpy | Pyomo |
29+ | --------- | --------- | ---- | -------------- | ---- | ------ | ----- |
30+ | fac-25 | 67651 | 0.3 | 0.2 | 0.3 | 0.6 | 4.1 |
31+ | fac-50 | 520301 | 2.2 | 1.5 | 2.7 | 5.4 | 32.8 |
32+ | fac-75 | 1732951 | 8.1 | 6.6 | 10.2 | 20.3 | 117.4 |
33+ | fac-100 | 4080601 | 22.4 | 23.4 | 30.3 | 58.0 | 284.0 |
34+ | lqcp-500 | 251501 | 3.8 | 3.1 | 3.0 | 6.6 | 26.4 |
35+ | lqcp-1000 | 1003001 | 16.0 | 15.5 | 13.9 | 28.1 | 112.1 |
36+ | lqcp-1500 | 2254501 | 37.6 | 32.4 | 33.7 | 64.6 | 249.3 |
37+ | lqcp-2000 | 4006001 | 68.2 | 60.3 | 66.2 | 118.4 | 502.4 |
3838
3939:::
40+
41+ Recently, there are a lot of requests to test the performance of PyOptInterface compared with [ linopy] ([ https://gith ] ( https://github.com/PyPSA/linopy ) and [ cvxpy] ( https://github.com/cvxpy/cvxpy ) , so we prepare a [ benchmark] ( https://github.com/metab0t/PyOptInterface/blob/master/bench/bench_linopy_cvxpy.py ) .
42+
43+ This is the result of benchmark, where the performance of PyOptInterface exceeds linopy and cvxpy significantly.
44+
45+ :::{table} Time (second) to generate and solve a linear programming model with Gurobi optimizer.
46+ :widths: auto
47+ :align: center
48+
49+ | N | Variables | PyOptInterface | linopy | cvxpy |
50+ | --- | --------- | -------------- | -------- | --------- |
51+ | 100 | 20000 | 0.112849 | 0.422408 | 0.373407 |
52+ | 200 | 80000 | 0.294830 | 1.118702 | 1.575949 |
53+ | 300 | 180000 | 0.710237 | 2.462809 | 4.038862 |
54+ | 400 | 320000 | 1.256276 | 4.535225 | 8.687895 |
55+ | 500 | 500000 | 2.189127 | 8.243707 | 18.941519 |
56+
57+ :::
0 commit comments