Skip to main content

A dynamic estimator for power systems

Project description

PowerDynamicEstimator (pydynamicestimator)

Version 0.2.0 released on 21.02.2025
DOI: 10.5905/ethz-1007-842

About

PowerDynamicEstimator is a state estimation tool for power systems using a recursive dynamic state estimator based on an incomplete nonlinear DAE (Differential Algebraic Equations) model. The estimator combines dynamic evolution equations, algebraic network equations, and phasor measurements to recursively estimate dynamic and algebraic states. It is suitable for centralized power systems dynamic estimation, even when some component models are missing or unknown.

Features

  • Centralized recursive dynamic state estimation based on a nonlinear DAE power system model
  • Works with missing or unknown component models
  • Customizable Kalman filter settings easily configurable via a ./config.py file for precise estimation
  • Network topology and parameters and dynamic models easily editable via ./data subfolder
  • Supports integration with Phasor Measurement Units (PMUs) in ./measurements.py
  • User defined models can be integrated in ./devices subfolder

Citation

If you use PowerDynamicEstimator in your academic work, please cite the following paper:

  • Katanic, Milos, Lygeros, John, Hug, Gabriela. "Recursive dynamic state estimation for power systems with an incomplete nonlinear DAE model." IET Generation, Transmission & Distribution, 18(22), 3657-3668, 2024.
    DOI: https://doi.org/10.1049/gtd2.13308
@article{powerdynamicestimator,
  author = {Katanic, Milos and Lygeros, John and Hug, Gabriela},
  title = {Recursive dynamic state estimation for power systems with an incomplete nonlinear DAE model},
  journal = {IET Generation, Transmission \& Distribution},
  volume = {18},
  number = {22},
  pages = {3657-3668},
  keywords = {differential algebraic equations, Kalman filters, state estimation},
  doi = {https://doi.org/10.1049/gtd2.13308}, 
  url = {https://ietresearch.onlinelibrary.wiley.com/doi/abs/10.1049/gtd2.13308},
  eprint = {https://ietresearch.onlinelibrary.wiley.com/doi/pdf/10.1049/gtd2.13308},
  year = {2024}
}

The full version of the paper is available on ArXiv.

Installation

To get started with PowerDynamicEstimator, follow these steps:

  1. Clone the repository:
git clone https://gitlab.nccr-automation.ch/mkatanic/powerdynamicestimator
cd PowerDynamicEstimator
  1. Install Dependencies:
pip install -r requirements.txt

Documentation

The documentation follows the Sphinx standard and can be found by opening ./docs/build/html/index.html from the root folder:

Windows:

start docs/build/html/index.html

Linux:

xdg-open docs/build/html/index.html

macOS:

open docs/build/html/index.html

Usage

Running the Estimator

  1. Navigate to the root directory:

    cd pydynamicestimator
    
  2. Run the main script:

    python -m main
    

Running the Estimator

The primary script ./main.py. You can define the simulation and estimation settings in ./config.py. System parameters are stored in the ./data subfolder. Refer to the documentation for additional details.

Important Notes

  • Injector Limitation: Currently, the system supports only one injector per node due to initialization ambiguity. To handle multiple injectors per node, you can create a new node connected via a branch with very small impedance to simulate this behavior.

Parameters

System dynamic and static parameters, including the topology, are specified in the ./data subfolder. You can define the loads, generators, and their characteristics at specific nodes in the power system. Refer to the documentation for additional details.

Phasor Measurement Units (PMUs) used for estimation and their associated characteristics are defined in the file: ./data/.../est_param.txt.

Kalman Filter Settings

Adjust parameters related to the recursive state estimation process (e.g., noise covariance, initial error) in the ./config.py file. Refer to the documentation for additional details.

License

This software is licensed under the GNU General Public License v3.0 (GPL-3.0).

Contact

For any questions or if you desired to contribute to this project, please contact me at mkatanic@ethz.ch.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydynamicestimator-0.2.0.tar.gz (6.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydynamicestimator-0.2.0-py3-none-any.whl (6.3 MB view details)

Uploaded Python 3

File details

Details for the file pydynamicestimator-0.2.0.tar.gz.

File metadata

  • Download URL: pydynamicestimator-0.2.0.tar.gz
  • Upload date:
  • Size: 6.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.8.2 Windows/10

File hashes

Hashes for pydynamicestimator-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1d661fde63a38e5eca0eb03025169922d44c4eaa69c8ebd2cf0ef68f080a0435
MD5 01335b5fab6651772ab78935bac5f789
BLAKE2b-256 bacfcb208d49bf488da0b9003e5ece58de13d4d6e1957ee9f95b0d6929d8ea68

See more details on using hashes here.

File details

Details for the file pydynamicestimator-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pydynamicestimator-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a7e80debd69d0078a2c2752a786936ce11bb565c9e62a84debf1475b638ac986
MD5 dcfa8f6b7639c67fa71d33682e19cb81
BLAKE2b-256 068c85418cdfb51c2b919243250ae45811302ccaf221c95a065e0a7a699e2fec

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page