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