Voltage-Aware Geographical Partitioning#

Combines geographic distance with voltage level and AC island constraints.

Required Attributes#

  • Nodes: lat, lon, voltage, ac_island

Available Strategies#

Strategy

Mode

Description

va_geographical_kmedoids_euclidean

Standard

K-Medoids with Euclidean distance

va_geographical_kmedoids_haversine

Standard

K-Medoids with Haversine distance

va_geographical_hierarchical

Standard

Agglomerative clustering

va_geographical_proportional_kmedoids_euclidean

Proportional

Balanced clustering by group

va_geographical_proportional_kmedoids_haversine

Proportional

Balanced clustering by group

va_geographical_proportional_hierarchical

Proportional

Balanced hierarchical

Standard Mode#

Nodes in different voltage levels or AC islands receive infinite distance:

partition = manager.partition(
    "va_geographical_kmedoids_haversine",
    n_clusters=20
)

Proportional Mode#

Distributes clusters proportionally among voltage/island groups:

# If network has:
# - 100 nodes at 380 kV
# - 50 nodes at 220 kV
# And n_clusters=15, approximately:
# - 10 clusters for 380 kV nodes
# - 5 clusters for 220 kV nodes

partition = manager.partition(
    "va_geographical_proportional_kmedoids_haversine",
    n_clusters=15
)

Configuration#

from npap.partitioning import VAGeographicalConfig

config = VAGeographicalConfig(
    voltage_tolerance=1.0,        # kV tolerance for grouping
    infinite_distance=1e4,
    proportional_clustering=False,
    hierarchical_linkage="complete"
)

partition = manager.partition(
    "va_geographical_kmedoids_haversine",
    n_clusters=20,
    config=config
)