我正在创建两个函数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中是否有任何方法可以根据两个参数最小化功能?
答案 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
仍然是相同的解决方案,但现在可以区分,您可以将它提供给大多数优化器。