A Julia/JuMP Package for Power Network Optimization
316 Stars
Updated Last
1 Year Ago
Started In
August 2016


PowerModels logo

Status: CI codecov Documentation

PowerModels.jl is a Julia/JuMP package for Steady-State Power Network Optimization. It is designed to enable computational evaluation of emerging power network formulations and algorithms in a common platform. The code is engineered to decouple problem specifications (e.g. Power Flow, Optimal Power Flow, ...) from the power network formulations (e.g. AC, DC-approximation, SOC-relaxation, ...). This enables the definition of a wide variety of power network formulations and their comparison on common problem specifications.

Core Problem Specifications

  • Power Flow (pf)
  • Optimal Power Flow (opf)
  • Optimal Transmission Switching (ots)
  • Transmission Network Expansion Planning (tnep)

Core Network Formulations

  • AC (polar and rectangular coordinates)
  • DC Approximation (polar coordinates)
  • LPAC Approximation (polar coordinates)
  • SDP Relaxation (W-space)
  • SOC Relaxation (W-space)
  • QC Relaxation (W+L-space)
  • IV (rectangular coordinates)

Network Data Formats

  • Matpower ".m" files
  • PTI ".raw" files (PSS(R)E v33 specification)


The package documentation includes a variety of useful information including a quick-start guide, network model specification, and baseline results.

Additionally, these presentations provide a brief introduction to various aspects of PowerModels,


Community-driven development and enhancement of PowerModels are welcome and encouraged. Please fork this repository and share your contributions to the master with pull requests. See CONTRIBUTING.md for code contribution guidelines.


This code has been developed as part of the Advanced Network Science Initiative at Los Alamos National Laboratory. The primary developer is Carleton Coffrin (@ccoffrin) with support from the following contributors,

  • Per Aaslid (@peraaslid) SINTEF ER, Branch flow storage model and linear branch flow formulation
  • Juan Luis Barbería (@jbarberia) UTN-BA, PSS(R)E v33 data export, Jacobian support for basic network data
  • Russell Bent (@rb004f) LANL, Matpower export, TNEP problem specification
  • Jose Daniel Lara (@jd-lara) Berkeley, Julia v1.0 compatibility
  • Jay Dave (@jay-dave) KU Leuven, LPAC for TNEP and OTS problems
  • Hakan Ergun (@hakanergun) KU Leuven, HVDC lines
  • David Fobes (@pseudocubic) LANL, PSS(R)E v33 data support
  • Rory Finnegan (@rofinn) Invenia, Memento Logging
  • Frederik Geth (@frederikgeth) CSIRO, storage modeling advise, Branch Flow and current-voltage formulation
  • Jonas Kersulis (@kersulis) University of Michigan, Sparse SDP formulation
  • Miles Lubin (@mlubin) MIT, Julia/JuMP advise
  • Yeesian Ng (@yeesian) MIT, Documenter.jl setup
  • Kaarthik Sundar (@kaarthiksundar) LANL, OBBT utility
  • Mathieu Tanneau (@mtanneau) Georgia Tech, PTDF matrix computation
  • Byron Tasseff (@tasseff) LANL, multi-infrastructure updates

Citing PowerModels

If you find PowerModels useful in your work, we kindly request that you cite the following publication:

  author = {Carleton Coffrin and Russell Bent and Kaarthik Sundar and Yeesian Ng and Miles Lubin},
  title = {PowerModels.jl: An Open-Source Framework for Exploring Power Flow Formulations},
  booktitle = {2018 Power Systems Computation Conference (PSCC)},
  year = {2018},
  month = {June},
  pages = {1-8},
  doi = {10.23919/PSCC.2018.8442948}

Citation of the original works for problem definitions (e.g. OPF) and power flow formulations (e.g. SOC) is also encouraged when publishing works that use PowerModels.


This code is provided under a BSD license as part of the Multi-Infrastructure Control and Optimization Toolkit (MICOT) project, LA-CC-13-108.