【问题标题】:r solve.QP: constraints are inconsistent, no solutionr solve.QP:约束不一致,无解
【发布时间】:2016-07-21 16:32:33
【问题描述】:

我正在尝试查找此问题的全局最小值,但我无法弄清楚为什么会出现上述错误。我正在尝试将 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.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)

【问题讨论】:

  • 有点预感你的矩阵不是正定的。你介意检查一下吗?
  • 所以,我运行了 is.positive.defined(dmat) 并返回 TRUE。但是如果我运行 is.positive.defined(dmat, tol=1e-7) 它会返回 FALSE。 solve.QP 有容差水平吗?
  • 有趣的是,如果我将 amat 的前半部分乘以 .9999,它似乎可以工作。
  • Solve.QP 没有任何公差限制,但 Hessian 应该是肯定的,您在上述转换后所做的。

标签: r mathematical-optimization quadprog


【解决方案1】:

主题行中提到的错误可能是由于矩阵的非正定性。正如 OP 发现的那样,is.positive.definite() 是一种检查方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 2016-07-19
    • 2020-09-04
    • 1970-01-01
    • 2018-04-23
    • 2014-09-23
    相关资源
    最近更新 更多