R で quadprog プログラムを使用して、次の単純な目的関数を最適化しようとしています。
max_{x} x' A x
私が目にするほとんどの最適化問題は最小化を使用していますが、単純に A の代わりに -A を使用すると、A が正定値ではなくなったというエラーが発生します。私はこの種のことに非常に慣れていません。単純な二次最大化問題を解く方法を知っている人はいますか?
エラーを再現するサンプル コードを次に示します。
if (!require(quadprog)) install.packages('quadprog')
library(quadprog)
set.seed(144)
mat <- abs(cor(matrix(rnorm(25),5,5)))
solve.QP(Dmat = -mat, dvec = rep(0,5), Amat = diag(5), bvec = rep(0,5), meq=0, factorized=FALSE)
結果のエラーは次のとおりです。
solve.QP(Dmat = -mat, dvec = rep(0, 5), Amat = diag(5), bvec = rep(0, : 二次関数の行列 D は正定値ではありません!