Fit a hydromad model by sampling the parameter space. Returns best result from sampling in parameter ranges using random, latin hypercube sampling, or a uniform grid (all combinations). The function also retains the parameter sets and objective function values, which can be used to define a feasible parameter set
fitBySampling(
MODEL,
objective = hydromad.getOption("objective"),
samples = hydromad.getOption("fit.samples"),
sampletype = c("latin.hypercube", "random", "all.combinations")
)a model specification created by hydromad. It
should not be fully specified, i.e one or more parameters should be defined
by ranges of values rather than exact values.
objective function to maximise, given as a
function(Q, X, ...). See objFunVal.
number of parameter sets to test.
sampling scheme -- see parameterSets.
the best model from those sampled, according to the given
objective function.
See parameterSets.
data(Cotter)
x <- Cotter[1:1000]
## IHACRES CWI model with armax unit hydrograph fitted by least squares
modx <- hydromad(x, sma = "cwi", routing = "armax", rfit = "ls")
modx
#>
#> Hydromad model with "cwi" SMA and "armax" routing:
#> Start = 1966-05-01, End = 1969-01-24
#>
#> SMA Parameters:
#> lower upper
#> tw 0 100
#> f 0 8
#> scale NA NA
#> l 0 0 (==)
#> p 1 1 (==)
#> t_ref 20 20 (==)
#> Routing Parameters:
#> NULL
#> Routing fit spec.: "ls"
foo <- fitBySampling(modx)
summary(foo)
#>
#> Call:
#> hydromad(DATA = x, sma = "cwi", routing = "armax", rfit = "ls",
#> tw = 95.9596, f = 3.87879, l = 0, p = 1, t_ref = 20, scale = 0.00134404)
#>
#> Time steps: 900 (0 missing).
#> Runoff ratio (Q/P): (0.7028 / 2.285) = 0.3075
#> rel bias: 0.06098
#> r squared: 0.7004
#> r sq sqrt: 0.8015
#> r sq log: 0.814
#>
#> For definitions see ?hydromad.stats
#>
## plot objective function value improvement over time
xyplot(optimtrace(foo),
type = "b",
xlab = "function evaluations", ylab = "objective fn. value"
)