相关疑难解决方法(0)

优化 - 将目标和梯度函数参数作为列表传递

我有一个同时评估梯度和输出的函数。我想根据目标函数对其进行优化。如何将目标和梯度作为列表传递给optimx?下面的例子说明了这个问题:

假设我想找到多项式 的最小非负根x^4 - 3*x^2 + 2*x + 3。其梯度为4*x^3 - 6*x + 2. 我用的方法nlminboptimx,如下图。

optimx(par = 100, method = "nlminb", fn = function(x) x^4 - 3*x^2 + 2*x + 3, 
                                     gr=function(x) 4*x^3 - 6*x + 2, lower = 0)
Run Code Online (Sandbox Code Playgroud)

这工作正常,我得到以下输出:

       p1 value fevals gevals niter convcode kkt1 kkt2 xtimes
nlminb  1     3     27     24    23        0 TRUE TRUE      0
Run Code Online (Sandbox Code Playgroud)

现在假设我定义了函数fngr,它将目标和梯度作为列表返回:

fngr <- function(x) {
  fn <- x^4 - …
Run Code Online (Sandbox Code Playgroud)

optimization r

5
推荐指数
1
解决办法
912
查看次数

标签 统计

optimization ×1

r ×1