楼主: Aixir
3199 11

[问答] R语言,使用optim函数时可以设置某一待估参数为非负整数吗? [推广有奖]

  • 0关注
  • 0粉丝

大专生

83%

还不是VIP/贵宾

-

威望
0
论坛币
2959 个
通用积分
9.3581
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
265 点
帖子
24
精华
0
在线时间
96 小时
注册时间
2018-4-11
最后登录
2025-6-13

楼主
Aixir 发表于 2022-3-6 17:16:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大佬们,求教R语言,使用optim函数找最小值时可以设置某一待估参数(多个待估参数)为非负整数吗?
比如这个例子,如果我想x1取任意值,x2只取非负整数,应该在哪加什么啊?
obj <- function(x){
        x1 <- x[1]
        x2 <- x[2]
        y <- x1^2+x2^2-5
}
optim(par = c(0,0),fn=obj)

先谢谢了,本人小白,如果可以,麻烦说清楚一些,再次感谢!
二维码

扫码加我 拉你入群

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

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

关键词:Optim Tim R语言 OPT 最小值

沙发
1258225671 发表于 2022-3-6 19:40:51
在optim函数中使用lbfgsb算法就能实现。

藤椅
Aixir 发表于 2022-3-6 20:55:27
1258225671 发表于 2022-3-6 19:40
在optim函数中使用lbfgsb算法就能实现。
感谢,但是我还是不懂,是这样吗?
obj <- function(x){
     x1 <- x[1]
     x2 <- x[2]
     y <- x1^2+x2^2-5
}
optim(par = c(0,0),fn=obj,method = "L-BFGS-B")
但是,对于x2的非负整数约束加在哪呢?怎么加呢?可以麻烦您多指点下吗?万分感谢!小白真的不懂

板凳
正直者之死 发表于 2022-3-6 21:02:55
实际上是混合整数问题,不妨先试试在函数内部进行转换(x2 <- floor(abs(x[2])))

报纸
1258225671 发表于 2022-3-6 21:12:20
Aixir 发表于 2022-3-6 20:55
感谢,但是我还是不懂,是这样吗?
obj
非负数可以用lbfgsb,但非负整数就没办法了,optim解决不了你的问题

地板
Aixir 发表于 2022-3-6 21:20:45
正直者之死 发表于 2022-3-6 21:02
实际上是混合整数问题,不妨先试试在函数内部进行转换(x2
感谢回复,请问是这个样子吗?
obj <- function(x){
     x1 <- x[1]
     x2 <- floor(abs(x[2]))
     y <- x1^2+x2^2-5
}
optim(par = c(-4,3),fn=obj)
可是结果里的x2不是非负整数啊?不是很懂,能不能请您多指点下,万分感谢!

7
Edward6206 发表于 2022-3-7 10:54:10

8
正直者之死 发表于 2022-3-7 11:14:50
Aixir 发表于 2022-3-6 21:20
感谢回复,请问是这个样子吗?
obj
经过floor(abs())转换后,目标函数里相关的变量(这里指x2)已是非负整数,返回的结果仍是传入的x形式,对返回的x[2]也进行floor(abs())处理即可(但这里所有的前提都是optim能够找到最优解)

9
719812133 学生认证  发表于 2022-3-7 13:29:43
在optim(.)函数调用时,声明method为L-BFGS-B算法,便可以对任意一个模型参数设定最优化求解时的取值上下界,当然还要声明LB = c()和UB = c()的变量传入optim(.)函数,实现全体非负数的取值限制是可行的,但是要想实现参数非负整数范围里的取值,那么optim(.)这个函数是做不到的,就算是用上面这个abs(.)函数的方法,算法参数估计时也不过是将某一含有小数点的非负数x[2]按照abs(.)的取整函数定义得到个整数传给obj里的x2而已,BFGS算法本身还是在非负数的全体范围里直接地对x[2]参数取值进行估计,你这个要求BFGS算法自身就实现不了,所以optim函数无法进行这样定义下的参数估计运算。

10
Aixir 发表于 2022-3-10 22:59:46
719812133 发表于 2022-3-7 13:29
在optim(.)函数调用时,声明method为L-BFGS-B算法,便可以对任意一个模型参数设定最优化求解时的取值上下界 ...
哦哦,这样啊,感谢您的解答

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-17 02:32