我正在研究cvxpy的优化问题。而且我需要创建一个SOC(二阶锥)约束。 cvxpy文档中描述的方式如下:
我们使用cp.SOC(t,x)创建SOC约束|| x || _2 <= t。 其中t是二阶约束的标量部分,x是一个矩阵,其行/列均为圆锥。
这是cvxpy解决SOCP problem的标准方法。
但是现在我需要从不同的位置提取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约束。
一些帮助,将不胜感激。