From f7ee47238a87e400655a5bd17090c73a4679caea Mon Sep 17 00:00:00 2001 From: Koen van Greevenbroek Date: Thu, 10 Feb 2022 15:57:16 +0100 Subject: [PATCH 1/2] Fix random state for kmean clustering When the kmeans algorithm is used to cluster networks, this is not deterministic by default. The result is that repeated runs of the `simplify_network` and `cluster_network` rules can and usually do produce different results that vary somewhat randomly. This makes results less reproducible when given only a pypsa-eur configuration file. The fix is to supply a fixed random state to the k-means algorithm. --- scripts/cluster_network.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/cluster_network.py b/scripts/cluster_network.py index 525196fc..99d428d4 100644 --- a/scripts/cluster_network.py +++ b/scripts/cluster_network.py @@ -226,6 +226,7 @@ def busmap_for_n_clusters(n, n_clusters, solver_name, focus_weights=None, algori algorithm_kwds.setdefault('n_init', 1000) algorithm_kwds.setdefault('max_iter', 30000) algorithm_kwds.setdefault('tol', 1e-6) + algorithm_kwds.setdefault('random_state', 0) n.determine_network_topology() From a2d3edd82b7bfdafa3a389994d6cd8ec5f19d924 Mon Sep 17 00:00:00 2001 From: Koen van Greevenbroek Date: Thu, 10 Feb 2022 16:07:31 +0100 Subject: [PATCH 2/2] Document the k-means random state fix --- doc/release_notes.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index d1b7b356..c7d89c04 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -24,6 +24,8 @@ Upcoming Release * Resource definitions for memory usage now follow [Snakemake standard resource definition](https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#standard-resources) ```mem_mb`` rather than ``mem``. +* Network building is made deterministic by supplying a fixed random state to network clustering routines. + PyPSA-Eur 0.4.0 (22th September 2021) =====================================