【发布时间】:2018-11-12 07:41:03
【问题描述】:
我正在尝试在 optim() 中使用 L-BFGS-B 方法来找出以下函数的最小值:
ip<-function(x) log(mean(exp(return*x))) , where "return" is a series of constants.
首先,我没有给出边界约束:rst1<-optim (-1,ip,method="L-BFGS-B"),它提供了一个合理的答案(x=-118.44,ip.min=-0.00017),这可以通过理论和excel计算来证明。结果中的给定消息是
收敛:投影梯度的范数
由于理论上 x 必须小于零,因此我向优化器添加了边界约束:rst2<-optim (-1,ip,method="L-BFGS-B",lower=-Inf,upper=0)。但是,这一次它只提供了一个由初始参数(-1)计算得到的答案,这显然不是最小值。结果中的给定消息是
CONVERGENCE:REL_REDUCTION_OF_F
然后我尝试了其他的边界约束,不管是什么,只要在此处添加边界约束,它总是会提供由初始参数计算的答案,并且找不到最小值。
有人知道为什么会这样吗?非常感谢。
示例
rtntxt
rtn
ip
rst1
rst2
情节
x
n
s
for(i in 1:n) s[i]
绘图(x,s)
x[which(s==min(s))] #rst1(无边界)是正确的
分钟
【问题讨论】:
标签: r optimization