Φ
LIVE MACHINE · IEEE 39-BUS NEW ENGLAND · WEBASSEMBLY

THE GRID

Two control rooms. One blackout coming. Only one of them is allowed to imagine it.

This is the standard IEEE 39-bus New England test system — 39 buses, 46 transmission lines, 10 generators, 6,254 MW of load — the benchmark power system that has been used in stability research since 1979. The bus, branch and generator data below is the published case, taken unmodified from PYPOWER’s case39. A DC power flow, a thermal-overload cascade model and two controllers are compiled into 43 KB of WebAssembly and running on your machine right now. Both control rooms are told, eight control periods in advance, exactly which line is going to open. They run the identical code. One is allowed to imagine 14 periods forward. The other, three.

WARNING ISSUED — THE OUTAGE HAS NOT HAPPENED YETline 16–21 · +1,051 MW kept on, mean of 6 seedsperiod 0/30 · load 0 MW · 0 fps
loading the grid…
LOOKS AHEAD · MW SERVED
0
0.0% of load · 0 lines open
LOOKS 3 AHEAD · MW SERVED
0
0.0% of load · 0 lines open
NO OPERATOR AT ALL
0
0.0% of load
KEPT ON BY LOOKING AHEAD
0
MW, this scenario, right now
EVERY FUTURE IT IS IMAGINING RIGHT NOW — LOAD SERVED, 0 OF THEM, THIS CONTROL PERIOD
FUTURES IMAGINED / PERIOD
0
FUTURES THROWN AWAY
0
BLACKOUTS IMAGINED, NEVER LIVED
0
WORST LINE LOADING
0% / 0%
ahead / myopic

LEFT = the controller that looks 14 periods ahead. RIGHT = the same controller restricted to 3. Line colour is loading: blue under 65%, gold to 90%, amber to 100%, red over. The red creeping bar along a line is accumulated relay heat — when it fills, the relay opens and the flow lands on its neighbours. ✕ is an open line. Gold circles are generators, sized by output. Squares are load, turning red when the lights go out. The red glow on the left panel is the kill map: how often each line dies across the futures being imagined this instant. It is the machine seeing its own blackout before it happens. The lower panel is every one of those futures drawn as a load-served curve — the gold one is the future it acted on.

Measured, before the page was drawn

Every one of the 46 transmission lines was failed in turn, under 6 random seeds, at 100% and at 115% of nominal load. 552 scenarios per stress level, run headless through the exact WebAssembly module you just watched. Nothing below is hand-picked.

SCENARIOS RUN
552
46 lines × 6 seeds × 2 load levels
FUTURES IMAGINED, THEN THROWN AWAY
1,059,840
every single one discarded — only the first move is kept
IMAGINED CONTROL PERIODS
14,837,760
1,190,941 imagined relay trips

1 · The head-to-head

Deep = horizon 14, 64 rollouts. Myopic = horizon 3, 24 rollouts. Same code, same seed, same eight periods of advance warning, same grid. “No operator” is the grid left completely alone: relays and automatic balancing only.

SYSTEM LOADTOTAL MWDEEP WINSMYOPIC WINSTIEMEAN DEEPMEAN MYOPICMEAN NO-OP
100% of nominal6,254.21892496,226.66,148.36,139.7
115% of nominal7,192.416971005,903.35,653.35,642.8

At nominal load the New England system is genuinely robust — 249 of 276 scenarios are a dead tie, because almost nothing bad happens and holding still is the right answer. Push it to a realistic summer peak and the picture inverts: the myopic room keeps the lights on for 5,653.3 MW, barely above the 5,642.8 MW you get with nobody in the room at all, while looking further ahead holds 5,903.3 MW. That gap — 261 MW, averaged over every single-line outage on the system — is roughly a large city. It is bought with nothing but imagination: no new wires, no new generation, no learning, no training data.

2 · The scaling law

This is the result that matters. Hold everything constant — same 276 scenarios at 115%, 64 rollouts — and turn one dial: how far forward the machine is allowed to imagine.

H=15,642.8
H=25,646.5
H=35,655.7
H=45,649.3
H=65,657.8
H=85,689.7
H=105,714.0
H=125,802.7
H=145,903.3
H=165,862.4
H=185,917.3
bars start at 5,600 MW served — the empty-control-room floor is 5,642.8 MW

Horizon 1 lands on 5,642.8 MW — exactly the no-operator number, to the decimal. That is the sanity check: a machine that cannot see one step past its own action can never find a reason to deviate from holding still, so it holds still, so it is the empty control room. Everything above that line is purchased purely by looking further. The curve is not clean — horizon 16 is worse than horizon 14 — and it is printed here unsmoothed because that is what came out. Search over a chaotic cascading system is noisy; deeper is better on average, not on every run.

The cost column is the part utilities should read twice. A full horizon-14 decision — both control rooms and the untouched baseline — takes 4.18 milliseconds on one core of a laptop. Real control centres re-dispatch on a five-minute cycle. This is about seventy thousand times faster than the clock it would have to keep.

3 · How many futures

Same thing, other dial: horizon pinned at 14, vary how many futures get sampled per decision. One rollout is again exactly the empty room.

R=15,642.8
R=25,652.5
R=45,688.4
R=85,745.0
R=165,766.3
R=325,827.7
R=485,862.7
R=645,903.3
R=805,884.8
R=965,897.3
bars start at 5,600 MW served — the empty-control-room floor is 5,642.8 MW

It saturates. Past about 64 futures per decision the returns are inside the noise — 80 rollouts scored 5,884.8, below 64’s 5,903.3. Depth of imagination buys more than breadth of it.

4 · Every line, at summer peak

All 46 branches of the case, each failed in turn, mean of 6 seeds at 115% load. Sorted by how much load the deep room saves over an empty one. Nothing removed.

LINERATINGDEEPMYOPICNO OPERATORSAVED
16–21600 MW6,135.05,084.25,084.2+1,050.8
23–24600 MW6,131.65,084.25,084.2+1,047.4
17–18600 MW6,390.46,065.45,542.3+848.1
16–17600 MW5,970.25,188.35,188.3+781.9
6–11480 MW5,877.45,161.15,163.2+714.2
3–18500 MW6,530.75,878.45,878.4+652.3
10–13600 MW5,800.75,153.45,153.4+647.3
4–5600 MW5,436.94,791.44,791.4+645.5
10–11600 MW5,735.25,153.45,153.4+581.8
13–14600 MW5,591.35,227.55,089.4+501.9
15–16600 MW6,377.85,878.45,878.4+499.4
2–25500 MW6,728.06,327.06,327.0+401.0
14–15600 MW6,227.25,878.45,878.4+348.8
2–3500 MW6,150.15,878.45,878.4+271.7
5–61200 MW6,150.15,878.45,878.4+271.7
12–11500 MW6,150.15,878.45,878.4+271.7
12–13500 MW6,150.15,878.45,878.4+271.7
16–24600 MW6,150.15,878.45,878.4+271.7
22–23600 MW6,150.15,878.45,878.4+271.7
26–28600 MW6,150.15,878.45,878.4+271.7
26–29600 MW6,150.15,878.45,878.4+271.7
28–29600 MW6,150.15,878.45,878.4+271.7
6–7900 MW6,075.35,878.45,878.4+196.9
5–8900 MW6,051.65,878.45,878.4+173.2
1–391000 MW6,109.15,990.65,990.6+118.5
7–8900 MW5,953.15,878.45,878.4+74.7
3–4500 MW5,949.55,878.45,878.4+71.1
9–39900 MW6,231.36,160.26,160.2+71.1
4–14500 MW5,923.65,878.45,878.4+45.2
21–22900 MW4,825.64,781.44,781.4+44.2
20–34900 MW5,330.35,324.95,324.9+5.4
16–19600 MW5,473.35,469.35,469.3+4.0
19–33900 MW5,165.25,161.35,161.3+3.9
22–35900 MW5,125.45,121.55,121.5+3.9
23–36900 MW5,247.05,243.15,243.1+3.9
6–311800 MW5,183.95,180.15,180.1+3.8
10–32900 MW5,080.35,078.45,078.4+1.9
1–2600 MW5,878.45,878.45,878.4+0.0
2–30900 MW6,327.06,327.06,327.0+0.0
8–9900 MW6,167.76,167.76,167.7+0.0
17–27600 MW6,201.56,201.56,201.5+0.0
19–20900 MW6,918.46,745.06,918.4+0.0
25–26600 MW6,020.66,020.66,020.6+0.0
25–37900 MW5,763.05,763.05,763.0+0.0
26–27600 MW5,878.45,878.45,878.4+0.0
29–381200 MW4,390.74,392.14,392.1-1.4

5 · Where looking further made it worse

7 of 276 runs at summer peak, and 9 of 276 at nominal, the myopic room beat the deep one. Here is every one of them, unedited. In most cases the deep room spent a few megawatt-hours probing a redispatch that did not pay off; in run 13–14 at seed 7 it lost 460 MW outright by committing to a path the shallow room never explored. Search is not a guarantee. It is a better bet.

LOADLINESEEDDEEPMYOPICNO OPERATORCOST
115%13–1475,163.25,622.85,089.4-459.6
115%21–22294,771.14,781.44,781.4-10.3
115%21–221014,772.84,781.44,781.4-8.6
115%29–386174,386.54,392.14,392.1-5.6
115%29–3820264,390.84,392.14,392.1-1.3
115%10–1340995,140.55,153.45,153.4-12.9
115%29–3840994,390.84,392.14,392.1-1.3
100%6–3176,240.26,254.26,254.2-14.0
100%23–3676,226.86,254.26,254.2-27.4
100%13–141016,240.26,254.26,254.2-14.0
100%20–341016,240.26,254.26,254.2-14.0
100%6–316176,240.26,254.26,254.2-14.0
100%10–3220266,240.26,254.25,025.5-14.0
100%20–3420266,240.26,254.26,254.2-14.0
100%16–1940996,240.26,254.26,254.2-14.0
100%19–3340996,240.26,254.25,098.5-14.0

What this is, and what it is not

IT IS REAL PUBLISHED DATA

IEEE 39-bus New England, the standard test system since 1979, taken unmodified from PYPOWER’s case39: 39 buses, 46 branches with their real thermal ratings, 10 generators with real limits, 6,254.23 MW of load. The base-case flow solution here agrees with PYPOWER’s own DC solver.

IT IS NOT A UTILITY'S LIVE NETWORK

No real operator’s topology, no real telemetry, no real market. A benchmark case is a laboratory, not a control room. Anyone claiming a browser demo fixes a real grid is lying to you.

IT IS A DC POWER FLOW

Linearised: no voltage, no reactive power, no transient stability, no frequency dynamics. The standard first-order tool for exactly this kind of contingency screening, and genuinely inadequate for the voltage-collapse blackouts that DC flow cannot see.

THE CASCADE MODEL IS SIMPLIFIED

Overloaded lines accumulate heat proportional to how far over rating they are and the relay opens at a fixed threshold. Real protection is far messier — distance relays, hidden failures, operator intervention. Our cascade is deterministic and ours.

NOTHING IS LEARNED

No weights, no training set, no gradient, no model of any kind. The machine plays the physics forward with a random number generator, keeps the first move of the best future it found, and throws away every other future it imagined. That is the entire algorithm.

BOTH ROOMS ARE GIVEN EXACTLY THE SAME THING

Same C, same physics, same seed stream, same eight periods of warning. The first rollout of every decision is always “hold”, and a room only deviates from holding if a future strictly beats it. That is why the myopic room lands on the no-operator number instead of below it. Without that rule the comparison would be a strawman, and an earlier version of this page would have been one.

THE PICTURE IS NOT A MAP

Bus positions come from a force-directed layout of the electrical graph, not from geography. New England does not look like that.

THE SCORING IS ONE NUMBER

Value of an imagined future = megawatts served, summed over the horizon. No penalty terms, no weights, no hand-tuning. We tried tuned objectives during prototyping and deleted them, because a tuned objective is a place to hide.