Reserve for the unexpected.
A cold store with rooftop solar, a battery and a tight grid connection. Tomorrow's prices are known; tomorrow's clouds are not. Watch five controllers run the same day, then run hundreds of days to see what each one costs on average and when things go wrong.
- Rooftop solar
- 450 kWp
- Battery
- 600 kWh · 300 kW
- Grid contract
- 200 kW
- Resolution
- 15 min · 96 steps
- Controllers
- 5
One day, five controllers.
All five controllers see the same prices, the same clouds and the same load. The rule charges from surplus solar and discharges whenever the site needs power. The forecast controller re-plans every hour on the expected sky. The stochastic controller plans over every way the sky can still change. The risk-aware one weights bad afternoons more heavily. Hindsight knows the whole day in advance and marks the floor nobody can reach.
Three hundred days, not one.
One day proves little. Each dot below is the cost of one simulated day for one controller, drawn from the same weather model. The short tick is the average; the long tick is CVaR 95%, the average of the worst 5% of days, which is what a finance team worries about.
| Controller | Mean | CVaR 95% | Days over | vs rule |
|---|
What runs underneath.
Site and tariff
Imports cost the day-ahead price plus €95/MWh of network charges and levies; exports earn the price less €5 and are curtailed when the price is negative. Energy imported above the contracted capacity costs €900/MWh extra. Battery round-trip efficiency is 90%, with €18/MWh of wear.
Weather
Cloud cover moves between five states (clear to storm) as a Markov chain, re-drawn every 15 minutes, with afternoon convection in the storm setting. Site load follows the cold store's cooling demand with autocorrelated noise.
Stochastic dynamic programme
Solved backwards over 96 steps, 61 battery levels and 5 sky states, about 2 million evaluations in a few milliseconds.
Risk-aware version
Replacing the expectation with an entropic risk measure keeps the recursion consistent over time. θ = 0 recovers the expected-cost controller; larger θ buys protection against bad afternoons.
What this model leaves out
The site, tariff and price shapes are illustrative, not a specific supplier contract. Prices are treated as known, so the model does not trade intraday or balancing markets. Demand charges billed on the monthly peak, battery ageing beyond a flat wear cost, and inverter clipping are not modelled. Real weather would come from a forecast ensemble rather than a fitted Markov chain.
Size and run your battery.
We build dispatch and sizing models around your tariff, your load data and your risk appetite, and test them on years of simulated days before anything is installed.
The simulation could not be loaded. Reload the page to try again.