首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CVXPY中的块LMI

CVXPY中的块LMI
EN

Stack Overflow用户
提问于 2018-08-20 17:55:54
回答 1查看 1.4K关注 0票数 6

我想把一个LMI约束的优化问题从Matlab转化为Python。在阅读CVXPY文档时,我发现可以通过创建一个矩阵变量并添加相应的约束来定义一个LMI约束问题。但是,我不需要使用简单的LMI来约束问题,而是需要使用以下块LMI:

其中PL是矩阵变量,gamma是标量。其他符号是动态系统的状态空间矩阵。

在CVXPY中可以使用这种LMI作为约束吗?如果没有,还有其他工具可以让我在Python中解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-21 17:06:01

我遵循发布的例子,并成功地用cvxpy编写了给定的LMI。

作为参考,我编写的代码可能会对某些人有所帮助:

代码语言:javascript
复制
n = A.shape[0]

L = Variable((B2.shape[1], n))
P = Variable((n, n), PSD=True)
gamma2 = Variable()

LMI1 = bmat([
        [P, A*P + B2*L, B1, np.zeros((B1.shape[0], D11.shape[0]))],
        [P*A.T + L.T * B2.T, P, np.zeros((P.shape[0], B1.shape[1])), P*C1.T + L.T*D12.T],
        [B1.T, np.zeros((B1.shape[1], P.shape[1])), np.eye(B1.shape[1]), D11.T],
        [np.zeros((C1.shape[0], B1.shape[0])), C1*P + D12*L, D11, gamma2*np.eye(D11.shape[0])]
          ])

cons1 = LMI1 >> 0

cons2 = P == P.T
cons3 = gamma2 >= 0

然后,为了解决问题:

代码语言:javascript
复制
optprob = Problem(Minimize(gamma2), constraints=[cons1, cons2, cons3])
optprob.solve()

norm = np.sqrt(gamma2.value)
Pop = P.value
Lop = L.value
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51936145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档