Правильный способ наложения PSD-ограничения на матрицу, состоящую из выражений в CVXPY - PullRequest
0 голосов
/ 27 февраля 2020

Я использую CVXPY для полуопределенной программы. Здесь я буду использовать очень общую настройку моей задачи.

У меня есть переменная X, которая является PSD-матрицей. Теперь я хочу использовать эту переменную в другой матрице W, которую я строю элемент за элементом. Кроме того, я хочу ограничить эту новую матрицу W PSD.

Вот как я реализовал это сейчас:

import cvxpy as cp

X = cp.Variable((3,3), PSD=True)

row_1 = cp.hstack((0, 1, X[0,0]))
row_2 = cp.hstack((1, 0, X[1,2]))
row_3 = cp.hstack((X[0,0], X[1,2], 0))

W = cp.vstack((row_1, row_2, row_3))
constraint = [W >> 0]

Это разумный способ сделать это или есть лучшие способы?

...