idaes-pse icon indicating copy to clipboard operation
idaes-pse copied to clipboard

Model Diagnostics Checklist

Open andrewlee94 opened this issue 2 years ago • 4 comments
trafficstars

Related to #1208

This issue is to track general steps and tasks related to the new DiagnosticsToolbox class.

First Steps:

  • [x] Create new DiagnosticsToolbox class - PR #1228
  • [x] Structural Issues report
    • [x] Model statistics - PR #1228
    • [x] Unit consistency - PR #1228
    • [x] D-M decomposition - PR #1228
    • [x] Pyomo tool to detect potential evaluation errors - PR #1268
  • [x] Numerical Issues report - PR #1228
    • [x] Variables with no value or values near bounds or zero
    • [x] Scaling issues
    • [x] Jacobian analysis and condition number
  • [x] Methods to assert no diagnostics issues found (for testing) - PR #1228
  • [x] Basic documentation and examples - PR #1228
    • [x] Run a Usability Study with team

Next Steps:

  • [x] Integrate parameter sweep capabilities - PR #1284
    • [x] standardize API for parameter sweep/model convergence analysis
    • [x] Use Pysmo for parameter sampling
    • [x] Extend diagnostics tools to support multiple samples
  • [ ] Integrate Block-Triangularization decomposition into tools
    • [ ] Allow numerical analysis on independent sub-blocks
  • [x] Add SVD analysis to new class - PR #1256
    • [x] Address issues with SVD tool - at least partially in PR #1256
  • [x] Rewrite degeneracy hunter as part of new class - PR #1256
    • [x] deprecate old DegeneracyHunter class
  • [x] Extended documentation and examples
    • [x] Add tutorial for Diagnostics Toolbox to example - https://github.com/IDAES/examples/pull/78
    • [x] Update tutorial for Degeneracy Hunter to use new API - https://github.com/IDAES/examples/pull/79
  • [ ] Methods to return the variables/constraints associated with the feedback (e.g., "get_poorly_scaled_variables" etc) would be useful so that once I know which variables or constraints I need to scale, I can quickly access them (particularly in the case where there is discretization and there is a whole set of variables that need similar scaling)
  • [x] For the large residuals utility, printing more information (e.g., the magnitude of the residual, possibly sorted) would be helpful
  • [ ] Support for binary and integer variables
  • [ ] Residuals checks should ignore satisfied inequalities

Possible extensions:

~~- [ ] Tool to detect linearly dependent equations?~~

  • [ ] Tool to detect high index DAEs?

andrewlee94 avatar Jul 11 '23 18:07 andrewlee94