全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3747 6
2018-06-01
在用optim函数(L-BFGS-B法)求一元方程的最小值时,不加约束条件顺利求解,而一旦加入约束条件,不管条件是什么,都会直接给出代入初始值得到的结果,好像不再迭代了。
        哪位好心人知道是什么原因吗?非常感谢!
       (代码附后)
optim.txt
大小:(1.58 KB)

 马上下载







二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-6-1 22:19:30
rtntxt<-"
return
9.15051E-05
……
-2.10744E-05
6.30086E-05
0.000138107
"
rtn<-read.table(text=rtntxt,header=TRUE)

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

rst1<-optim(-1,ip,method="L-BFGS-B") #不加线性约束正确
rst2<-optim(-1,ip,method="L-BFGS-B",lower=-300,upper=300) #加入线性约束出错
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-6-2 11:47:14
liuzheng824 发表于 2018-6-1 22:15
在用optim函数(L-BFGS-B法)求一元方程的最小值时,不加约束条件顺利求解,而一旦加入约束条件,不 ...
错误的提示是啥
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-6-2 14:58:46
中国梦丶 发表于 2018-6-2 11:47
错误的提示是啥
    就是不迭代了,直接给出初始参数-1代入的结果。因为在不加线性约束条件(即-Inf到+Inf区间)下得到的最小值是在-116处取到的,初始参数-1对应的值不是最小值。
    另外两者给出的提示也不一样,不加线性约束条件给出的是"CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL",加了线性约束条件给出的是"CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-6-2 15:01:39
中国梦丶 发表于 2018-6-2 11:47
错误的提示是啥
用excel算,不管设置什么条件和初始参数都能算对,用R怎么算都不行,真郁闷呀。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-6-4 13:54:25
找到原因了。用optim()中的"L-BFGS-B"法求最小值,如果目标函数值过小,加入约束条件后会出错,即返回代入初始参数得到的结果。这时只要将目标函数放大,比如*100,再求解就可以了。以上问题R不会给出错误提示,用此方法的同仁需要注意一下。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群