pyomo
pyomo copied to clipboard
Pyomo.DoE refactor: Development plan for remaining functionality upgrades and future vision
Summary
The purpose of this meta issue is to track our development plans for Pyomo.DoE after the refactor (August 2024 release). This combines the remaining issues from #2610
Changes
Finished Requests as of Summer 2025 (June 6th, 2025):
- [x] Allow Param types for
unknown_parametersandexperiment_inputs(automatically change into Var types) -- Convention is now to always haveVarfor the suffixesunknown_parametersandexperiment_inputs - [x] Add grey box objective function calculation (possibly required for some of the above objective functions)
- [x] Add more objective types (E-opt, ME-opt) -- Completed with greybox additions
Immediate functionality upgrades (Summer 2025): Lower Effort
- [ ] Move Enum definition to the User side
- [ ] Trim input attribute list for
DesignOfExperimentsconstructor (e.g., push some to get/set functions) - [ ] Allow user-defined models --> Add safe naming conventions as to not overwrite existing features
- [ ] Add check for objective functions on user-defined models when running
compute_FIM - [ ] Safeguard solver calls to check if results can load into the model --> Display verbose error for users
- [ ] Reformulate results dictionary to be less fragile --> Overwriting issues
- [ ] Add metadata, other useful data to the results
- [ ] Make error messages on solver failures more verbose
- [x] Wrap code to 88 columns to follow style consistency and black requirements
- [ ] Ensure FIM output and prior input are consistent with scaling; Important for automated workflows
Higher Effort
- [ ] Allow users to supply a
reinitialize_unknown_parametersfunction with theirExperimentobject (Allows optimalpyomo.doewithout rebuilding the whole model from scratch; multistart or other bootstrapping-type methods withparmest) @sscini - [ ] Overhaul sensitivity plotting functionality to avoid using strings
- [ ] Improve plotting functionalities to include more than 2 design variables (pairwise heatmaps)
Future Features (Fall 2025 and beyond):
- [ ] Allow initialization for finite difference model instances using ‘kaug’
- [ ] Generalize measurement variance to consider correlations (not just diagonal); @slilonfe5 @smondal13
- [ ] Add more objective types (e.g., G-opt, V-opt, etc.); may be related to @smondal13 parameter uncertainty work
- [ ] Add optimal multi-experiment decision-making (simultaneous or sequential optimization for batches of experiments); also @smondal13; loosely related to the parameter uncertainty work
- [ ] Support decomposition with parapint
Another more immediate feature:
- [ ] Ensure FIM output and prior input are consistent with scaling