Skip to main content

Storage Dispatch Scheduling

Linear Programming · Temporal Arbitrage

Battery energy storage systems can capture €30–€80 per MWh in price arbitrage by charging during off-peak hours and discharging during peaks, generating €2–€8M annually for a 100MW/400MWh installation. Every day, a storage operator must decide the charge/discharge schedule across 24 hours to maximize revenue from price spreads. This is a linear program with state-of-charge dynamics — solvable exactly — where round-trip efficiency losses and depth-of-discharge limits constrain the temporal arbitrage strategy.

Where This Decision Fits

Energy systems planning chain — the highlighted step is what this page optimizes

Plant Siting Facility location
Transmission Network Grid topology design
Unit Commitment Generator on/off scheduling
Storage Dispatch Charge/discharge optimization
Distribution Last-mile delivery

The Problem

Maximizing revenue from temporal price arbitrage

Consider a 100 MW / 400 MWh battery energy storage system (BESS) connected to a wholesale electricity market. The battery has a 90% round-trip efficiency (η = 0.9, meaning √0.9 ≈ 0.949 one-way efficiency for charge and discharge). Prices vary from €25 to €120 per MWh across the 24-hour day, driven by demand patterns, renewable generation, and grid congestion.

The operator must decide, for each hour t ∈ {1, …, 24}, how much power to charge (buy from grid) or discharge (sell to grid), subject to power rating limits, energy capacity constraints, and state-of-charge (SoC) dynamics. The objective is to maximize daily revenue from buying low and selling high — pure temporal arbitrage.

Because the SoC dynamics are linear and all constraints are linear inequalities, this is a Linear Program (LP) solvable to global optimality in polynomial time. With integer on/off constraints (e.g., minimum run times), it becomes a Mixed-Integer Program (MIP).

Storage Dispatch LP Formulation maximize   Σt pt · (dt − ct)   // revenue = price × net discharge
subject to
  SoCt = SoCt-1 + ηc · ct − dt / ηd   // state-of-charge dynamics
  SoCmin ≤ SoCt ≤ SoCmax   // depth-of-discharge limits
  0 ≤ ct ≤ Pmax   // charge power limit
  0 ≤ dt ≤ Pmax   // discharge power limit
  SoC0 = SoCinit   // initial state of charge

Where pt is the electricity price at hour t, ct and dt are charge and discharge power, ηc and ηd are one-way efficiencies, and Pmax is the power rating (100 MW).

Try It Yourself

Optimize a 24-hour battery dispatch schedule

Storage Dispatch Optimizer

100 MW · 400 MWh · 90% Eff.
A summer day in Ontario with high air conditioning demand pushing afternoon prices to €110–120/MWh while overnight baseload drops prices to €25–35/MWh. Classic solar duck curve arbitrage.

Ready. Click “Solve & Compare All Algorithms” to run.

Algorithm Revenue (€) Cycles Time
Click Solve & Compare All Algorithms
Hourly schedule will appear here after solving.

The Algorithms

Three approaches to storage dispatch optimization

Exact

Linear Program (LP)

O(n³)  |  Guarantees global optimum

Formulate the 24-hour dispatch as a linear program with 48 decision variables (charge and discharge power per hour) and 120+ constraints (SoC dynamics, capacity bounds, power limits). Solved exactly using the simplex or interior-point method. The LP finds the provably optimal schedule that maximizes revenue subject to all physical and operational constraints. For the continuous relaxation (no integer variables), this is the gold standard.

Heuristic

Greedy Threshold

O(n)  |  Simple price-based rule

Compute the median price across the 24-hour window. Charge at maximum rate whenever the price is below the median (buy cheap), and discharge at maximum rate whenever the price is above the median (sell expensive). Respects SoC limits but makes no look-ahead decisions — each hour is decided independently based on the threshold. Fast and intuitive but misses opportunities where partial charge/discharge or shifting timing would improve revenue.

Heuristic

Peak Shaving

O(n log n)  |  Flatten load profile

Target a flat average-price load profile. Sort hours by price, then charge during the cheapest hours and discharge during the most expensive hours, aiming to equalize the effective price across all hours. This approach prioritizes grid stability over pure profit — it captures most of the arbitrage value while producing smoother charge/discharge transitions. Often used in utility-scale deployments where grid services revenue supplements arbitrage.

Real-World Complexity

Why production storage dispatch goes beyond a simple LP

Beyond the Basic Model

  • Degradation costs — Every charge/discharge cycle degrades the battery; deep cycles cost more than shallow ones, requiring lifecycle-aware optimization
  • Stochastic prices — Day-ahead prices are forecasts with uncertainty; robust or stochastic programming hedges against price prediction errors
  • Ancillary services — Frequency regulation, spinning reserve, and voltage support create co-optimization opportunities beyond pure energy arbitrage
  • Ramp rate limits — Power electronics impose limits on how quickly charge/discharge can change between hours
  • Temperature effects — Battery efficiency and capacity vary with ambient temperature, especially in extreme climates
  • Multi-day planning — Weekly or seasonal patterns require look-ahead beyond 24 hours, coupling daily dispatch decisions
  • Market participation rules — Minimum bid sizes, settlement periods (5-min vs hourly), and market-specific constraints shape feasible strategies

Key References

Foundational works in energy storage optimization

  • Xu, B., Oudalov, A., Ulbig, A., Andersson, G., & Kirschen, D. S. (2018). “Modeling of lithium-ion battery degradation for cell life assessment.” IEEE Transactions on Smart Grid, 9(2), 1131–1140.
  • Krishnamurthy, D., Uckun, C., Zhou, Z., Thimmapuram, P. R., & Botterud, A. (2018). “Energy storage arbitrage under day-ahead and real-time price uncertainty.” IEEE Transactions on Power Systems, 33(1), 84–93.
  • Sioshansi, R., Denholm, P., Jenkin, T., & Weiss, J. (2009). “Estimating the value of electricity storage in PJM.” Energy Policy, 37(12), 5166–5175.

Need to optimize energy storage operations?

From battery dispatch to grid-scale resource scheduling, mathematical modeling can transform energy asset management. Let’s discuss how Operations Research can work for you.

Disclaimer
Data shown is illustrative. Price profiles, battery parameters, and revenue figures are representative scenarios for educational purposes and do not reflect any specific market or installation.
Back
ESC