Hi everyone. I have a broad question, rather than a question about any specific package or code block, so please let me know if its inappropriate and I’ll move/close it.

I’m interested if the Julia/JuMP community has published/learned any best practices for setting up large models for optimization with a naturally hierarchical structure. I’ve searched around for examples to learn best practices from and came up with a somewhat overwhelming list of packages which set up large JuMP models, all having to do with power infrastructure (the specific problems I am interested in are not related to power generation/distribution, otherwise I’d just use one of these):

- leonardgoeke/AnyMOD.jl: Julia framework for energy system models with a focus on multi-period capacity expansion (github.com)
- JuliaEnergy/PowerDynamics.jl: Package for dynamical modeling of power grids (github.com)
- Breakthrough-Energy/REISE.jl: Renewable Energy Integration Simulation Engine (github.com)
- NREL-Sienna/PowerSystems.jl: Data structures in Julia to enable power systems analysis. Part of the Scalable Integrated Infrastructure Planning Initiative at the National Renewable Energy Lab. (github.com)
- lanl-ansi/PowerModels.jl: A Julia/JuMP Package for Power Network Optimization (github.com)
- andrewrosemberg/HydroPowerModels.jl: A Julia/JuMP Package for Hydrothermal economic dispatch Optimization (github.com)
- martinbiel/HydroModels.jl: Julia modeling framework for hydropower operations. (github.com)
- psrenergy/SDDPDSO.jl: SDDP-DSO stands for Stochastic Dual Dynamic Programming for Distribution System Operation (github.com)
- plasmo-dev/Plasmo.jl: A Platform for Scalable Modeling and Optimization (github.com)
- GenXProject/GenX: GenX: a configurable power system capacity expansion model for studying low-carbon energy futures. More details at : https://genx.mit.edu (github.com)
- NREL/REopt.jl (github.com)

Are there any other packages I missed that the community would recommend as a good example of “best practices” to build large hierarchical problems in JuMP? And are any of the examples here exceptionally worth taking a look at the design to incorporate best practices? Are there any other references I should be checking out related to setting up large problems like this (I’ve read the “design patterns for larger models” page of the JuMP manual).

I realize I mixed a few packages that set up stochastic problems, relying on SDDP. In general I’m interested in both approaches, although mainly starting with the deterministic setting to begin with.