Skip to content

Enhance IIS#2644

Merged
jajhall merged 21 commits intolatestfrom
enhance-iis
Nov 17, 2025
Merged

Enhance IIS#2644
jajhall merged 21 commits intolatestfrom
enhance-iis

Conversation

@jajhall
Copy link
Copy Markdown
Member

@jajhall jajhall commented Nov 10, 2025

The existing IIS facility has been refactored and is much more robust. Rather than have HighsOption::iis_strategy be one from an enum of "strategy scenarios" it is now a bit map

  • 0 => "light strategy", which is always performed when Highs::getIis is called
  • 1 => From dual ray, which is currently unavailable
  • 2 => From the whole LP (solving an elasticity LP repeatedly (fixing positive elastic variables at zero) until no more elastic variables are positive, and using the fixed elastic variables to determine a set of infeasible rows, for which there is a corresponding set of columns with nonzeros in those rows that form an infeasibility set (IS)
  • 4 => Attempt to reduce the IS to an ISS
  • 8 => Prioritize low numbers of columns (rather than low numbers of rows) when reducing the IS

Hence, by just setting the 2-bit, an IS is formed reliably, and at not great expense (for an LP)

Enhancements to be added in due course

  • If time-out occurs when reducing the IS, return the current IS
  • Apply the strategies above to a MIP
  • Use the 16-bit to attempt to find an IIS of a MIP relaxation, rather than the MIP itself. The latter calculation is very expensive since it requires the solution of multiple MIPs.

Clearly if the relaxation of a MIP is infeasible, an IIS is found very much more cheaply. Indeed, it makes sense to test whether the relaxation is infeasible before attempting to find even an IS of a MIP.

@jajhall jajhall changed the base branch from master to latest November 10, 2025 23:41
@codecov
Copy link
Copy Markdown

codecov Bot commented Nov 10, 2025

Codecov Report

❌ Patch coverage is 93.01802% with 31 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.22%. Comparing base (e8e644f) to head (5f994bd).
⚠️ Report is 39 commits behind head on latest.

Files with missing lines Patch % Lines
highs/lp_data/HighsInterface.cpp 89.33% 16 Missing ⚠️
highs/lp_data/HighsIis.cpp 91.58% 9 Missing ⚠️
check/TestIis.cpp 95.83% 6 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##           latest    #2644   +/-   ##
=======================================
  Coverage   81.22%   81.22%           
=======================================
  Files         349      349           
  Lines       85780    85780           
=======================================
  Hits        69676    69676           
  Misses      16104    16104           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@jajhall jajhall requested review from galabovaa and odow November 11, 2025 14:40
Copy link
Copy Markdown
Contributor

@galabovaa galabovaa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@jajhall jajhall merged commit ec3930a into latest Nov 17, 2025
389 of 390 checks passed
@jajhall jajhall deleted the enhance-iis branch December 8, 2025 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants