An R interface to the uobyqa implementation of Powell
uobyqa.RdThe purpose of uobyqa is to minimize a function of many variables
by a trust region method that forms quadratic models by interpolation.
Usage
uobyqa(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
parusing auxiliary data in .... The first argument offnmust bepar.- 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:
- rhobeg
rhobegandrhoendmust be set to the initial and final values of a trust region radius, so both must be positive with0 < rhoend < rhobeg. Typicallyrhobegshould be about one tenth of the greatest expected change to a variable.- rhoend
The smallest value of the trust region radius that is allowed. If not defined, then 1e-6 times the value set for
rhobegwill be used.- iprint
The value of
iprintshould be set to an integer value in0, 1, 2, 3, ..., which controls the amount of printing. Specifically, there is no output ifiprint=0and there is output only at the start and the return ifiprint=1. Otherwise, each new value ofrhois 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 ifiprint=3. Ifiprint > 3, the objective function value and corresponding variables are output everyiprintevaluations. Default value is0.- maxfun
The maximum allowed number of function evaluations. If this is exceeded, the method will terminate.
Powell's Fortran code has been slightly modified (thanks to Doug Bates for help on this) to avoid use of PRINT statements. Output is now via calls to C routines set up to work with the routines BOBYQA, NEWUOA and UOBYQA.
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
The number of function evaluations used.
- ierr
An integer error code. A value of zero indicates success. Other values (consistent with BOBYQA values) are
- 1
maximum number of function evaluations exceeded
- 3
a trust region step failed to reduce q (Consult Powell for explanation.)
- msg
A message describing the outcome of UOBYQA
References
M. J. D. Powell, "The uobyqa 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 uobyqa for minimization without derivatives", IMA Journal of Numerical Analysis, 2008; 28: 649-664.
Description was taken from comments in the Fortran code of M. J. D. Powell on which minqa is based.
Examples
fr <- function(x) { ## Rosenbrock Banana function
100 * (x[2] - x[1]^2)^2 + (1 - x[1])^2
}
(x3 <- uobyqa(c(1, 2), fr))
#> parameter estimates: 0.999999999966711, 0.999999999942818
#> objective: 9.93797513608589e-21
#> number of function evaluations: 61
## => optimum at c(1, 1) with fval = 0
# check the error exits
# too many iterations
x3e<-uobyqa(c(1, 2), fr, control = list(maxfun=50))
str(x3e)
#> List of 5
#> $ par : num [1:2] 1 1
#> $ fval : num 1.79e-08
#> $ feval: int 50
#> $ ierr : num 1
#> $ msg : chr "uobyqa -- maximum number of function evaluations exceeded"
#> - attr(*, "class")= chr [1:2] "uobyqa" "minqa"
# To add if we can find them -- examples of ierr = 3.