Optimization methods for voltage and congestion management in modern power distribution grids.
Project description
⚡ Grid Feedback Optimizer
A Python package for feedback-based optimization of generator and device setpoints in electrical distribution grids.
🧩 Overview
Grid Feedback Optimizer reads a JSON/Excel network description and iteratively computes optimal setpoints.
Ideal for experimenting with voltage regulation and congestion management.
📖 Full API Reference: ReadTheDocs
🔋 RenewGen
RenewGen models controllable generators and power-consuming devices:
| Type | Condition |
|---|---|
| Generator | 0 <= p_min <= p_max |
| Load | p_min <= p_max <= 0 |
| Flexible | p_min < 0 < p_max (can generate or consume) |
Key Attributes:
index,bus– identifiersp_max,p_min– active power limitsp_norm– normal active power (auto-computed if not provided)q_norm– normal reactive power (default:0.0)c1_p,c2_p– linear/quadratic active power cost coefficients (defaults:0.0,1.0)c1_q,c2_q– linear/quadratic reactive power cost coefficients (defaults:0.0,0.1)s_inv– apparent power rating (optional)pf_min- minimum power factor (optional)q_max,q_min– reactive power limits (optional)
Cost Function:
Cost = c1_p * p + c2_p * (p - p_norm)^2 + c1_q * q + c2_q * (q - q_norm)^2
Automatic p_norm:
- Generator →
p_norm = p_max - Load →
p_norm = p_min - Flexible →
p_norm = 0.0
🚀 Features
- Load networks from JSON/Excel files
- Iterative feedback optimization using:
- Gradient Projection (GP) – fewer hyperparameters, convex conic problem solver
- Primal-Dual (PD) – lightweight, more hyperparameters
- Structured input/output data
- Modular design (
models,engine,utils) for extensions
🏃 Quick Start
Install:
pip install grid-feedback-optimizer
Example Notebooks:
- Load sample grid models
- Run optimization with GP or PD
- Visualize voltages, line loadings, and setpoints
- Time-series simulations
Folders:
examples/→ JSON/Excel network filesnotebooks/→ example notebooks
🧑💻 Usage Example
from grid_feedback_optimizer.models.loader import load_network
from grid_feedback_optimizer.engine.solve import solve
from grid_feedback_optimizer.engine.powerflow import PowerFlowSolver
network = load_network("../examples/simple_example_with_transformer.json")
power_flow_solver = PowerFlowSolver(network)
print(power_flow_solver.is_congested)
res_gp = solve(network, algorithm="gp")
res_gp.print_summary()
res_gp.plot_iterations()
res_gp.save("gp_result.json")
🐳 Docker
docker pull senzhan2025/grid-feedback-optimizer:latest
docker run --rm -v $(pwd)/output:/app/output senzhan2025/grid-feedback-optimizer:latest examples/simple_example.json --save_path output/result.json --verbose
🔄 Conceptual Workflow
flowchart LR
A[Power Flow Calculation] --> B[Optimization Step]
B --> C[Update Generator Setpoints]
C --> D{Convergence?}
D -->|No| A
D -->|Yes| E[Optimal Steady-State Achieved]
- Power flow calculation → voltages, line/transformer loadings
- Optimization step → update generator active/reactive power using feedback
- Iteration → until convergence
📚 References
- Gradient Projection – V. Haberle et al., IEEE Control Systems Letters, 2021. DOI
- Primal-Dual – E. Dall’Anese & A. Simonetto, IEEE Transactions on Smart Grid, 2018. DOI
⚠️ Limitations
- Currently supports balanced systems only
- Currently only includes buses, lines, transformers, and sources as defined in power-grid-model
- Restricted to single-period (real-time) optimization
📄 License
👤 Author
Sen Zhan
📧 sen.zhan@outlook.com
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 grid_feedback_optimizer-0.1.8.tar.gz.
File metadata
- Download URL: grid_feedback_optimizer-0.1.8.tar.gz
- Upload date:
- Size: 23.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c362672417b9a31fcf245477ce9d418ca48a4cd43e936643424abe5f4998992
|
|
| MD5 |
c93f70d1a508241219484d6d745f9001
|
|
| BLAKE2b-256 |
d8fd79c92eafc9059fe37740bd766c9bf298c78c1284c7812db24c65732babc4
|
File details
Details for the file grid_feedback_optimizer-0.1.8-py3-none-any.whl.
File metadata
- Download URL: grid_feedback_optimizer-0.1.8-py3-none-any.whl
- Upload date:
- Size: 24.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29565f2a34a3c97e20de88ed3483bc7446852eb78f1adb6cc05673c10599d250
|
|
| MD5 |
fff68d7c5531db1f08bccc487841bba8
|
|
| BLAKE2b-256 |
07bc1626cf21178d3556b8aabb76f778e0bccf6fd84d36e9170b14b3d19855a8
|