我对optim函数不太熟悉,我想从它的结果中获取以下信息:a) 达到结果需要多少次迭代?b) 绘制部分解的序列,即每次迭代结束时获得的解。
到目前为止,我的代码如下:
f1 <- function(x) { x1 <- x[1] x2 <- x[2] x1^2 + 3*x2^2}res <- optim(c(1,1), f1, method="CG")
我如何改进它以获取更多信息?
提前感谢
回答:
你可以修改你的函数,将传入的值存储到一个全局列表中。
i <- 0 vals <- list()f1 <- function(x) { i <<- i+1 vals[[i]] <<- x x1 <- x[1] x2 <- x[2] x1^2 + 3*x2^2 }res <- optim(c(1,1), f1, method="CG")
现在,如果你在运行函数后检查i和vals,你可以看到发生了什么。如果你想在optim运行时查看值,你也可以在函数中添加一个打印语句。