Energy System Benchmark Problems

Optimized grid design and operation is needed as modern society depends on vast quantities of electrical energy. The complexity of the electric grid presents difficult control problems that require powerful solvers and efficient formulations for tractable solutions.

GitHub | Google Colab

The Gekko Optimization Suite is a machine learning and optimization package in Python for mixed-integer and differential algebraic equations and is capable of solving complex grid design and control problems.

A series of non-dimensional benchmark cases are proposed for grid energy production. These include:

I: load following
II: cogeneration
III: tri-generation
IV: energy storage with constant production
V: energy storage with load following
VI: energy storage with cogeneration

Individual case studies include ramp rate constraints, power production, and energy storage operation as design variables. Variables used in the benchmark problems are defined below.

SymbolDescription
JJobjective function
ddemand
ggeneration
rramp rate
estorage inventory
ein, eoutenergy stored, recovered
Rrenewable source
sin, soutslack variables for storage switching
ηηstorage efficiency
nnumber of generating units
isubscript indicates product i

Benchmark I: Load Following

The first benchmark problem represents load following, a common scenario in grid systems. The optimizer seeks to match demand and supply with fluctuating demand dynamics. A single generator with ramping constraints attempts to respond to a single load with perfect foresight. The generation and demand match initially, but the generator must ramp in order to ensure this throughout the horizon while minimizing overproduction.

minr J=1t=0[1000max(0,dg)+max(0,gd)]dts.t. dgdt=rd=cos(2πt)+31r1g(0)=d(0)=4

Benchmark II: Cogeneration

In the second benchmark problem, one producer seeks to meet two objectives that are constraining at different times. Benchmark II enhances Benchmark I by replacing the generator with a cogeneration system n=2 that produces (1) electricity and (2) heat in response to electricity demand and a new heat demand profile, again with perfect foresight.

minr  J=ni=11t=0[1000max(0,digi)+max(0,gidi)]dts.t.  dg1dt=r,g2=2g1d1=cos(2πt)+3d2=1.5sin(2πt)+71r1g1(0)=d1(0)=4g2(0)=8,d2(0)=7

Benchmark III: Tri-generation

The third benchmark problem enhances the previous problems further still, creating a tri-generation system n=3 with two producers, three products, and three demand profiles. The primary producer is the same as the prior benchmark and is ramp-rate constrained to produce the two primary products (e.g., electricity and heat). An additional producer (e.g., a solid oxide electrolysis cell) uses these first two products to make a third product (e.g., hydrogen), thereby utilizing any excess system capacity and maximizing its production while avoiding supply shortages for products one and two. As before, the optimizer has perfect foresight.

minr1,r3  J=ni=11t=0[1000max(0,digi)+max(0,gidi)]dt0.11t=0g3dts.t.  dg1dt=r1,dg3dt=r3g2=2g1d1=cos(2πt)+3+2g3d2=1.5sin(2πt)+7+3g3d3=max[0,0.2sin(2πt)]1r11,1r31g1(0)=d1(0)=4g2(0)=8,d2(0)=7g3(0)=d3(0)=0

Benchmark IV: Constant Production with Storage

The fourth benchmark problem models a hybrid system with a single generator with constant production constraints coupled with energy storage that together must meet an oscillating electricity demand. The goal of the problem is to minimize the required power production and use energy storage to capture excess generation serve the oscillating energy demand while keeping the base-load generator production constant. As before, the model has perfect foresight. In order to prevent the energy storage from charging and discharging simultaneously without requiring mixed-integer variables, slack variables are used to control when the storage charges and discharges, allowing it to switch modes in a way that is both continuous and differentiable. This allows the modeling language to use automatic differentiation to provide exact gradients to the solver.

ming  gs.t.dedt=eineoutηein=gd+sineout=dg+soutgd=soutsinsout,sin0,eoutein0g+eout/ηeinde0,η=0.7d=102sin(2πt)e(0)=e(1)=0

Benchmark V: Load Following with Storage

The fifth benchmark combines energy storage with a load-following problem similar to Benchmark I. The first-half of the time horizon is nearly identical to Benchmark I, but now the excess energy can be stored. This allows the system to meet a higher demand in the second half of the time horizon without needing extremes in generation. The solver minimizes the ramping needs and operates more flexibly by storing and then recovering the overproduction caused by the ramping constraints. Energy storage allows this generator to meet the load without requiring significant overproduction.

minr  J=ni=11t=0[1000max(0,Ψ)+max(0,Ψ)]dtwhere Ψ=dgR+eout/ηeins.t.  dedt=eineoutηein=g+Rd+sineout=dgR+soutg+Rd=soutsinsout,sin0,eoutein0g+R+eout/ηeinde0,η=0.85d=72sin(2πt)R={3+3cos(4πt)14t340otherwisedgdt=r,1r1e(0)=e(1)=0

Benchmark VI: Cogeneration with Dual Storage

The sixth benchmark problem is a combination of Benchmarks II and V where the ramp rate of the generator is the manipulated variable but now must meet both electrical (1) and heat (2) demand with the use of both electrical and thermal storage. A renewable generation source (such as solar PV) is added to the system as an auxiliary electrical energy source that cannot be controlled. The objective is the same as in Benchmark IV, to minimize power production, but this time while meeting both the heat and power demands. The model again has perfect foresight. Slack variables are used in the same way as in Benchmarks IV and V.

minr1  g1s.t.  deidt=ein,ieout,iηiein,i=gi+Ridi+sin,ieout,i=digiRi+sout,igi+Ridi=sout,isin,isout,i,sin,i0,eout,iein,i0gi+Ri+eout,i/ηiein,idiei0,η1=0.7,η2=0.8d1=102sin(2πt)d2=15+1.5cos(2πt)R1={2+2cos(4πt)14t340otherwisedg1dt=r1,3r13R2=0,g2=1.5g1e1(0)=0,e2(0)=e2(1)=0.5

Reference

Gates, N.S., Hill, D.C., Billings, B.W., Powell, K.M., Hedengren, J.D., Benchmarks for Grid Energy Management with Python Gekko, 60th IEEE Conference on Decision and Control (CDC), Tutorial Session: Open Source Software for Control Applications, Austin, TX, Dec 13-15, 2021. Preprint

Acknowledgement

Financial support from the Department of Energy Nuclear Energy University Program Grant Number DE-NE0008866.

Home | Energy System Benchmark Problems
Streaming Chatbot
💬