diff --git a/CITATION.cff b/CITATION.cff index 712a02f3..c80b73ef 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -6,7 +6,7 @@ cff-version: 1.1.0 message: "If you use this package, please cite it in the following way." title: "PyPSA-Eur: An open sector-coupled optimisation model of the European energy system" repository: https://github.com/pypsa/pypsa-eur -version: 0.8.0 +version: 0.8.1 license: MIT authors: - family-names: Brown diff --git a/README.md b/README.md index 79cdfa65..9691abc4 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ SPDX-License-Identifier: CC-BY-4.0 ![Size](https://img.shields.io/github/repo-size/pypsa/pypsa-eur) [![Zenodo PyPSA-Eur](https://zenodo.org/badge/DOI/10.5281/zenodo.3520874.svg)](https://doi.org/10.5281/zenodo.3520874) [![Zenodo PyPSA-Eur-Sec](https://zenodo.org/badge/DOI/10.5281/zenodo.3938042.svg)](https://doi.org/10.5281/zenodo.3938042) -[![Snakemake](https://img.shields.io/badge/snakemake-≥5.0.0-brightgreen.svg?style=flat)](https://snakemake.readthedocs.io) +[![Snakemake](https://img.shields.io/badge/snakemake-≥7.7.0-brightgreen.svg?style=flat)](https://snakemake.readthedocs.io) [![REUSE status](https://api.reuse.software/badge/github.com/pypsa/pypsa-eur)](https://api.reuse.software/info/github.com/pypsa/pypsa-eur) [![Stack Exchange questions](https://img.shields.io/stackexchange/stackoverflow/t/pypsa)](https://stackoverflow.com/questions/tagged/pypsa) @@ -35,17 +35,18 @@ The model is designed to be imported into the open toolbox [PyPSA](https://github.com/PyPSA/PyPSA). **WARNING**: PyPSA-Eur is under active development and has several -[limitations](https://pypsa-eur.readthedocs.io/en/latest/limitations.html) -which you should understand before using the model. The github repository +[limitations](https://pypsa-eur.readthedocs.io/en/latest/limitations.html) which +you should understand before using the model. The github repository [issues](https://github.com/PyPSA/pypsa-eur/issues) collect known topics we are working on (please feel free to help or make suggestions). The [documentation](https://pypsa-eur.readthedocs.io/) remains somewhat patchy. You -can find showcases of the model's capabilities in the preprint [Benefits of a -Hydrogen Network in Europe](https://arxiv.org/abs/2207.05816), a [paper in Joule -with a description of the industry sector](https://arxiv.org/abs/2109.09563), or -in [a 2021 presentation at EMP-E](https://nworbmot.org/energy/brown-empe.pdf). -We cannot support this model if you choose to use it. We do not recommend to use -the full resolution network model for simulations. At high granularity the +can find showcases of the model's capabilities in the Joule paper [The potential +role of a hydrogen network in +Europe](https://doi.org/10.1016/j.joule.2023.06.016), another [paper in Joule +with a description of the industry +sector](https://doi.org/10.1016/j.joule.2022.04.016), or in [a 2021 presentation +at EMP-E](https://nworbmot.org/energy/brown-empe.pdf). We do not recommend to +use the full resolution network model for simulations. At high granularity the assignment of loads and generators to the nearest network node may not be a correct assumption, depending on the topology of the underlying distribution grid, and local grid bottlenecks may cause unrealistic load-shedding or diff --git a/config/config.default.yaml b/config/config.default.yaml index 48c92123..aa952317 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -3,7 +3,7 @@ # SPDX-License-Identifier: CC0-1.0 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#top-level-configuration -version: 0.8.0 +version: 0.8.1 tutorial: false logging: diff --git a/config/test/config.myopic.yaml b/config/test/config.myopic.yaml index 87f75777..0bb85ec6 100644 --- a/config/test/config.myopic.yaml +++ b/config/test/config.myopic.yaml @@ -62,11 +62,6 @@ renewable: solar: cutout: be-03-2013-era5 -lines: - dynamic_line_rating: - activate: true - max_line_rating: 1.3 - industry: St_primary_fraction: 2030: 0.6 diff --git a/config/test/config.overnight.yaml b/config/test/config.overnight.yaml index 01cdc728..a2a0f5a4 100644 --- a/config/test/config.overnight.yaml +++ b/config/test/config.overnight.yaml @@ -59,11 +59,6 @@ renewable: solar: cutout: be-03-2013-era5 -lines: - dynamic_line_rating: - activate: true - max_line_rating: 1.3 - sector: gas_network: true H2_retrofit: true diff --git a/doc/conf.py b/doc/conf.py index 8111c86c..1ddae466 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -82,7 +82,7 @@ author = "Tom Brown (KIT, TUB, FIAS), Jonas Hoersch (KIT, FIAS), Fabian Hofmann # The short X.Y version. version = "0.8" # The full version, including alpha/beta/rc tags. -release = "0.8.0" +release = "0.8.1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/index.rst b/doc/index.rst index d702a42c..c5d92e87 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -78,10 +78,10 @@ them: .. note:: You can find showcases of the model's capabilities in the Supplementary Materials of the - preprint `Benefits of a Hydrogen Network in Europe - `_, the Supplementary Materials of the `paper in Joule with a + Joule paper `The potential role of a hydrogen network in Europe + `_, the Supplementary Materials of another `paper in Joule with a description of the industry sector - `_, or in `a 2021 presentation + `_, or in `a 2021 presentation at EMP-E `_. The sector-coupled extension of PyPSA-Eur was initially described in the paper `Synergies of sector coupling and transmission @@ -179,10 +179,13 @@ For sector-coupling studies: :: @misc{PyPSAEurSec, author = "Fabian Neumann and Elisabeth Zeyen and Marta Victoria and Tom Brown", - title = "The Potential Role of a Hydrogen Network in Europe", - year = "2022", + title = "The potential role of a hydrogen network in Europe", + journal "Joule", + volume = "7", + pages = "1--25" + year = "2023", eprint = "2207.05816", - url = "https://arxiv.org/abs/2207.05816", + doi = "10.1016/j.joule.2022.04.016", } For sector-coupling studies with pathway optimisation: :: diff --git a/doc/release_notes.rst b/doc/release_notes.rst index fd23e888..defe1dc4 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -7,46 +7,130 @@ Release Notes ########################################## -Upcoming Release -================ +.. Upcoming Release +.. ================ -* ``param:`` section in rule definition are added to track changed settings in ``config.yaml``. The goal is to automatically re-execute rules whose parameters have changed. See `Non-file parameters for rules `_ in the snakemake documentation. +PyPSA-Eur 0.8.1 (27th July 2023) +================================ -* **Important:** The configuration files are now located in the ``config`` directory. This counts for ``config.default.yaml``, ``config.yaml`` as well as the test configuration files which are now located in ``config/test``. Config files that are still in the root directory will be ignored. +**New Features** -* Bugfix: Correct typo in the CPLEX solver configuration in ``config.default.yaml``. +* Add option to consider dynamic line rating based on wind speeds and + temperature according to `Glaum and Hofmann (2022) + `_. See configuration section ``lines: + dynamic_line_rating:`` for more details. (https://github.com/PyPSA/pypsa-eur/pull/675) -* Bugfix: Error in ``add_electricity`` where carriers were added multiple times to the network, resulting in a non-unique carriers error. - -* Renamed script file from PyPSA-EUR ``build_load_data`` to ``build_electricity_demand`` and ``retrieve_load_data`` to ``retrieve_electricity_demand``. - -* Fix docs readthedocs built +* Add option to include a piecewise linear approximation of transmission losses, + e.g. by setting ``solving: options: transmission_losses: 2`` for an + approximation with two tangents. (https://github.com/PyPSA/pypsa-eur/pull/664) * Add plain hydrogen turbine as additional re-electrification option besides hydrogen fuel cell. Add switches for both re-electrification options under ``sector: hydrogen_turbine:`` and ``sector: hydrogen_fuel_cell:``. - -* A new function named ``sanitize_carrier`` ensures that all unique carrier names are present in the network's carriers attribute, and adds nice names and colors for each carrier according to the provided configuration dictionary. - -* Additional tech_color are added to include previously unlisted carriers. - -* Remove ``vresutils`` dependency. + (https://github.com/PyPSA/pypsa-eur/pull/647) * Added configuration option ``lines: max_extension:`` and ``links: max_extension:``` to control the maximum capacity addition per line or link in - MW. + MW. (https://github.com/PyPSA/pypsa-eur/pull/665) -* Add option to include a piecewise linear approximation of transmission losses, - e.g. by setting ``solving: options: transmission_losses: 2`` for an - approximation with two tangents. +* A ``param:`` section in the snakemake rule definitions was added to track + changed settings in ``config.yaml``. The goal is to automatically re-execute + rules where parameters have changed. See `Non-file parameters for rules + `_ + in the snakemake documentation. (https://github.com/PyPSA/pypsa-eur/pull/663) + +* A new function named ``sanitize_carrier`` ensures that all unique carrier + names are present in the network's carriers attribute, and adds nice names and + colors for each carrier according to the provided configuration dictionary. + (https://github.com/PyPSA/pypsa-eur/pull/653, + https://github.com/PyPSA/pypsa-eur/pull/690) + +* The configuration settings have been documented in more detail. + (https://github.com/PyPSA/pypsa-eur/pull/685) + +**Breaking Changes** + +* The configuration files are now located in the ``config`` directory. This + includes the ``config.default.yaml``, ``config.yaml`` as well as the test + configuration files which are now located in the ``config/test`` directory. + Config files that are still in the root directory will be ignored. + (https://github.com/PyPSA/pypsa-eur/pull/640) + +* Renamed script and rule name from ``build_load_data`` to + ``build_electricity_demand`` and ``retrieve_load_data`` to + ``retrieve_electricity_demand``. (https://github.com/PyPSA/pypsa-eur/pull/642, + https://github.com/PyPSA/pypsa-eur/pull/652) + +* Updated to new spatial clustering module introduced in PyPSA v0.25. + (https://github.com/PyPSA/pypsa-eur/pull/696) + +**Changes** * Handling networks with links with multiple inputs/outputs no longer requires to override component attributes. + (https://github.com/PyPSA/pypsa-eur/pull/695) * Added configuration option ``enable: retrieve:`` to control whether data retrieval rules from snakemake are enabled or not. Th default setting ``auto`` - will automatically detect and enable/disable the rules based on internet connectivity. + will automatically detect and enable/disable the rules based on internet + connectivity. (https://github.com/PyPSA/pypsa-eur/pull/694) +* Update to ``technology-data`` v0.6.0. + (https://github.com/PyPSA/pypsa-eur/pull/704) + +* Handle data bundle extraction paths via ``snakemake.output``. + +* Additional technologies are added to ``tech_color`` in the configuration files + to include previously unlisted carriers. + +* Doc: Added note that Windows is only tested in CI with WSL. + (https://github.com/PyPSA/pypsa-eur/issues/697) + +* Doc: Add support section. (https://github.com/PyPSA/pypsa-eur/pull/656) + +* Open ``rasterio`` files with ``rioxarray``. + (https://github.com/PyPSA/pypsa-eur/pull/474) + +* Migrate CI to ``micromamba``. (https://github.com/PyPSA/pypsa-eur/pull/700) + +**Bugs and Compatibility** + +* The new minimum PyPSA version is v0.25.1. + +* Removed ``vresutils`` dependency. + (https://github.com/PyPSA/pypsa-eur/pull/662) + +* Adapt to new ``powerplantmatching`` version. + (https://github.com/PyPSA/pypsa-eur/pull/687, + https://github.com/PyPSA/pypsa-eur/pull/701) + +* Bugfix: Correct typo in the CPLEX solver configuration in + ``config.default.yaml``. (https://github.com/PyPSA/pypsa-eur/pull/630) + +* Bugfix: Error in ``add_electricity`` where carriers were added multiple times + to the network, resulting in a non-unique carriers error. + +* Bugfix of optional reserve constraint. + (https://github.com/PyPSA/pypsa-eur/pull/645) + +* Fix broken equity constraints logic. + (https://github.com/PyPSA/pypsa-eur/pull/679) + +* Fix addition of load shedding generators. + (https://github.com/PyPSA/pypsa-eur/pull/649) + +* Fix automatic building of documentation on readthedocs.org. + (https://github.com/PyPSA/pypsa-eur/pull/658) + +* Bugfix: Update network clustering to avoid adding deleted links in clustered + network. (https://github.com/PyPSA/pypsa-eur/pull/678) + +* Address ``geopandas`` deprecations. + (https://github.com/PyPSA/pypsa-eur/pull/678) + +* Fix bug with underground hydrogen storage creation, where for some small model + regions no cavern storage is available. + (https://github.com/PyPSA/pypsa-eur/pull/672) PyPSA-Eur 0.8.0 (18th March 2023) diff --git a/envs/environment.fixed.yaml b/envs/environment.fixed.yaml index 1ff9313d..ca2ae848 100644 --- a/envs/environment.fixed.yaml +++ b/envs/environment.fixed.yaml @@ -12,74 +12,93 @@ dependencies: - _libgcc_mutex=0.1 - _openmp_mutex=4.5 - affine=2.4.0 -- alsa-lib=1.2.8 +- alsa-lib=1.2.9 - ampl-mp=3.1.0 -- amply=0.1.5 +- amply=0.1.6 +- anyio=3.7.1 - appdirs=1.4.4 +- argon2-cffi=21.3.0 +- argon2-cffi-bindings=21.2.0 - asttokens=2.2.1 -- atlite=0.2.10 +- async-lru=2.0.3 +- atk-1.0=2.38.0 +- atlite=0.2.11 - attr=2.5.1 -- attrs=22.2.0 +- attrs=23.1.0 +- aws-c-auth=0.7.0 +- aws-c-cal=0.6.0 +- aws-c-common=0.8.23 +- aws-c-compression=0.2.17 +- aws-c-event-stream=0.3.1 +- aws-c-http=0.7.11 +- aws-c-io=0.13.28 +- aws-c-mqtt=0.8.14 +- aws-c-s3=0.3.13 +- aws-c-sdkutils=0.1.11 +- aws-checksums=0.1.16 +- aws-crt-cpp=0.20.3 +- aws-sdk-cpp=1.10.57 +- babel=2.12.1 - backcall=0.2.0 - backports=1.0 -- backports.functools_lru_cache=1.6.4 -- beautifulsoup4=4.11.2 -- blosc=1.21.3 -- bokeh=2.4.3 +- backports.functools_lru_cache=1.6.5 +- beautifulsoup4=4.12.2 +- bleach=6.0.0 +- blosc=1.21.4 +- bokeh=3.2.1 - boost-cpp=1.78.0 -- bottleneck=1.3.6 +- bottleneck=1.3.7 - branca=0.6.0 - brotli=1.0.9 - brotli-bin=1.0.9 -- brotlipy=0.7.0 +- brotli-python=1.0.9 - bzip2=1.0.8 -- c-ares=1.18.1 -- ca-certificates=2022.12.7 +- c-ares=1.19.1 +- c-blosc2=2.10.0 +- ca-certificates=2023.7.22 - cairo=1.16.0 - cartopy=0.21.1 -- cdsapi=0.5.1 -- certifi=2022.12.7 +- cdsapi=0.6.1 +- certifi=2023.7.22 - cffi=1.15.1 - cfitsio=4.2.0 - cftime=1.6.2 -- charset-normalizer=2.1.1 -- click=8.1.3 +- charset-normalizer=3.2.0 +- click=8.1.6 - click-plugins=1.1.1 - cligj=0.7.2 - cloudpickle=2.2.1 -- coin-or-cbc=2.10.8 -- coin-or-cgl=0.60.6 -- coin-or-clp=1.17.7 -- coin-or-osi=0.108.7 -- coin-or-utils=2.11.6 -- coincbc=2.10.8 - colorama=0.4.6 -- configargparse=1.5.3 +- comm=0.1.3 +- configargparse=1.7 - connection_pool=0.0.3 -- country_converter=0.8.0 -- cryptography=39.0.1 -- curl=7.88.0 +- contourpy=1.1.0 +- country_converter=1.0.0 +- curl=8.2.0 - cycler=0.11.0 -- cytoolz=0.12.0 -- dask=2023.2.0 -- dask-core=2023.2.0 +- cytoolz=0.12.2 +- dask=2023.7.1 +- dask-core=2023.7.1 - datrie=0.8.2 - dbus=1.13.6 +- debugpy=1.6.7 - decorator=5.1.1 +- defusedxml=0.7.1 - deprecation=2.1.0 - descartes=1.1.0 -- distributed=2023.2.0 +- distributed=2023.7.1 - distro=1.8.0 -- docutils=0.19 -- dpath=2.1.4 -- entsoe-py=0.5.8 +- docutils=0.20.1 +- dpath=2.1.6 +- entrypoints=0.4 +- entsoe-py=0.5.10 - et_xmlfile=1.1.0 -- exceptiongroup=1.1.0 +- exceptiongroup=1.1.2 - executing=1.2.0 - expat=2.5.0 -- fftw=3.3.10 -- filelock=3.9.0 -- fiona=1.9.1 +- filelock=3.12.2 +- fiona=1.9.4 +- flit-core=3.9.0 - folium=0.14.0 - font-ttf-dejavu-sans-mono=2.37 - font-ttf-inconsolata=3.000 @@ -88,293 +107,366 @@ dependencies: - fontconfig=2.14.2 - fonts-conda-ecosystem=1 - fonts-conda-forge=1 -- fonttools=4.38.0 +- fonttools=4.41.1 - freetype=2.12.1 - freexl=1.0.6 -- fsspec=2023.1.0 -- gdal=3.6.2 +- fribidi=1.0.10 +- fsspec=2023.6.0 +- gdal=3.7.0 +- gdk-pixbuf=2.42.10 - geographiclib=1.52 - geojson-rewind=1.0.2 -- geopandas=0.12.2 -- geopandas-base=0.12.2 +- geopandas=0.13.2 +- geopandas-base=0.13.2 - geopy=2.3.0 -- geos=3.11.1 +- geos=3.11.2 - geotiff=1.7.1 - gettext=0.21.1 +- gflags=2.2.2 - giflib=5.2.1 - gitdb=4.0.10 -- gitpython=3.1.30 -- glib=2.74.1 -- glib-tools=2.74.1 +- gitpython=3.1.32 +- glib=2.76.4 +- glib-tools=2.76.4 +- glog=0.6.0 +- gmp=6.2.1 - graphite2=1.3.13 -- gst-plugins-base=1.22.0 -- gstreamer=1.22.0 -- gstreamer-orc=0.4.33 -- harfbuzz=6.0.0 +- graphviz=8.1.0 +- gst-plugins-base=1.22.5 +- gstreamer=1.22.5 +- gtk2=2.24.33 +- gts=0.7.6 +- harfbuzz=7.3.0 - hdf4=4.2.15 -- hdf5=1.12.2 -- heapdict=1.0.1 +- hdf5=1.14.1 - humanfriendly=10.0 -- icu=70.1 +- icu=72.1 - idna=3.4 -- importlib-metadata=6.0.0 -- importlib_resources=5.10.2 +- importlib-metadata=6.8.0 +- importlib_metadata=6.8.0 +- importlib_resources=6.0.0 - iniconfig=2.0.0 -- ipopt=3.14.11 -- ipython=8.10.0 -- jack=1.9.22 +- ipopt=3.14.12 +- ipykernel=6.24.0 +- ipython=8.14.0 +- ipython_genutils=0.2.0 +- ipywidgets=8.0.7 - jedi=0.18.2 - jinja2=3.1.2 -- joblib=1.2.0 -- jpeg=9e +- joblib=1.3.0 - json-c=0.16 -- jsonschema=4.17.3 -- jupyter_core=5.2.0 -- kealib=1.5.0 +- json5=0.9.14 +- jsonschema=4.18.4 +- jsonschema-specifications=2023.7.1 +- jupyter=1.0.0 +- jupyter-lsp=2.2.0 +- jupyter_client=8.3.0 +- jupyter_console=6.6.3 +- jupyter_core=5.3.1 +- jupyter_events=0.6.3 +- jupyter_server=2.7.0 +- jupyter_server_terminals=0.4.4 +- jupyterlab=4.0.3 +- jupyterlab_pygments=0.2.2 +- jupyterlab_server=2.24.0 +- jupyterlab_widgets=3.0.8 +- kealib=1.5.1 - keyutils=1.6.1 - kiwisolver=1.4.4 -- krb5=1.20.1 +- krb5=1.21.1 - lame=3.100 -- lcms2=2.14 +- lcms2=2.15 - ld_impl_linux-64=2.40 - lerc=4.0.0 +- libabseil=20230125.3 - libaec=1.0.6 +- libarchive=3.6.2 +- libarrow=12.0.1 - libblas=3.9.0 - libbrotlicommon=1.0.9 - libbrotlidec=1.0.9 - libbrotlienc=1.0.9 -- libcap=2.66 +- libcap=2.67 - libcblas=3.9.0 - libclang=15.0.7 - libclang13=15.0.7 +- libcrc32c=1.1.2 - libcups=2.3.3 -- libcurl=7.88.0 -- libdb=6.2.32 -- libdeflate=1.17 +- libcurl=8.2.0 +- libdeflate=1.18 - libedit=3.1.20191231 - libev=4.33 -- libevent=2.1.10 +- libevent=2.1.12 +- libexpat=2.5.0 - libffi=3.4.2 -- libflac=1.4.2 -- libgcc-ng=12.2.0 +- libflac=1.4.3 +- libgcc-ng=13.1.0 - libgcrypt=1.10.1 -- libgdal=3.6.2 -- libgfortran-ng=12.2.0 -- libgfortran5=12.2.0 -- libglib=2.74.1 -- libgomp=12.2.0 -- libgpg-error=1.46 +- libgd=2.3.3 +- libgdal=3.7.0 +- libgfortran-ng=13.1.0 +- libgfortran5=13.1.0 +- libglib=2.76.4 +- libgomp=13.1.0 +- libgoogle-cloud=2.12.0 +- libgpg-error=1.47 +- libgrpc=1.56.2 - libiconv=1.17 +- libjpeg-turbo=2.1.5.1 - libkml=1.3.0 - liblapack=3.9.0 - liblapacke=3.9.0 - libllvm15=15.0.7 -- libnetcdf=4.8.1 -- libnghttp2=1.51.0 +- libnetcdf=4.9.2 +- libnghttp2=1.52.0 - libnsl=2.0.0 +- libnuma=2.0.16 - libogg=1.3.4 -- libopenblas=0.3.21 +- libopenblas=0.3.23 - libopus=1.3.1 - libpng=1.6.39 -- libpq=15.2 +- libpq=15.3 +- libprotobuf=4.23.3 +- librsvg=2.56.1 - librttopo=1.1.0 - libsndfile=1.2.0 +- libsodium=1.0.18 - libspatialindex=1.9.3 - libspatialite=5.0.1 -- libsqlite=3.40.0 -- libssh2=1.10.0 -- libstdcxx-ng=12.2.0 -- libsystemd0=252 -- libtiff=4.5.0 +- libsqlite=3.42.0 +- libssh2=1.11.0 +- libstdcxx-ng=13.1.0 +- libsystemd0=253 +- libthrift=0.18.1 +- libtiff=4.5.1 - libtool=2.4.7 -- libudev1=252 -- libuuid=2.32.1 +- libutf8proc=2.8.0 +- libuuid=2.38.1 - libvorbis=1.3.7 -- libwebp-base=1.2.4 -- libxcb=1.13 +- libwebp=1.3.1 +- libwebp-base=1.3.1 +- libxcb=1.15 - libxkbcommon=1.5.0 -- libxml2=2.10.3 +- libxml2=2.11.4 - libxslt=1.1.37 - libzip=1.9.2 - libzlib=1.2.13 -- linopy=0.1.3 - locket=1.0.0 -- lxml=4.9.2 +- lxml=4.9.3 - lz4=4.3.2 - lz4-c=1.9.4 - lzo=2.10 - mapclassify=2.5.0 -- markupsafe=2.1.2 +- markupsafe=2.1.3 - matplotlib=3.5.3 - matplotlib-base=3.5.3 - matplotlib-inline=0.1.6 - memory_profiler=0.61.0 -- metis=5.1.0 -- mpg123=1.31.2 -- msgpack-python=1.0.4 +- metis=5.1.1 +- mistune=3.0.0 +- mpg123=1.31.3 +- msgpack-python=1.0.5 - mumps-include=5.2.1 - mumps-seq=5.2.1 -- munch=2.5.0 +- munch=4.0.0 - munkres=1.1.4 -- mysql-common=8.0.32 -- mysql-libs=8.0.32 -- nbformat=5.7.3 -- ncurses=6.3 -- netcdf4=1.6.2 -- networkx=3.0 +- mysql-common=8.0.33 +- mysql-libs=8.0.33 +- nbclient=0.8.0 +- nbconvert=7.7.2 +- nbconvert-core=7.7.2 +- nbconvert-pandoc=7.7.2 +- nbformat=5.9.1 +- ncurses=6.4 +- nest-asyncio=1.5.6 +- netcdf4=1.6.4 +- networkx=3.1 - nomkl=1.0 +- notebook=7.0.0 +- notebook-shim=0.2.3 - nspr=4.35 -- nss=3.88 -- numexpr=2.8.3 -- numpy=1.24 +- nss=3.89 +- numexpr=2.8.4 +- numpy=1.25.1 - openjdk=17.0.3 - openjpeg=2.5.0 -- openpyxl=3.1.0 -- openssl=3.0.8 -- packaging=23.0 -- pandas=1.5.3 +- openpyxl=3.1.2 +- openssl=3.1.1 +- orc=1.9.0 +- overrides=7.3.1 +- packaging=23.1 +- pandas=2.0.3 +- pandoc=3.1.3 +- pandocfilters=1.5.0 +- pango=1.50.14 - parso=0.8.3 -- partd=1.3.0 +- partd=1.4.0 - patsy=0.5.3 - pcre2=10.40 - pexpect=4.8.0 - pickleshare=0.7.5 -- pillow=9.4.0 -- pip=23.0 +- pillow=10.0.0 +- pip=23.2.1 - pixman=0.40.0 - pkgutil-resolve-name=1.3.10 - plac=1.3.5 -- platformdirs=3.0.0 -- pluggy=1.0.0 +- platformdirs=3.9.1 +- pluggy=1.2.0 - ply=3.11 -- pooch=1.6.0 -- poppler=22.12.0 +- pooch=1.7.0 +- poppler=23.05.0 - poppler-data=0.4.12 -- postgresql=15.2 -- powerplantmatching=0.5.6 +- postgresql=15.3 +- powerplantmatching=0.5.7 - progressbar2=4.2.0 -- proj=9.1.0 -- prompt-toolkit=3.0.36 -- psutil=5.9.4 +- proj=9.2.1 +- prometheus_client=0.17.1 +- prompt-toolkit=3.0.39 +- prompt_toolkit=3.0.39 +- psutil=5.9.5 - pthread-stubs=0.4 - ptyprocess=0.7.0 - pulp=2.7.0 -- pulseaudio=16.1 +- pulseaudio-client=16.1 - pure_eval=0.2.2 +- py-cpuinfo=9.0.0 +- pyarrow=12.0.1 - pycountry=22.3.5 - pycparser=2.21 -- pygments=2.14.0 -- pyomo=6.4.4 -- pyopenssl=23.0.0 -- pyparsing=3.0.9 -- pyproj=3.4.1 -- pypsa=0.22.1 +- pygments=2.15.1 +- pyomo=6.6.1 +- pyparsing=3.1.0 +- pyproj=3.6.0 - pyqt=5.15.7 - pyqt5-sip=12.11.0 -- pyrsistent=0.19.3 - pyshp=2.3.1 - pysocks=1.7.1 -- pytables=3.7.0 -- pytest=7.2.1 -- python=3.10.9 +- pytables=3.8.0 +- pytest=7.4.0 +- python=3.10.12 - python-dateutil=2.8.2 -- python-fastjsonschema=2.16.2 -- python-utils=3.5.2 +- python-fastjsonschema=2.18.0 +- python-json-logger=2.0.7 +- python-tzdata=2023.3 +- python-utils=3.7.0 - python_abi=3.10 -- pytz=2022.7.1 +- pytz=2023.3 - pyxlsb=1.0.10 - pyyaml=6.0 +- pyzmq=25.1.0 - qt-main=5.15.8 -- rasterio=1.3.4 -- readline=8.1.2 -- requests=2.28.1 -- retry=0.9.2 -- rich=12.5.1 -- rioxarray=0.13.3 -- rtree=1.0.0 -- s2n=1.0.10 -- scikit-learn=1.1.1 -- scipy=1.8.1 +- qtconsole=5.4.3 +- qtconsole-base=5.4.3 +- qtpy=2.3.1 +- rasterio=1.3.8 +- rdma-core=28.9 +- re2=2023.03.02 +- readline=8.2 +- referencing=0.30.0 +- requests=2.31.0 +- reretry=0.11.8 +- rfc3339-validator=0.1.4 +- rfc3986-validator=0.1.1 +- rioxarray=0.14.1 +- rpds-py=0.9.2 +- rtree=1.0.1 +- s2n=1.3.46 +- scikit-learn=1.3.0 +- scipy=1.11.1 - scotch=6.0.9 - seaborn=0.12.2 - seaborn-base=0.12.2 -- setuptools=67.3.2 +- send2trash=1.8.2 +- setuptools=68.0.0 - setuptools-scm=7.1.0 - setuptools_scm=7.1.0 - shapely=2.0.1 -- sip=6.7.7 +- sip=6.7.10 - six=1.16.0 - smart_open=6.3.0 - smmap=3.0.5 -- snakemake-minimal=7.22.0 -- snappy=1.1.9 +- snakemake-minimal=7.30.2 +- snappy=1.1.10 +- sniffio=1.3.0 - snuggs=1.4.7 - sortedcontainers=2.4.0 - soupsieve=2.3.2.post1 -- sqlite=3.40.0 +- sqlite=3.42.0 - stack_data=0.6.2 -- statsmodels=0.13.5 +- statsmodels=0.14.0 - stopit=1.1.2 - tabula-py=2.6.0 - tabulate=0.9.0 - tblib=1.7.0 -- threadpoolctl=3.1.0 +- terminado=0.17.1 +- threadpoolctl=3.2.0 - throttler=1.2.1 - tiledb=2.13.2 +- tinycss2=1.2.1 - tk=8.6.12 - toml=0.10.2 - tomli=2.0.1 - toolz=0.12.0 -- toposort=1.9 -- tornado=6.2 -- tqdm=4.64.1 +- toposort=1.10 +- tornado=6.3.2 +- tqdm=4.65.0 - traitlets=5.9.0 -- typing-extensions=4.4.0 -- typing_extensions=4.4.0 -- tzcode=2022g -- tzdata=2022g +- typing-extensions=4.7.1 +- typing_extensions=4.7.1 +- typing_utils=0.1.0 +- tzcode=2023c +- tzdata=2023c +- ucx=1.14.1 - unicodedata2=15.0.0 - unidecode=1.3.6 - unixodbc=2.3.10 -- urllib3=1.26.14 +- urllib3=2.0.4 - wcwidth=0.2.6 -- wheel=0.38.4 -- wrapt=1.14.1 -- xarray=2023.2.0 +- webencodings=0.5.1 +- websocket-client=1.6.1 +- wheel=0.41.0 +- widgetsnbextension=4.0.8 +- wrapt=1.15.0 +- xarray=2023.7.0 - xcb-util=0.4.0 - xcb-util-image=0.4.0 - xcb-util-keysyms=0.4.0 - xcb-util-renderutil=0.3.9 - xcb-util-wm=0.4.1 - xerces-c=3.2.4 +- xkeyboard-config=2.39 - xlrd=2.0.1 - xorg-fixesproto=5.0 - xorg-inputproto=2.3.2 - xorg-kbproto=1.0.7 -- xorg-libice=1.0.10 -- xorg-libsm=1.2.3 -- xorg-libx11=1.7.2 -- xorg-libxau=1.0.9 +- xorg-libice=1.1.1 +- xorg-libsm=1.2.4 +- xorg-libx11=1.8.6 +- xorg-libxau=1.0.11 - xorg-libxdmcp=1.1.3 - xorg-libxext=1.3.4 - xorg-libxfixes=5.0.3 - xorg-libxi=1.7.10 -- xorg-libxrender=0.9.10 +- xorg-libxrender=0.9.11 - xorg-libxtst=1.2.3 - xorg-recordproto=1.14.2 - xorg-renderproto=0.11.1 - xorg-xextproto=7.3.0 +- xorg-xf86vidmodeproto=2.3.1 - xorg-xproto=7.0.31 -- xyzservices=2022.9.0 +- xyzservices=2023.7.0 - xz=5.2.6 - yaml=0.2.5 - yte=1.5.1 -- zict=2.2.0 -- zipp=3.13.0 +- zeromq=4.3.4 +- zict=3.0.0 +- zipp=3.16.2 - zlib=1.2.13 +- zlib-ng=2.0.7 - zstd=1.5.2 - pip: - - countrycode==0.2 - - highspy==1.5.0.dev0 - - pybind11==2.10.3 - - tsam==2.2.2 + - gurobipy==10.0.2 + - linopy==0.2.2 + - pypsa==0.25.1 + - tsam==2.3.0 + - validators==0.20.0 diff --git a/envs/environment.yaml b/envs/environment.yaml index 8409adb0..c3af36bb 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -56,4 +56,4 @@ dependencies: - pip: - tsam>=1.1.0 - - git+https://github.com/PyPSA/PyPSA.git@master + - pypsa>=0.25.1 diff --git a/scripts/solve_network.py b/scripts/solve_network.py index c4432cda..141d8bc8 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -602,6 +602,7 @@ def solve_network(n, config, solving, opts="", **kwargs): min_iterations = cf_solving.get("min_iterations", 4) max_iterations = cf_solving.get("max_iterations", 6) transmission_losses = cf_solving.get("transmission_losses", 0) + assign_all_duals = cf_solving.get("assign_all_duals", False) # add to network for extra_functionality n.config = config @@ -616,6 +617,7 @@ def solve_network(n, config, solving, opts="", **kwargs): status, condition = n.optimize( solver_name=solver_name, transmission_losses=transmission_losses, + assign_all_duals=assign_all_duals, extra_functionality=extra_functionality, **solver_options, **kwargs, @@ -627,6 +629,7 @@ def solve_network(n, config, solving, opts="", **kwargs): min_iterations=min_iterations, max_iterations=max_iterations, transmission_losses=transmission_losses, + assign_all_duals=assign_all_duals, extra_functionality=extra_functionality, **solver_options, **kwargs,