楼主: liuzheng824
3148 6

[问答] 求助!用optim函数求最小值,加入线性约束条件后出错 [推广有奖]

  • 0关注
  • 0粉丝

高中生

30%

还不是VIP/贵宾

-

威望
0
论坛币
693 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
52 点
帖子
5
精华
0
在线时间
49 小时
注册时间
2017-9-29
最后登录
2023-4-20

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在用optim函数(L-BFGS-B法)求一元方程的最小值时,不加约束条件顺利求解,而一旦加入约束条件,不管条件是什么,都会直接给出代入初始值得到的结果,好像不再迭代了。
        哪位好心人知道是什么原因吗?非常感谢!
       (代码附后) optim.txt (1.58 KB)





二维码

扫码加我 拉你入群

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

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

关键词:约束条件 一元方程 提示信息 最小值 初始值

沙发
liuzheng824 发表于 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法)求一元方程的最小值时,不加约束条件顺利求解,而一旦加入约束条件,不 ...
错误的提示是啥

使用道具

板凳
liuzheng824 发表于 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"


使用道具

报纸
liuzheng824 发表于 2018-6-2 15:01:39 |只看作者 |坛友微信交流群
中国梦丶 发表于 2018-6-2 11:47
错误的提示是啥
用excel算,不管设置什么条件和初始参数都能算对,用R怎么算都不行,真郁闷呀。

使用道具

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

使用道具

7
hifinecon 发表于 2018-6-5 00:01:20 |只看作者 |坛友微信交流群
thanks for your solution

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-21 22:54