Skip to content

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

Open
@djlaky

Description

@djlaky

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 and experiment_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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions