Skip to content

Separate out the Pyomo heuristic and optimization methods during the set up  #513

@genevievestarke

Description

@genevievestarke

Separate out the Pyomo heuristic and optimization methods during the setup

  • We need to define dispatch rules, even though the optimization method only uses a Pyomo class structure
  • The dispatch rules are needed due to the structure of PyomoControllerBaseClass. The code will not run if they are not defined
  • We can't use the min_operating_cost keys because those are classes and do not work with the OpenMDAO structure in PyomoControllerBaseClass
  • We are currently using the heuristic versions just for the tech_config.yaml, and using the optimization classes internally to the dispatch.

The following definition gives the heuristic version for the battery technology definition, but because the control strategy is set to OptimizedDispatchController, it will initialize using PyomoRuleStorageBaseclass in the setup, then use PyomoRuleStorageMinOperatingCosts in the OptimizedDispatchController class.

  battery:
    dispatch_rule_set:
      model: "PyomoRuleStorageBaseclass"
    control_strategy:
      model: "OptimizedDispatchController"
    performance_model:
      model: "PySAMBatteryPerformanceModel"
    cost_model:
      model: "ATBBatteryCostModel"

How to reproduce

Relevant output

System Information

  • OS: <macOS 12.4>
  • Python version: <3.11.4>
  • H2Integrate version: <0.1.1>
    • <Installed from source using an editable installation with developer tools: pip install -e .[develop]>
    • Commit hash:

Relevant library versions

Package Version
hopp <3.1.1>
numpy <1.26.4>
Pyomo <6.8.0>
scipy <1.14.1>

Metadata

Metadata

Assignees

No one assigned

    Labels

    dispatchrelated to dispatch and control

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions