{
"info": {
"author": "CREM",
"author_email": "info@crem.ch",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7"
],
"description": "=====================\nDistrictHeatingDesign\n=====================\n\n.. image:: https://img.shields.io/pypi/v/dhd.svg\n :target: https://pypi.python.org/pypi/dhd\n\n.. image:: https://img.shields.io/travis/jonas.paccolat/dhd.svg\n :target: https://travis-ci.org/jonas.paccolat/dhd\n\n.. image:: https://readthedocs.org/projects/dhd/badge/?version=latest\n :target: https://dhd.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n\nGraph theory and evolutionary algorithm applied to city district heating network\ndesign.\n\nMotivation\n----------\n\nThis project belongs to a series of numerical tools developed by the CREM\n(https://www.crem.ch/) in the perspective of a better energy distribution and\nconsumption at the city scale.\n\nDescription\n-----------\n\nThe design of a district heating network is closely related to the problem of\nfinding the Terminal Steiner Tree (TST) of a graph. Indeed for a given connected\ngraph and a given subset of nodes, called terminals, the TST is the network of\nsmallest weight connecting all terminals only once. This is the exact structure\nneeded for a district heating network connecting heat sinks (buildings) to a\nheating source via a streets network.\n\nThis package implement a systematic way of finding the best possible network\nwithin a given amount of numerical computation. Indeed the TST problem being\nNP complete, an heuristic evolutive algorithm is used.\n\nThe heating load of the buildings is then distributed throughout all the\npipelines belonging to the district heating network.\n\nAdditional tools are available to download city geometries from the Open Street\nMap (OSM) dataset, modify their content, reshape their structure or visualize\nthem as well as for obtaining information on the network characteristics.\n\nPackage structure\n-----------------\n\nThe package is organized in modules as represented on the figure below. The\ninformation on the city geometries and the district heating network is stored\nin dataframes (*streets, sinks, sources, terminals, vertices, tst, pipelines,\n...*) which evolve along with the design process.\n\n.. figure:: https://gitlab.com/crem-repository/dhd/raw/master/docs/images/structure.png\n :align: center\n\n* **Network Design**:\n This is the core of the package. It takes the streets, sinks and source(s)\n as input and returns the district heating network.\n\n - The first module, *dhd.connect*, connects the terminals (sinks and\n source(s)) to the streets and store the updated network in the dataframe\n *vertices*. The multiple possible connections of each terminal are stored\n in the dataframe *terminals*.\n - The second module, *dhd.evolve*, implements the evolutive algorithm\n which seeks the best connection network and store it into the data frame\n *tst*.\n - The last module, *dhd.load*, spreads the sinks heating loads throughout\n the heating network and merge neighbor pipes of equal load into single\n pipelines, which are stored in the dataframe *pipelines*.\n\n* **Data Generation**:\n This set allows to download any city geometries from the OSM dataset and to\n modify some of its data.\n\n - The module *dhd.city* defines a class associated to any given city. It\n automatically loads the geometries of its streets and buildings.\n Additional information such as the source location or the presence of\n natural barriers may be provided. All this information is organized into\n dataframes.\n - The module *dhd.modify* allows to easily select and modify rows and\n columns of the previously defined dataframes. Note that despite its being\n in the same set as *dhd.city* it may naturally be applied to dataframes of\n different origins.\n\n* **Graphical Interface**\n The module *dhd.plot* is used to define a background interface displaying\n the provided streets, buildings, source(s) and natural barrier(s). The\n different geometries constructed along the design process can be plotted\n over the background.\n\n* **Network Properties**\n The module *dhd.features* computes and displays properties of the designed\n network.\n\nInstallation\n------------\n\nAssuming you have `Python 3.X `_ installed,\nyou can simply install DHD with pip:\n\n.. code-block:: bash\n\n $ pip install dhd\n\nIf you prefer to install it from source (git is required) run the following\ncommands:\n\n.. code-block:: bash\n\n $ git clone https://gitlab.com/crem-repository/dhd.git\n $ pip install -r requirements.txt\n $ pip install .\n\nWe recommend to use a virtual environment for the installation.\nAlso jupyter notebooks (`Jupyter Notebook `_) are necessary\nto run the learning examples and are practical when using the package.\n\nThe spatial indexing in Python requires the ctypes Python wrapper\n`Rtree `_. Please follow the installation instructions\non the previous link.\n\nHow to use ?\n------------\n\nImport the package modules:\n\n.. code-block:: python\n\n from dhd import city, connect, evolve, load\n\tfrom shapely.geometry import Point\n\nLoad the geometries of the city of Vevey in Switzerland:\n\n.. code-block:: python\n\n vevey = city.City('Vevey, Switzerland', sources=Point(333795, 5147530))\n streets = vevey.get_streets()\n sinks = vevey.select_sinks(min_load=300)\n sources = vevey.get_sources()\n\nConnect the selected buildings (sinks) and the source to the streets network:\n\n.. code-block:: python\n\n vertices, terminals = connect.connect_terminals(streets, sinks, sources)\n\nRun the evolutive algorithm to seek the best possible heating network within\nfive generations:\n\n.. code-block:: python\n\n N = 5\n evolution = evolve.run_evolution(vertices, terminals, N)\n tst = evolve.get_best_terminal_steiner_tree(vertices, terminals, evolution)\n\nSpread the buildings load over the district heating pipelines:\n\n.. code-block:: python\n\n pipelines = load.load_the_pipelines(tst, terminals)\n\nMore detailed `examples\n`_ are provided in\nthe GitLab repository.\n\nReference\n---------\n\nClick the following link to access the full `documentation\n`_.\n\n\nFurther developments\n--------------------\n\nHere is a list of features eager to be implemented. Please refer to the\nCONTRIBUTING file if you either want to append or pop this list.\n\n* *dhd.city*\n\n - Function to easily add a street to the streets network, accounting for the\n different connection options: street node, street edge, no street.\n\n* *dhd.connect*\n\n - Treat the source(s) and sinks separately when connecting them.\n - So far the natural barriers completely forbid any connection crossing them.\n This criterion could be adjusted to a connection weight enhancement.\n\nLicense\n-------\n\nFree software: Apache Software License 2.0\n\nCredits\n-------\n\nResearch and implementation work for this tool has been carried out within the\nproject IntegrCiTy (ERA-NET Cofund Smart Cities and Communities call). In\nSwitzerland, it is funded by the Swiss Federal Office of Energy (contract\nSI/501404-2), as well as by the industrial and institutional partners of the\nproject .\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://gitlab.com/crem-repository/dhd",
"keywords": "dhd",
"license": "Apache Software License 2.0",
"maintainer": "",
"maintainer_email": "",
"name": "dhd",
"package_url": "https://pypi.org/project/dhd/",
"platform": "",
"project_url": "https://pypi.org/project/dhd/",
"project_urls": {
"Homepage": "https://gitlab.com/crem-repository/dhd"
},
"release_url": "https://pypi.org/project/dhd/0.1.3/",
"requires_dist": [
"sphinx (>=1.8)",
"sphinxcontrib-napoleon",
"click (>=6.0)",
"osmnx (>=0.9)"
],
"requires_python": "",
"summary": "Graph theory and evolutionary algorithm applied to city district heating network design",
"version": "0.1.3"
},
"last_serial": 5440405,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "1e7719f5b2eb3bced8fc572bba40be5f",
"sha256": "3d103bc2185501defa730c80a7a750dffa8e4a195b045fd7b5bbcb8bdeb99387"
},
"downloads": -1,
"filename": "dhd-0.1.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "1e7719f5b2eb3bced8fc572bba40be5f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 35146,
"upload_time": "2019-04-29T14:43:15",
"url": "https://files.pythonhosted.org/packages/fb/a3/cf859e8d1e5196a874d85be7ba1db1135881e32642f9f296c79a367a5e97/dhd-0.1.0-py2.py3-none-any.whl"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "6ea8fa0c3a70997e6d1f976c9408f50f",
"sha256": "051b4e3f3c472328f6544a7e10e970e241f5b4a8000c6eafe6fa44169f2b9b15"
},
"downloads": -1,
"filename": "dhd-0.1.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "6ea8fa0c3a70997e6d1f976c9408f50f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 35507,
"upload_time": "2019-05-02T14:48:21",
"url": "https://files.pythonhosted.org/packages/36/00/75851b89462f1c9df5f12c63547b9c0d41b0458fa6000fb0e39bbf0dc291/dhd-0.1.2-py2.py3-none-any.whl"
}
],
"0.1.3": [
{
"comment_text": "",
"digests": {
"md5": "3de327425dd24dfc89f9d80f55857101",
"sha256": "372ba09d3c5a1de708df9e60d1d2bbf732582072a7114c2811e41ef6c24e65c5"
},
"downloads": -1,
"filename": "dhd-0.1.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "3de327425dd24dfc89f9d80f55857101",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 35804,
"upload_time": "2019-06-24T12:18:35",
"url": "https://files.pythonhosted.org/packages/e2/a3/1753f2cb4baef922d4b3c0f6e3c43b38a5c167700ea82de05382b26dd1ae/dhd-0.1.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ca5d468a2090e83772b1f1500c0deeaf",
"sha256": "56e9931c1b69723df443857fdfc48e8c984600f193685688c03f5e3be4f5208a"
},
"downloads": -1,
"filename": "dhd-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "ca5d468a2090e83772b1f1500c0deeaf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 466694,
"upload_time": "2019-06-24T12:18:54",
"url": "https://files.pythonhosted.org/packages/92/96/c5c783140aa815949bea93fba2f601a69d282299722bf184295dacc779bb/dhd-0.1.3.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "3de327425dd24dfc89f9d80f55857101",
"sha256": "372ba09d3c5a1de708df9e60d1d2bbf732582072a7114c2811e41ef6c24e65c5"
},
"downloads": -1,
"filename": "dhd-0.1.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "3de327425dd24dfc89f9d80f55857101",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 35804,
"upload_time": "2019-06-24T12:18:35",
"url": "https://files.pythonhosted.org/packages/e2/a3/1753f2cb4baef922d4b3c0f6e3c43b38a5c167700ea82de05382b26dd1ae/dhd-0.1.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ca5d468a2090e83772b1f1500c0deeaf",
"sha256": "56e9931c1b69723df443857fdfc48e8c984600f193685688c03f5e3be4f5208a"
},
"downloads": -1,
"filename": "dhd-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "ca5d468a2090e83772b1f1500c0deeaf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 466694,
"upload_time": "2019-06-24T12:18:54",
"url": "https://files.pythonhosted.org/packages/92/96/c5c783140aa815949bea93fba2f601a69d282299722bf184295dacc779bb/dhd-0.1.3.tar.gz"
}
]
}