Skip to content

Conversation

@smondal13
Copy link
Contributor

@smondal13 smondal13 commented Dec 16, 2025

Fixes

Summary/Motivation:

-In the old definition of A-optimality (we will call it pseudo A-optimality from now on), DoE computed the trace of the Fisher Information Matrix (FIM), as few studies used that definition. However, that is not correct, and new literature mentions the trace of the inverse of the FIM as A-optimality. This PR has adopted this new definition of A-optimality in DoE.

Changes proposed in this PR:

  • Change the old A-optimality to pseudo A-optimality
  • Implement a new definition of A-optimality (=trace(inverse of FIM))

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.

smondal13 and others added 30 commits November 10, 2025 20:14
…he experiment class to compute the parameters. it is now fixed.
…g test in test_examples.py

2. Fix the index issue in test_parmest. New column mismathc issue arises.
…d the test is successful except "FileNotFoundError: [Errno 2] No such file or directory: 'mpiexec'"
Co-authored-by: Bethany Nicholson <[email protected]>
…ample did not solve to the desired point using A-optimality. However, when initialized to small value `1e-5`, it solved to the optimal point.
…scheme, the MM model solved without initialization from outside.
…`doe/tests`` files to reflect the changes.
…and `_Cholesky_option = False`. Add flag for functions are the only used in `trace` calculation.
@smondal13
Copy link
Contributor Author

@adowling2 @blnicho This PR is ready for initial review.

Copy link
Member

Choose a reason for hiding this comment

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

Looks like you replaced every instance of trace with pseudo_trace in these tests. trace is still a valid objective type so I'm curious why you wouldn't want a mix of tests with both options.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have not done any testing for the new trace(trace of the covariance matrix). The previous Pyomo.DoE versions that used trace actually meant trace of Fisher Information Matrix (FIM). Now, following Dan's Greybox paper, we are referring to the trace of Fisher Information Matrix (FIM) as pseudo_trace. That's why I have replaced all instances of trace with pseudo_trace. We need new tests for the new trace (trace of the covariance matrix). I plan to do that after the review. Does this answer your question? It may be confusing.

Copy link
Member

Choose a reason for hiding this comment

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

Thanks for the clarification. I think we should include those tests in this PR before it gets merged.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I will add tests for the new trace (trace of the covariance matrix). This PR is for initial review to determine whether I need to make any major changes before I proceed with the testing. Thanks for reviewing.

smondal13 and others added 2 commits December 18, 2025 15:12
Replace `model` with `m` in `cholesky_LLinv_imp()`

Co-authored-by: Bethany Nicholson <[email protected]>
Copy link
Member

@blnicho blnicho left a comment

Choose a reason for hiding this comment

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

@smondal13 thanks for addressing my initial review comments. I think these changes look reasonable so far but would like to see tests for the corrected A-optimality before I'll approve the PR.

@blnicho blnicho self-requested a review December 18, 2025 21:24
Copy link
Contributor Author

@smondal13 smondal13 Dec 19, 2025

Choose a reason for hiding this comment

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

@blnicho @adowling2 I have created a DoE example for the rooney_biegler experiment, mainly for testing DoE. Where should this live? I can move it to parameter_estimation_example.py and rename the file to rooney_biegler_example.py or something similar. Or are you okay with the current standalone script?

@smondal13
Copy link
Contributor Author

@blnicho @adowling2 I have added tests for A-optimality and added tests for the plotting functionality in doe.py as well. This is now ready for final review.

Caution: I have merged PR Parmest: consolidate rooney biegler #3793 into this branch. Therefore,Parmest: consolidate rooney biegler #3793 needs to be merged before this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Ready for design review

Development

Successfully merging this pull request may close these issues.

3 participants