2015-06-20 72 views
3

我想在数值上优化R中导函数不可用时的函数。我很好奇我如何获得优化过程的打印中间步骤。我知道如何在使用optim()时做到这一点。我正在谈论control = list(trace ...等)。我在使用优化时如何做类似的工作?打印R优化函数的中间步骤

回答

4

追踪你的目标。请注意,如果您有一个非常旧的R版本,您需要升级到returnValue()的最新版本才能使用。

这里是help(optimize)第一个例子中带着一丝加 - 看到标有##声明:

f <- function (x, a) (x - a)^2 
trace(f, exit = quote(cat("x:", x, "objective:", returnValue(), "\n")), print = FALSE) ## 
optimize(f, c(0, 1), tol = 0.0001, a = 1/3) 

,并提供:

x: 0.381966 objective: 0.002365137 
x: 0.618034 objective: 0.08105446 
x: 0.236068 objective: 0.009460549 
x: 0.3333333 objective: 0 
x: 0.3333 objective: 1.111442e-09 
x: 0.3333667 objective: 1.111442e-09 
x: 0.3333333 objective: 0 
$minimum 
[1] 0.3333333 

$objective 
[1] 0