问题很简单。
我正在使用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.
答案 0 :(得分:0)
如果您需要在6个参数a
,b
,c
,d
,e
上设置这些约束(总和等于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
(不等式严格,解释x
中ui*x>ci
的误差范围。这正是0.001
文档中描述的方式。