-
Notifications
You must be signed in to change notification settings - Fork 235
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rename SVDToolbox to JacobianAnalysisToolbox #1297
Conversation
…4/idaes-pse into degeneracy_hunter_bug
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #1297 +/- ##
==========================================
- Coverage 77.41% 77.40% -0.01%
==========================================
Files 390 390
Lines 63402 63404 +2
Branches 11658 11659 +1
==========================================
- Hits 49080 49077 -3
- Misses 11793 11798 +5
Partials 2529 2529 ☔ View full report in Codecov by Sentry. |
I think this name might be general enough to be somewhat confusing. If we go the route of a general Jacobian analysis toolbox, I would like to start with a well-defined idea of what we are caching and how we specify the method to use for a particular analysis. |
@Robbybp Would your suggestion be to leave this as-is and put the new ill-conditioning tools into |
@Robbybp It'd be my preference that the Jacobian analysis tools in the normal diagnostics toolbox get merged over here, rather than the other way around. Some example workflow ended up in my FOCAPD paper, where you determine that something is a problematic Var using the DiagnosticsToolbox then you have to use the SVDToolbox to figure out which Constraints it appears in. The other option is adding those methods to the normal diagnostics toolbox. |
That is my current recommendation, at least for the parallel row/col identifier. There is nothing that stops us from adding I am less confident about what to do with the optimization-based analysis tool. I still think this is very similar to Degeneracy Hunter:
I think the right option medium-term is probably to combine these into a more general formulation, so we don't have multiple LP/MIP-based ill-conditioning/degeneracy analyzers lying around. For now I think I advocating putting the analyzer into a stand-alone function. |
I would like to keep as much functionality accessible from the main Our current approach is something like: dt = DiagnosticsToolbox(m)
dt.report_numeric_issues()
dt.prepare_svd_toolbox()
dt.svd_toolbox.get_rank_of_equality_constraints() which I think is not bad. |
I agree - I think the ModelAnalyzer should eventually be rolled into Degeneracy Hunter. ModelAnalyzer uses a LASSO approach as compared to Degeneracy Hunter's best subset selection approach. For very degenerate problems I think the ModelAnalzyer could benefit from an implementation which is more integrated with a specific LP code. In either case the LP or MIP ends up sharing some of the same issues as the original NLP. |
Fixes None
Summary/Motivation:
In preparation for adding some additional diagnostics tools, this PR renamed the SVDToolbox to the more generic JacobianAnalysisToolbox. Seeing as the
SVDToolbox
was added after the v2.2 release, this should not cause any backward compatibility issues.Examples tests will fail until IDAES/examples#82 is merged.
Changes proposed in this PR:
Legal Acknowledgement
By contributing to this software project, I agree to the following terms and conditions for my contribution: