This repository produces two key applications:
- The CREMExplorer
- The CREMEngine
Both applications are configured via TOML files, based on a 'convention over configuration' approach.
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"
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.
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.
-
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.
-
This software is produced on behalf of Griffith University within the Australian Rivers Institute, and originally authored by Dr Lindsay Bradford.
-
E-Mail: [email protected], or [email protected]
-
Voice: +61 7 3735 7402, or +61 7 3735 6598
The Catchment Resilience Exploration Modeller (CREM) software is licensed under a BSD 3-clause "New" or "Revised" licence, detailed in LICENCE.md.
The following 3rd-party libraries are required for this code-base:
- Gomega for a Fluent-API based approach to test assertions
- go-ole for I/O via Excel files
- BurntSushi/toml for TOML config file support
- pkg/errors For error wrapping
- nu7hatch/gouuid for UUID generation