powergrid_synth.transmission.transformer_edges

Transformer edge generation between different-voltage subgraphs.

Implements Algorithm 3 (Stars) from Aksoy et al. (2018) (arXiv:1711.11098, Section 4.4).

Module Contents

class powergrid_synth.transmission.transformer_edges.TransformerConnector[source]

Generate transformer edges between two same-voltage subgraphs.

Transformer subgraphs in real power grids consist almost entirely of disjoint \(k\)-star graphs. This class replicates that structure by creating random stars from the desired transformer degree sequences, with a bipartite Chung-Lu fallback for leftover vertices.

See Algorithm 3 in Aksoy et al. (2018).

generate_transformer_edges(t_xy, t_yx)[source]

Generate transformer edges between voltage levels X and Y.

Implements Stars(\(\mathbf{t}[X,Y],\;\mathbf{t}[Y,X]\)) \(\to E\) (Algorithm 3).

The algorithm proceeds in four stages:

  1. Partition vertices into centers (degree \(\geq 2\)) and leaves (degree \(= 1\)).

  2. Build \(k\)-stars centred at high-degree vertices, consuming degree-1 vertices from the opposite level as leaves.

  3. Match remaining degree-1 vertices across levels into single edges.

  4. Apply bipartite Chung-Lu on any leftover vertices whose degrees could not be realised via stars.

Parameters:
  • t_xy (list of int) – Transformer degree for each node in subgraph X toward Y. t_xy[i] is the number of transformer edges desired for node i in X.

  • t_yx (list of int) – Transformer degree for each node in subgraph Y toward X.

Returns:

Edge list as (u, v) where u is a local index in X and v is a local index in Y.

Return type:

list of tuple[int, int]

Notes

A sufficient condition for all degrees to be matched exactly (no leftover Chung-Lu) is:

\[\sum_{i:\,t[X,Y]_i\geq 2} t[X,Y]_i \;\leq\; |\{j\in Y : t[Y,X]_j = 1\}|\]

and symmetrically for the other direction.