A water resource simulator in Python

J.e. Tomlinson, J.h. Arnott, J.j. Harou

Research output: Contribution to journalArticlepeer-review


A new generalised water resource network modelling Python library, Pywr, is presented. Given hydrological inflows, Pywr simulates customisable water allocation and operation rules throughout complex multi-purpose managed water systems at each user-defined time-step. The model uses a low-level interface to existing linear programming solvers for fast optimisation-driven simulation of complex water systems. The library uses an object based system for users to provide input data and record simulation outputs. A novel multi-scenario simulation method provides an almost 4-fold improvement in model run-times and supports calculating robustness metrics across scenarios. A flexible interface to specify multi-objective optimisation formulations as part of a model’s input file is included. These features enable analysts to apply advanced water planning approaches, such as robust decision making and robust optimisation, to real systems. The library is available under the GPLv3 open source licence, includes several examples and a regression test suite.
Original languageEnglish
Pages (from-to)104635
JournalEnvironmental Modelling & Software
Early online date20 Jan 2020
Publication statusPublished - 1 Apr 2020


Dive into the research topics of 'A water resource simulator in Python'. Together they form a unique fingerprint.

Cite this