# sbplx

##### Subplex Algorithm

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.

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

##### Value

List with components:

the optimal solution found so far.

the function value corresponding to `par`

.

number of (outer) iterations, see `maxeval`

.

integer code indicating successful completion (> 0) or a possible error number (< 0).

character string produced by NLopt and giving additional information.

##### Note

It is the request of Tom Rowan that reimplementations of his algorithm shall not use the name `subplex'.

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

```
# NOT RUN {
# 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 (?)
# }
```

*Documentation reproduced from package nloptr, version 1.2.1, License: LGPL-3*