gpt4 book ai didi

r - 关于R中optim()中L-BFGS-B方法边界约束的问题

转载 作者:行者123 更新时间:2023-12-04 16:00:26 44 4
gpt4 key购买 nike

我试图在 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 计算来证明。结果中的给定消息是

CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL.

由于 x 在理论上必须小于零,因此我向优化器添加了边界约束:rst2<-optim (-1,ip,method="L-BFGS-B",lower=-Inf,upper=0) .不过这次它只提供了一个由初始参数(-1)计算出来的答案,显然不是最小值。结果中的给定消息是

CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH.

然后我又尝试了其他的边界约束,不管是什么,只要在这里加上边界约束,总是给出一个初始参数计算出来的答案,找不到最小值。

有人知道为什么会这样吗?非常感谢。


例子

rtntxt<-"返回9.15051E-059.67217E-071.34187E-05-0.0001058010.0001110040.0002287863.84068E-060.000388639-0.000122291-7.73028E-054.97595E-05-3.97503E-051.86449E-05-0.000137739-0.000180709-1.07254E-053.89723E-05"

rtn<-read.table(text=rtntxt,header=TRUE)

ip<-function(x) log(mean(exp(rtn$return*x)))

rst1<-optim(-1,ip,method="L-BFGS-B") #无边界

rst2<-optim(-1,ip,method="L-BFGS-B",lower=-Inf,upper=0) #with boundaries

情节

x<- -10000:10000

n<-长度(x)

s<-数字(n)

for(i in 1:n) s[i]<-ip(x[i])

绘图(x,s)

x[which(s==min(s))] #rst1(no boundaries) 是正确的

分钟

最佳答案

我不确定你是怎么得到这个结果的:如果我纠正你的拼写错误的代码,我仍然会得到类似的答案,而不是你从结果中得到的答案:

ip<-function(x) log(mean(exp(return(x))))
rst1<-optim(-1,ip,method="L-BFGS-B")
# > rst1
# $`par`
# [1] -1.820444e+13
#
# $value
# [1] -1.820444e+13
#
# $counts
# function gradient
# 20 20
#
# $convergence
# [1] 0
#
# $message
# [1] "CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL"
#

rst2<-optim (-1,ip,method="L-BFGS-B",lower=-Inf,upper=0)
# $`par`
# [1] -1.80144e+13
#
# $value
# [1] -1.80144e+13
#
# $counts
# function gradient
# 3 3
#
# $convergence
# [1] 0
#
# $message
# [1] "CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL"

此外,为了检查我的代码是否存在错误,我尝试绘制函数的值 -1:-100000,但看起来并不存在您所说的优化。检查您的代码/帖子,如果您大致知道最佳值在哪里,请尝试以图形方式绘制它(这是我的建议)。干杯!

plot(x = -1:-100000, y = ip(-1:-100000))

关于r - 关于R中optim()中L-BFGS-B方法边界约束的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50655697/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com