pyomo icon indicating copy to clipboard operation
pyomo copied to clipboard

Code for infeasibility diagnostics called mis

Open DLWoodruff opened this issue 11 months ago • 11 comments

Fixes # .

Summary/Motivation:

Finds sets of actions that each, independently, would result in feasibility. It also computes a minimal intractable system (which is not guaranteed to be unique). It was written by Ben Knueven as part of the watertap project and is governed by a license shown at the top of the mis.py.

The algortithms come from John Chinneck's slides, see: https://www.sce.carleton.ca/faculty/chinneck/docs/CPAIOR07InfeasibilityTutorial.pdf

Changes proposed in this PR:

  • create a new package called mis in contrib

Legal Acknowledgement

By contributing to this software project, I have read the contribution guide and agree to the following terms and conditions for my contribution:

  1. I agree my contributions are submitted under the BSD license.
  2. I represent I am authorized to make the contributions and grant the license. If my employer has rights to intellectual property that includes these contributions, I represent that I have received permission to make contributions and grant the required license on behalf of that employer.

DLWoodruff avatar Mar 01 '24 17:03 DLWoodruff

Some tests seem to be failing due to infrastructure issues (e.g. an Xpress license seized the once-every-four-years opportunity to expire on Feb 29!)

DLWoodruff avatar Mar 01 '24 22:03 DLWoodruff

Some tests seem to be failing due to infrastructure issues (e.g. an Xpress license seized the once-every-four-years opportunity to expire on Feb 29!)

Infrastructure issues have been fixed - I merged the changes into your branch.

mrmundt avatar Mar 05 '24 14:03 mrmundt

Now that the infrastructure issues are fixed (Thanks!) some tests are failing due to contention for temp files, but only on windows platforms. I will try to get some help with this.

DLWoodruff avatar Mar 05 '24 17:03 DLWoodruff

@DLWoodruff @bknueven would either of you be able to attend a future Pyomo dev meeting to talk about this PR? We're curious if this should be added as an alternative in pyomo.contrib.iis rather than a stand-alone contrib package.

blnicho avatar Mar 12 '24 21:03 blnicho

@DLWoodruff @bknueven would either of you be able to attend a future Pyomo dev meeting to talk about this PR? We're curious if this should be added as an alternative in pyomo.contrib.iis rather than a stand-alone contrib package.

I would be able to attend -- though next week is not good.

I agree that this capability should probably be folded into pyomo.contrib.iis.

bknueven avatar Mar 12 '24 22:03 bknueven

We're curious if this should be added as an alternative in pyomo.contrib.iis rather than a stand-alone contrib package.

Would it be more appropriate to have a "new" contrib package called infeasible or something similar which had both the current solver-based IIS and this pyomo-based MIS/IIS? It could be a home for additional infeasibility diagnostic tools.

bknueven avatar Mar 30 '24 02:03 bknueven

All tests are passing. On Windows machines, the test will leave behind a small log file. This is somewhat uncool, but I can't find a way around it and it does not seem worth it to hold up the inclusion of this package in contrib.

DLWoodruff avatar Mar 30 '24 17:03 DLWoodruff

The codecov failure is based on errors made by codecov due, apparently, to the fact that I merged main. The code it is complaining about it not touched by this PR. The code that is touched by this PR has adequate coverage. I am reluctant to merge in main again. I think this PR is ready to merge.

DLWoodruff avatar Apr 04 '24 14:04 DLWoodruff

Now the codecov failure seems to be real. I will try to increase coverage

DLWoodruff avatar Apr 11 '24 16:04 DLWoodruff

All conversations have been resolved. Thanks again for the thorough review.

DLWoodruff avatar Apr 17 '24 19:04 DLWoodruff

All conversations have been resolved and thanks again for the thorough and constructive reviews.

DLWoodruff avatar Apr 22 '24 17:04 DLWoodruff