optimi_stics: STICS parameter optimization

View source: R/optimi_stics.R

optimi_sticsR Documentation

STICS parameter optimization

Description

Optimize STICS parameter values according to measurements

Usage

optimi_stics(
  dir.orig,
  dir.targ = getwd(),
  stics,
  obs_name,
  Parameters,
  Vars,
  weight = NULL,
  method = c("nmkb"),
  Plant = 1,
  max_run = 3,
  ...
)

Arguments

dir.orig

Vector or named list of paths to the directory from which to copy the USMs files.

dir.targ

Path to the target directory for evaluation. Created if missing.

stics

STICS executable path

obs_name

A data.frame of observation file name(s) of the form ⁠data.frame(Principal= c(obs1.obs), Dominated= c(obs2.obs)⁠ for mixed crops (simply remove the Dominated column for sole crops.

Parameters

A data.frame with parameter name, starting (optional), min, max values, and data type (optional). See details and example.

Vars

Output variables on which the optimization is performed

weight

The weight used for each variable (see details)

method

The optimization method to use, see dfoptim package. For the moment, only dfoptim::nmkb()

Plant

A vector for the plant (i.e. Principal or associated) for which the parameters will be set (only for plant or technical parameters in mixed crop simulations) Set to NULL if using STICS in sole crop.

max_run

Maximum number of runs for the optimisation (restart automatically if singular matrix is returned) Default to 3, i.e. two potential restart.

...

Further parameters passed to the optimization function called (see dfoptim package)

Details

The function uses stats::optimize() for univariate optimization, and the dfoptim package functions for multivariate. Currently only the Nelder-Mead algorithm is implemented from dfoptim. The Parameters argument should be formated as a a data.frame (see example). The start values should exclude the min and max values (they are exclusive bounds). If the start is NULL, then the mean value between the min and max values is taken. The data type is optional and only takes double (numeric) or integer. If a parameter is an integer, then a rounding is applied (very crude but functional). If weight is not provided by the user, the selection criteria is computed using the equation 5 from Wallach et al. (2011). If they are provided, the equation 6 is used instead.

Value

A list of three :

  • gg_objects: A list of ggplot objects to plot the final STICS simulation with optimized parameter values compared to original parameter values.

  • opti_output: A named list of the optimized parameter(s) value(s).

  • last_sim_data: the STICS output from the last simulation with the optimized parameter values. This data is given using eval_output().

References

Wallach, D., Buis, S., Lecharpentier, P., Bourges, J., Clastre, P., Launay, M., … Justes, E. (2011). A package of parameter estimation methods and implementation for the STICS crop-soil model. Environmental Modelling & Software, 26(4), 386–394. doi:10.1016/j.envsoft.2010.09.004

See Also

dfoptim::nmkb()

Examples

## Not run: 
library(sticRs)

Parameters= data.frame(parameter= c('hautK1','hautK2'),
                       start= c(0.2,0.2),
                       min= c(0,0),
                       max= c(1,1))

# On a single USM:
optimi_stics(dir.orig = "0-DATA/dummy/Year_2005_2006/IC_Wheat_Pea",
             dir.targ = "2-Simulations/param_optim",
             stics = "0-DATA/stics_executable/19-new/Stics.exe",
             obs_name = c("6_IC_Wheat_N0.obs","6_IC_Pea_N0.obs"),
             Parameters= Parameters,
             Vars = c('lai(n)','masec(n)','hauteur'),
             method= "nmkb",Plant=1)

# On a series of USMs:
optimi_stics(dir.orig = list(Y2005= "0-DATA/dummy/Year_2005_2006/IC_Wheat_Pea",
                             Y2006= "0-DATA/dummy/Year_2006_2007/IC_Wheat_Pea"),
             dir.targ = "2-Simulations/param_optim",
             stics = "0-DATA/stics_executable/19-new/Stics.exe",
             obs_name = data.frame(Principal= rep("6_IC_Wheat_N0.obs",2),
                                   Associated= rep("6_IC_Pea_N0.obs",2)),
             Parameters = Parameters, weight= 1, Vars = c('hauteur'),
             method= "nmkb",Plant=c(1,1))

## End(Not run)


VEZY/sticRs documentation built on Oct. 26, 2023, 7:37 a.m.