在R中优化时出错

时间:2015-11-03 06:57:32

标签: r optimization solver minimize

我正在创建两个函数f(i)和f(j),我想同时找到i和j的值,使得差f(i)-f(j)最小化。 但是在运行下面的代码时出现错误。

我有两个参数i和j的函数,如下所示

f1<- function(j,i) abs(bu1(j)-td1(i))
ans_lev1<-optimize(f1, lower=-100, upper=100),

现在我需要同时找到i和j的值,以使上述函数的差异最小化。

我当时想要

Error in td1(i) : argument "i" is missing, with no default

但收到错误{{1}}

R中是否有任何方法可以根据两个参数最小化功能?

1 个答案:

答案 0 :(得分:0)

是的,几乎所有优化器都在参数向量上工作。您应该将您的功能修改为

f1<- function(param) abs(bu1(param[2])-td1(param[1]))

即。该函数接受一个参数“param”,并在函数内部从中获取感兴趣的值。

注意:如果您使用abs(),您最终会得到一个不可微分的目标函数。您必须选择可以处理它的优化器(例如,SANN和Nelder-Mead可以)。我宁愿做

f1 <- function(param) (bu1(param[2])-td1(param[1]))^2

仍然是相同的解决方案,但现在可以区分,您可以将它提供给大多数优化器。