2016-07-21 18 views
1

この問題のグローバルな最小限度を見つけようとしていますが、なぜ上記のエラーが発生しているのかわかりません。私は5つの資産を正確な重みに等しく設定し、他の5つをある範囲の値に最適化しようとしています。 meq = 5オプションを使用しないことをお勧めします。r solve.QP:制約が矛盾している、解決策がありません

dvec<-matrix(0, 1,ncol(dmat)) 

dmat 
    A B C D E F G H I J 
A 6.85E-08 -0.000000039 -0.00000242 1.00E-07 -0.00000206 -0.00000102 -1.14E-07 -0.000000531 -0.00000137 -0.00000132 
B -3.90E-08 0.001124367 0.000190585 -2.08E-06 0.000221485 0.000153652 5.99E-05 0.000038 0.0000762 0.000200415 
C -2.42E-06 0.000190585 0.001730743 1.30E-07 0.000878497 0.000926944 6.45E-05 0.000339591 0.000958817 0.000665363 
D 1.00E-07 -0.00000208 0.00000013 9.68E-07 -0.00000198 -0.00000106 -3.39E-07 0.000000912 0.00000142 0.00000279 
E -2.06E-06 0.000221485 0.000878497 -1.98E-06 0.000857829 0.000590873 4.15E-05 0.00025093 0.000521244 0.000455809 
F -1.02E-06 0.000153652 0.000926944 -1.06E-06 0.000590873 0.001226696 4.72E-05 0.000198401 0.000512625 0.000343511 
G -1.14E-07 0.0000599 0.0000645 -3.39E-07 0.0000415 0.0000472 4.45E-05 0.0000435 0.000052 0.0000425 
H -5.31E-07 0.000038 0.000339591 9.12E-07 0.00025093 0.000198401 4.35E-05 0.000362761 0.00031198 0.000224669 
I -1.37E-06 0.0000762 0.000958817 1.42E-06 0.000521244 0.000512625 5.20E-05 0.00031198 0.00096765 0.000514901 
J -1.32E-06 0.000200415 0.000665363 2.79E-06 0.000455809 0.000343511 4.25E-05 0.000224669 0.000514901 0.000748266 

    amat 
     A B C D E F G H I J A B C D E F G H I J 
    A -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
    B 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 
    C 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 
    D 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 
    E 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 
    F 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 
    G 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 
    H 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 
    I 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 
    J 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 

bvec 
    A B C D E F G H I J A B C D E F G H I J 
    (757,631) (805) (770,471) (71,668) (10,011,652) (5,870,322)  (10,942,502) (52,569) (10,582,791) (5,293,429)  -  -  -  -  -  5,870,322 10,942,502  52,569  10,582,791  5,293,429 

    sol<-solve.QP(dmat, dvec, amat, bvec, meq=0) 
+0

あなたの行列が正定ではないことを察知しています。チェックしてもよろしいですか? – abhiieor

+0

ですから、私はis.positive_finite(dmat)を実行してTRUEを返しました。しかし、私がis.positiveitivefinite(dmat、tol = 1e-7)を実行すると、FALSEを返します。解決しますか.QPには許容レベルがありますか? – user3390169

+0

興味深いことに、amatの前半に.9999を掛ければうまくいくようです。 – user3390169

答えて

0

この件に記載されているエラーは、マトリックスのNON陽性の可能性が原因である可能性があります。 OPがis.positive.definite()を見つけたので、それを確認する方法です。

関連する問題