在 R 中使用 constroptim on equals constraint on variables
using constroptim in R on equals constraint on variables
问题很简单
我正在使用 constrOptim 函数,其中 constraints/parameters 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。
如果您需要在 6 个参数 a
、b
、c
、d
、e
上设置这些约束(总和等于 1) ,f
在 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
想想你的 6 个参数向量 x
使得 ui*x>ci
(不等式是严格的,解释了 ci
中 0.001
的误差范围)。这正是 constrOptim
文档中描述的方式。
问题很简单
我正在使用 constrOptim 函数,其中 constraints/parameters 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。
如果您需要在 6 个参数 a
、b
、c
、d
、e
上设置这些约束(总和等于 1) ,f
在 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
想想你的 6 个参数向量 x
使得 ui*x>ci
(不等式是严格的,解释了 ci
中 0.001
的误差范围)。这正是 constrOptim
文档中描述的方式。