Skip to main content

Optimization methods for voltage and congestion management in modern power distribution grids.

Project description

⚡ Grid Feedback Optimizer

Python License: MIT ReadTheDocs

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 p_max > 0 and p_min >= 0
Load p_max < 0 and p_min <= 0
Flexible p_min < 0 < p_max (can generate or consume)

Key Attributes:

  • index, bus – identifiers
  • p_max, p_min – active power limits
  • s_inv – apparent power rating
  • p_norm – normal active power (auto-computed)
  • q_norm – normal reactive power (default 0.0)
  • c1_p, c2_p – linear/quadratic active power cost coefficients
  • c1_q, c2_q – linear/quadratic reactive power cost coefficients

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

🚀 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 files
  • notebooks/ → 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]
  1. Power flow calculation → voltages, line/transformer loadings
  2. Optimization step → update generator active/reactive power using feedback
  3. 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 from power-grid-model

📄 License

MIT License


👤 Author

Sen Zhan
📧 sen.zhan@outlook.com

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

grid_feedback_optimizer-0.1.6.tar.gz (21.4 kB view details)

Uploaded Source

Built Distribution

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

grid_feedback_optimizer-0.1.6-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file grid_feedback_optimizer-0.1.6.tar.gz.

File metadata

  • Download URL: grid_feedback_optimizer-0.1.6.tar.gz
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for grid_feedback_optimizer-0.1.6.tar.gz
Algorithm Hash digest
SHA256 5e389b7ddc6738393c0fab31e2525fe14d6bac63942d3c9bf388edcd35110edb
MD5 64354468671dadb16967bfa4ede1de33
BLAKE2b-256 95e0a91443d3bd7d6405edf2b503e640e9508788d655c1afc9a938da5c5117d4

See more details on using hashes here.

File details

Details for the file grid_feedback_optimizer-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for grid_feedback_optimizer-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 8125b5ad42be5cf077fe1f00c626d4b9ebf1d21e493f12b29e8b0645adc081d6
MD5 2620173328ecc58987291c3aea2ed504
BLAKE2b-256 7efc4554d7ca826c88fc9d851f42a6820b66d319cfcd6143691eeec5f71c0f21

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