Skip to content

LindsayBradford/crem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Catchment Resilience Exploration Modeller (CREM)

Build Status Go Report Card GoDoc

Overview:

This repository produces two key applications:

Both applications are configured via TOML files, based on a 'convention over configuration' approach.

CREMExplorer:

The CREMExplorer is a highly configurable modelling platform that wraps a river catchment model in either a single or multi-objective simulated annealer to explore stakeholder objectives around river catchment resilience.

The river catchment model tracks the following stakeholder objectives:

  • Sediment Produced
  • Particulate Nitrogen Produced
  • Dissolved Nitrogen Produced
  • Management Action Implementation Cost
  • Management Action Opportunity Cost

This river catchment model allows management actions to be applied in order to mitigate pollutants entering a river system. The following management actions have been implemented:

  • Riparian revegetation
    • predominately targeting sediment and particulate nitrogen
  • Gully Restoration
    • predominately targeting sediment
  • Hillslope revegetation
    • predominately targeting sediment and particulate nitrogen
  • Wetland establishment
    • predominately targeting dissolved nitrogen

Single-objective simulated annealing is used to find optimised solutions to minimising/maximising a particular stakeholder objective, optionally limited by a 2nd objective. For instance, a scenario can be configured to answer a question like "Find a near-optimal minimised sediment producted for a budget of $10M in implementation costs."

Multi-objective simulated annealing is used to explore trade-offs between all the supplied stakeholder objectives, optionally limited by one of those objectives. For instance, a scenario can be configured to answer a question like "Find me a set of tradeoffs between Sediment and Dissolved Nitrogen produced for a budget of $10M in implementation costs"

CREMEngine:

The CREMEngine wraps the river catchment model described above in a web-server interface, allowing the following:

  • The river catchment model can be deployed independent of the annealing, and manipulated it in real-time for visualiation purposes.
  • Ability to configure the model to run exactly as per scenario definitions supplied to the CREMExplorer.
  • Ability to set the model's state to match solutions produced by the CREMExplorer, to showcase optimised solutions, or individual tradeoff solutions of interest.

Getting Started:

CREM makes use of a number of 3rd-party libraries that are not included in this source repository. Go's built-in 3rd-party module support is used to track and integrate needed 3rd-party libraries. Once you've git-cloned this repository, run:

> cd <new CREM repository folder>
> go mod vendor

to download compatible versions of the libraries CREM depends on as vendor libraries.

From there a go build from within cmd/cremexplorer should produce a cremexplorer.exe executable. Then run your new executable from the command-line, specifying a scenario config file like this:

> cremexplorer.exe --ScenarioFile <someScenarioFile>

You'll find a simple test scenario configuration here. Further detail on configuring a scenario can be found in the wiki.

General Usage Notes:

  • This software was constructed and tested on a 64-bit Windows 10 platform using GoLang 1.16.

  • Continuous integration via travis-ci is also employed.

Contact Information:

Copyright:

The Catchment Resilience Exploration Modeller (CREM) software is licensed under a BSD 3-clause "New" or "Revised" licence, detailed in LICENCE.md.

Dependencies:

The following 3rd-party libraries are required for this code-base:

About

Catchment Resilience Exploration Modeller

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published