After a long journey, I’m pleased to announce JuliaGrid.jl, a Julia package that focuses on steady-state power system analyses. The package offers a versatile set of algorithms along with tools for easily manipulating power system configurations, measurements, and analysis workflows.
JuliaGrid includes all major steady-state power system analyses, such as power flow, optimal power flow, and state estimation algorithms, in both AC and DC frameworks. The state estimation module supports multiple types of estimators and includes observability analysis and bad data detection. In addition, the framework allows for straightforward modifications of network topology and measurement data, making it well suited for quasi-steady-state analyses.
Beyond the code itself, we’ve dedicated significant effort to documenting all implemented algorithms. The documentation not only explains how to use the package but also explores the theoretical foundations of state-of-the-art methods. This enables users to gain a deeper understanding of the equations behind each function. With many examples included, the package is intended to be useful not only for researchers and engineers but also for students learning power system analysis.
Awesome initiative, thanks!
Does it connect with the existing PowerSystems.jl or PowerModels.jl? If not, could you explain the differences between these frameworks to a layperson?
Also, I was curious whether there could be an API for automatically downloading instances (e.g. using DataDeps.jl), for instance those of GitHub - power-grid-lib/pglib-opf: Benchmarks for the Optimal Power Flow Problem?
Thanks for the feedback. Currently, the package is not integrated with any of the mentioned packages. The main difference is that JuliaGrid, in addition to power flow and optimal power flow, also includes state estimation algorithms. The framework supports observability analysis, weighted least-squares and least-absolute value estimators, bad data detection, and various algorithms related to phasor measurements or PMUs. To the best of my knowledge, this is the first open-source framework that brings all of these routines together.
The framework also provides a set of functions that leverage the results from power flow and optimal power flow to generate measurements used as input for state estimation.
Another important feature is that JuliaGrid allows users to easily create and modify instances of power system models and analysis routines. For example, suppose you load a large-scale power system and create a fast Newton-Raphson instance for AC power flow. If you then want to study how changes in demand affect the system, JuliaGrid enables you to apply those changes directly to the existing fast Newton-Raphson instance. In this specific case, it can reuse factorized matrices to quickly compute the new solution.
In other words, when you change the topology or parameters of the power system, there’s no need to start from scratch, JuliaGrid is designed to efficiently update and reuse existing computational structures.
Finally, by implementing computationally efficient algorithms, JuliaGrid can solve large-scale systems across all routines with competitive execution times compared to other open-source tools. For instance, the figure shows the time to solve AC power flow, where Matpower is used as the baseline. The other bars represent JuliaGrid performance across different routines. As shown, each routine has been optimized for speed, even on large systems.
Sorry, just fixed the link. It’s a repository of OPF instances, and I thought for such a unified package it may make sense to provide automated download capabilities for some standard benchmark dataset (although I have no idea what is standard in that field)
We currently provide a standalone parser for MATPOWER cases, a widely known and popular dataset. Users can also save these cases, or ones they build from scratch in HDF5 format for faster loading. Additionally, we allow users to download selected cases directly from a GitHub link: