Задача выпуклой оптимизации не соответствует правилам DCP - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь решить следующую проблему оптимизации с помощью cvxpy:

x и delta_x - это (1, N) векторов строк.A является (N, N) симметричной матрицей, а b является скаляром.Я пытаюсь найти ay, такой, чтобы минимизировать сумму квадратов (y - delta_x) с ограничением (x + y) .A. (X + y) .T - b = 0. Ниже приведена моя попытка решитьЭто.

x = np.reshape(np.ravel(x_data.T), (1, -1))
delta_x = np.reshape(np.ravel(delta.T), (1, -1))
y = cp.Variable(delta_x.shape)
objective = cp.Minimize(cp.sum_squares(y - delta_x))
constraints = [cp.matmul(cp.matmul(x + y, A), (x + y).T) == (b*b)]
prob = cp.Problem(objective, constraints)
result = prob.solve()

Я получаю сообщение об ошибке «cvxpy.error.DCPError: Проблема не соответствует правилам DCP».

Я следовал правилам, изложенным в ответе здесь , но я не понимаю, как создать правильную проблему минимизации cvxpy.Любая помощь будет принята с благодарностью.Спасибо!

...