cali_ensemble: Calibrate models

View source: R/cali_ensemble.R

cali_ensembleR Documentation

Calibrate models

Description

Use one of three methods to calibrate specified models.

Usage

cali_ensemble(
  config_file,
  num = NULL,
  param_file = NULL,
  cmethod = "LHC",
  qualfun = qual_fun,
  parallel = FALSE,
  job_name,
  model = c("FLake", "GLM", "GOTM", "Simstrat", "MyLake"),
  folder = ".",
  spin_up = NULL,
  out_f = "cali",
  ncores = NULL,
  tmp_dir = NULL,
  ...
)

Arguments

config_file

file path; to LakeEnsemblr yaml master config file

num

integer; the number of random parameter sets to generate. If param file is provided num = number of parameters in that file.

param_file

file path; to previously created parameter file set. If NULL creates a new parameter set. Defaults to NULL

cmethod

character; Method for calibration. Can be "LHC", "LHC_old, "MCMC" or "modFit". Defaults to "LHC". LHC and LHC_old only differ in the way the parallelization is set up, whereas the new and default LHC version is more efficient and LHC_old is only kept for possible backwards compatibility.

qualfun

function; function that calculates measure of fit from observed and simulated variables, takes the two arguments Observed and Simulated

parallel

Boolean; should the model calibration be parallelized

job_name

character; optional name to use as an RStudio job and as output variable name. It has to be a syntactically valid name. Check out this webpage for more info on jobs: https://blog.rstudio.com/2019/03/14/rstudio-1-2-jobs/

model

vector; model to export driving data. Options include c("GOTM", "GLM", "Simstrat", "FLake", "MyLake")

folder

file path; to folder which contains the model folders generated by export_config()

spin_up

numeric; Number of days to disregard as spin-up for analysis.

out_f

character; name of the folder to store results into

ncores

numeric; number of cores to be used. If NULL, will default to 'parallel::detectCores() - 1'.

tmp_dir

location where the temporary files for LHC calibration in parallel are stored

...

additional arguments passed to FME::modFit or FME::modMCMC. Only used when method is modFit or MCMC

Details

Parallelisation is done using the 'parallel' package and 'parLapply()'. The number of cores used is set to the value specified in 'ncores'.

Examples

## Not run: 

config_file <- 'LakeEnsemblR.yaml'

# LHC method
cali_ensemble(config_file = config_file, num = 200, cmethod = "LHC",
             model = c("FLake", "GLM", "GOTM", "Simstrat", "MyLake"))

# MCMC method
resMCMC <- cali_ensemble(config_file = config_file, num = 200, cmethod = "MCMC",
                         model = c("FLake", "GLM", "GOTM", "Simstrat", "MyLake"))

# modFit method using the Nelder-Mead algorithm
resMmodFit <- cali_ensemble(config_file = config_file, num = 200, cmethod = "modFit",
                            model = c("FLake", "GLM", "GOTM", "Simstrat", "MyLake"),
                            method = "Nelder-Mead")

# LHC method using multiple cores
cali_ensemble(config_file = config_file, num = 200, cmethod = "LHC",
             model = c("FLake", "GLM", "GOTM", "Simstrat", "MyLake"),
             parallel = TRUE)

# LHC method deployed as a job
cali_ensemble(config_file = config_file, num = 200, cmethod = "LHC",
             model = c("FLake", "GLM", "GOTM", "Simstrat", "MyLake"),
             job_name = "test")
test # View output from job


## End(Not run)

aemon-j/LakeEnsemblR documentation built on April 11, 2025, 10:09 p.m.