- GENCO on Chile's national grid: what it gets right, where physics still wins, and a gate that knows when it is out of its depth
- In one minute
- The grid and its operating scenarios
- What we did
- Result 1 - Near the reference, GENCO does not beat simple baselines
- Result 2 - On unseen scenarios GENCO stays where it was trained; DC wins on flows
- Result 3 - GENCO's own residual flags unfamiliar operating conditions
- Result 4 - More operator scenarios fix voltages and angles, not flows
- Result 5 - N-1 screening
- Limits, and what the next versions explore
- Code, weights and data
- In one minute
GENCO on Chile's national grid: what it gets right, where physics still wins, and a gate that knows when it is out of its depth
Participant: Matías Agüero-Soto (mas-gridoveture), Grid Overture - mas@gridoverture.ai
In one minute
- What we tested. Whether GENCO, a pretrained graph neural network for AC power flow, can serve a national system operator: accurate on branch flows and voltages, and aware of when not to be trusted, so AC takes over. We fine-tuned it on Chile's national grid (3,100 buses), built from the operator's public database, and checked every prediction against an exact AC power flow and the simple methods an operator already has.
- What works: a self-check. From its own prediction, without the answer, GENCO can tell when an operating condition is outside what it learned. This physics gate sent all 1,601 unseen cases to AC and accepted 99.85 % of the familiar ones. For now it is a coarse detector, not an error estimate.
- What does not work yet: branch flows. Near its training point a per-bus average does as well. On new operating conditions, DC power flow predicts branch flows 14-18x better. More operator scenarios in training improved voltages (27-39 %) and angles (27-62 %), not flows, which is what an operator acts on.
The physics gate in 72 seconds (open the video).
The grid and its operating scenarios
Chile's National Electric System (SEN) runs about 3,000 km north to south: a 500 kV backbone, solar in the north, hydro in the south. Our model has 3,100 buses, 3,486 branches (lines and transformers connected at both ends), 281 generators and 1,001 loads, converted from the operator's PowerFactory database to CGMES 3.0 / XIIDM and matched to PowerFactory's load flow (0.0008 pu, 95th percentile).
The operator's database holds ten scenarios: weekday, Saturday and Sunday in the early morning, daytime and evening, plus a high-renewables case, each with its own demand, mix, units in service and breaker states (6-10 % of nodes connected differently from the reference).
| scenario | demand GW | distributed (negative load) GW | solar + wind % | hydro % | thermal % | units in service | role |
|---|---|---|---|---|---|---|---|
| Weekday daytime | 9.2 | 0.9 | 42 | 17 | 40 | 254 | reference |
| Weekday early morning | 9.3 | 0.1 | 15 | 27 | 48 | 197 | GENCO-multi training |
| Weekday evening | 9.8 | 0.3 | 30 | 18 | 51 | 261 | GENCO-multi training |
| Saturday evening | 9.9 | 0.2 | 24 | 17 | 55 | 220 | GENCO-multi training |
| Sunday early morning | 7.4 | 0.2 | 16 | 18 | 63 | 241 | GENCO-multi training |
| Saturday daytime | 8.1 | 1.2 | 54 | 13 | 33 | 274 | not used |
| Saturday early morning | 8.5 | 0.2 | 23 | 18 | 48 | 202 | held out |
| Sunday daytime | 8.5 | 1.0 | 43 | 14 | 42 | 274 | held out |
| Sunday evening | 9.7 | 0.1 | 22 | 17 | 55 | 196 | held out |
| High renewables | 7.5 | 1.6 | 61 | 12 | 27 | 247 | held out |
Names are the operator's (madrugada = early morning); the export carries no hour for any scenario. Shares of generation by units; the rest is batteries and geothermal. Distributed: generation modelled as negative load, outside the shares; 0.04-0.72 GW of it is named solar and wind plants, the rest is net injection at distribution points of a technology the export does not carry (in Chile, distribution-connected small plants, PMGD, were 80 % solar PV by capacity in 2023). Units in service: generators producing active power.
The unseen scenarios span from almost no solar (Saturday early morning, Sunday evening: 0-2 %, 0.1-0.2 GW distributed) to High renewables (61 % solar + wind, plus the most distributed generation, 1.6 GW). Saturday early morning and Sunday evening are the farthest from the daytime reference: about 20 points less solar + wind and the most rewired nodes (267-304).
What we did
Data. 19,889 variations of the reference (load x 0.73-1.10, one random branch out), solved by AC (PowerModels, via
gridfm-datakit); 3,977 test variations frozen with hashes before training; 396-399 per held-out scenario.Three models from the public
genco-pf-transfercheckpoint, trained withgridfm-graphkiton one RTX 5090 (~2.7 GPU hours per 30 epochs):model trained on GENCO-ref reference variations, 90 epochs GENCO-multi GENCO-ref + 30 epochs on reference variations and four more operator scenarios GENCO-ref (control) GENCO-ref + 30 epochs on reference variations only (same steps, optimizer, seed): separates new scenarios from longer training Judges. PowerModels and OpenLoadFlow agree to 0.0011 pu and 0.06 deg (95th percentile).
Baselines. DC power flow; the average operating point ("assume nothing changed"); DC minus its per-bus angle offset.
Result 1 - Near the reference, GENCO does not beat simple baselines
| 3,977 test variations, MAE | voltage (pu) | angle (deg) | P flow (MW) | loading (points) |
|---|---|---|---|---|
| GENCO-ref | 0.0116 | 0.92 | 1.73 | 1.46 |
| DC power flow | 0.0553 | 22.5 | 2.12 | 1.77 |
| average operating point | 0.0079 | 0.96 | 1.77 | 1.07 |
| DC + angle offset | 0.0079 | 0.32 | 0.24 | 0.36 |
GENCO beats DC by 19 % on flows, but its voltage error is 46 % above the average operating point. DC's angle error is 98.6 % a fixed per-bus shift; without it, DC wins.
Result 2 - On unseen scenarios GENCO stays where it was trained; DC wins on flows
Trained on the reference only, GENCO's voltages and angles on the held-out scenarios are within 0-4 % of the average operating point: it does not follow the new condition. Its flows beat that average by 54-86 %, but DC is 14-18x better (2.0-3.9 MW against 28-64 MW). DC minus the offset has the best angles (1.9-7.8 deg) yet the worst flows (44-155 MW). GENCO's flow error does not follow the mix: it is largest on Sunday daytime, the scenario closest to the reference.
Result 3 - GENCO's own residual flags unfamiliar operating conditions
The gate puts GENCO's predicted voltages back into the network equations and measures the power imbalance per bus. It is the analogue of the J(x) chi-square bad-data test of state estimation: a residual of the network equations against a threshold, with no reference answer. Differences: our residual is unweighted, in MVA per bus, and the threshold is empirical (99.5th percentile of validation, 2.17 MVA).
- Familiar (3,977 test cases): 99.85 % accepted.
- Unseen (1,601 = 1,593 variations of the four held-out scenarios + 8 operator scenarios): 100 % sent to AC (median scores 42-90 MVA). AUROC 1.000 for all three models.
Effective time on familiar cases: 6.0 ms per case against 132 ms for AC: GENCO's forward pass amortized over a GPU batch (64 cases, RTX 5090) plus AC on the few rejected; the residual's cost is not timed; the reference is a warm-started AC on one CPU core.
Result 4 - More operator scenarios fix voltages and angles, not flows
| GENCO-multi vs control | voltage | angle | P flow | loading |
|---|---|---|---|---|
| Saturday early morning | -39 % | -55 % | +39 % | +68 % |
| Sunday daytime | -29 % | -27 % | -7 % | -0.5 % |
| Sunday evening | -37 % | -62 % | +22 % | +22 % |
| High renewables | -27 % | -32 % | +135 % | +115 % |
All 16 changes are outside the case-sampling intervals (one seed per model); the smallest, -0.5 % on Sunday daytime loading, is too, and no interval crosses zero. Flows improve only on scenarios that were in training (-59 % and -64 % on two) and worsen on unseen ones. Covering more operating conditions moves voltages toward AC; it does not yet teach how power redistributes.
Result 5 - N-1 screening
Alone, GENCO's overload flags are near-random. DC for active power plus GENCO-multi for reactive power and voltage catches 67 of 81 overloads (DC: 56) and avoids 96 % of AC runs (DC: 99 %). Its F3 (recall weighted 3x) is 0.75 against DC's 0.70, but the 95 % interval of the difference, [-0.04, +0.16], includes zero: not yet a proven gain.
Limits, and what the next versions explore
- The gate is a coarse detector, not yet an error estimator. It separates familiar from unfamiliar operating conditions when the shift is large (unseen scores are 28-60x the familiar median), but among familiar cases it only weakly tracks the error (Spearman 0.40 on angle), and smaller shifts were not tested. Next: calibrate it on graded shifts, from topology variations of the node-breaker model (breaker states, units in service) and from real historical operating snapshots of the operator; weight the residual per bus as the J(x) test does; report it per bus and per branch with a calibrated error bound.
- Flows. Next: a branch-flow loss, more dispatches with real generator limits (the converted model's are placeholders, so dispatch was not varied), and learning a correction to DC.
- One topology and set of units in training. Next: breaker states and committed units as training variables.
- One seed per retrained model, four held-out scenarios, N-1 on sampled outages. Next: more seeds and scenarios, N-1 over every branch, a public replica on IEEE 118 / Texas 2000-bus.
Code, weights and data
- Code: code/; full report with every table, floor and the toolkit issues found: REPORT.md; weights of the three models: weights/. Apache-2.0.
- Network data: the operator's PowerFactory database is publicly available from the CEN; we do not redistribute it or its converted files.
Disclaimer: this work uses the public PowerFactory database of Chile's Coordinador Eléctrico Nacional (CEN). It was not consulted with, reviewed by or endorsed by the CEN. The analysis, the converted models and any errors are the sole responsibility of Grid Overture.
Model tree for mas-gridoveture/genco-sen-preview
Base model
gridfm/genco-pf-transfer



