Demonstration · Energy dispatchOptimising live in your browser

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
Prices
Weather
Show
00:00
00:00 24:00

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.

Solar outputband: 300 simulated days · line: this day
5–95% of days25–75%This daySite load
Stored energykWh · same day, five controllers
Grid import · risk-aware controllerkW · contract limit dashed

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.

Daily cost by controller€ per day · mean and CVaR 95%
Summary over all simulated days
ControllerMeanCVaR 95%Days overvs rule
Cost against riskeach point: 300 days · line: risk aversion θ
Risk-aware, θ from 0 to 0.16 /€Selected θOther controllers

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

V(t,E,c) = min over ΔE of cost(t,E,ΔE,c) + Σ P(c'|c) · V(t+1,E+ΔE,c')

Solved backwards over 96 steps, 61 battery levels and 5 sky states, about 2 million evaluations in a few milliseconds.

Risk-aware version

ρ(V) = (1/θ) · log Σ P(c'|c) · exp(θ·V)

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.

Discuss your project