
Track numerical optimization
Source:R/nlm_track.R, R/optim_track.R, R/trackopt_methods.R
nlm_track.RdUsage
nlm_track(
f,
p,
target = NULL,
npar = NULL,
gradient = NULL,
hessian = NULL,
...,
iterations_max = 100,
tolerance = 1e-06,
typsize = rep(1, length(p)),
fscale = 1,
ndigit = 12,
stepmax = max(1000 * sqrt(sum((p/typsize)^2)), 1000),
steptol = 1e-06,
minimize = TRUE,
verbose = FALSE
)
optim_track(
f,
p,
target = NULL,
npar = NULL,
gradient = NULL,
...,
iterations_max = 100,
tolerance = 1e-06,
lower = NULL,
upper = NULL,
method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent"),
control = list(),
minimize = TRUE,
verbose = FALSE
)
# S3 method for class 'trackopt'
summary(object, ...)
# S3 method for class 'trackopt'
autoplot(object, iteration = NULL, xlim = NULL, xlim2 = NULL, ...)Arguments
- f
[
function]
Afunctionto optimize. It must return a singlenumericvalue.By default, the first argument of
fis optimized. That argument should be anumericvector of the same length asp. Additional arguments can be supplied through....Use
targetwhenfshould be optimized over another argument or over multiple arguments.- p
[
numeric()]
The starting parameter values for the target argument(s).- target
[
character()|NULL]
The names of the numeric argument(s) to optimize.If
NULL(default), the first argument offis used.- npar
[
integer()]
The length of each target argument.Specify
nparwhen optimizing over multiple target arguments sopcan be split correctly.If
targetcontains a single argument andnparisNULL,length(p)is used.- gradient
[
function|NULL]
Optionally afunctionthat returns the gradient off.Its arguments must match the arguments of
f.- hessian
[
function|NULL]
Optionally afunctionthat returns the Hessian off.Its arguments must match the arguments of
f.- ...
Additional arguments passed to
f, and togradientandhessianwhen they are specified.- iterations_max
[
integer(1)]
The maximum number of tracked optimization steps before termination.- tolerance
[
numeric(1)]
Tracking stops when the absolute change in function value between two consecutive iterations is less than this value.- typsize, fscale, ndigit, stepmax, steptol
Arguments passed on to
nlm.- minimize
[
logical(1)]
IfTRUE, minimizef; otherwise maximize it.- verbose
[
logical(1)]
IfTRUE, print progress after each iteration.- lower, upper
[
numeric()|NULL]
Optional lower and upper parameter bounds. Scalars are recycled to the number of parameters.- method, control
Arguments passed on to
optim.Elements
traceandmaxitare ignored incontrolbecauseoptim_track()controls tracing and iteration limits directly.- object
[
trackopt]
Atrackoptobject.- iteration
[
integer(1)]
The iteration to plot.If
NULL, the last iteration is plotted.This option is useful for creating animations with the R Markdown
animationchunk option.- xlim, xlim2
[
numeric(2)]
Ranges for the first and second parameter to plot.If
NULL, they are derived from the parameter ranges inobject.
Examples
himmelblau <- function(x) {
(x[1]^2 + x[2] - 11)^2 + (x[1] + x[2]^2 - 7)^2
}
track <- nlm_track(f = himmelblau, p = c(0, 0))
summary(track)
#> Iterations: 16
#> Function improvement: 170 -> 1.521e-07
#> Computation time: 0.06022 seconds
#> Initial parameter: 0, 0
#> Final parameter: 3, 2
ggplot2::autoplot(track)