optimx speed is not satisfied. So I_optim
is present.
I_optim
: Interface of unified optimization functions.
I_optimx
: deprecated, which is about 10 times slower than I_optim
.
I_optim(prior, FUN, y, t, method = "BFGS", ..., use.cpp = FALSE)
I_optimx(prior, FUN, y, t, method, verbose = FALSE, ..., use.cpp = FALSE)
A vector of initial values for the parameters for which optimal
values are to be found. prior
is suggested giving a column name.
Fine curve fitting function for goal function f_goal()
.
Numeric vector, vegetation index time-series
Numeric vector, Date
variable
method
can be some of 'BFGS','CG','Nelder-Mead', 'L-BFGS-B', 'nlm', 'nlminb', 'ucminf'
.
For I_optimx
, other methods are also supported,
e.g. 'spg','Rcgmin','Rvmmin', 'newuoa','bobyqa','nmkb','hjkb'
.
other parameters passed to I_optim()
or I_optimx()
.
(unstable, not used) boolean, whether to use c++ defined fine
fitting function? If FALSE
, R version will be used.
If TRUE
, all optimization methods in
optimx::optimx()
are used, and print optimization information
of all methods.
convcode
: An integer code. 0 indicates successful convergence.
Various methods may or may not return sufficient information to allow all
the codes to be specified. An incomplete list of codes includes
1
: indicates that the iteration limit maxit
had been reached.
20
: indicates that the initial set of parameters is inadmissible,
that is, that the function cannot be computed or returns an infinite,
NULL, or NA value.
21
: indicates that an intermediate set of parameters is inadmissible.
10
: indicates degeneracy of the Nelder–Mead simplex.
51
: indicates a warning from the "L-BFGS-B"
method; see component
message
for further details.
52
: indicates an error from the "L-BFGS-B"
method; see component
message
for further details.
9999
: error
value
: The value of fn corresponding to par
par
: The best parameter found
nitns
: the number of iterations
fevals
: The number of calls to objective
.
# simulate vegetation time-series
FUN = doubleLog_Beck
par = c( mn = 0.1 , mx = 0.7 , sos = 50 , rsp = 0.1 , eos = 250, rau = 0.1)
par0 = c( mn = 0.15, mx = 0.65, sos = 100, rsp = 0.12, eos = 200, rau = 0.12)
t <- seq(1, 365, 8)
y <- FUN(par, t)
methods = c("BFGS", "ucminf", "nlm", "nlminb")
opt1 <- I_optim (par0, FUN, y, t, methods)
opt2 <- I_optimx(par0, FUN, y, t, methods)
# \dontrun{
# microbenchmark::microbenchmark(
# opt1 = I_optim (par0, FUN, y, t, methods),
# opt2 = I_optimx(par0, FUN, y, t, methods),
# times = 2
# )
# }