PyPSA Logo PyPSA

What's next

Roadmap

What we're planning to build and a selection of what was recently shipped. If you want to get involved, reach out to us or follow along in the repositories.

Planned

Piecewise-linear relationships

Piecewise-linear investment costs, marginal costs and efficiencies.

Planned

Stricter network validation

Catch inconsistent inputs for better and earlier user feedback.

Planned

New file format

A new network format, faster than today's netCDF, that loads data lazily, reads only what is needed and supports streaming.

Planned

Improved model scaling

Automatic scaling to improve the model's numerical conditioning, solver stability and speed.

Planned

Custom constraint interface

Define constraints and models in a text-based format, without the need for scripting.

Planned

Roundtrip Serialisation IO

Any network object can be saved and loaded back identically, with no state lost, including custom constraints, solver metadata and geospatial data.

Planned

Endogenous learning curves

Technological learning modelled endogenously via piecewise-linear constraints, so costs fall with deployment.

Planned

Maintenance scheduling

Schedule optimal maintenance windows for components (e.g. generators, links) with contiguous downtime blocks, partial outages, and multiple events in a year.

Planned

Categorised components

Separate physical components (e.g. generators, lines) from shared properties (e.g. carriers) and allow custom-defined properties.

Planned

Unit commitment extensions and speed-up

An extended and more performant unit commitment formulation considering a wider set of operational constraints.

Planned

Non-uniform time resolution

Mix different snapshot resolutions per bus or carrier within a single model to save computation time.

Planned

Global sensitivity analysis

A new module for uncertainty quantification and global sensitivity analysis.

Planned

Interactive dashboard

Launch a local dashboard straight from PyPSA, powered by the PyPSA App, to explore, visualise and analyse networks with statistics, plots and interactive maps.

21 Apr 2026

Process component

v1.2.0

New multi-port Process component with explicit conversion rates.

21 Apr 2026

Link & process time-delays

v1.2.0

Weighted time-delays for Link and Process component outputs.

17 Feb 2026

Temporal clustering

v1.1.0

New n.cluster.temporal.* accessor to aggregate snapshots into representative periods.

17 Feb 2026

Committable + extendable assets

v1.1.0

Components can now be committable and capacity-extendable at the same time.

17 Feb 2026

Secant transmission losses

v1.1.0

New secant-based approximation of transmission losses with configurable tolerances, alongside the existing tangent method.

13 Jan 2026

Overnight & FOM cost split

v1.0.7

Specify overnight investment cost and fixed O&M separately and let PyPSA annuitise them at solve time, with dedicated cost statistics for reporting.

14 Oct 2025

PyPSA 1.0 🎉

v1.0.0

PyPSA finally goes officially stable.

14 Oct 2025

Stable release

v1.0.0

PyPSA is now stable. Upgrades within 1.x won't break your code, and breaking changes wait for the next major version with deprecation warnings first.

14 Oct 2025

Stochastic optimisation

v1.0.0

Two-stage stochastic optimisation across weighted scenarios.

14 Oct 2025

Interactive maps

v1.0.0

n.explore() now returns PyDeck maps supporting all static-plot options, exportable to self-contained HTML.

14 Oct 2025

xarray optimisation core

v1.0.0

Optimisation model rebuilt on an xarray view that spans all dimensions at once, enabling cleaner problem formulation.

14 Oct 2025

Directional MGA

v1.0.0

Solve modelling-to-generate-alternatives along chosen directions in user-defined coordinate space, with a parallelised multi-direction sweep.

14 Oct 2025

CVaR risk-averse mode

v1.0.0

Conditional Value-at-Risk objective for risk-averse optimisation.

22 Jun 2025

Interactive statistics plots

v0.35.0

Interactive equivalent of every statistics plot via plotly.

22 Jun 2025

NetworkCollection container

v0.35.0

Experimental NetworkCollection holds many Network objects in one container for comparison.

25 Mar 2025

Excel import/export

v0.34.0

Read and write whole networks as Excel workbooks.

25 Mar 2025

Statistics plotting API

v0.34.0

A plotting API on every statistic out of the box.

7 Feb 2025

Global options

v0.33.0

Pandas style options to allow configuring PyPSA globally.

7 Feb 2025

Component class refactor

v0.33.0

New component class layer moving component data off the Network object, easing future features.

5 Dec 2024

Optimisation expressions

v0.32.0

New n.optimize.expressions module builds constraint expressions with the same grouping and filtering as the statistics module.

1 Oct 2024

Active component flag

v0.31.0

New active attribute toggles assets in or out of optimisation, power flow and statistics as a global filter.

30 Aug 2024

Interactive map exploration

v0.30.0

n.explore() opens interactive folium/geopandas network maps.

31 Jul 2024

HiGHS becomes default solver

v0.29.0

The open-source HiGHS solver is now PyPSA's default.

31 Jul 2024

Legacy LOPF removed

v0.29.0

The old Pyomo and nomopyomo LOPF implementations were removed.

8 May 2024

Network merging

v0.28.0

New n.merge() (also n + m) combines the components and time series of two networks into one.

4 Dec 2023

Geographic shapes component

v0.26.0

New n.shapes component to attach geographic geometries to a network.

4 Dec 2023

Modular capacity expansion

v0.26.0

Discrete, modular (block-size) capacity expansion for components.

13 Jul 2023

Rolling-horizon optimisation

v0.25.0

Solve long time series in sequential overlapping windows.

13 Jul 2023

Modelling to generate alternatives

v0.25.0

MGA explores near-optimal solution spaces beyond the single least-cost result.

13 Jul 2023

Spatial clustering accessor

v0.25.0

Refactored clustering exposed on the network via n.cluster.* with consistent strategies and better performance.

27 Jun 2023

Quadratic marginal costs

v0.24.0

Quadratic marginal cost terms for generators, links, stores and storage units (needs a QP-capable solver).

27 Jun 2023

Energy-balance statistics

v0.24.0

Statistics module gains energy balances, dispatch, time series and market values per bus.

27 Jun 2023

n.optimize() replaces n.lopf()

v0.24.0

The legacy n.lopf() is deprecated in favour of the Linopy-based n.optimize(), with a migration guide.

10 May 2023

Transmission losses

v0.23.0

Piecewise-linear approximation of transmission losses in the LOPF.

10 May 2023

Linearised unit commitment

v0.23.0

Linear relaxation of unit commitment for faster large-scale solves.

10 May 2023

Time-varying efficiencies

v0.23.0

Component efficiencies can now vary over snapshots.

7 Nov 2022

Linopy optimisation backend

v0.21.0

New n.optimize() built on Linopy — faster model build and a cleaner extra-functionality API.

7 Nov 2022

Statistics module

v0.21.0

New n.statistics module for system metrics like capex, opex, capacity and curtailment.

11 Feb 2022

Open-source HiGHS solver

v0.19.0

Interface to the open-source HiGHS solver.

11 Feb 2022

Ramp limits for links

v0.19.0

Ramp-rate limits extended to Link components.

11 Feb 2022

Hierarchical network clustering

v0.19.0

Hierarchical agglomerative clustering (HAC) for spatial network aggregation.

12 Aug 2021

Multi-period pathway optimisation

v0.18.0

Investment optimisation across multiple periods/decades.

12 Aug 2021

Relicensed to MIT

v0.18.0

PyPSA relicensed from GPLv3 to the permissive MIT license.

23 Mar 2020

Custom objective functions

v0.17.0

Pyomo-free LOPF gains custom objective terms via extra_functionality and parsed shadow prices.

23 Mar 2020

CPLEX solver support

v0.17.0

CPLEX added as an optimisation solver option.

20 Dec 2019

Pyomo-free optimisation

v0.16.0

In-house LOPF framework (pyomo=False) cutting memory use and solve time for large networks.

20 Dec 2019

Distributed slack power flow

v0.16.0

Non-linear power flow can spread the slack across many generators by dispatch or custom weights instead of a single slack bus.

25 Jan 2018

Multi-output links

v0.13.0

Links with multiple outputs at fixed ratios, e.g. CHP units producing both power and heat.

25 Jan 2018

NetCDF network files

v0.13.0

Faster, compact single-file NetCDF network storage.

30 Nov 2017

Line flow limits (s_max_pu)

v0.12.0

New s_max_pu caps passive-branch flow as a share of rating — usable as an n-1 contingency factor or time-varying dynamic line rating.

21 Oct 2017

Bulk component creation

v0.11.0

New n.madd() adds many components at once, far faster than repeated n.add() calls.

21 Oct 2017

HDF5 network I/O

v0.11.0

Export and import whole networks as single HDF5 files via n.export_to_hdf5() / n.import_from_hdf5().

7 Aug 2017

Global constraints (CO₂ limits)

v0.10.0

New GlobalConstraint component for system-wide limits such as CO₂ emissions.

29 Apr 2017

Unit commitment (MILP)

v0.9.0

MILP unit commitment for generators: binary online status, minimum part loads, min up/down times, start-up and shut-down costs.

29 Apr 2017

Generator ramp limits

v0.9.0

Ramp-up and ramp-down rate limits implemented for all generators.

29 Apr 2017

Faster cycle-flow LOPF

v0.9.0

Mathematically-equivalent cycle-flow LOPF formulations solving up to 20× faster than the angle-based formulation.

25 Jan 2017

Standard line & transformer types

v0.8.0

Built-in pandapower-based standard types — set a type and length instead of computing electrical parameters by hand.

25 Jan 2017

Overhauled transformer model

v0.8.0

More accurate T-model equivalent circuit with discrete tap steps and consistent phase-shift handling.

20 Nov 2016

Time-varying attributes

v0.7.0

Any component attribute can be static or vary per snapshot, storing only the columns that change — the time-series foundation for the whole framework.

23 Aug 2016

Store component

v0.6.0

New fundamental Store component for energy storage, inheriting the carrier of its bus.

23 Aug 2016

Sector-coupling models

v0.6.0

Link-based models for CHP, heat pumps, resistive power-to-heat, power-to-gas and battery electric vehicles.

21 Jul 2016

Link component

v0.5.0

New controllable directed Link component — the primitive behind power-to-X and sector coupling.

21 Jul 2016

Multi-energy carriers

v0.5.0

Generic bus carrier attribute (heat, gas, …) replacing AC/DC-only buses, enabling multi-energy networks.

21 Jul 2016

Security-constrained LOPF

v0.5.0

N-1 security-constrained optimisation keeping the network feasible under single-element outages.

27 Jan 2016

Power flow engine

v0.3.0

Full non-linear Newton-Raphson AC power flow and fast linear power flow over the network — the analysis core PyPSA is named for.

12 Oct 2015

First commit

The first commit of Python for Power System Analysis.