hookejeeves {adagio} R Documentation

## Hooke-Jeeves Minimization Method

### Description

An implementation of the Hooke-Jeeves algorithm for derivative-free optimization.

### Usage

```hookejeeves(x0, f, lb = NULL, ub = NULL,
tol = 1e-08,
target = Inf, maxfeval = Inf, info = FALSE, ...)
```

### Arguments

 `x0` starting vector. `f` nonlinear function to be minimized. `lb, ub` lower and upper bounds. `tol` relative tolerance, to be used as stopping rule. `target` iteration stops when this value is reached. `maxfeval` maximum number of allowed function evaluations. `info` logical, whether to print information during the main loop. `...` additional arguments to be passed to the function.

### Details

This method computes a new point using the values of `f` at suitable points along the orthogonal coordinate directions around the last point.

### Value

List with following components:

 `xmin` minimum solution found so far. `fmin` value of `f` at minimum. `fcalls` number of function evaluations. `niter` number of iterations performed.

### Note

Hooke-Jeeves is notorious for its number of function calls. Memoization is often suggested as a remedy.

For a similar implementation of Hooke-Jeeves see the ‘dfoptim’ package.

### References

C.T. Kelley (1999), Iterative Methods for Optimization, SIAM.

Quarteroni, Sacco, and Saleri (2007), Numerical Mathematics, Springer-Verlag.

### See Also

`neldermead`

### Examples

```##  Rosenbrock function
rosenbrock <- function(x) {
n <- length(x)
x1 <- x[2:n]
x2 <- x[1:(n-1)]
sum(100*(x1-x2^2)^2 + (1-x2)^2)
}

hookejeeves(c(0,0,0,0), rosenbrock)
# \$xmin
#  1.000000 1.000001 1.000002 1.000004
# \$fmin
#  4.774847e-12
# \$fcalls
#  2499
# \$niter
# 26

hookejeeves(rep(0,4), lb=rep(-1,4), ub=0.5, rosenbrock)
# \$xmin
#  0.50000000 0.26221320 0.07797602 0.00608027
# \$fmin
#  1.667875
# \$fcalls
#  571
# \$niter
#  26
```

[Package adagio version 0.8.4 Index]