CVXPY 中 PSD 约束的循环迭代
Looping Iteration over a PSD Constraint in CVXPY
我需要明智地说明 PSD 约束元素。该代码只是SDP问题的一部分。但是 returns 出现以下错误:
TypeError: 'PSD' object is not iterable
在迭代循环中是否允许构造多于PSD的约束?
import cvxpy as cp
import numpy as np
R=np.random.rand(2,1)
A=np.random.rand(2,2)
X=cp.Variable((2,1))
c=[1,4]
Z=R+A@X
W=R-A@X
const=[]
for i in range(2):
const +=cp.bmat( [
[c[i]**2, Z[i], 0, -W[i]],
[Z[i], 1, W[i], 0],
[0, W[i], c[i]**2, Z[i]],
[-W[i], 0, Z[i], 1]
])>>0
CVXPY 约束是 list
的形式,所以对于矩阵我们应该使用 .append
以下作品:
import cvxpy as cp
import numpy as np
R=np.random.rand(2,1)
A=np.random.rand(2,2)
X=cp.Variable((2,1))
c=[1,4]
Z=R+A@X
W=R-A@X
const=[]
for i in range(2):
LMI =cp.bmat( [
[c[i]**2, Z[i], 0, -W[i]],
[Z[i], 1, W[i], 0],
[0, W[i], c[i]**2, Z[i]],
[-W[i], 0, Z[i], 1]
])
const.append(LMI>>0)
我需要明智地说明 PSD 约束元素。该代码只是SDP问题的一部分。但是 returns 出现以下错误:
TypeError: 'PSD' object is not iterable
在迭代循环中是否允许构造多于PSD的约束?
import cvxpy as cp
import numpy as np
R=np.random.rand(2,1)
A=np.random.rand(2,2)
X=cp.Variable((2,1))
c=[1,4]
Z=R+A@X
W=R-A@X
const=[]
for i in range(2):
const +=cp.bmat( [
[c[i]**2, Z[i], 0, -W[i]],
[Z[i], 1, W[i], 0],
[0, W[i], c[i]**2, Z[i]],
[-W[i], 0, Z[i], 1]
])>>0
CVXPY 约束是 list
的形式,所以对于矩阵我们应该使用 .append
以下作品:
import cvxpy as cp
import numpy as np
R=np.random.rand(2,1)
A=np.random.rand(2,2)
X=cp.Variable((2,1))
c=[1,4]
Z=R+A@X
W=R-A@X
const=[]
for i in range(2):
LMI =cp.bmat( [
[c[i]**2, Z[i], 0, -W[i]],
[Z[i], 1, W[i], 0],
[0, W[i], c[i]**2, Z[i]],
[-W[i], 0, Z[i], 1]
])
const.append(LMI>>0)