【发布时间】: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