HiGHS icon indicating copy to clipboard operation
HiGHS copied to clipboard

Some sample real-world MPS files and their results from HiGHS

Open MincingWords opened this issue 1 month ago • 2 comments

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: 869cbd4df): 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) 0s

Performed postsolve Solving the original LP from the solution after postsolve

Model 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: 869cbd4df): 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: 869cbd4df): 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) 260s

Performed 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 postsolve

Model 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.

MincingWords avatar Nov 20 '25 01:11 MincingWords

Just passing along some real-world usage experiences to the HiGHS developers; I'd appreciate any feedback or opinions.

I assume that you're looking at HiGHS as an alternative to OML

I've only had OML mentioned to me once before. From the look of its home page "©Copyright 1998-2011" it doesn't look like an active project.

I guess that the MPS read error is giving you some concern. I'll have a look to see what's causing the issue. It's most likely that your "modelling system" is putting out an MPS file that includes some extension to the MPS standard that OML could read, but we can't. I won't be able to look at this for a day or so, as I'm currently on holiday.

The --parallel option means that the parallel simplex solver is used, but the advantage of this is rarely much, and the code is not quite as robust as the serial dual simplex solver. You're right not to use it.

My expectation is that HiGHS will solve your LPs rather faster than OML, particularly if they are amenable to being solved using our interior point solver (try the option --solver=ipm).

jajhall avatar Nov 20 '25 02:11 jajhall

The problem with 'EFD_2029.mps' is that the file is incomplete. It ends in the COLUMNS section with

O0462233 SRmiss3C 0.35432097

and an MPS file must end with a

ENDATA

statement. This typically comes after a RHS section defining the RHS of the constraints, or (as in 'EFD_2026.mps') a BOUNDS section defining the bounds on variables.

It's not just that

ENDATA

is missing. If I add it then the optimal solution is 0 - because all constraint RHS values are 0.

jajhall avatar Nov 20 '25 08:11 jajhall

Closed, as not really an issue

jajhall avatar Dec 18 '25 01:12 jajhall