The Context

Populations of migratory fish are dependent on their ability to access quality habitat in order to reproduce. In the Midwest, this often means swimming upstream from the Great Lakes, penetrating inland via adjacent watersheds. Unfortunately, their passage is often blocked by man-made features which act as barriers to fish movement (like the perched culvert in the background image). There are currently over 250,000 such barriers in the Great Lakes basin that can potentially inhibit fish movement. Due to the sheer volume of these barriers and the associated cost of reparing them, only a small proportion receive attention each year. We have constructed this tool to optimally target candidate barriers in order to maximize the return on investment from the improvement projects which are funded each year. Our hope is that this tool can be applied at various scales covering multiple juridictions, and help to coordinate efforts to maximize increases in fish habitat.

The Science

Check back for more information soon.

The People

Fishwerks is the result of a collaboriation between the McIntyre lab at the University of Wisconsin Center for Limnology and the Optimization Group at the Wisconsin Institute for Discovery.



A brief overview of the project and what it is intended to accomplish.

Viewing barriers

How to view and filter barriers based on various criteria.

Simple optimizations

How to use the tool to run a optimization routine to determine which barrier removal projects provide the greatest reaturn on investment.

Running additional scenarios

Reset the interface to start over from scratch to evaluate a new set of potential projects.

Comparing scenarios

Learn how to compare the results of different scenarios.

Editing barrier attributes

Sometimes you may have better information than that provided in the tool. Registered users can alter barrier attributes and run models on the updated data.

Complex Scenario

Tom walks us through a more complex scenario that includes specifying some barriers as either 'must remove' or 'must keep' and running the optimization routine over the remainder.

Complete Walkthrough

A complete tutorial how to use the tool to evaluate projects from start to finish.

System Design

This system relies on a client-server architecture where users access the tool via a browser-based client. We utilize the Play! web framework as the backbone for the project; it handles the majority of routing requests and serving up the intial page. Most of the client-side functionality is provided via javascript, utilizing the ExtJs framework for most of the layouts and functionality, while the openLayers (v.2) library is utilized for the mapping functions.

The server logic is largely composed of Java running on the Play! framework. Data is primarly stored in a Postgres database. This database is enabled with the PostGIS extension, which allows for the storage of spatial data in the database. This permits us to render database objects using a GeoServer, which provides automated tiling and georeferencing of spatial data from the database that can then be rendered on the web client. Optimization models are run using the GAMS modeling system via a Java API.

Optimization Modeling

A GAMS model was written to create a linear mixed-integer optimization model which traverses each river network and calculates the accessible habitat upstream of every barrier. The model tracks the cumulative passability at every barrier, and calculates the increase in passability obtainable by removing that barrier. The CPLEX solver is then called to determine the optimal solution.


Funding for the development of this project has been provided by the U.S. Fish and Wildlife Service along with in-kind material contributions from the Wisconsin Institute for Discovery.


Click for contact information