gpt4 book ai didi

r - 理解 R 中 optim() 的 maxit 参数

转载 作者:行者123 更新时间:2023-12-03 16:01:51 27 4
gpt4 key购买 nike

在以下调用 optim()我希望得到 fn() 的评价和 gr() 之一, 因为 maxit=1 .然而,fn()gr()每次评估 7 次。

optim(par=1000, fn=function(x) x^2, gr=function(x) 2*x,
method="L-BFGS-B", control=list(maxit=1))$counts
function gradient
7 7

为什么是这样?这是一个错误吗?或者为什么 optim()对一次迭代进行 7 次评估?

更详细的输出:
optim(par=1000,
fn=function(x) { cat("f(", x, ")", sep="", fill=TRUE); x^2 },
gr=function(x) { cat("g(", x, ")", sep="", fill=TRUE); 2*x },
method="L-BFGS-B", control=list(maxit=1))$counts
f(1000)
g(1000)
f(999)
g(999)
f(995)
g(995)
f(979)
g(979)
f(915)
g(915)
f(659)
g(659)
f(1.136868e-13)
g(1.136868e-13)
function gradient
7 7

(使用 R 版本 3.5.0 测试。)

最佳答案

迭代 是优化算法的一次迭代。 A 函数评估是对目标函数的一次调用。每次迭代需要多少函数评估取决于:

  • 正在使用什么算法(例如 Nelder-Mead 与 BFGS 与 ...)
  • 一个迭代步骤如何工作
  • 例如为 Nelder-Mead an iteration comprises (1) 反射(reflection); (2) [也许] 扩展; (3) 【也许】收缩; (4) 【也许】收缩;总是有一个评估(反射),但其他步骤取决于第一个子步骤中发生的情况
  • L-BFGS-B我认为涉及行搜索...
  • 是否需要通过有限差分计算导数

  • 物有所值, nlminb允许单独控制最大迭代和最大评估:

    ‘eval.max’ Maximum number of evaluations of the objective function allowed. Defaults to 200.
    ‘iter.max’ Maximum number of iterations allowed. Defaults to 150.

    关于r - 理解 R 中 optim() 的 maxit 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53640574/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com