pyomo
pyomo copied to clipboard
Add grey box objectives to Pyomo.DoE
Summary/Motivation:
Pyomo.DoE currently can only compute trace-optimal and D-optimal experimental designs. We are expanding the suite to be able to compute E-optimal and ME-optimal (or condition number optimal) designs. Given that these formulations require computing eigenvalues on the fly, we have updated Pyomo.DoE to make use of the ExternalGreyBox modules.
This PR adds grey box capabilities to Pyomo.DoE.
Changes proposed in this PR:
- Added grey box capabilities within Pyomo.DoE
- Ability to compute E-optimal and ME-optimal designs using these grey box capabilities
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.
@blnicho So I changed my imports to be pyomo.common.dependencies imports and the error has shifted to a pynumero import error with numpy (https://github.com/Pyomo/pyomo/actions/runs/15333169753/job/43144645869?pr=3606).
Should I also change those imports to be from pyomo.common.dependencies?
@blnicho This should be ready review. I did the quick solution for the issues I brought up yesterday (6/3/25) at the dev meeting.
Let me know if you need anything else from me.
@blnicho @mrmundt @michaelbynum @jsiirola I think this is ready for another review
Hey @blnicho, @mrmundt, @michaelbynum. I've addressed @mrmundt's initial comments and this is ready for another round of reviews.
@djlaky - You have some file conflicts that need to be resolved before tests can run.
@djlaky - You have some file conflicts that need to be resolved before tests can run.
Thanks, I've resolved the conflicts.
I think this is OK. In the future, I think I would recommend refactoring DoE to use functions / function pointers instead of all of these large ""if trees".
Good suggestion. I have added it to our rolling enhancement list here: #3345