Grid Room
Run a fictional three-zone grid on real 2025 days: commit the plants, price each zone conditional on that commitment, and add a large load
The brief
- The system
- The Plains Grid (fictional): Wind Ridge, Prairie Town and Metro in a row, joined by two links; 4,000 MW at the 2025 peak, with real 2025 hourly shapes.
- You decide
- The day or week; a large load (a data center) and where it connects; the two link limits (MW); the reserve required; the gas price.
- The engine works out
- Each day, a mixed-integer program commits the plants (chooses which are on each hour); then a linear program with that commitment fixed prices each zone.
- It leaves out
- Power-flow physics (a transport model), losses, ramp limits, forecast errors, plant outages, whether the reserve can reach each zone, and prices from the mixed-integer program itself.
Open-ended: start from a preset, change one thing at a time, and copy the plan link to keep a plan.
The bench
| Control | Default plan | Range |
|---|---|---|
| Period | Summer peak day | one of: Summer peak day, Winter peak day, Windy spring day, Peak-demand week, Low-wind winter week |
| Large load (a data center) | 0 MW | 0 to 600 MW, in steps of 50 MW |
| It connects in | Prairie Town | one of: Prairie Town, Metro |
| Share it can curtail | 0 % | 0 to 50 %, in steps of 10 % |
| Curtailment bid | 300 $/MWh | 100 to 2,000 $/MWh, in steps of 50 $/MWh |
| Ridge–Town limit | 900 MW | 0 to 1,500 MW, in steps of 50 MW |
| Town–Metro limit | 400 MW | 0 to 1,200 MW, in steps of 50 MW |
| Operating reserve required | 250 MW | 0 to 600 MW, in steps of 25 MW |
| Gas price | 3.85 $/MMBtu | 1.5 to 8 $/MMBtu, in steps of 0.05 $/MMBtu |
With JavaScript on, you change these, run each day in your browser and copy a link to your plan.
- Illustrative: the Plains Grid, its zones, plants, links, the $5,000/MWh penalty for unserved load and the $1,000/MWh for reserve short; 2025 dollars.
- Based on SPP 2025: hourly demand, wind and sun follow the Southwest Power Pool's 2025 shapes (EIA-930), scaled to each zone; all three zones share that one weather.
- EIA: fuel prices, capacity factors and CO₂ coefficients (sources below).
Results
| Result: summer peak day, 29 July 2025 (the default plan, then a 300 MW data center at Prairie Town) | Value |
|---|---|
| Today's grid: production cost (running, no-load and start-up; 2025 dollars) | $1,676,000 |
| Today's grid: average price, Wind Ridge · Prairie Town · Metro (conditional on the commitment) | $27 · $27 · $29 /MWh |
| Today's grid: highest price in any zone | $30/MWh |
| Today's grid: hours at the limit, Ridge–Town · Town–Metro | 0 · 2 of 24 |
| Today's grid: unserved · reserve short | 0 MWh · 0 MWh |
| Today's grid: uplift (make-whole payments) | $50,000 |
| With the 300 MW load: production cost (running, no-load and start-up; 2025 dollars) | $1,895,000 |
| With the 300 MW load: average price, Wind Ridge · Prairie Town · Metro (conditional on the commitment) | $32 · $32 · $32 /MWh |
| With the 300 MW load: highest price in any zone | $45/MWh |
| With the 300 MW load: hours at the limit, Ridge–Town · Town–Metro | 0 · 4 of 24 |
| With the 300 MW load: unserved · reserve short | 0 MWh · 0 MWh |
| With the 300 MW load: uplift (make-whole payments) | $0 |
Precomputed with HiGHS on 5 November 2026: each day a mixed-integer program commits the plants, then the dispatch linear program with that commitment fixed gives the prices. With JavaScript on, the bench runs your own plan.
How the engine works, as diagrams
- Commit
- A mixed-integer program chooses how many units of each group are on in each hour, with minimum outputs, start-up costs and minimum run times; it shows no prices.
- Price
- With every on/off decision fixed, the dispatch linear program runs the day again; each zone's shadow price is its price, conditional on the commitment.
- It holds when
- The zones share 2025's weather, each link carries any flow up to its limit, each day is committed alone with its load, wind and sun known, and units never fail.
- It leaves out
- Power-flow physics, losses, ramp limits, forecast errors, outages, whether the region-wide reserve can reach a zone, and the next day when a day is committed.
Go deeper · ModelerThe models behind the bench
Go deeperThe days and weeks you can run
| Period | Why this one |
|---|---|
| Summer peak day, 29 July 2025 | The 2025 summer day with the highest hourly demand |
| Winter peak day, 21 January 2025 | The 2025 winter day with the highest hourly demand, among days with no repaired hours |
| Windy spring day, 17 April 2025 | The 2025 spring day with the most wind energy |
| Peak-demand week, 14–20 August 2025 | The 2025 week with the highest average daily demand peak |
| Low-wind winter week, 2–8 January 2025 | One of the two calmest weeks of winter 2025 by mean wind; lesson A8's week |
A week runs day by day: each day is committed without seeing the next, as a day-ahead market commits one day at a time, and carries the units' state at 23:00 into the next day.
Go deeperWhen two answers cost the same: the tie rule
Several schedules can cost exactly the same. Tiny stated costs, far below a cent per MWh, pick one:
- Spilled wind and sun: Wind Ridge's first, then Prairie Town's, then Metro's.
- Unserved load, if several zones could go short: Metro's first, then Prairie Town's, then Wind Ridge's.
- Reserve: carried first by the unit groups listed first.
The engine's test runs seven benchmark plans again with the tie weights ×10 and ×0.1: every number shown stays the same.
In those runs, each price equals the cost slope when its zone's load moves 0.001 MWh up and when it moves down: no price sits on a corner. Your own plans are not checked this way.
Numbers, sources and what’s next
Inputs the engine uses
| Input | Value | Source |
|---|---|---|
| Peak load: Ridge · Town · Metro | 300 · 450 · 3,250 MW | Illustrative; each hour follows SPP's 2025 demand shape (EIA-930, accessed 2 Nov 2026) |
| Wind built: Ridge · Town · Metro | 2,000 · 150 · 300 MW | Illustrative |
| Solar built: Ridge · Town · Metro | 0 · 200 · 600 MW | Illustrative |
| Output per MW: wind · solar | 33.8% · 24.0% a year | SPP's 2025 shapes scaled to EIA's 2025 monthly capacity factors: EPM Table 6.07.B, issue of 23 Oct 2026 |
| Link limits: Ridge–Town · Town–Metro | 900 · 400 MW | Illustrative |
| Fuel: gas · coal | $3.85 · $2.42/MMBtu | Average cost to the electric power industry, 2025: EIA, Electric Power Annual, Table 7.4 · final 2025 data; checked 5 Nov 2026. One MMBtu is a million British thermal units of fuel heat |
| Heat rates | 6.4 to 11.2 MMBtu/MWh | Illustrative, around EIA's 2025 averages (coal 10.65, gas 7.78 MMBtu/MWh): Electric Power Annual, Table 8.1 · 2025 data; checked 5 Nov 2026 |
| CO₂: gas · subbituminous coal | 52.91 · 97.13 kg/MMBtu | EIA, Carbon Dioxide Emissions Coefficients · released 18 Sep 2024; checked 5 Nov 2026 |
| Unserved load · reserve short | $5,000 · $1,000/MWh | Illustrative penalties in the objective, not costs anyone pays |
The plantsEach unit group's data (illustrative)
| Unit group | Zone | Units | Minimum output | Running cost at $3.85 gas | No-load cost | Start-up | Minimum up · down | Reserve per unit |
|---|---|---|---|---|---|---|---|---|
| Town combined cycle | Prairie Town | 1 × 200 MW | 80 MW | $30.72/MWh | $308/h | $6,000 | 4 · 4 h | 60 MW |
| Town peakers | Prairie Town | 3 × 50 MW | none | $49.12/MWh | none | none | none | 50 MW |
| Metro coal units | Metro | 2 × 500 MW | 200 MW | $29.67/MWh | $726/h | $25,000 | 12 · 8 h | 50 MW |
| Metro combined cycles | Metro | 3 × 667 MW | 267 MW | $27.14/MWh | $1,028/h | $9,000 | 4 · 4 h | 133 MW |
| Metro gas steam unit | Metro | 1 × 300 MW | 100 MW | $42.50/MWh | $770/h | $7,000 | 6 · 6 h | 50 MW |
| Metro peakers | Metro | 14 × 80 MW | none | $45.43/MWh | none | none | none | 80 MW |
Running cost = heat rate × fuel price + variable upkeep; no-load cost = the heat burned each hour a unit is on × fuel price. Peakers start within minutes and have no minimum output, so the model gives them no on/off decision.
Keep going
Built on
Sources and further reading
- EIA. Hourly Electric Grid Monitor (Form EIA-930): the Southwest Power Pool's demand, wind and sun, 2025.
- EIA. Electric Power Annual, Table 7.4: average cost of fossil fuels for the electric power industry, 2025.
- EIA. Electric Power Annual, Table 8.1: average operating heat rates, 2025.
- EIA. Carbon Dioxide Emissions Coefficients.
- HiGHS. Documentation of the open-source solver that runs the bench in your browser.
Spotted an error, or stuck? Write to hlli@ksu.edu. Corrections are made in place and dated here.
Text licensed CC BY 4.0, code MIT: teachers and students may reuse and adapt it, with credit to Honglin Li.