r solve.QP:约束不一致,没有解决方案
我试图找到这个问题的全局最小值,但我不明白为什么会出现上述错误。我试图将5个资产设置为精确的权重,并在一个值范围内优化其他5个资产。我宁愿不使用meq=5选项r solve.QP:约束不一致,没有解决方案,r,mathematical-optimization,quadprog,R,Mathematical Optimization,Quadprog,我试图找到这个问题的全局最小值,但我不明白为什么会出现上述错误。我试图将5个资产设置为精确的权重,并在一个值范围内优化其他5个资产。我宁愿不使用meq=5选项 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.14
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)
主题行中提到的错误可能是由于矩阵的非正定性。正如OP所指出的,
是.positive.definite()
是检查它的一种方法。主题行中提到的错误可能是由于矩阵的非正定性。正如OP所指出的,是.positive.definite()
是一种检查它的方法。有点预感到你的矩阵不是正定的。你介意检查一下吗?所以,我运行了is.positive.definal(dmat),它返回了TRUE。但如果我运行is.positive.definite(dmat,tol=1e-7),它将返回FALSE。solve.QP有容差级别吗?有趣的是,如果我将amat的前半部分乘以.9999,这似乎是可行的。solve.QP没有任何容差限制,但是Hessian应该是正定的,这是您在前面提到的转换之后所做的。有点预感到您的矩阵不是正定的。你介意检查一下吗?所以,我运行了is.positive.definal(dmat),它返回了TRUE。但如果我运行is.positive.definite(dmat,tol=1e-7),它将返回FALSE。solve.QP有容差级别吗?有趣的是,如果我将amat的前半部分乘以.9999,它似乎可以工作。solve.QP没有任何容差限制,但是Hessian应该是正定的,您在前面提到的转换之后正在进行。