Unit Commitment Control Room (3D)

A Blender power park run by an exact dynamic-programming scheduler: four thermal units, wind hills, a solar field and a city over one 24-hour day.

Switch to 2D

Presets

Playback

Demand and reserve

Daily demand level and the spinning-reserve rule.

Wind, solar and weather

Capacities, mean wind, cloudiness and day length.

Costs and playback

Fuel price, start-up cost multiplier and time speed.

Camera

Layers

Quality

Model checks

The science

The problem a control room solves every day

Thermal power units cannot simply be switched on and off like lamps. A big steam unit needs hours to start, burns fuel just to be ready (the no-load cost), has a minimum stable output Pmin, and once started or stopped must stay in that state for a minimum up or down time. The unit commitment problem decides, hour by hour, which units are on, so that demand is met at the lowest total cost. Wind and solar change the question: what the thermal fleet must supply is the net load L(t) - W(t) - S(t), which dips at noon and ramps up steeply at sunset (the "duck curve").

The optimisation

For every hour t and unit i the commitment u(i,t) is 0 or 1 and the output P(i,t) satisfies u Pmin <= P <= u Pmax. The cost to minimise is

J = sum over t, i of [ u(i,t) NL(i) + c(i) P(i,t) + SU(i) max(0, u(i,t) - u(i,t-1)) ] + penalties

with no-load cost NL (EUR/h), marginal fuel cost c (EUR/MWh) and start-up cost SU (EUR per start). The balance sum P + W_used + S_used = L holds in every hour; renewable energy can be curtailed when the committed units cannot go below their Pmin; a spinning-reserve rule asks for committed capacity of at least net load plus a fraction of demand; unserved energy, reserve shortage and over-generation carry penalties.

How this page solves it exactly

Each unit carries a counter of how long it has been in its current state (capped at its minimum time), so the fleet state has at most 12 x 6 x 2 x 2 = 288 values. A dynamic programme walks forward through the 24 hours: for every state it tries all 16 on/off combinations that obey the minimum-time rules, adds the hour cost and the start-up cost, and keeps the cheapest way to reach each next state. The optimum is read back from the cheapest final state. Within an hour the dispatch is the merit order: every committed unit runs at Pmin, and the remaining energy goes to the cheapest unit first, up to Pmax; the marginal price is the cost of the last unit loaded.

Numerical checks on this page

(1) The DP result for the first 5 hours is compared with an exhaustive enumeration of all 16^5 schedules that uses explicit up/down counters instead of the state machine. (2) The energy balance over 24 h and the total cost are recomputed from the schedule. (3) Removing the minimum up/down rule can only lower the optimal cost (a relaxation bound), and the optimum can never exceed the cost of keeping every unit on all day.

Honest simplifications

This is a teaching model of one balancing area. Real day-ahead scheduling also uses ramp-rate limits, transmission constraints, hydro and storage, uncertainty of the forecasts, unit-specific heat-rate curves and mixed-integer solvers on thousands of units. Here the fuel cost is linear in output, the four units have round illustrative numbers, wind and solar are a synthetic weather pattern controlled by a seed, ramping is not limited (the largest hourly thermal change is only reported), and network losses are ignored. The numbers show the logic of commitment, not a real market result.

What to try

  • Load Typical weekday and watch the steam unit stay on all day while the combined-cycle unit starts only for the evening peak.
  • Press Min up/down times: OFF and read the "Constraint cost" tile: it is the price of the physical start-up rules.
  • Load Windy night, sunny noon: net load falls below the minimum output of the steam unit, so wind is curtailed (the "curtailed" tile).
  • Load Spring duck curve: the net-load line on graph 1 drops at noon and climbs steeply in the evening; the peakers start for a few hours.
  • Raise Start-up cost to 5x: the optimiser keeps units on through the night rather than cycling them.
  • Drag the Hour of the day slider and orbit the camera to see which units are lit and how the city lights follow demand.
Loading model...
Loading Blender model...
Demand, wind, solar and net load
Dispatch stack by unit (dashed = demand)
Commitment schedule (white tick = start-up)
Cost and curtailment versus wind capacity
Made with 🟠 Blender · Three.js