Как создать ограничения SOC с различными элементами вектора переменных - PullRequest
0 голосов
/ 05 мая 2019

Я работаю над проблемой оптимизации 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 из разных векторов переменных. Была бы признательна за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...