NelderMead {lme4} | R Documentation

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

    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

    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

[Package lme4 version 1.1-12 Index]