0
Rのnloptr
パッケージに複数の "不等式制約"を定義する方法はありますか?"複数の不等式制約" - R nloptrパッケージによる最小化
不等式関数には5つの不等式制約が必要です。行列の列(整数ベクトルから積み重ねたもの)< = 1。 (6列のうち5)
これは、私はそれを達成するために実装方法である:
constraint.func <- function(my.data.var)
{
column = 2
constr <- c("numeric",ncol(my.data.matrix.inj))
for(index in 1:ncol(my.data.matrix.inj)) #1 to 5
{
constr[index] <- sum(my.data.var[column], my.data.var[column+6], my.data.var[column+12], my.data.var[column+18])-1
column = column+1
}
constr.1 <- c(constr[1],constr[2],constr[3],constr[4],constr[5])
return(constr.1)
}
my.data.var
マトリックスとして積層されている数値ベクトルです。
my.data.var <- c(10,0.25,0.25,0.25,0.25,0.25,
10,0.25,0.25,0.25,0.25,0.25,
10,0.25,0.25,0.25,0.25,0.25,
10,0.25,0.25,0.25,0.25,0.25)
my.data.var
NLOPTRは、以下のように定義されていますが、私はそれを実行すると、それは "不等式制約の数= 0" は言います。
opts = list("algorithm"="NLOPT_LN_COBYLA",
"xtol_rel"=1.0e-5, "maxeval"=500)
result <- nloptr(my.data.var,eval_f = Error.func,lb=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
ub = (Inf,1,1,1,1,1,Inf,1,1,1,1,1,Inf,1,1,1,1,1,Inf,1,1,1,1,1),
eval_g_ineq=constraint.func,opts = opts)
print(result)
更新回答: を私はとしてConstraint.funcを更新し、今nloptr
は不等式制約を選ぶ
constraint.func <- function(my.data.var)
{
column = 2
constr <- vector("numeric",length = 5)
for(index in 1:ncol(my.data.matrix.inj))
{
constr[index] <- sum(my.data.var[column], my.data.var[column+6], my.data.var[column+12], my.data.var[column+18])-1
column = column+1
}
return(constr)
}
私はこのポストhttp://stackoverflow.com/questions/31431575/minimization-with-r-nloptr-package-multiple-equality-constraintsからではなく、無駄に言及しました。 – Modi
[緊急募集に関するフィードバック](http://meta.stackoverflow.com/q/326569/472495)です。 – halfer
@halfer:sure。 thnx – Modi