nloptr (version 1.0.0)

sbplx: Subplex Algorithm

Description

Subplex is a variant of Nelder-Mead that uses Nelder-Mead on a sequence of subspaces.

Usage

sbplx(x0, fn, lower = NULL, upper = NULL,
        nl.info = FALSE, control = list(), ...)

Arguments

x0
starting point for searching the optimum.
fn
objective function that is to be minimized.
lower, upper
lower and upper bound constraints.
nl.info
logical; shall the original NLopt info been shown.
control
list of options, see nl.opts for help.
...
additional arguments passed to the function.

Value

  • List with components:
  • parthe optimal solution found so far.
  • valuethe function value corresponding to par.
  • iternumber of (outer) iterations, see maxeval.
  • convergenceinteger code indicating successful completion (> 0) or a possible error number (< 0).
  • messagecharacter string produced by NLopt and giving additional information.

Details

SUBPLEX is claimed to be much more efficient and robust than the original Nelder-Mead, while retaining the latter's facility with discontinuous objectives.

This implementation has explicit support for bound constraints (via the method in the Box paper as described on the neldermead help page).

References

T. Rowan, ``Functional Stability Analysis of Numerical Algorithms'', Ph.D. thesis, Department of Computer Sciences, University of Texas at Austin, 1990.

See Also

subplex::subplex

Examples

Run this code
# Fletcher and Powell's helic valley
fphv <- function(x)
    100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + 
        (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2
x0 <- c(-1, 0, 0)
sbplx(x0, fphv)    #  1 0 0

# Powell's Singular Function (PSF)
psf <- function(x)  (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + 
                    (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4
x0 <- c(3, -1, 0, 1)
sbplx(x0, psf, control = list(maxeval = Inf, ftol_rel = 1e-6))  #  0 0 0 0 (?)

Run the code above in your browser using DataLab