私はstackoverflowを新しく検索しましたが、私の質問に対する回答が見つかりませんでした。私は最適化パッケージRsolnpの問題を最小限に抑えようとしています。ソルバーは私に解決策を与えますが、コードを実行するたびに次の警告メッセージが表示されます。Rsolnp:cbind(temp、funv):結果の行数がベクトルの長さの倍数ではない(arg 1)
警告メッセージ:1:cbind(temp、funv)で: 結果の行数はベクトルの倍数ではありません長さ(arg 1)
さらに、このソリューションはipopとsolve.QPで得られるソリューションとはまったく異なります。それらの解はほぼ同じです(0.2480,0.0000,0.0121,0.7400)。 問題の多くの異なる形式を試しましたが、私が間違ったことを理解できませんでした。私はすべての助けと情報に感謝しています!
library(Rsolnp)
# Starting Values
x0 <- c(0.25,0,0.01,0.75)
fn <- function(x){
d <- c(0.0308, 0.0269, 0.0145, 0.0130)
d <- -d
D <- cbind(c(0.1486, 0.0778, -0.0240, -0.0154),
c(0.0778, 0.1170, 0.0066, 0.0029),
c(-0.0240, 0.0066, 0.0444, 0.0193),
c(-0.0154, 0.0029, 0.0193, 0.0148))
out <- t(d) %*% x + 0.5 * (t(x) %*% D %*% x)
out
}
# Inequality Constraint: 0 =< x 0 =< 1
lx <- rep(0,4)
ux <- rep(1,4)
sol <- solnp(pars = x0,
fun = fn,
eqfun = sum,
eqB = 1,
ineqLB = lx,
ineqUB = ux)
sol$pars