# bobyqa: Bound Optimization by Quadratic Approximation In nloptr: R interface to NLopt

## Description

BOBYQA performs derivative-free bound-constrained optimization using an iteratively constructed quadratic approximation for the objective function.

## Usage

 ```1 2``` ```bobyqa(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

This is an algorithm derived from the BOBYQA Fortran subroutine of Powell, converted to C and modified for the NLOPT stopping criteria.

## Value

List with components:

 `par` the optimal solution found so far. `value` the function value corresponding to `par`. `iter` number of (outer) iterations, see `maxeval`. `convergence` integer code indicating successful completion (> 0) or a possible error number (< 0). `message` character string produced by NLopt and giving additional information.

## Note

Because BOBYQA constructs a quadratic approximation of the objective, it may perform poorly for objective functions that are not twice-differentiable.

## References

M. J. D. Powell. “The BOBYQA algorithm for bound constrained optimization without derivatives,” Department of Applied Mathematics and Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009).

## See Also

`cobyla`, `newuoa`

## Examples

 ```1 2 3 4``` ```fr <- function(x) { ## Rosenbrock Banana function 100 * (x[2] - x[1]^2)^2 + (1 - x[1])^2 } (S <- bobyqa(c(0, 0, 0), fr, lower = c(0, 0, 0), upper = c(0.5, 0.5, 0.5))) ```

### Example output

```\$par
[1] 0.5000000 0.2500000 0.4957871

\$value
[1] 0.25

\$iter
[1] 74

\$convergence
[1] 4

\$message
[1] "NLOPT_XTOL_REACHED: Optimization stopped because xtol_rel or xtol_abs (above) was reached."
```

nloptr documentation built on May 30, 2017, 5 a.m.