-
Notifications
You must be signed in to change notification settings - Fork 267
Description
Hello -
Just passing along some real-world usage experiences to the HiGHS developers; I'd appreciate any feedback or opinions.
I run a US energy market modeling system that uses several COTS software applications and a lot of Fortran code. Part of it uses Ketron OML which apparently can no longer be licensed for use and the current version of the modeling system doesn't require it. Successive (usually annual) releases of the modeling system have a component that is very expensive to license and therefore my client is faced with either bearing the cost of that component to run the current version of the modeling system or sticking with the previous version of the modeling system and finding a replacement for OML. With the modeling system's originators' help, I obtained three examples of the .MPS files that are sent to OML for processing (Google Drive link to tarball here); the results are as follows:
$ highs EFD_2026.mps
Running HiGHS 1.12.0 (git hash: 869cbd4): Copyright (c) 2025 HiGHS under MIT licence terms
Set option log_file to "HiGHS.log"
LP EFD_2026 has 8906 rows; 41890 cols; 429584 nonzeros
Coefficient ranges:
Matrix [2e-06, 3e+02]
Cost [3e-03, 9e+00]
Bound [6e-05, 1e+05]
RHS [4e-05, 1e+04]
WARNING: Problem has some excessively small column bounds
WARNING: Problem has some excessively small row bounds
Presolving model
7123 rows, 31374 cols, 391914 nonzeros 0s
Dependent equations search running on 63 equations with time limit of 1000.00s
Dependent equations search removed 0 rows and 0 nonzeros in 0.00s (limit = 1000.00s)
5682 rows, 28263 cols, 125314 nonzeros 0s
Presolve reductions: rows 5682(-3224); columns 28263(-13627); nonzeros 125314(-304270)
Solving the presolved LP
Using EKK dual simplex solver - serial
Iteration Objective Infeasibilities num(sum)
0 0.0000000000e+00 Pr: 1577(8820.43) 0s
3608 2.1692865156e+01 Pr: 0(0); Du: 0(1.78494e-08) 0s
3608 2.1692865156e+01 Pr: 0(0); Du: 0(1.78494e-08) 0sPerformed postsolve
Solving the original LP from the solution after postsolveModel name : EFD_2026
Model status : Optimal
Simplex iterations: 3608
Objective value : 2.1692865156e+01
P-D objective error : 0.0000000000e+00
HiGHS run time : 0.55
HiGHS did not like EFD_2029.mps:
$ highs EFD_2029.mps
Running HiGHS 1.12.0 (git hash: 869cbd4): Copyright (c) 2025 HiGHS under MIT licence terms
Set option log_file to "HiGHS.log"
ERROR: Parser error reading EFD_2029.mps
Error loading file
But it was fine with EMM_2022.mps:
$ highs EMM_2022.mps
Running HiGHS 1.12.0 (git hash: 869cbd4): Copyright (c) 2025 HiGHS under MIT licence terms
Set option log_file to "HiGHS.log"
LP EMM_2022 has 56562 rows; 228586 cols; 1536300 nonzeros
Coefficient ranges:
Matrix [1e-06, 7e+01]
Cost [1e-04, 3e+08]
Bound [3e-06, 1e+06]
RHS [2e-04, 1e+06]
WARNING: Problem has some excessively large costs
WARNING: Problem has some excessively small column bounds
WARNING: Problem has some excessively large column bounds
WARNING: Consider scaling the objective by 1e-3, or setting the user_objective_scale option to -8
WARNING: Consider scaling the bounds by 1e-1, or setting the user_bound_scale option to -1
Presolving model
31046 rows, 159045 cols, 1123425 nonzeros 0s
Dependent equations search running on 2151 equations with time limit of 1000.00s
Dependent equations search removed 0 rows and 0 nonzeros in 0.00s (limit = 1000.00s)
28121 rows, 142382 cols, 963444 nonzeros 1s
Presolve reductions: rows 28121(-28441); columns 142382(-86204); nonzeros 963444(-572856)
Solving the presolved LP
Using EKK dual simplex solver - serial
Iteration Objective Infeasibilities num(sum)
0 -2.8421144385e+04 Ph1: 3377(207038); Du: 5795(28421.1) 2s
9936 1.0485521724e+06 Pr: 5137(1.42896e+10); Du: 0(2.09751e-07) 7s
13032 1.3436666014e+06 Pr: 5382(3.0803e+08); Du: 0(1.37348e-08) 12s
15462 1.5747579436e+06 Pr: 5706(1.83277e+09); Du: 0(2.12906e-07) 17s
18202 1.7302052217e+06 Pr: 6110(2.93285e+08); Du: 0(4.57771e-07) 22s
21269 1.8179848207e+06 Pr: 6495(1.95066e+09); Du: 0(5.00188e-07) 27s
23725 1.9006376750e+06 Pr: 6432(2.3468e+08); Du: 0(4.72844e-07) 32s
26581 1.9533006135e+06 Pr: 6475(2.45925e+08); Du: 0(9.68209e-07) 38s
29167 1.9893143342e+06 Pr: 6476(1.5033e+08); Du: 0(7.05729e-07) 43s
30986 2.0175742452e+06 Pr: 6427(7.54638e+07); Du: 0(1.0885e-06) 48s
33489 2.0670029558e+06 Pr: 6337(1.80044e+08); Du: 0(1.19669e-06) 54s
35726 2.0978734872e+06 Pr: 6227(1.91446e+09); Du: 0(1.06621e-06) 59s
38116 2.1671331446e+06 Pr: 6128(5.44756e+08); Du: 0(1.00751e-06) 64s
39912 2.2076956976e+06 Pr: 6092(1.22775e+08); Du: 0(8.82604e-07) 69s
41573 2.2341657435e+06 Pr: 5947(5.38508e+07); Du: 0(7.88929e-07) 74s
43305 2.2640204255e+06 Pr: 6154(1.03964e+09); Du: 0(8.89382e-07) 79s
45043 2.2858576403e+06 Pr: 6049(2.32521e+10); Du: 0(8.24914e-07) 85s
46846 2.3611853051e+06 Pr: 5985(4.75619e+08); Du: 0(9.60958e-07) 90s
48550 2.3924536616e+06 Pr: 6051(1.93298e+10); Du: 0(9.13349e-07) 96s
49867 2.3943119092e+06 Pr: 5938(4.7856e+08); Du: 0(9.10993e-07) 101s
51338 2.4076075819e+06 Pr: 5854(6.61737e+08); Du: 0(9.07679e-07) 107s
52801 2.4125456120e+06 Pr: 5827(4.06328e+08); Du: 0(1.02403e-06) 112s
54300 2.4347949119e+06 Pr: 5890(5.38337e+08); Du: 0(1.19927e-06) 117s
55788 2.4407534095e+06 Pr: 5757(4.51727e+08); Du: 0(1.06149e-06) 123s
57299 2.4453642248e+06 Pr: 5772(6.96124e+07); Du: 0(9.35668e-07) 128s
58982 2.4655888988e+06 Pr: 5697(1.7087e+09); Du: 0(8.54863e-07) 134s
60717 2.4795066535e+06 Pr: 5647(1.58714e+10); Du: 0(9.90562e-07) 139s
62306 2.5041890969e+06 Pr: 5520(7.4239e+07); Du: 0(1.04471e-06) 144s
63886 2.5179534133e+06 Pr: 5411(2.85708e+07); Du: 0(1.10656e-06) 149s
65452 2.5217302705e+06 Pr: 5395(1.68432e+07); Du: 0(1.37491e-06) 155s
66971 2.5234901121e+06 Pr: 5277(1.79189e+07); Du: 0(1.39932e-06) 161s
68298 2.5265842590e+06 Pr: 5219(5.77611e+07); Du: 0(1.30898e-06) 166s
69860 2.5312696052e+06 Pr: 5076(2.04017e+08); Du: 0(1.56761e-06) 171s
71425 2.5374195904e+06 Pr: 5154(1.36003e+08); Du: 0(1.28354e-06) 177s
73080 2.5488320573e+06 Pr: 4918(6.25098e+08); Du: 0(1.32874e-06) 182s
75021 2.5835875540e+06 Pr: 4622(5.01308e+07); Du: 0(1.29676e-06) 187s
76963 2.5979135377e+06 Pr: 4722(3.22904e+08); Du: 0(1.24983e-06) 192s
78843 2.6104294861e+06 Pr: 4310(7.49531e+06); Du: 0(1.51143e-06) 198s
80377 2.6132291286e+06 Pr: 4403(3.40719e+08); Du: 0(1.10651e-06) 203s
81841 2.6149896466e+06 Pr: 4333(2.72465e+06); Du: 0(1.09261e-06) 208s
83279 2.6157705686e+06 Pr: 4506(9.78855e+08); Du: 0(1.11317e-06) 214s
85177 2.6220374961e+06 Pr: 4082(8.93022e+07); Du: 0(1.10612e-06) 220s
86627 2.6227001708e+06 Pr: 4359(3.91146e+07); Du: 0(1.24992e-06) 225s
88138 2.6247611800e+06 Pr: 3909(2.15613e+06); Du: 0(1.43151e-06) 230s
89553 2.6253817030e+06 Pr: 3856(2.57916e+06); Du: 0(1.22451e-06) 235s
91626 2.6344532435e+06 Pr: 3353(691315); Du: 0(1.97455e-06) 240s
93940 2.6409676496e+06 Pr: 3216(8.19565e+06); Du: 0(1.6094e-06) 246s
96278 2.6469424378e+06 Pr: 2846(1.249e+06); Du: 0(1.46698e-06) 251s
98937 2.6500065682e+06 Pr: 2214(19467.5); Du: 0(1.26238e-06) 256s
103977 2.6524980521e+06 Pr: 0(0); Du: 0(2.0009e-06) 260s
103977 2.6524980521e+06 Pr: 0(0); Du: 0(2.0009e-06) 260s
Using EKK primal simplex solver
Iteration Objective Infeasibilities num(sum)
103977 2.6524980521e+06 Pr: 0(0); Du: 18(2.03913e-05) 260s
104014 2.6524980520e+06 Pr: 0(0); Du: 0(7.48358e-07) 260sPerformed postsolve
Solving the original LP from the solution after postsolve
Using EKK primal simplex solver
Iteration Objective Infeasibilities num(sum)
104014 2.6524980520e+06 Pr: 0(0); Du: 3(1.79213e-06) 260s
104017 2.6524980520e+06 Pr: 0(0); Du: 0(1.35213e-06) 260s
Required 3 simplex iterations after postsolveModel name : EMM_2022
Model status : Optimal
Simplex iterations: 104017
Objective value : 2.6524980520e+06
P-D objective error : 1.3166678836e-15
HiGHS run time : 260.46
Doing that last one with --parallel on was taking a lot longer and I eventually stopped it.