subplex {subplex} | R Documentation |
Minimization of a function by the subplex algorithm
Description
subplex
minimizes a function.
Usage
subplex(par, fn, control = list(), hessian = FALSE, ...)
Arguments
par |
Initial guess of the parameters to be optimized over. |
fn |
The function to be minimized. Its first argument must be the vector of parameters to be optimized over. It should return a scalar result. |
control |
A list of control parameters, consisting of some or all of the following:
|
hessian |
If |
... |
Additional arguments to be passed to the function |
Details
The convergence codes are as follows:
- -2
invalid input
- -1
number of function evaluations needed exceeds
maxnfe
- 0
success: tolerance
tol
satisfied- 1
limit of machine precision reached
For more details, see the source code.
Value
subplex
returns a list containing the following:
par |
Estimated parameters that minimize the function. |
value |
Minimized value of the function. |
count |
Number of function evaluations required. |
convergence |
Convergence code (see Details). |
message |
A character string giving a diagnostic message from the optimizer, or 'NULL'. |
hessian |
Hessian matrix. |
Author(s)
Aaron A. King kingaa@umich.edu
References
T. Rowan, “Functional Stability Analysis of Numerical Algorithms”, Ph.D. thesis, Department of Computer Sciences, University of Texas at Austin, 1990.
See Also
Examples
ripple <- function (x) {
r <- sqrt(sum(x^2))
1-exp(-r^2)*cos(10*r)^2
}
subplex(par=c(1),fn=ripple,hessian=TRUE)
subplex(par=c(0.1,3),fn=ripple,hessian=TRUE)
subplex(par=c(0.1,3,2),fn=ripple,hessian=TRUE)
## Rosenbrock Banana function
rosen <- function (x) {
x1 <- x[1]
x2 <- x[2]
100*(x2-x1*x1)^2+(1-x1)^2
}
subplex(par=c(11,-33),fn=rosen)
## Rosenbrock Banana function (using names)
rosen <- function (x, g = 0, h = 0) {
x1 <- x['a']
x2 <- x['b']-h
100*(x2-x1*x1)^2+(1-x1)^2+g
}
subplex(par=c(b=11,a=-33),fn=rosen,h=22,control=list(abstol=1e-9,parscale=5),hessian=TRUE)