CVXPY 1.0.24 в Python 3. + не решает проблему с квадраторами правильно - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь максимизировать 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

1 Ответ

0 голосов
/ 19 октября 2019

Я думаю, что вы забыли изменить ограничение после того, как изменили задачу с максимизации на минимизацию. Для минимизации вы можете попробовать x <= 0 </p>

...