Test Networks#

The PowerGrid case study includes standard IEEE test systems implemented with PandaPower.

IEEE 13-Bus#

Small radial distribution feeder for basic testing.

from powergrid.networks.ieee13 import IEEE13Bus

net = IEEE13Bus(name="MG1")

Specifications#

Property

Value

Buses

13

Voltage

4.16 kV

Topology

Radial

Load

~3.5 MW

Diagram#

    650 (Substation)
     |
    632
   / | \
 633 645 671
  |       |
 634     692
          |
         675

IEEE 34-Bus#

Larger radial feeder with voltage regulators.

from powergrid.networks.ieee34 import IEEE34Bus

net = IEEE34Bus(name="MG2")

Specifications#

Property

Value

Buses

34

Voltage

24.9 kV / 4.16 kV

Topology

Radial with laterals

Load

~1.8 MW

Regulators

2

IEEE 123-Bus#

Large-scale test feeder for comprehensive studies.

from powergrid.networks.ieee123 import IEEE123Bus

net = IEEE123Bus(name="MG3")

Specifications#

Property

Value

Buses

123

Voltage

4.16 kV

Topology

Complex radial

Load

~3.5 MW

Switches

11

Regulators

4

CIGRE Low-Voltage#

European low-voltage benchmark network.

from powergrid.networks.cigre_lv import CIGRE_LV

net = CIGRE_LV(name="LV1")

Specifications#

Property

Value

Buses

44

Voltage

0.4 kV

Topology

Radial residential

Load

~200 kW

Using Networks#

Create Network for Environment#

from powergrid.envs.networked_grid_env import NetworkedGridEnv
from powergrid.networks.ieee13 import IEEE13Bus

class MyEnv(NetworkedGridEnv):
    def _build_net(self):
        net = IEEE13Bus("MG1")
        # Add devices, configure agents
        return net

Access Network Properties#

# PandaPower network object
net = IEEE13Bus("MG1")

# Access buses
print(net.bus)

# Access lines
print(net.line)

# Access loads
print(net.load)

# Run power flow
import pandapower as pp
pp.runpp(net)

# Access results
print(net.res_bus)  # Voltage results
print(net.res_line)  # Line flow results

Multi-Network Setup#

from powergrid.networks.ieee34 import IEEE34Bus
from powergrid.networks.ieee13 import IEEE13Bus

# Create multiple networks for multi-agent environment
networks = {
    "MG1": IEEE34Bus("MG1"),
    "MG2": IEEE13Bus("MG2"),
    "MG3": IEEE13Bus("MG3"),
}

Custom Networks#

Create custom networks using PandaPower:

import pandapower as pp

def create_custom_network(name: str):
    net = pp.create_empty_network(name=name)

    # Add buses
    b0 = pp.create_bus(net, vn_kv=20.0, name="Substation")
    b1 = pp.create_bus(net, vn_kv=20.0, name="Bus 1")
    b2 = pp.create_bus(net, vn_kv=20.0, name="Bus 2")

    # Add external grid
    pp.create_ext_grid(net, bus=b0, vm_pu=1.0)

    # Add lines
    pp.create_line_from_parameters(
        net, from_bus=b0, to_bus=b1,
        length_km=1.0, r_ohm_per_km=0.1,
        x_ohm_per_km=0.1, c_nf_per_km=0,
        max_i_ka=1.0
    )

    # Add loads
    pp.create_load(net, bus=b1, p_mw=0.5, q_mvar=0.1)

    return net