Optimize

Methodology

This page is the fine print: what the model assumes, where it breaks down, and where the numbers come from.

New here? How it works explains what all this means, with pictures and no jargon.

What the optimizer actually does

For each simulated year and region, a Nelder-Mead numerical optimizer chooses how much new capacity to add for each of six sources (solar, wind, nuclear, gas, coal, battery), bounded by that source’s maximum build rate. It minimizes total system cost — financed capital + fixed O&M for everything installed, variable O&M + CO₂ cost for everything generated, plus a steep penalty for any unmet demand (“outage”) — subject to meeting demand in every one of the ~8,760 hours in the year. The optimizer re-runs with progressively tighter tolerances until two consecutive runs agree within 1%, so the answer is a close numerical approximation, not a proven global optimum.

Assumptions and limitations

  • Historical supply is treated as demand. The EIA data records what was generated, not what was needed; the model assumes those were equal (the grid didn’t experience unrecorded shortfalls in 2020–2025).
  • No transmission between regions. Each of the 13 regions is optimized independently. A region can’t import cheap wind from its neighbor at 3am — every region has to solve its own supply problem in isolation.
  • Hydro, oil, and “other” aren’t optimized. They’re assumed to scale with demand growth exactly as historically observed, and are excluded from the build/dispatch decision entirely.
  • One battery, grid-scale. Storage is modeled as a single aggregate battery per region (round-trip efficiency and hours-at-rated-power from Specs.csv), not specific technologies, siting, or transmission-level constraints.
  • Historical weather repeats. Each simulated year reuses the same 2020–2025 hourly capacity-factor patterns for solar and wind. The model doesn’t project future weather, climate change effects on renewable output, or extreme-weather grid stress.
  • No sub-hourly dynamics. Frequency regulation, ramping constraints, and anything faster than an hourly time step are out of scope.
  • Straight-line demand growth. Demand grows by a constant yearly multiplier — there’s no explicit modeling of electrification (EVs, heat pumps) as a distinct demand driver, though a higher growth rate can stand in for it.

Cost and data sources

  • Hourly generation data: US Energy Information Administration (EIA) API, per-region hourly fuel-type generation, January 2020–December 2025.
  • Capital costs: EIA Annual Energy Outlook 2025 capital cost assumptions, cross-checked against the IEA/NEA Projected Costs of Generating Electricity 2020 report.
  • Plant lifetimes, fixed/variable O&M, CO₂ intensity, and per-source build-rate caps are maintained in the underlying engine’s spec sheet and applied identically across all 13 regions.

Determinism and versioning

Every pre-computed result records the engine version, spec-sheet version, and EIA data version it was generated with. Comparing two scenarios generated under different versions of any of the three may reflect a change in assumptions, not just the policy knobs you changed — the Compare view is only an apples-to-apples comparison when those versions match.

Source and license

This site is built around the modeling engine and data pipeline from cliffgold/Optimize. As of this writing, that repository does not specify an open source license; treat the underlying model and data accordingly.