pyomo
pyomo copied to clipboard
Code for infeasibility diagnostics called mis
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:
- I agree my contributions are submitted under the BSD license.
- 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.
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!)
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.
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 @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.
@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
.
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.
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.
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.
Now the codecov failure seems to be real. I will try to increase coverage
All conversations have been resolved. Thanks again for the thorough review.
All conversations have been resolved and thanks again for the thorough and constructive reviews.