打印R优化功能的中间步骤

时间:2015-06-20 22:49:53

标签: r

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

1 个答案:

答案 0 :(得分: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