HiGHS icon indicating copy to clipboard operation
HiGHS copied to clipboard

HiGHS Falsely Declares a MILP as Integer-Infeasible

Open jeffreydeankelly2 opened this issue 3 years ago • 8 comments

I have been going through our set of internal industrial discrete and linear optimization problems (MILP) and have noticed that for the problem found in the LP and MPS files attached (re-typed as *.txt to allow attachment), that HiGHS declares the problem as integer-infeasible when in fact it is not.

This problem solves correctly by several other MILP solvers and when I add penalties or excursion variables to the problem and run with HiGHS it solves correctly and all of the penalty/excursion variables are zero (0.0) at the provably optimal solution.

In addition, if I turn the presolve "off", then HiGHS solves correctly.

FYI - these LP and MPS do not have penalty/excursion variables added. JFSC-IMF-QL.lp.txt JFSC-IMF-QL.mps.txt

jeffreydeankelly2 avatar Aug 16 '22 11:08 jeffreydeankelly2

The lp and mps files seem to be different. The .lp file seems to be infeasible regardless of presolve and also with other solvers. For the mps-File I can reproduce the behavior

lgottwald avatar Aug 17 '22 16:08 lgottwald

Thanks, I am not sure why the LP and MPS files are different as I called the same HiGHS Highs_writeModel but with a different file of ".lp" and ".mps"

Perhaps this is another issue to raise but I will leave that up to your discretion as my software does not read LP nor MPS files.

jeffreydeankelly2 avatar Aug 17 '22 17:08 jeffreydeankelly2

I'll see if I can identify why the two files are different.

Thanks for doing this testing @jeffreydeankelly2

jajhall avatar Aug 17 '22 18:08 jajhall

No problem, in fact HiGHS is working well even in our SLP algorithm for nonlinear problems so the 3 issues I have posted so far are very small compared to the number of internal industrial optimization test problems solved.

jeffreydeankelly2 avatar Aug 17 '22 18:08 jeffreydeankelly2

Thanks, that's good to hear. It's used in our SLP solver for a particular industrial problem, so I know how hard these can be numerically

jajhall avatar Aug 17 '22 18:08 jajhall

Thanks, I am not sure why the LP and MPS files are different as I called the same HiGHS Highs_writeModel but with a different file of ".lp" and ".mps"

In the .lp file, values are written to 6sf, but in the MPS file it's about 14sf. They should be the same

jajhall avatar Aug 17 '22 19:08 jajhall

@lgottwald In resolving the issues with the .lp file writer (see #938) I've found a very simple example where presolve claims false infeasibility. See small_mip.lp.txt with and without presolve. Note that this MIP is check/instances/small_mip.mps and has 2-sided bounds on a row. These are converted into separate 1-sided lower- and upper-bounded constraints when writing the .lp file so there are two parallel rows. Is this any help?

It happens with master

jajhall avatar Aug 20 '22 12:08 jajhall

This issue has been tracked down to implied column bounds being incorrect after the aggregator is applied: the new terms introduced can lead to an increase (decrease) in the implied upper (lower) bound that isn't identified.

Strange that this hasn't caused more issues @lgottwald

The fix will take a little time

jajhall avatar Sep 29 '23 15:09 jajhall