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/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..4f7fd134 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 ond 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..b6277092 100644 --- a/envs/environment.fixed.yaml +++ b/envs/environment.fixed.yaml @@ -1,380 +1,468 @@ -# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors -# -# SPDX-License-Identifier: CC0-1.0 - name: pypsa-eur channels: -- bioconda -- http://conda.anaconda.org/gurobi -- conda-forge -- defaults + - bioconda + - http://conda.anaconda.org/gurobi + - conda-forge + - defaults dependencies: -- _libgcc_mutex=0.1 -- _openmp_mutex=4.5 -- affine=2.4.0 -- alsa-lib=1.2.8 -- ampl-mp=3.1.0 -- amply=0.1.5 -- appdirs=1.4.4 -- asttokens=2.2.1 -- atlite=0.2.10 -- attr=2.5.1 -- attrs=22.2.0 -- 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 -- boost-cpp=1.78.0 -- bottleneck=1.3.6 -- branca=0.6.0 -- brotli=1.0.9 -- brotli-bin=1.0.9 -- brotlipy=0.7.0 -- bzip2=1.0.8 -- c-ares=1.18.1 -- ca-certificates=2022.12.7 -- cairo=1.16.0 -- cartopy=0.21.1 -- cdsapi=0.5.1 -- certifi=2022.12.7 -- cffi=1.15.1 -- cfitsio=4.2.0 -- cftime=1.6.2 -- charset-normalizer=2.1.1 -- click=8.1.3 -- 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 -- connection_pool=0.0.3 -- country_converter=0.8.0 -- cryptography=39.0.1 -- curl=7.88.0 -- cycler=0.11.0 -- cytoolz=0.12.0 -- dask=2023.2.0 -- dask-core=2023.2.0 -- datrie=0.8.2 -- dbus=1.13.6 -- decorator=5.1.1 -- deprecation=2.1.0 -- descartes=1.1.0 -- distributed=2023.2.0 -- distro=1.8.0 -- docutils=0.19 -- dpath=2.1.4 -- entsoe-py=0.5.8 -- et_xmlfile=1.1.0 -- exceptiongroup=1.1.0 -- executing=1.2.0 -- expat=2.5.0 -- fftw=3.3.10 -- filelock=3.9.0 -- fiona=1.9.1 -- folium=0.14.0 -- font-ttf-dejavu-sans-mono=2.37 -- font-ttf-inconsolata=3.000 -- font-ttf-source-code-pro=2.038 -- font-ttf-ubuntu=0.83 -- fontconfig=2.14.2 -- fonts-conda-ecosystem=1 -- fonts-conda-forge=1 -- fonttools=4.38.0 -- freetype=2.12.1 -- freexl=1.0.6 -- fsspec=2023.1.0 -- gdal=3.6.2 -- geographiclib=1.52 -- geojson-rewind=1.0.2 -- geopandas=0.12.2 -- geopandas-base=0.12.2 -- geopy=2.3.0 -- geos=3.11.1 -- geotiff=1.7.1 -- gettext=0.21.1 -- giflib=5.2.1 -- gitdb=4.0.10 -- gitpython=3.1.30 -- glib=2.74.1 -- glib-tools=2.74.1 -- graphite2=1.3.13 -- gst-plugins-base=1.22.0 -- gstreamer=1.22.0 -- gstreamer-orc=0.4.33 -- harfbuzz=6.0.0 -- hdf4=4.2.15 -- hdf5=1.12.2 -- heapdict=1.0.1 -- humanfriendly=10.0 -- icu=70.1 -- idna=3.4 -- importlib-metadata=6.0.0 -- importlib_resources=5.10.2 -- iniconfig=2.0.0 -- ipopt=3.14.11 -- ipython=8.10.0 -- jack=1.9.22 -- jedi=0.18.2 -- jinja2=3.1.2 -- joblib=1.2.0 -- jpeg=9e -- json-c=0.16 -- jsonschema=4.17.3 -- jupyter_core=5.2.0 -- kealib=1.5.0 -- keyutils=1.6.1 -- kiwisolver=1.4.4 -- krb5=1.20.1 -- lame=3.100 -- lcms2=2.14 -- ld_impl_linux-64=2.40 -- lerc=4.0.0 -- libaec=1.0.6 -- libblas=3.9.0 -- libbrotlicommon=1.0.9 -- libbrotlidec=1.0.9 -- libbrotlienc=1.0.9 -- libcap=2.66 -- libcblas=3.9.0 -- libclang=15.0.7 -- libclang13=15.0.7 -- libcups=2.3.3 -- libcurl=7.88.0 -- libdb=6.2.32 -- libdeflate=1.17 -- libedit=3.1.20191231 -- libev=4.33 -- libevent=2.1.10 -- libffi=3.4.2 -- libflac=1.4.2 -- libgcc-ng=12.2.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 -- libiconv=1.17 -- libkml=1.3.0 -- liblapack=3.9.0 -- liblapacke=3.9.0 -- libllvm15=15.0.7 -- libnetcdf=4.8.1 -- libnghttp2=1.51.0 -- libnsl=2.0.0 -- libogg=1.3.4 -- libopenblas=0.3.21 -- libopus=1.3.1 -- libpng=1.6.39 -- libpq=15.2 -- librttopo=1.1.0 -- libsndfile=1.2.0 -- 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 -- libtool=2.4.7 -- libudev1=252 -- libuuid=2.32.1 -- libvorbis=1.3.7 -- libwebp-base=1.2.4 -- libxcb=1.13 -- libxkbcommon=1.5.0 -- libxml2=2.10.3 -- libxslt=1.1.37 -- libzip=1.9.2 -- libzlib=1.2.13 -- linopy=0.1.3 -- locket=1.0.0 -- lxml=4.9.2 -- lz4=4.3.2 -- lz4-c=1.9.4 -- lzo=2.10 -- mapclassify=2.5.0 -- markupsafe=2.1.2 -- 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 -- mumps-include=5.2.1 -- mumps-seq=5.2.1 -- munch=2.5.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 -- nomkl=1.0 -- nspr=4.35 -- nss=3.88 -- numexpr=2.8.3 -- numpy=1.24 -- openjdk=17.0.3 -- openjpeg=2.5.0 -- openpyxl=3.1.0 -- openssl=3.0.8 -- packaging=23.0 -- pandas=1.5.3 -- parso=0.8.3 -- partd=1.3.0 -- patsy=0.5.3 -- pcre2=10.40 -- pexpect=4.8.0 -- pickleshare=0.7.5 -- pillow=9.4.0 -- pip=23.0 -- pixman=0.40.0 -- pkgutil-resolve-name=1.3.10 -- plac=1.3.5 -- platformdirs=3.0.0 -- pluggy=1.0.0 -- ply=3.11 -- pooch=1.6.0 -- poppler=22.12.0 -- poppler-data=0.4.12 -- postgresql=15.2 -- powerplantmatching=0.5.6 -- progressbar2=4.2.0 -- proj=9.1.0 -- prompt-toolkit=3.0.36 -- psutil=5.9.4 -- pthread-stubs=0.4 -- ptyprocess=0.7.0 -- pulp=2.7.0 -- pulseaudio=16.1 -- pure_eval=0.2.2 -- 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 -- 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 -- python-dateutil=2.8.2 -- python-fastjsonschema=2.16.2 -- python-utils=3.5.2 -- python_abi=3.10 -- pytz=2022.7.1 -- pyxlsb=1.0.10 -- pyyaml=6.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 -- scotch=6.0.9 -- seaborn=0.12.2 -- seaborn-base=0.12.2 -- setuptools=67.3.2 -- setuptools-scm=7.1.0 -- setuptools_scm=7.1.0 -- shapely=2.0.1 -- sip=6.7.7 -- six=1.16.0 -- smart_open=6.3.0 -- smmap=3.0.5 -- snakemake-minimal=7.22.0 -- snappy=1.1.9 -- snuggs=1.4.7 -- sortedcontainers=2.4.0 -- soupsieve=2.3.2.post1 -- sqlite=3.40.0 -- stack_data=0.6.2 -- statsmodels=0.13.5 -- stopit=1.1.2 -- tabula-py=2.6.0 -- tabulate=0.9.0 -- tblib=1.7.0 -- threadpoolctl=3.1.0 -- throttler=1.2.1 -- tiledb=2.13.2 -- 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 -- traitlets=5.9.0 -- typing-extensions=4.4.0 -- typing_extensions=4.4.0 -- tzcode=2022g -- tzdata=2022g -- unicodedata2=15.0.0 -- unidecode=1.3.6 -- unixodbc=2.3.10 -- urllib3=1.26.14 -- wcwidth=0.2.6 -- wheel=0.38.4 -- wrapt=1.14.1 -- xarray=2023.2.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 -- 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-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-libxtst=1.2.3 -- xorg-recordproto=1.14.2 -- xorg-renderproto=0.11.1 -- xorg-xextproto=7.3.0 -- xorg-xproto=7.0.31 -- xyzservices=2022.9.0 -- xz=5.2.6 -- yaml=0.2.5 -- yte=1.5.1 -- zict=2.2.0 -- zipp=3.13.0 -- zlib=1.2.13 -- zstd=1.5.2 -- pip: - - countrycode==0.2 - - highspy==1.5.0.dev0 - - pybind11==2.10.3 - - tsam==2.2.2 + - _libgcc_mutex=0.1 + - _openmp_mutex=4.5 + - affine=2.4.0 + - alsa-lib=1.2.9 + - ampl-mp=3.1.0 + - 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 + - async-lru=2.0.3 + - atk-1.0=2.38.0 + - atlite=0.2.11 + - attr=2.5.1 + - 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.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.7 + - branca=0.6.0 + - brotli=1.0.9 + - brotli-bin=1.0.9 + - brotli-python=1.0.9 + - bzip2=1.0.8 + - 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.6.1 + - certifi=2023.7.22 + - cffi=1.15.1 + - cfitsio=4.2.0 + - cftime=1.6.2 + - charset-normalizer=3.2.0 + - click=8.1.6 + - click-plugins=1.1.1 + - cligj=0.7.2 + - cloudpickle=2.2.1 + - colorama=0.4.6 + - comm=0.1.3 + - configargparse=1.7 + - connection_pool=0.0.3 + - contourpy=1.1.0 + - country_converter=1.0.0 + - curl=8.2.0 + - cycler=0.11.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.7.1 + - distro=1.8.0 + - docutils=0.20.1 + - dpath=2.1.6 + - entrypoints=0.4 + - entsoe-py=0.5.10 + - et_xmlfile=1.1.0 + - exceptiongroup=1.1.2 + - executing=1.2.0 + - expat=2.5.0 + - 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 + - font-ttf-source-code-pro=2.038 + - font-ttf-ubuntu=0.83 + - fontconfig=2.14.2 + - fonts-conda-ecosystem=1 + - fonts-conda-forge=1 + - fonttools=4.41.1 + - freetype=2.12.1 + - freexl=1.0.6 + - 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.13.2 + - geopandas-base=0.13.2 + - geopy=2.3.0 + - 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.32 + - glib=2.76.4 + - glib-tools=2.76.4 + - glog=0.6.0 + - gmp=6.2.1 + - graphite2=1.3.13 + - 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.14.1 + - humanfriendly=10.0 + - icu=72.1 + - idna=3.4 + - importlib-metadata=6.8.0 + - importlib_metadata=6.8.0 + - importlib_resources=6.0.0 + - iniconfig=2.0.0 + - 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.3.0 + - json-c=0.16 + - 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.21.1 + - lame=3.100 + - 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.67 + - libcblas=3.9.0 + - libclang=15.0.7 + - libclang13=15.0.7 + - libcrc32c=1.1.2 + - libcups=2.3.3 + - libcurl=8.2.0 + - libdeflate=1.18 + - libedit=3.1.20191231 + - libev=4.33 + - libevent=2.1.12 + - libexpat=2.5.0 + - libffi=3.4.2 + - libflac=1.4.3 + - libgcc-ng=13.1.0 + - libgcrypt=1.10.1 + - 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.9.2 + - libnghttp2=1.52.0 + - libnsl=2.0.0 + - libnuma=2.0.16 + - libogg=1.3.4 + - libopenblas=0.3.23 + - libopus=1.3.1 + - libpng=1.6.39 + - 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.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 + - libutf8proc=2.8.0 + - libuuid=2.38.1 + - libvorbis=1.3.7 + - libwebp=1.3.1 + - libwebp-base=1.3.1 + - libxcb=1.15 + - libxkbcommon=1.5.0 + - libxml2=2.11.4 + - libxslt=1.1.37 + - libzip=1.9.2 + - libzlib=1.2.13 + - locket=1.0.0 + - lxml=4.9.3 + - lz4=4.3.2 + - lz4-c=1.9.4 + - lzo=2.10 + - mapclassify=2.5.0 + - 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.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=4.0.0 + - munkres=1.1.4 + - 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.89 + - numexpr=2.8.4 + - numpy=1.25.1 + - openjdk=17.0.3 + - openjpeg=2.5.0 + - 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.4.0 + - patsy=0.5.3 + - pcre2=10.40 + - pexpect=4.8.0 + - pickleshare=0.7.5 + - pillow=10.0.0 + - pip=23.2.1 + - pixman=0.40.0 + - pkgutil-resolve-name=1.3.10 + - plac=1.3.5 + - platformdirs=3.9.1 + - pluggy=1.2.0 + - ply=3.11 + - pooch=1.7.0 + - poppler=23.05.0 + - poppler-data=0.4.12 + - postgresql=15.3 + - powerplantmatching=0.5.7 + - progressbar2=4.2.0 + - 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-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.15.1 + - pyomo=6.6.1 + - pyparsing=3.1.0 + - pyproj=3.6.0 + - pyqt=5.15.7 + - pyqt5-sip=12.11.0 + - pyshp=2.3.1 + - pysocks=1.7.1 + - pytables=3.8.0 + - pytest=7.4.0 + - python=3.10.12 + - python-dateutil=2.8.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=2023.3 + - pyxlsb=1.0.10 + - pyyaml=6.0 + - pyzmq=25.1.0 + - qt-main=5.15.8 + - 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 + - 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.10 + - six=1.16.0 + - smart_open=6.3.0 + - smmap=3.0.5 + - 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.42.0 + - stack_data=0.6.2 + - statsmodels=0.14.0 + - stopit=1.1.2 + - tabula-py=2.6.0 + - tabulate=0.9.0 + - tblib=1.7.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.10 + - tornado=6.3.2 + - tqdm=4.65.0 + - traitlets=5.9.0 + - 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=2.0.4 + - wcwidth=0.2.6 + - 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.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.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=2023.7.0 + - xz=5.2.6 + - yaml=0.2.5 + - yte=1.5.1 + - 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: + - 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,