【问题标题】:CVXPY 1.0.24 in Python 3.+ isn't solving quad problem correctlyPython 3.+ 中的 CVXPY 1.0.24 无法正确解决四边形问题
【发布时间】:2019-10-16 20:48:27
【问题描述】:

我正在尝试最大化 cx - xAx,其中 A 是正定的,但解决方案不是我应该的。请帮忙

我用这个数据尝试了这个问题

A = np.array([[1595., 1098., 1133.,    0.,    0.,    0.,    0.],
       [1191., 1497., 1133.,    0.,    0.,    0.,    0.],
       [1191., 1098., 1396.,    0.,    0.,    0.,    0.],
       [   0.,    0.,    0.,  655.,    0.,    0.,    0.],
       [   0.,    0.,    0.,    0., 1313.,    0.,    0.],
       [   0.,    0.,    0.,    0.,    0.,  581.,    0.],
       [   0.,    0.,    0.,    0.,    0.,    0.,  536.]])

c = np.array([4673.36981266, 4727.12719741, 5939.49046907, 3867.69830799,
       6099.15146109, 5358.10885615, 4885.96523884])

prob = cp.Problem(cp.Maximize(cp.quad_form(x,A)+c.T@x),[x>=0])

prob.solve()

上面的代码出现 DCP 错误..

然后我尝试了最小化版本,然后得到 -inf 作为答案

prob = cp.Problem(cp.Minimize(cp.quad_form(x,A)-c.T@x),[x>=0])

prob.solve()

Max(cx - xAx)的实际最优解是

np.array([0,0,2.134,2.903,2.359,4.6266,4.508])

最佳值为 42586

【问题讨论】:

    标签: python-3.x cvxpy


    【解决方案1】:

    我认为您在将问题从最大化更改为最小化后忘记更改约束。为了最小化,您可以尝试 x

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-07
      • 2020-09-07
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      相关资源
      最近更新 更多