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.pyfile for precise estimation - Network topology and parameters and dynamic models easily editable via
./datasubfolder - Supports integration with Phasor Measurement Units (PMUs) in
./measurements.py - User defined models can be integrated in
./devicessubfolder
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:
- Clone the repository:
git clone https://gitlab.nccr-automation.ch/mkatanic/powerdynamicestimator
cd PowerDynamicEstimator
- 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
-
Navigate to the root directory:
cd pydynamicestimator
-
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d661fde63a38e5eca0eb03025169922d44c4eaa69c8ebd2cf0ef68f080a0435
|
|
| MD5 |
01335b5fab6651772ab78935bac5f789
|
|
| BLAKE2b-256 |
bacfcb208d49bf488da0b9003e5ece58de13d4d6e1957ee9f95b0d6929d8ea68
|
File details
Details for the file pydynamicestimator-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pydynamicestimator-0.2.0-py3-none-any.whl
- Upload date:
- Size: 6.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.8.2 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7e80debd69d0078a2c2752a786936ce11bb565c9e62a84debf1475b638ac986
|
|
| MD5 |
dcfa8f6b7639c67fa71d33682e19cb81
|
|
| BLAKE2b-256 |
068c85418cdfb51c2b919243250ae45811302ccaf221c95a065e0a7a699e2fec
|