lme4 (version 1.1-19)

NelderMead: Nelder-Mead Optimization of Parameters, Possibly (Box) Constrained

Description

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.

Usage

Nelder_Mead(fn, par, lower = rep.int(-Inf, n), upper = rep.int(Inf, n),
            control = list())

Arguments

fn

a function of a single numeric vector argument returning a numeric scalar.

par

numeric vector of starting values for the parameters.

lower

numeric vector of lower bounds (elements may be -Inf).

upper

numeric vector of upper bounds (elements may be Inf).

control

a named list of control settings. Possible settings are

iprint

numeric scalar - frequency of printing evaluation information. Defaults to 0 indicating no printing.

maxfun

numeric scalar - maximum number of function evaluations allowed (default:10000).

FtolAbs

numeric scalar - absolute tolerance on change in function values (default: 1e-5)

FtolRel

numeric scalar - relative tolerance on change in function values (default:1e-15)

XtolRel

numeric scalar - relative tolerance on change in parameter values (default: 1e-7)

MinfMax

numeric scalar - maximum value of the minimum (default: .Machine$double.xmin)

xst

numeric vector of initial step sizes to establish the simplex - all elements must be non-zero (default: rep(0.02,length(par)))

xt

numeric vector of tolerances on the parameters (default: xst*5e-4)

verbose

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.

warnOnly

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.

Value

a list with components

fval

numeric scalar - the minimum function value achieved

par

numeric vector - the value of x providing the minimum

convergence

integer valued scalar, if not 0, an error code:

-4

nm_evals: maximum evaluations reached

-3

nm_forced: ?

-2

nm_nofeasible: cannot generate a feasible simplex

-1

nm_x0notfeasible: initial x is not feasible (?)

0

successful convergence

message

a string specifying the kind of convergence.

control

the list of control settings after substituting for defaults.

feval

the number of function evaluations.

See Also

The '>NelderMead class definition and generator function.

Examples

Run this code
# 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 DataCamp Workspace