Open
Description
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
Immediate functionality upgrades (Fall 2024):
- Move Enum definition to the User side
- Trim input attribute list for
DesignOfExperiments
constructor (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
- Add metadata, other useful data to the results
- Make error messages on solver failures more verbose
- Overhaul sensitivity plotting functionality to avoid using strings
- Improve plotting functionalities to include more than 2 design variables (pairwise heatmaps)
- Wrap code to 88 columns to follow style consistency and black requirements
Cross-functionality requirements to make parmest
and pyomo.DoE
more compatible (Fall 2024):
- Allow Param types for
unknown_parameters
andexperiment_inputs
(automatically change into Var types) - Add an update function for
unknown_parameters
values (Allows optimal DoE without rebuilding the whole model from scratch)
Future Features (Spring 2025 and beyond):
- Allow initialization for finite difference model instances using ‘kaug’
- Generalize measurement variance to consider correlations (not just diagonal)
- Add more objective types (e.g., modified E-opt, G-opt, V-opt, etc.)
- Add grey box objective function calculation (possibly required for some of the above objective functions)
- Add optimal multi-experiment decision-making (simultaneous or sequential optimization for batches of experiments)
- Support decomposition with parapint