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)

Arguments

prior

A vector of initial values for the parameters for which optimal values are to be found. prior is suggested giving a column name.

FUN

Fine curve fitting function for goal function f_goal().

y

Numeric vector, vegetation index time-series

t

Numeric vector, Date variable

method

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().

use.cpp

(unstable, not used) boolean, whether to use c++ defined fine fitting function? If FALSE, R version will be used.

verbose

If TRUE, all optimization methods in optimx::optimx() are used, and print optimization information of all methods.

Value

  • 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.

Examples

# 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
# )
# }