# newuoa: An R interface to the NEWUOA implementation of Powell In minqa: Derivative-Free Optimization Algorithms by Quadratic Approximation

 newuoa R Documentation

## An R interface to the NEWUOA implementation of Powell

### Description

The purpose of `newuoa` is to minimize a function of many variables by a trust region method that forms quadratic models by interpolation.

### Usage

```newuoa(par, fn, control = list(), ...)
```

### Arguments

 `par` A numeric vector of starting estimates. `fn` A function that returns the value of the objective at the supplied set of parameters `par` using auxiliary data in .... The first argument of `fn` must be `par`. `control` An optional list of control settings. See the details section for the names of the settable control values and their effect. `...` Further arguments to be passed to `fn`.

### Details

Functions `fn` must return a numeric value. The `control` argument is a list; possible named values in the list and their defaults are:

npt

The number of points used to approximate the objective function via a quadratic approximation. The value of npt must be in the interval [n+2,(n+1)(n+2)/2] where n is the number of parameters in `par`. Choices that exceed 2*n+1 are not recommended. If not defined, it will be set to min(n * 2, n+2).

rhobeg

`rhobeg` and `rhoend` must be set to the initial and final values of a trust region radius, so both must be positive with `0 < rhoend < rhobeg`. Typically `rhobeg` should be about one tenth of the greatest expected change to a variable. If the user does not provide a value, this will be set to ```max(par) / 2)```

rhoend

The smallest value of the trust region radius that is allowed. If not defined, then 1e-6 times the value set for `rhobeg` will be used.

iprint

The value of `iprint` should be set to an integer value in `0, 1, 2, 3, ...`, which controls the amount of printing. Specifically, there is no output if `iprint=0` and there is output only at the start and the return if `iprint=1`. Otherwise, each new value of `rho` is printed, with the best vector of variables so far and the corresponding value of the objective function. Further, each new value of the objective function with its variables are output if `iprint=3`. If `iprint > 3`, the objective function value and corresponding variables are output every `iprint` evaluations. Default value is `0`.

maxfun

The maximum allowed number of function evaluations. If this is exceeded, the method will terminate.

### Value

A list with components:

 `par` The best set of parameters found. `fval` The value of the objective at the best set of parameters found. `feval` Number of function evaluations to determine the optimum `ierr` An integer error code. A value of zero indicates success. Other values (consistent with BOBYQA values) are 1maximum number of function evaluations exceeded 2NPT, the number of approximation points, is not in the required interval 3a trust region step failed to reduce q (Consult Powell for explanation.) 5newuoa detected too much cancellation in denominator (We have not fully understood Powell's code to explain this.) `msg` A message describing the outcome of UOBYQA

### References

M. J. D. Powell, "The NEWUOA software for unconstrained optimization without derivatives", in Large-Scale Nonlinear Optimization, Series: Nonconvex Optimization and Its Applications , Vol. 83, Di Pillo, Gianni; Roma, Massimo (Eds.) 2006, New York: Springer US.

M. J. D. Powell, "Developments of NEWUOA for minimization without derivatives" IMA Journal of Numerical Analysis, 2008; 28: 649-664.

M. J. D. Powell (2007) "Developments of NEWUOA for unconstrained minimization without derivatives" Cambridge University, Department of Applied Mathematics and Theoretical Physics, Numerical Analysis Group, Report NA2007/05, http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2007_05.pdf.

Description was taken from comments in the Fortran code of M. J. D. Powell on which minqa is based.

`optim`, `nlminb`

### Examples

```fr <- function(x) {   ## Rosenbrock Banana function
100 * (x - x^2)^2 + (1 - x)^2
}
(x2 <- newuoa(c(1, 2), fr))
## => optimum at c(1, 1) with fval = 0

# check the error exits
# too many iterations
x2e<-newuoa(c(1, 2), fr, control = list(maxfun=50))
str(x2e)

# Throw an error because npt is too small -- does NOT work as of 2010-8-10 as
#    minqa.R seems to force a reset.
x2n<-newuoa(c(2,2), fr, control=list(npt=1))
str(x2n)

# To add if we can find them -- examples of ierr = 3 and ierr = 5.

```

minqa documentation built on Oct. 19, 2022, 9:05 a.m.