PowerDiff.jl

July 9, 2026 · View on GitHub

PowerDiff.jl

PowerDiff.jl

CI Docs

A Julia package for differentiable power system analysis. Compute sensitivities of power flow solutions, optimal power flow dispatch, and locational marginal prices with respect to network parameters.

Features

  • Unified sensitivity API: calc_sensitivity(state, :operand, :parameter) with Sensitivity{T} return type
  • DC OPF: B-theta formulation with analytical KKT sensitivities for demand, switching, cost, flow limits, and susceptances
  • DC power flow: Switching and demand sensitivities via matrix perturbation theory
  • AC power flow: Voltage and current sensitivities w.r.t. power injections
  • AC OPF: Full sensitivity analysis (switching, demand, costs, flow limits) via implicit differentiation of KKT conditions
  • LMP analysis: Locational marginal prices with energy/congestion decomposition
  • Load shedding: Sensitivity of optimal load curtailment to network parameters

Installation

Requires Julia 1.10 or later.

using Pkg
Pkg.add(url="https://github.com/grid-opt-alg-lab/PowerDiff.jl.git")

Quick Start

using PowerDiff

# Parse a supported PowerIO case into a PowerIO.BalancedNetwork
net = parse_file("case14.m")
dc_net = DCNetwork(net)
d = calc_demand_vector(net)

# Solve DC OPF and compute sensitivities
prob = DCOPFProblem(dc_net, d)
solve!(prob)

dlmp_dd = calc_sensitivity(prob, :lmp, :d)   # dLMP/dd (n x n)
dpg_dsw = calc_sensitivity(prob, :pg, :sw)   # dg/dsw (k x m)

dlmp_dd.formulation  # :dcopf
dlmp_dd[2, 3]        # dLMP_2 / dd_3

See the Getting Started guide for DC/AC power flow and OPF walkthroughs.

Documentation

Input Format

PowerDiff reads files through PowerIO. parse_file supports MATPOWER .m, PSS/E .raw, PowerWorld .aux, PowerModels JSON, and Egret JSON. For streams, pass from; JSON streams need from=:egret or from=:powermodels.

Dependencies

  • PowerIO.jl — Parser and data layer (see docs/powerio-integration.md)
  • JuMP.jl — Optimization modeling
  • ExaModels.jl — Alternative optimization modeling for GPU parallelization
  • Ipopt.jl — Default solver for DC and AC OPF

License

Apache License 2.0