WaterPaths is a generalizable, cloud-compatible, open-source exploratory modeling system designed to inform long-term regional investments in water infrastructure while simultaneously aiding regions to improve their short-term weekly management decisions, often made in response to droughts. WaterPaths has the capability to identify coordinated planning and management for groups of water utilities sharing water resources. WaterPaths’ exploits dynamic and adaptive risk-of-failure (ROF) rules to trigger management and planning actions in temporally consistent pathways. The C++ source code and instructions for use can be found at: https://github.com/bernardoct/WaterPaths

Borg MOEA 

The Borg Multiobjective Evolutionary Algorithm (Borg MOEA) features auto-adaptive multi-operator search, dynamic population sizing, and epsilon-dominance archiving to solve many-objective optimization problems. See our publications for details on its design as well as studies demonstrating the effectiveness and efficiency of the Borg MOEA on a number of real-world applications. The C/C++ source code is freely available for academic and non-commercial use. Visit http://www.borgmoea.orgfor more information and to request access to the source code.

Interactive Parallel Axis Plots

MOEA Benchmark Problems

Reed, P. et al. 2013 (Link to Paper)

Benchmark optimization problems published in “Evolutionary multiobjective optimization in water resources: The past, present, and future”, an invited submission to the 35th Anniversary Issue of Advances in Water Resources. The problems are intended for use with MOEAFramework but may be modified for other algorithms or libraries.

MOEA Framework

MOEA Framework is a free, open-source Java framework for experimenting with several popular MOEAs including GDE3, MOEA/D, NSGA-II, ε-MOEA, ε-NSGA-II and random search. These MOEAs can be run on over 80 test problems, including problems from the ZDT, DTLZ and WFG test problem suites, as well as all constrained and unconstrained problems from the IEEE CEC 2009 special competition. The framework and source code can be downloaded from http://www.moeaframework.org. New users connecting their own optimization problems to MOEAFramework are encouraged to read through the MOEAFramework Setup Guide.

Interested users may also explore the in-browser MOEA Diagnostic Tool (requires Java).


Hadka, D., Keller, K., & Reed,P.(Link to Paper)

Robust Decision Making (RDM) is an analytic framework developed by Robert Lempert and his collaborators at RAND Corporation that helps identify potential robust strategies for a particular problem, characterize the vulnerabilities of such strategies, and evaluate trade-offs among them [Lempert et al. (2006)]. Multiobjective Robust Decision Making (MORDM) is an extension of RDM to explicitly include the use of multiobjective optimization to discover robust strategies and explore the tradeoffs among multiple competing performance objectives [Kasprzyk et al. (2013)].

Open-Source Models

  • Hymod and HBV rainfall-runoff models in C/C++. Written for use with MOPEX hydrologic data, but can be modified for use with other forcing and response data. Based on work from this paper but later modified for generality.

Project Platypus

A collection of libraries for optimization, data analysis, and decision making that includes that following:

  • PRIM, a Python library for the Patient Rule Induction Method, an algorithm for classifying binary data into hyper-dimensional boxes
  • Rhodium, a Python library for exploratory modeling and Robust Decision Making (RDM)
  • J3, a free desktop application for producing and sharing high-dimensional, interactive scientific visualizations
  • Platypus, a free and open source python library for multi-objective optimization
  • J3Py, a free desktop application for producing and sharing high-dimensional, interactive scientific visualizations
  • Executioner, a cross-language automation tool for running models

Sensitivity Analysis Library (SALib)

  • SALib, a Python library containing Sobol, Morris, and FAST sensitivity analysis methods. Requires Numpy. Designed for decoupled analysis, where sampling, model evaluation, and analysis steps are all performed separately.