Giter Site home page Giter Site logo

stavrosorf / poweflownet Goto Github PK

View Code? Open in Web Editor NEW
12.0 2.0 4.0 3.15 MB

PoweFlowNet: Leveraging Message Passing GNNs for Improved Power Flow Approximation

License: MIT License

Python 99.75% Shell 0.25%
graph-neural-networks pandapower powerflow power-flow-approximation

poweflownet's People

Contributors

nataxcan avatar sentient-codebot avatar siddharthasen99 avatar stavrosorf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

poweflownet's Issues

Result Plots and Tables

Revamp the plots of the paper.

Since we generate Datasetv3 and need to rerun experiments we can also add results for more cases (need to discuss this). Cases between 118 and 6470 might be of interest (the greater the number of nodes the better our architecture look).

We show transferability is not great with our architecture, but what if we did not train for 1000 epochs (->overfit) and try to find a way to make it more generalizable :

  1. Do few-shot training on the new grid case
  2. Less initial training epochs

Tasks

  • Create new script for Error Per Feature Distribution Plots
  • Revamp the Interpretability plots to make the text visible
  • Find the exact error of the DC Power Flow method

Data Generation v4

Plan for Data Generation v3

  1. Use entries in the admittance matrix as edge features.
    1. In this way, we do not need to put extra care on the shunt capacitance of the lines anymore and we do not need to remove them; the generated data are also more realistic.
    2. We should also be able to allow non-zero $G_s$ and $B_s$ because they will also be integrated into the the admittance matrix. (We can allow this only when this does not influence our output format (P, Q, V, theta)
  2. The admittance matrix elements are non-zero only where two nodes are directly connected and in the diagonal line. To view them as edge features, we also need to adjust our formulation of the edges. That is, we need to add self-loops at every node to assign the diagonal elements in the admittance matrix.
  3. The admittance matrix is symmetric, meaning the according edges are undirected. So we might as well make our edge_index also containing undirected edges, which is different from our v1 and v2 data generation. We perhaps need to adjust our network slightly.
  4. Since the meaning of edge features changed, we need to adjust our implementation of the physical loss.

Action Items

  • change the edge feature generation in the script dataset_generator_pandapower_nan.py -> get from nodal admittance matrix AND undirected.
  • make edges undirected and add self-loops in the edge_index variable.
  • remove the "unrealistic" modifications on the C_nf per line.
  • allow non-zero $G_s$ and $B_s$
  • [optional] adjust our sampling method of $P_d$ and $P_g$, as when they are too imbalanced, the power flow would not converge.
  • double check our network inference steps to make sure it align with the new edge formulations.
  • revise the PowerImbalance (physical loss function) to make it align with the new edge features. do sanity checks (with target data). the result should work perfectly, since the admittance matrix should be mathematically sufficient and strict for calculating the power flow.

wonder if there is description about pypower.networks.case118?

I'm confused about the columns in the default test case in pandapower.networks.case118 as I'm a fish in this elec and DL crossing field.
image
I can only follow your code but don't know their meanning when debug in this repo file: dataset_generator_alt.py
I'd appreciate it if you can offer help for identifying the specific column names in networks.case118['bus'] and networks.case118['branch']

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.