Я работаю над проблемой оптимизации cvxpy. И мне нужно создать ограничение SOC (конус второго порядка).
Описанный в документах cvxpy способ выглядит следующим образом:
Мы используем cp.SOC (t, x) для создания ограничения SOC || x || _2 <= t.
где t - скалярная часть ограничения второго порядка, x - матрица, строки / столбцы которой являются конусом. </p>
Вот стандартный способ, которым cvxpy решает проблему SOCP .
Но теперь мне нужно извлечь Variable
из разных мест.
import cvxpy as cvx
Y = cvx.Variable(3)
Z = cvx.Variable(3)
T = cvx.Variable(3)
soc_constraints = []
for in range(3):
t = T[i]
x = np.matrix([Y[i], Z[i]])
soc_constraints += [cvx.SOC(t, x)]
Но я получаю одну ошибку здесь.
AttributeError: 'matrix' object has no attribute 'variables'
Полагаю, x
должно быть выражением cvxpy. Но как я могу создать ограничение SOC из разных векторов переменных.
Была бы признательна за помощь.