pyomo icon indicating copy to clipboard operation
pyomo copied to clipboard

Pyomo.DoE refactor: Development plan for remaining functionality upgrades and future vision

Open djlaky opened this issue 1 year ago • 1 comments

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_parameters and experiment_inputs (automatically change into Var types) -- Convention is now to always have Var for the suffixes unknown_parameters and experiment_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 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 --> 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_parameters function with their Experiment object (Allows optimal pyomo.doe without rebuilding the whole model from scratch; multistart or other bootstrapping-type methods with parmest) @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

djlaky avatar Aug 13 '24 16:08 djlaky

Another more immediate feature:

  • [ ] Ensure FIM output and prior input are consistent with scaling

adowling2 avatar Mar 19 '25 01:03 adowling2