The {trackopt}
package tracks parameter values, gradients, and Hessians at each iteration of numerical optimizers in R
. This can be useful for analyzing optimization progress, diagnosing issues, and studying convergence behavior.
You can install the released package version from CRAN with:
install.packages("trackopt")
Example
The following is the nlm
minimization track of the Himmelblauâs function:
library("trackopt")
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))
print(track)
#> # A tibble: 17 Ã 7
#> iteration value step parameter gradient hessian seconds
#> * <dbl> <dbl> <dbl> <list> <list> <list> <dbl>
#> 1 0 170 0 <dbl [2]> <dbl [1]> <dbl [1]> 0
#> 2 1 47.4 -1.23e+2 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.0247
#> 3 2 14.0 -3.34e+1 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00119
#> 4 3 4.91 -9.08e+0 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00122
#> 5 4 2.26 -2.65e+0 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00127
#> 6 5 0.951 -1.31e+0 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00110
#> 7 6 0.272 -6.79e-1 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00102
#> 8 7 0.0650 -2.07e-1 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.000993
#> 9 8 0.0168 -4.82e-2 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.000989
#> 10 9 0.00400 -1.28e-2 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.000997
#> 11 10 0.000948 -3.06e-3 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.000997
#> 12 11 0.000221 -7.28e-4 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00100
#> 13 12 0.0000512 -1.69e-4 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00107
#> 14 13 0.0000118 -3.94e-5 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00100
#> 15 14 0.00000275 -9.05e-6 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00101
#> 16 15 0.000000628 -2.13e-6 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00166
#> 17 16 0.000000152 -4.76e-7 <dbl [2]> <dbl [2]> <dbl [2 Ã 2]> 0.00102
summary(track)
#> Iterations: 16
#> Function improvement: 170 -> 1.521e-07
#> Computation time: 0.04125 seconds
#> Initial parameter: 0, 0
#> Final parameter: 3, 2
ggplot2::autoplot(track)
The following is the optim
maximization track of the Beta-PDF:
optim_track(
f = dbeta, p = 0, lower = 0, upper = 1, shape1 = 4, shape2 = 2, method = "Brent", minimize = FALSE
) |> ggplot2::autoplot()
If you have any questions, found a bug, need a feature, just file an issue on GitHub.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4