Benchmarks for the Optimal Power Flow Problem

Overview

Power Grid Lib - Optimal Power Flow

This benchmark library is curated and maintained by the IEEE PES Task Force on Benchmarks for Validation of Emerging Power System Algorithms and is designed to evaluate a well established version of the the AC Optimal Power Flow problem. This introductory video and detailed report present the motivations and goals of this benchmark library. In particular, these cases are designed for benchmarking algorithms that solve the following Non-Convex Nonlinear Program,

  The Mathematical Model of the Optimal Power Flow Problem  

A detailed description of this mathematical model is available here. All of the cases files are curated in the MATPOWER data format. Open-source reference implementations are available in MATPOWER and PowerModels.jl and baseline results are reported in BASELINE.md.

Problem Variants

These cases may also be useful for benchmarking the following variants of the Optimal Power Flow problem,

  • DC Optimal Power Flow
  • AC Optimal Transmission Switching
  • DC Optimal Transmission Switching

That said, these cases are curated with the AC Optimal Power Flow problem in mind. Application to other domains and problem variants should be done with discretion.

Case File Overview

A forthcoming technical report will detail the sources, motivations, and procedures for curating these case files.

In this repository the network data files are organized into the following three broad groups:

  • /*.m - base case benchmarks as originally specified
  • /api/*.m - heavily loaded test cases (i.e. binding thermal limit constraints)
  • /sad/*.m - small phase angle difference cases (i.e. binding phase angle difference constraints)

Contributions

All case files are provided under a Creative Commons Attribution License, which allows anyone to share or adapt these cases as long as they give appropriate credit to the orginal author, provide a link to the license, and indicate if changes were made.

Community-based recommendations and contributions are welcome and encouraged in all PGLib repositories. Please feel free to submit comments and questions in the issue tracker. Corrections and new network contributions are welcome via pull requests. All data contributions are subject to a quality assurance review by the repository curator(s).

Citation Guidelines

This repository is not static. Consequently, it is critically important to indicate the version number when referencing this repository in scholarly work.

Users of this these cases are encouraged to cite the original source documents that are indicated in the file headers and the achrive report.

Comments
  • DC Baselines, Constraints, and Inf

    DC Baselines, Constraints, and Inf

    Hello, I have some related questions about the DC OPF baselines.

    1. It seems that for many of the typical operating conditions, the DC approximation better minimizes the cost than the full AC solution. Is this expected? Does this factor in any constraint violations?

    2. In some of the small angle difference cases, the objective values for the DC approximation are listed as "Inf". Does that indicate a constraint violation?

    opened by ElPiloto 5
  • radial test cases

    radial test cases

    It seems none of the test cases in pglib-opf are radial? That makes it hard to use any of these benchmarks to use/extend them for models that require a consistent definition of upstream/downstream, e.g. as in [1] below.

    I recall that the NESTA archive had a /rad m file collection. Was there any discussion on including that in pglib-opf? What happened to it?

    [1] Dvorkin, V., Fioretto, F., Van Hentenryck, P., Kazempour, J., & Pinson, P. (2020). Differentially Private Optimal Power Flow for Distribution Grids, 1, 1–9. Retrieved from http://arxiv.org/abs/2004.03921

    opened by frederikgeth 5
  • Help In SDP-Relaxation method for solving OPF Problem

    Help In SDP-Relaxation method for solving OPF Problem

    Hello Sir, i came to know about you from your videos of Convex Relaxations in Youtube... Sir i need help from you, i am stuck in my project work....i am trying to find an optimze a system 3m9b for test....

    and i wrote the optimization problem like this.... for i=1:1 cvx_begin cvx_solver sedumi

    variables u(npv,1) variable W(2n,2n) symmetric summ=trace(YYreal(:,:,1)*W); for i=2:n summ=summ+trace(YYreal(:,:,i)*W); end for i=1:npv u(i,1)==trace(YYreal(:,:,i+npq)W);
    (This u contais the PV buses active power generation...(whose optimal value has to be found)) end minimize(w
    (sum(u)+trace(YYreal(:,:,n)*W)))

    subject to for i=1:npq (this are equality constraints "calculated active power=specified active power" for pv&pq buses) trace(YYreal(:,:,i)*W)-(Pg(i,1)-Pl(i,1))==0; trace(YYreal(:,:,i)*W)-(Pg(i,1)-Pl(i,1))==0; end for i=1:npv (this bounds i thought to apply after getting a local optimal solution from Newtons Method) trace(YYreal(:,:,i+npq)*W)+Pl(i+npq,1)>=-0.2 trace(YYreal(:,:,i+npq)*W)+Pl(i+npq,1)<=3 end

    for i=1:npq (this are equality constraints "calculated reactive power=specified reactive power" for only pq buses) trace(YYimag(:,:,i)*W)-(Qg(i,1)-Ql(i,1))==0; trace(YYimag(:,:,i)*W)-(Qg(i,1)-Ql(i,1))==0; end

    W==semidefinite(2*n); W>=0; cvx_end w=w+1 for i=1:npv Pg(i+npq,1)=trace(YYreal(:,:,i+npq)*W)+Pl(i+npq,1); end end

    Sir, in the paper it is "Zero Duality Gap In Optimal Power Flow" that rank of W matrix variable should come=1 when the duality gap is "0". and for that we applied weight method.(w is the weight)..

    Sir.. for some values of w i get solution as 'NAN'. and for some i get an optimal solution...but the 'W matrix' never comes of rank 1...

    i dont know where i am going wrong...but please help me with this....

    opened by 12146 1
  • Line limits units (`rateA`)

    Line limits units (`rateA`)

    Hi, first, thanks for your work aggregating and building this library!

    I'm trying to use the 1354pegase case and am implementing my own simplified opf model where I want to impose line current constraints for line l = (i,j) according to

    (|y_ij| |V_i - V_j|)^2 <= rhs
    

    for V_i, V_j the complex voltages at buses i and j and |y_ij| is the magnitude of the (i,j) element of the admittance matrix. (Btw, I'm ignoring tap adjustments now...)

    However, I'm not sure what the units of the rhs should be from the pglib case. According to Table V of the report (https://arxiv.org/abs/1908.02788), it seems that rateA is a thermal limit that was determined by the TL-UB method from Section V.B.2. Does this mean that the rateA is already normalized by baseMVA and given in p.u. form? Or should I divide rateA by 100 to get the p.u. (and then square it to set the value of the rhs).

    Thanks!

    opened by jacob-roth 1
  • Tranformer Parameter Checks

    Tranformer Parameter Checks

    In some cases all tap settings are 1.0, I check should be made so that this only occurs when the value is not 1.0 or the branch is connecting two voltage levels.

    opened by ccoffrin 1
  • Inverted Generator Bounds

    Inverted Generator Bounds

    Some inactive generators have infeasible active power bounds (i.e. pmax < pmin). Resolve this by ensuring,

    pmin = min(pmin,pmax)
    pmax = min(pmin,pmax)
    

    in all generators.

    opened by ccoffrin 0
  • Generator LB higher than UB in 1888_rte__api

    Generator LB higher than UB in 1888_rte__api

    In pglib_opf_case1888_rte__api.m, the real power lower bound for the generator at bus 1689 (line 2,044 of the `.m' file) is 280.0, but the upper bound has been modified to be 64 (from 930 in the original case). Is this intentional? If so, what does it mean if the generator is turned on?

    Thank you for your help!

    opened by emma58 2
  • Error when solving case89_pegase__api and case240_pserc__api

    Error when solving case89_pegase__api and case240_pserc__api

    Hello,

    I got the following error when solving OPF for 2 test cases: case89_pegase__api and case240_pserc__api with the MATPOWER function runopf. It seems that there is a problem when generator bound Pmax is 0.

    Error using makeAvl (line 52) makeAvl: either Qmin or Qmax must be equal to zero for each dispatchable load.

    Error in opf_setup (line 171) [Avl, lvl, uvl] = makeAvl(baseMVA, gen);

    Error in opf (line 198) om = opf_setup(mpc, mpopt);

    Error in runopf (line 75) [r, success] = opf(casedata, mpopt);

    Best regards,

    Christian

    opened by cbingane 7
  • Add 68-Bus System

    Add 68-Bus System

    Explore the possibility of including a network derived from the 68-Bus, 16-Machine, 5-Area Dynamic Test System.

    Related Links:

    • http://sites.ieee.org/pes-psdp/benchmark-systems-2/
    • https://electricgrids.engr.tamu.edu/electric-grid-test-cases/
    • http://icseg.iti.illinois.edu/new-england-68-bus-test-system/
    • http://sites.ieee.org/pes-resource-center/files/2015/08/PES_TR18_Benchmark-Systems-for-Small-Signal-Stability-Analysis-and-Control.pdf
    • http://www.sel.eesc.usp.br/ieee/NETS68/New_England_New_York_68_Bus_System_study_report.pdf
    opened by ccoffrin 0
Releases(v21.07)
Owner
A Library of IEEE PES Power Grid Benchmarks
A Library of IEEE PES Power Grid Benchmarks
Paper list of log-based anomaly detection

Paper list of log-based anomaly detection

Weibin Meng 411 Dec 05, 2022
Weakly Supervised End-to-End Learning (NeurIPS 2021)

WeaSEL: Weakly Supervised End-to-end Learning This is a PyTorch-Lightning-based framework, based on our End-to-End Weak Supervision paper (NeurIPS 202

Auton Lab, Carnegie Mellon University 131 Jan 06, 2023
RM Operation can equivalently convert ResNet to VGG, which is better for pruning; and can help RepVGG perform better when the depth is large.

RM Operation can equivalently convert ResNet to VGG, which is better for pruning; and can help RepVGG perform better when the depth is large.

184 Jan 04, 2023
PyTorch Implementation of CycleGAN and SSGAN for Domain Transfer (Minimal)

MNIST-to-SVHN and SVHN-to-MNIST PyTorch Implementation of CycleGAN and Semi-Supervised GAN for Domain Transfer. Prerequites Python 3.5 PyTorch 0.1.12

Yunjey Choi 401 Dec 30, 2022
A Python framework for conversational search

Chatty Goose Multi-stage Conversational Passage Retrieval: An Approach to Fusing Term Importance Estimation and Neural Query Rewriting Installation Ma

Castorini 36 Oct 23, 2022
BBB streaming without Xorg and Pulseaudio and Chromium and other nonsense (heavily WIP)

BBB Streamer NG? Makes a conference like this... ...streamable like this! I also recorded a small video showing the basic features: https://www.youtub

Lukas Schauer 60 Oct 21, 2022
Implement some metaheuristics and cost functions

Metaheuristics This repot implement some metaheuristics and cost functions. Metaheuristics JAYA Implement Jaya optimizer without constraints. Cost fun

Adri1G 1 Mar 23, 2022
This repository contains an overview of important follow-up works based on the original Vision Transformer (ViT) by Google.

This repository contains an overview of important follow-up works based on the original Vision Transformer (ViT) by Google.

75 Dec 02, 2022
PyTorch implementation for Graph Contrastive Learning with Augmentations

Graph Contrastive Learning with Augmentations PyTorch implementation for Graph Contrastive Learning with Augmentations [poster] [appendix] Yuning You*

Shen Lab at Texas A&M University 382 Dec 15, 2022
LAMDA: Label Matching Deep Domain Adaptation

LAMDA: Label Matching Deep Domain Adaptation This is the implementation of the paper LAMDA: Label Matching Deep Domain Adaptation which has been accep

Tuan Nguyen 9 Sep 06, 2022
This library contains a Tensorflow implementation of the paper Stability Analysis of Unfolded WMMSE for Power Allocation

UWMMSE-stability Tensorflow implementation of Stability Analysis of UWMMSE Overview This library contains a Tensorflow implementation of the paper Sta

Arindam Chowdhury 1 Nov 16, 2022
Official Pytorch implementation of "Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes", CVPR 2022

Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes / 3DCrowdNet News 💪 3DCrowdNet achieves the state-of-the-art accuracy on 3D

Hongsuk Choi 113 Dec 21, 2022
Control-Robot-Arm-using-PS4-Controller - A Robotic Arm based on Raspberry Pi and Arduino that controlled by PS4 Controller

Control-Robot-Arm-using-PS4-Controller You can see all details about this Robot

MohammadReza Sharifi 5 Jan 01, 2022
A self-supervised 3D representation learning framework named viewpoint bottleneck.

Pointly-supervised 3D Scene Parsing with Viewpoint Bottleneck Paper Created by Liyi Luo, Beiwen Tian, Hao Zhao and Guyue Zhou from Institute for AI In

63 Aug 11, 2022
ALIbaba's Collection of Encoder-decoders from MinD (Machine IntelligeNce of Damo) Lab

AliceMind AliceMind: ALIbaba's Collection of Encoder-decoders from MinD (Machine IntelligeNce of Damo) Lab This repository provides pre-trained encode

Alibaba 1.4k Jan 01, 2023
Cossim - Sharpened Cosine Distance implementation in PyTorch

Sharpened Cosine Distance PyTorch implementation of the Sharpened Cosine Distanc

Istvan Fehervari 10 Mar 22, 2022
Deep Hedging Demo - An Example of Using Machine Learning for Derivative Pricing.

Deep Hedging Demo Pricing Derivatives using Machine Learning 1) Jupyter version: Run ./colab/deep_hedging_colab.ipynb on Colab. 2) Gui version: Run py

Yu Man Tam 102 Jan 06, 2023
i3DMM: Deep Implicit 3D Morphable Model of Human Heads

i3DMM: Deep Implicit 3D Morphable Model of Human Heads CVPR 2021 (Oral) Arxiv | Poject Page This project is the official implementation our work, i3DM

Tarun Yenamandra 60 Jan 03, 2023
OpenAi's gym environment wrapper to vectorize them with Ray

Ray Vector Environment Wrapper You would like to use Ray to vectorize your environment but you don't want to use RLLib ? You came to the right place !

Pierre TASSEL 15 Nov 10, 2022
On Nonlinear Latent Transformations for GAN-based Image Editing - PyTorch implementation

On Nonlinear Latent Transformations for GAN-based Image Editing - PyTorch implementation On Nonlinear Latent Transformations for GAN-based Image Editi

Valentin Khrulkov 22 Oct 24, 2022