Commit Graph

142 Commits

Author SHA1 Message Date
martacki
bef4967e84 clustering strategies moved to configurables 2022-06-20 18:58:23 +02:00
Fabian
c2413aeef4 cluster-network: add strategies for conventionals 2022-06-20 18:20:28 +02:00
Fabian
13992125bd cluster_network: adjust generator strategy for new columns 2022-06-10 11:23:26 +02:00
martacki
7f29c31abe .copy() shortcut 2022-03-24 13:17:01 +01:00
Martha Frysztacki
69c0341145
Merge branch 'master' into introduce_hac_clustering 2022-03-17 17:40:46 +01:00
martacki
4c1c5e3a4e suggestions by coroa and fneum 2022-03-17 17:38:30 +01:00
Fabian
1f788e0d5b cluster_network: replace np.sum/np.min by pandas.Series.sum/min 2022-03-16 16:16:15 +01:00
Martha Frysztacki
3e07fdfd54
Merge branch 'master' into introduce_hac_clustering 2022-03-07 11:44:29 +01:00
Fabian
752ff28538 cluster_network.py: allow cluster wildcard to be 'all' 2022-03-02 14:43:04 +01:00
Fabian Neumann
8dafb7bc83
fix custom clustering by checking explicitly for series (#318) 2022-02-27 08:07:11 +01:00
Koen van Greevenbroek
f7ee47238a 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.
2022-02-10 15:57:16 +01:00
martacki
82a0338e9f treatment of outliers and small feature-bugfix 2022-02-04 20:27:18 +01:00
martacki
b5dbf4eb32 overwrite country of isolated buses 2022-02-04 17:19:23 +01:00
martacki
256ac48b47 resolve merging master bugs 2022-02-04 16:45:00 +01:00
Martha Frysztacki
25b3245923
Merge branch 'master' into introduce_hac_clustering 2022-02-04 14:35:14 +01:00
martacki
6cdf3a2879 use snakemake keywords directly without extracting them beforehand 2022-01-24 19:48:26 +01:00
martacki
f28a088ea3 arguments in function calls instead of kwarg-style 2022-01-14 11:30:15 +01:00
Martha Frysztacki
7067d924cc
Merge branch 'master' into snakemake_dependencies_in_functions 2022-01-14 11:05:54 +01:00
martacki
deac9f32e7 move snakemake keys (input, output, config, ...) to own variables 2022-01-14 11:05:15 +01:00
Fabian Neumann
72e277a007
update environment and address deprecations (#291)
* update environment and address deprecations

* check pandas<1.3

* limit snakemake due to ascii encoding error, address review comments

* remove version restriction on snakemake
2022-01-14 07:43:21 +00:00
Fabian Hofmann
94364cbeeb
Update scripts/cluster_network.py
Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
2022-01-11 10:31:49 +01:00
martacki
6c4ea69e95 clustering: own config for clustering settings 2021-12-10 17:53:40 +01:00
Max Parzen
f1243c3e0c Fix distribute clustering with cbc/glpk/ipopt
Assume you have 10 nodes that need to be distributed between 2 countries.
What can happen with some of the open source solvers is that one country
gets assigned to 9.01 (float) nodes, and the other one to 0.99.

Now using .astype(int) would lead to a node distribution of 0 and 9, as
the `astype(int)` function round down by default (0.99 -> 0). This assigned
zero value breaks the code in case open source solvers are used.
Gurobi somehow does deal with it.
2021-11-24 14:16:24 +01:00
martacki
299e71e2b3 introduce hierarchical agglomeratice clustering (hac) 2021-11-17 13:46:33 +01:00
Fabian Neumann
646c5011af
Merge branch 'master' into snakemake_dependencies_in_functions 2021-11-10 09:46:57 +01:00
Fabian Neumann
2e02af8b4b change license 2021-09-14 16:37:41 +02:00
martacki
dfb929f2cf remove snakemake dependencies in functions, use as kwarg instead 2021-09-14 16:34:02 +02:00
Fabian Neumann
4cc5e49ca8
Adapt to new snapshot weightings (#259)
* for now use n.snapshot_weightings.generators

* require pypsa master; use .objective for Nyears

* implement suggestions from code review

* add release note
2021-08-06 13:43:12 +00:00
martacki
b10317ee3c fix p_nom_min values for extendable carriers with positive p_nom 2021-06-30 21:07:38 +02:00
Fabian Neumann
11af828c39
remove six dependency (#245) 2021-05-25 11:29:47 +02:00
Fabian Neumann
2fc1ea0255
some refactoring and code cleaning (#190)
* some refactoring and code cleaning

* execute pre-commit

* pre-commit: limit large files

* add license to .pre-commit

* add pre-commit to env

* solve: tidy memory logger

* travis: add conda list for easier debugging

* undo config test/tutorial without plotting, rm matplotlibrc, .licenses

* remove {networks} wildcard

* unadd pre-commit config

* add release notes

* restore REUSE compliance

* fix docs environment python version

* env: remove gurobi from dependencies

* fix unclean merge block

* fix elif to if

* lighter rtd style

* lighter rtd style II
2020-12-03 19:50:53 +01:00
Martha Maria
cfb979a0d0
Custom busmap for clustering (#193)
* add option to use custom clustermaps from data folder

* adapt default config to custom busmap

* input file from Snakefile

* adapt input description

* add option to use custom clustermaps from data folder

* adapt default config to custom busmap

* input file from Snakefile

* adapt input description

* Snakefile: custom_busmap in cluster_network input is now csv

* cluster_network: custom_busmap is now read as csv file, adaptions of description

* simplify_network: adapt descriptions

* configfiles: add cutom_clustermaps switch

* unify clustarmap and busmap names

* unify clustermap and busmap names

* test/config: unify clustermap and busmap names

* cluster_network: make clustering_for_n_clusters compatible with simplify_network

* simplify_network: make compatible with changes in cluster_network.py

* Update scripts/cluster_network.py

* Update scripts/simplify_network.py

* Update scripts/simplify_network.py

* Update scripts/cluster_network.py

* Update scripts/cluster_network.py

* cluster_network: move custom_busmap flag to enable; simplify names

* cluster_network: move custom_busmap flag to enable; simplify names

* custom_busmap: add documentation

* cluster_network: add default for custom_busmap for compatibility with old configs

* cluster_network: add default for custom_busmap for compatibility with old configs

Co-authored-by: martha.frysztacki <eb5194@iai-esm003.iai.kit.edu>
Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
2020-12-03 15:17:16 +01:00
Martha Maria
2e76b88ec8
simplify_ and cluster_network: clustermaps to csv (#198)
* simplify and clustering: output and input from HDF format to CSV

* add release notes

* simplify and clustering: output files from Snakefile
2020-10-02 12:53:56 +02:00
Fabian Neumann
c543fb39c6
cluster: fix removing deprec squeeze=True in groupby (#194) 2020-09-25 12:34:34 +02:00
martha.frysztacki
9331f1ec46 cluster_network: The 'squeeze' parameter is deprecated and will be removed in a future release; works just fine without it 2020-09-24 17:46:20 +02:00
Martha Maria
047276b2dc
Fix clustering sites (#191)
* fix clustering of offwind-ac and offwind-dc in sites option

* add release nodes

Co-authored-by: martha.frysztacki <eb5194@iai-esm003.iai.kit.edu>
2020-09-24 10:13:13 +02:00
Fabian Neumann
8c5efb5252
add compatibility with pyomo 5.7.0 (#172)
* add compatibility with pyomo 5.7.0

* add release notes [skip travis]
2020-07-20 17:33:15 +02:00
Fabian Neumann
2627c96a9e
Prepare Release v0.2.0 (#165)
* prepare release v0.2.0

* prepare release v0.2.0 v2 [skip travis]
2020-06-08 20:43:35 +02:00
Fabian Neumann
5ea29551b9
add REUSE.software license information (#160)
* add REUSE.software license information

* add release note on licensing

* Update doc/index.rst

Co-authored-by: euronion <42553970+euronion@users.noreply.github.com>

* Update doc/index.rst

Co-authored-by: euronion <42553970+euronion@users.noreply.github.com>

* Update doc/release_notes.rst [skip travis]

Co-authored-by: euronion <42553970+euronion@users.noreply.github.com>
2020-05-29 09:50:55 +02:00
Fabian Neumann
3c1c604c7e
cluster: skip recalculation of link parameters if empty (#149) 2020-03-29 11:39:18 +02:00
Fabian Neumann
d57989c027
scripts: mini code cleanup (#140) 2020-03-16 15:55:01 +01:00
FabianHofmann
eaf30a9b65
Introduce mocksnakemake which acutally parses Snakefile (#107)
* rewrite mocksnakemake for parsing real Snakefile

* continue add function to scripts

* going through all scripts, setting new mocksnakemake

* fix plotting scripts

* fix build_country_flh

* fix build_country_flh II

* adjust config files

* fix make_summary for tutorial network

* create dir also for output

* incorporate suggestions

* consistent import of mocksnakemake

* consistent import of mocksnakemake II

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/plot_network.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/plot_network.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/retrieve_databundle.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* use pathlib for mocksnakemake

* rename mocksnakemake into mock_snakemake

* revert change in data

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* remove setting logfile in mock_snakemake, use Path in configure_logging

* fix fallback path and base_dir
fix return type of make_io_accessable

* reformulate mock_snakemake

* incorporate suggestion, fix typos

* mock_snakemake: apply absolute paths again, add assertion error
*.py: make hard coded io path accessable for mock_snakemake

* retrieve_natura_raster: use snakemake.output for fn_out

* include suggestion

* Apply suggestions from code review

Co-Authored-By: Jonas Hörsch <jonas.hoersch@posteo.de>

* linting, add return ad end of file

* Update scripts/plot_p_nom_max.py

Co-Authored-By: Jonas Hörsch <jonas.hoersch@posteo.de>

* Update scripts/plot_p_nom_max.py

fixes #112

Co-Authored-By: Jonas Hörsch <jonas.hoersch@posteo.de>

* plot_p_nom_max: small correction

* config.tutorial.yaml fix snapshots end

* use techs instead of technology

* revert try out from previous commit, complete replacing

* change clusters -> clusts in plot_p_nom_max due to wildcard constraints of clusters

* change clusters -> clusts in plot_p_nom_max due to wildcard constraints of clusters II
2019-12-09 21:29:15 +01:00
euronion
85c356297a Add logging to logfiles to all snakemake workflow scripts. (#102)
* Add logging to logfiles to all snakemake workflow scripts.

* Fix missing quotation marks in Snakefile.

* Apply suggestions from code review

Co-Authored-By: Fabian Neumann <fabian.neumann@outlook.de>

* Apply suggestions from code review

Co-Authored-By: Fabian Neumann <fabian.neumann@outlook.de>

* doc: fix _ec_ filenames in docs

* Allow logging message format to be specified in config.yaml.

* Add logging for Snakemake rule 'retrieve_databundle '.

* Add limited logging to STDERR only for retrieve_*.py scripts.

* Import progressbar module only on demand.

* Fix logging to file and enable concurrent printing to STDERR for most scripts.

* Add new 'logging_format' option to Travis CI test config.yaml.

* Add missing parenthesis (bug fix) and cross-os compatible paths.

* Fix typos in messages.

* Use correct log files for logging (bug fix).

* doc: fix line references

* config: logging_format in all configs

* doc: add doc for logging_format

* environment: update to powerplantmatching 0.4.3

* doc: update line references for tutorial.rst

* Change logging configuration scheme for config.yaml.

* Add helper function for doing basic logging configuration.

* Add logpath for prepare_links_p_nom rule.

* Outsource basic logging configuration for all scripts to _helper submodule.

* Update documentation for changed config.yaml structure.

Instead of 'logging_level' and 'logging_format', now 'logging' with subcategories is used.

* _helpers: Change configure_logging signature.
2019-11-28 08:22:52 +01:00
Fabian Neumann
3fd5c5d0e1 cluster: add tolerance to country weight sum L 2019-11-09 12:58:04 +01:00
Fabian Neumann
d32f2105cd fix deprecation: logger.warn -> logger.warning 2019-11-08 16:46:29 +01:00
Fabian Neumann
7df2b76f9d
cluster_network: fix focus_weights for mult sync 2019-11-07 16:54:09 +01:00
Fabian Neumann
e54119d878
cluster: add focus weights (in favor of #26) (#87)
* cluster: add focus weights (in favor of #26)

* clear assert of total focus

Co-Authored-By: FabianHofmann <hofmann@fias.uni-frankfurt.de>
2019-11-07 15:38:25 +01:00
FabianHofmann
0c777fc431
Merge pull request #71 from PyPSA/update_link_length
[WIP] capital cost and underwater fraction update in clustering
2019-10-31 11:27:58 +01:00
Fabian Hofmann
142434b529 incorporate suggestions 2019-10-31 10:37:49 +01:00
Fabian Hofmann
16ff2b51bd fix small issues 2019-09-23 16:44:48 +02:00
Fabian Hofmann
9178dde4a7 partially resolves #70 2019-09-23 14:32:51 +02:00
Fabian Neumann
0e5886081e move rules to own pages and adapt image paths 2019-08-14 15:36:46 +02:00
Fabian Neumann
0b130b35ef link rule references to their documentation 2019-08-13 17:52:33 +02:00
Fabian Neumann
3a94d4f5ef add seealso from module description to config documentatoin 2019-08-13 10:03:46 +02:00
Fabian Neumann
4d3d898430 remove trialed sphinx-bibtex and describe wildcards 2019-08-12 23:48:16 +02:00
Fabian Neumann
89d89deec0 further improve documentation 2019-08-12 19:01:53 +02:00
Fabian Neumann
a5d9bc9c7c add input/output descriptions (WIP) 2019-08-11 22:34:18 +02:00
Fabian Neumann
67cf28b593 fill in relevant settings sections 2019-08-11 13:17:36 +02:00
Fabian Neumann
1bded0ab9b add rule section headers 2019-08-11 11:40:47 +02:00
Fabian Neumann
067d259ff6 include description of rule groups
* and reduce corresponding sections in readme
* and modify environment docs
* and add bibtex support (tentative)
2019-08-10 14:25:19 +02:00
Jonas Hoersch
fb0d44f64e Add a summary sentence for each rule taken from scripts 2019-08-08 15:07:08 +02:00
Jonas Hoersch
9ec97bd367 fixup! cluster_network: [compat] Pyomo 5.6.1 removed po.sum 2019-03-09 17:50:28 +01:00
Jonas Hoersch
93119fc86b cluster_network: [compat] Pyomo 5.6.1 removed po.sum 2019-03-09 17:08:55 +01:00
Jonas Hoersch
8b819569bc cluster_network: Fix busmap_for_n_clusters for single country (fixes #18)
Also update debugging helper.
2019-02-20 21:10:45 +01:00
Heronimonimo
9c78d6591d Add CCGT to the weight factor for conventional carriers 2019-02-20 19:18:06 +01:00
Jonas Hoersch
9279c7f027 solve_network: Remove hard-coded solver fallback in busmap_for_n_clusters
Necessary for when `clustering_for_n_clusters` is used from the simplify_network
rule.

Fixes #12
2019-02-20 19:08:25 +01:00
Jonas Hoersch
7f3f096ba6 Fix model for country selections without DC links (fixes #5) 2019-02-13 19:03:57 +01:00
Jonas Hoersch
448e8c238e cluster_network: Fall back to using ipopt in distribute_clusters
if the configured solver does not support quadratic objectives.
2019-02-10 15:33:53 +01:00
Jonas Hoersch
d57df6b0c8 Merge branch 'glaes' 2019-02-06 12:06:32 +01:00
Jonas Hoersch
8ee596ae2c Make the additive potential aggregation the default and call it simple 2019-02-01 18:33:21 +01:00
Jonas Hoersch
aa5525ab41 cluster_network: Remove old distribute_clusters code paths 2019-01-22 11:48:00 +01:00
Jonas Hoersch
39cb17a7a1 cluster_network: Fix distribute_clusters_optim for high numbers of clusters
distribute_clusters_optim should never try to assign more clusters to
a (country, sub_network) than there are substations there.
2019-01-22 11:25:01 +01:00
Jonas Hoersch
6feebedc0d cluster_network, simplify_network: Improve debugging facilities for clustering 2019-01-22 11:24:07 +01:00
Jonas Hoersch
0096b184a0 fixup! cluster_network: Implement 'heuristic' potential clustering 2019-01-02 17:54:07 +01:00
Jonas Hoersch
495b6f8015 cluster_network: Implement 'heuristic' potential clustering 2018-12-31 15:10:35 +01:00
Jonas Hoersch
135e4ace47 cluster_network: Disable stricter schema enforcement by geopandas 2018-12-19 10:14:41 +01:00
Arnaud Leroy
8a7ffbdb4e add a variable to select the clustering algorithm in busmap_for_country. Default k-manes 2018-11-26 16:10:32 +01:00
Jonas Hörsch
6635732cb7 Fix HDFStore writing modes 2018-09-27 12:18:47 +02:00
Jonas Hörsch
9c629560db cluster_network: Adjust n_init, maxiter and tol parameters of KMeans
By changing the parameters by several orders of magnitude, we ensure to recover
consistently the same results.
2018-09-24 18:43:24 +02:00
Jonas Hörsch
2372bb156d Prepare Snakefile and scripts for other solvers 2018-09-14 11:22:13 +02:00
Jonas Hörsch
2a8ec7e3db cluster_network: Introduce minimal clustering weight 2018-08-27 19:14:34 +02:00
Jonas Hörsch
8e4abc3fce build_shapes: Build shapes in separate rule from bundled data
- country_shapes
- offshore_shapes
- nuts3_shapes (nuts3 shapes already include population and gdp data)
2018-08-03 11:49:51 +02:00
Jonas Hörsch
fd026f4072 Store the busmaps underlying the simplification process as busmap_s 2018-07-10 16:31:57 +02:00
Jonas Hörsch
fed6ff9543 cluster_network: Allow configuring the line_length_factor 2018-05-18 17:06:55 +02:00
Jonas Hörsch
f698cffe3b cluster_network: Fix typo 2018-03-14 13:19:44 +01:00
Jonas Hörsch
78ab018b60 cluster_network: Save maps from clustering as clustermaps 2018-03-13 11:50:06 +01:00
Jonas Hörsch
8e7e3571bf cluster_network: Add fast-path for when no clustering is necessary 2018-03-13 11:00:40 +01:00
Jonas Hörsch
2c0b66c510 {simplify,cluster}_network: Fix two-step clustering and introduce m suffix
- a network name like elec_s1000_ now clusters the network down to 1000 buses in
  the simplify step.
- an 'm' after the number of clusters as in elec_s1000_181m_ skips the
  aggregation of renewable generators and just moves them to the new clustered
  bus in the second clustering step.
- to distribute the number of clusters to countries a small quadratic
  optimization is now performed to minimize \sum_i (n_i - L_i/\sum_j L_j N)**2,
  where n_i >= 1.
2018-02-19 10:03:25 +01:00
Jonas Hörsch
6a613ea483 build_powerplants: Separate loading of power plant list into new rule 2018-02-10 17:16:20 +01:00
Jonas Hörsch
b7a1a090f1 Use MockSnakemake and logging.basicConfig everywhere 2018-02-01 12:42:11 +01:00
Jonas Hörsch
99299564d6 Split simplify_network from cluster_network 2018-01-30 23:11:16 +01:00
Jonas Hoersch
a867e245b3 Electricity network, Clustering and Solving 2018-01-29 22:28:33 +01:00