Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pywr/pywr
Pywr is a generalised network resource allocation model written in Python.
https://github.com/pywr/pywr
hydrology water-resources
Last synced: about 1 month ago
JSON representation
Pywr is a generalised network resource allocation model written in Python.
- Host: GitHub
- URL: https://github.com/pywr/pywr
- Owner: pywr
- License: gpl-3.0
- Created: 2015-01-20T23:13:55.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2024-10-20T21:26:58.000Z (3 months ago)
- Last Synced: 2024-10-29T21:01:12.003Z (2 months ago)
- Topics: hydrology, water-resources
- Language: Python
- Homepage:
- Size: 22.2 MB
- Stars: 157
- Watchers: 18
- Forks: 60
- Open Issues: 141
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
- open-sustainable-technology - Pywr - Simulates customisable water allocation and operation rules throughout complex multi-purpose managed water systems at each user-defined time-step. (Natural Resources / Water Supply and Quality)
README
====
Pywr
====Pywr is a generalised network resource allocation model written in Python. It aims to be fast, free, and extendable.
.. image:: https://github.com/pywr/pywr/workflows/Build/badge.svg?branch=master
:target: https://github.com/pywr/pywr/actions?query=workflow%3ABuild.. image:: https://img.shields.io/badge/chat-on?logo=zulip&color=blue
:alt: Static Badge
:target: https://pywr.zulipchat.com.. image:: https://codecov.io/gh/pywr/pywr/branch/master/graph/badge.svg
:target: https://codecov.io/gh/pywr/pywrOverview
========`Documentation `__
Pywr is a tool for solving network resource allocation problems at discrete timesteps using a linear programming approach. It's principal application is in resource allocation in water supply networks, although other uses are conceivable. A network is represented as a directional graph using `NetworkX `__. Nodes in the network can be given constraints (e.g. minimum/maximum flows) and costs, and can be connected as required. Parameters in the model can vary time according to boundary conditions (e.g. an inflow timeseries) or based on states in the model (e.g. the current volume of a reservoir).
Models can be developed using the Python API, either in a script or interactively using `IPython `__/`Jupyter `__. Alternatively, models can be defined in a rich `JSON-based document format `__.
.. image:: https://raw.githubusercontent.com/pywr/pywr/master/docs/source/_static/pywr_d3.png
:width: 250px
:height: 190pxNew users are encouraged to read the `Pywr Tutorial `__.
Design goals
============Pywr is a tool for solving network resource allocation problems. It has many similarities with other software packages such as WEAP, Wathnet, Aquator and MISER, but also has some significant differences. Pywr’s principle design goals are that it is:
- Fast enough to handle large stochastic datasets and large numbers of scenarios and function evaluations required by advanced decision making methodologies;
- Free to use without restriction – licensed under the GNU General Public Licence;
- Extendable – uses the Python programming language to define complex operational rules and control model runs.Installation
============Pywr should work on Python 3.7 (or later) on Windows, Linux or OS X.
See the documentation for `detailed installation instructions `_.
For a quick start use pip:
.. code-block:: console
pip install pywr
For most users it will be easier to install the binary packages made available from `PyPi `_ or the `Anaconda Python distribution `__. Note that these packages may lag behind the development version.
Citation
========Please consider citing the following paper when using Pywr:
Tomlinson, J.E., Arnott, J.H. and Harou, J.J., 2020. A water resource simulator in Python. Environmental Modelling & Software. https://doi.org/10.1016/j.envsoft.2020.104635
License
=======Copyright (C) 2014-20 Joshua Arnott, James E. Tomlinson, Atkins, University of Manchester
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.