Last chance! 50% off unlimited learning
Sale ends in
Nelder-Mead optimization of parameters, allowing
optimization subject to box constraints (contrary to the default,
method = "Nelder-Mead"
, in R's optim()
), and
using reverse communications.
Nelder_Mead(fn, par, lower = rep.int(-Inf, n), upper = rep.int(Inf, n),
control = list())
a function
of a single numeric vector argument
returning a numeric scalar.
numeric vector of starting values for the parameters.
numeric vector of lower bounds (elements may be -Inf
).
numeric vector of upper bounds (elements may be Inf
).
a named list of control settings. Possible settings are
numeric scalar - frequency of printing evaluation information. Defaults to 0 indicating no printing.
numeric scalar - maximum number of function evaluations allowed (default:10000).
numeric scalar - absolute tolerance on change in function values (default: 1e-5)
numeric scalar - relative tolerance on change in function values (default:1e-15)
numeric scalar - relative tolerance on change in parameter values (default: 1e-7)
numeric scalar - maximum value of the minimum (default: .Machine$double.xmin)
numeric vector of initial step sizes to establish the simplex - all elements must be non-zero (default: rep(0.02,length(par)))
numeric vector of tolerances on the parameters (default: xst*5e-4)
numeric value: 0=no printing, 1=print every 20 evaluations, 2=print every 10 evalutions, 3=print every evaluation. Sets ‘iprint’, if specified, but does not override it.
a logical indicating if non-convergence (codes
-1,-2,-3) should not stop(.)
, but rather only call
warning
and return a result which might inspected.
Defaults to FALSE
, i.e., stop on non-convergence.
a list
with components
numeric scalar - the minimum function value achieved
numeric vector - the value of x
providing the minimum
integer valued scalar, if not 0
, an error code:
nm_evals
: maximum evaluations reached
nm_forced
: ?
nm_nofeasible
: cannot generate a feasible simplex
nm_x0notfeasible
: initial x is not feasible (?)
successful convergence
a string specifying the kind of convergence.
the list
of control settings after
substituting for defaults.
the number of function evaluations.
# NOT RUN {
fr <- function(x) { ## Rosenbrock Banana function
x1 <- x[1]
x2 <- x[2]
100 * (x2 - x1 * x1)^2 + (1 - x1)^2
}
p0 <- c(-1.2, 1)
oo <- optim(p0, fr) ## also uses Nelder-Mead by default
o. <- Nelder_Mead(fr, p0)
o.1 <- Nelder_Mead(fr, p0, control=list(verbose=1))# -> some iteration output
stopifnot(identical(o.[1:4], o.1[1:4]),
all.equal(o.$par, oo$par, tolerance=1e-3))# diff: 0.0003865
# }
# NOT RUN {
<!-- %%## but this shows that something "does not work" -->
# }
# NOT RUN {
o.2 <- Nelder_Mead(fr, p0, control=list(verbose=3, XtolRel=1e-15, FtolAbs= 1e-14))
all.equal(o.2[-5],o.1[-5], tolerance=1e-15)# TRUE, unexpectedly
# }
Run the code above in your browser using DataLab