On the application of Benders decomposition to energy system models

  • genre: break‑out‑group
  • title: On the application of Benders decomposition to energy system models
  • presenter: @sstroemer
  • description: Various decomposition algorithms have been studied extensively in the field of OR for decades. For quite some time, researchers have applied them to energy system models (cf. references below). However, new researchers interested in the field still fight a similar uphill battle as years ago: Not many ready-to-use tools exist (especially considering the ever-growing landscape of “competing” energy system modeling frameworks), theoretical backgrounds can be hard to work through, and going from theory to practical implementations that “actually work” can be a struggle of figuring out why seemingly minor changes make or break the approach.
            This proposed do-a-thon aims at experimenting & discussing together with participants how Benders decomposition can be applied to (almost) any energy system model, what important topics to get familiar with, and where hidden pitfalls – that may not even discoverable in the literature – can arise.
            While this topic naturally aligns well with some of the mentioned themes (like efficient - and reproducible (!) - code that lends itself well to parallelization), I wanted to point out that iterative algorithms like Benders decomposition present one of the lowest entry barriers to solve large energy system models on limited hardware (memory, “systems with blackouts”, …) due to their inherent possibility to checkpoint/resume calculations at almost any time.
  • background: Since this would be my first time at an Open Energy Modelling Workshop, I wanted to gauge whether
    1. there is general interest on such a topic (and what level of prior knowledge could be assumed)
    2. a common interest for the application to a specific framework (Calliope, PyPSA, …) exists
    3. most people would be more comfortable with Python or Julia
  • brief background on me: I’ve been interested in decomposition algorithms since 2018 (back then at the Vienna University of Technology as part of the project Callia). Have been working on various related topics (mostly applications to LPs, MILPs, QPs, and stoch. opt.) since then, and got the chance in 2023 to start a PhD on decomposition at the Delft University of Technology. Currently working at AIT Austrian Institute of Technology, leading the development of different modeling/algorithmic topics (e.g., IESopt.jl, [short paper]).
  • code repository: to be added

References:
Listing a few tools, examples, etc. that are out there. In no particular order, not affiliated with any, and definitely missing many important ones (sorry if I did not include yours!): energy example by Boyd, SMS++, the project Resilient, recent PIPS-IPM++ preprint, well known (older) review on Benders, stochastic energy example by Luedtke, GCG, decomposition in SpineOpt.jl, Coluna.jl, SDDP.jl, PlasmoAlgorithms.jl

2 Likes
  1. yes, I’d be interested in attending. I’ve experienced the curse-of-dimensionality first hand when dealing with apply stochastic programming to energy system optimisation models, but have never applied Benders decomposition. With all moves away from vanilla linear programming using off-the-shelf solvers, there is often a significant learning curve, and the potential to spend more time on developing and dealing with novel algorithmic problems, rather than actually solving an energy systems problem. Where does Benders decomposition lie on this spectrum?
  2. No preference
  3. Python

Hi @sstroemer

Thanks again for the great break-out at openmod 2025. Could you share the links on the forum that you presented in the class? I’d like to explore Benders a bit more through your examples.

Will

1 Like

If anyone wants to follow-up, or stumbles upon this in the future, just drop me a mail at stefan.stroemer(at)ait.ac.at – always happy to chat more (and sorry for the delay, had to find some time to clean everything up).


Overview

There are two hosted notebooks that can be tried out immediately online:

  1. Basic: Contains a simple Benders decomposition implementation using Calliope to construct both main- and sub-model.
  2. The slightly more complex L-shaped example makes use of three different “weather periods” (actually just different slices taken from the basic example), to showcase how Benders decomposition can be used to easily add a two-stage stochastic modeling approach to “any” energy system optimization framework.

Note that both are simplified starting points and miss potentially important details (like properly checking solution status, stabilization, parallelization …) and mostly meant to offer a quick and intuitive starting point.

All of this is collected in the GitHub repository, sstroemer/openmod-2025-benders, also including raw versions of the notebooks that can be executed locally and showcase the use of Gurobi.

References

While there are many resources available on Benders decomposition, I can “recommend” the following starting points:

  1. A general review: Rahmaniani, R., Crainic, T. G., Gendreau, M., & Rei, W. (2017). The Benders decomposition algorithm: A literature review. European Journal of Operational Research, 259(3), 801-817. [doi: 10.1016/j.ejor.2016.12.005]

  2. An important read on the application of interior-point methods: Gondzio, J. (2025). Interior Point Methods in the Year 2025. EURO Journal on Computational Optimization, 13, 100105. [doi: 10.1016/j.ejco.2025.100105] (cf. [doi: 10.1016/j.ejor.2011.09.017])

  3. A recent, comprehensive energy system application: Göke, L., Schmidt, F., & Kendziorski, M. (2024). Stabilized Benders decomposition for energy planning under climate uncertainty. European Journal of Operational Research, 316(1), 183-199. [doi: 10.1016/j.ejor.2024.01.016]

Images

The following pictures were taken from the notes that we took during the breakout group.

Rough idea of Benders decomposition

Solving using a cutting planes approach

Two-stage stochastic models using sample average approximation

Refer to slides, scripts, or recorded lectures by Jim Luedtke (e.g., https://www.youtube.com/watch?v=WHjqegAcaqw) for a really intuitive introduction into applications for stochastic modeling.

1 Like

pretty amazing. Following this up for discussion progression !

A couple more references related to energy systems:

  1. Göke, Leonard, Mario Kendziorski, and Felix Schmidt (16 August 2022). Planning macro-energy systems with multiple climatic years — A quadratic trust-region approach for Benders decomposition. doi:10.48550/arXiv.2208.07078. arXiv. (preprint of 2024 paper above I guess) :open_access:

  2. Misconel, S, R Leisen, J Mikurda, F Zimmermann, C Fraunholz, W Fichtner, D Möst, and C Weber (1 January 2022). “Systematic comparison of high-resolution electricity system modeling approaches focusing on investment, dispatch and generation adequacy”. Renewable and Sustainable Energy Reviews. 153: 111785. ISSN 1364-0321. doi:10.1016/j.rser.2021.111785. Models covered: ELTRAMOD, PowerACE, IDILES, JMM. :open_access:

1 Like