在R中使用constroptim对变量进行等于约束

时间:2015-01-30 12:06:34

标签: r optimization

问题很简单。

我正在使用constrOptim函数,其中约束/参数a,b,c满足条件a + b + c = 1且a> 0,b> 0,c> 0

我能举个例子吗?

到目前为止,我可以编写类似这样的代码:

optim(c(0.1,0.1,0.1,0.1,0.1,0.1),
   optimize_ranks,data=data,
   lower=c(0.2,0.2,0.2,0.1,0.1,0.2),
   method="L-BFGS-B",
   upper=c(1,1,1,1,1,1))

我想要的是,这6个参数x1,x2,x3,x4,x5,x6必须加起来为1.

1 个答案:

答案 0 :(得分:0)

如果您需要在6个参数abcde上设置这些约束(总和等于1),{ {1}}中的{1}}:

f

考虑6个参数constrOptim的向量,使ui = rbind( c(1,1,1,1,1,1), c(-1,-1,-1,-1,-1,-1) ) ci = c(0.999, -1.001) func = function(x) x[1]-x[2]*x[1]+x[3]**3-x[4]*x[5] init = c(1,0,0,0,0,0) #> constrOptim(init, func, grad=NULL, ui=ui, ci=ci) #$par #[1] -5744.485 4392.275 -27681.276 14950.497 5945.962 8138.027 #$value #[1] -2.121093e+13 (不等式严格,解释xui*x>ci的误差范围。这正是0.001文档中描述的方式。