An auto-calibration tool for environmental models based on heuristic algorithms and uncertainty estimation theory.
Project description
PyCUP
This is an open-source package designed for (environmental) model calibration and uncertainty analysis. The current version is the very first version, we welcome all comments, suggestions, and improvements.
v 0.1.4 Update
The new module named pycup.integrate is designed for a better integration with other current existing packages for a more flexible and convenient calibration process. In the current version, the package supports the integration with spotpy (https://github.com/thouska/spotpy). The current integration has the following features:
- The csv and hdf5 database generated by spotpy can be converted to a pycup.save.RawDataSaver (calibration result file/object) for carrying out the post-processing in pycup.
- The pycup.save.RawDataSaver can be converted to a spotpy csv or hdf5 databse for using the functionalities in it.
- The model setup object can be converted to the lower boundary, upper boundary, and the objective function that are required to be defined to carry out a pycup calibration process.
What does it have
(1) For model calibration/optimization
- Single-objective heuristic algorithms including PSO, GWO, MFO, SOA, SCA, SSA, TSA, and WOA.
- Multi-objective heuristic algorithms including MOPSO, MODE, and NSGA-II.
- Elite opposition strategy modified heuristic algorithms -- with better optimum search abilities.
- Statistic based-method LHS-GLUE.
(2) For sensitivity & uncertainty analysis
- Likelihood uncertainty estimation used in the GLUE framework for the parameter uncertainty analysis/prediction uncertainty estimation.
- The frequency based-uncertainty estimation method for the prediction uncertainty estimation.
- The multi-linear regression method for the all-at-a-time parameter sensitivity based on statmodels.
(3) Other convenient features
- Multi-processing calibration.
- Recording and resuming during the calibration task.
- Several result plotting functions.
- A special simulation result object for multi-station & multi-event results (of environmental models) in pycup.ResLib.
How to install
The project has been uploaded onto the PyPI https://pypi.org/project/pycup/ . Or install the .whl file in the dist folder.
pip install pycup
How to use
Here is a simple example. For more details, please see the documentation.
import pycup as cp
import numpy as np
def uni_fun1(X):
# X for example np.array([1,2,3,...,30])
fitness = np.sum(np.power(X,2)) + 1 # example: 1.2
result = fitness.reshape(1,-1) # example ([1.2,])
return fitness,result
lb = -100 * np.ones(30)
ub = 100 * np.ones(30)
cp.SSA.run(pop = 1000, dim = 30, lb = lb, ub = ub, MaxIter = 30, fun = uni_fun1)
Example SWMM (Storm Water Management Model) calibration projects
IMPORTANT: PLEASE OPEN YOUR PYCHARM OR COMMAND LINE WITH THE ADMINISTRATOR RIGHTS BEFORE EXECUTING THE EXAMPLE PROJECT
Location: https://github.com/QianyangWang/PyCUP
- The example in folder 'Example01-GLUE' contains an SWMM calibration project using single-processing GLUE. Install the dependencies (for example: pip install swmm-api==0.2.0.18.3, pip install pyswmm). Execute the 'Calibrate.py' to calibrate the model. Then, execute the 'PostProcessing.py' for uncertainty analysis.
- The example in folder 'Example02-multiprocessing' contains an SWMM calibration project using multi-processing EOGWO.
- The example in folder 'Example03-multiobjective' contains an SWMM multi-objective calibration project using EOMOPSO.
- The example in folder 'Example04-validation&prediction' shows how to use our (Ensemble)Validator/(Ensemble)Predictor objects for the validation and prediction of the model using the calibrated parameter (set).
- The example in folder 'Example05-multi-station&event' shows how to use the pycup.Reslib.SimulationResult object for the storage of multi-station & multi-event simulation results, as well as the further analysis using them.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.