matlab中LMI工具箱使用
Table of Contents
初始化一个 LMI 系统
1
2
| setlmis(lmi0);
setlmis([]); % 常用
|
向 LMI 系统中添加矩阵变量 lmivar
1
2
| X = lmivar(type, struct); % 常用
[X, ndec, xdec] = lmivar(type, struct); % ndec表述与X有关的决策变量的个数,xdec表示X对这些决策变量的初始依赖关系
|
| type类型对应的数值 | 含义 |
|---|
| 1 | 对角线对称矩阵格式,每个对角块都是满块 |
| 2 | 矩形块,struct=[m,n] 表示 m x n 阶矩阵 |
| 3 | 描述复杂类型的矩阵 |
type=1
struct 包含两个基本变量
type=2
type=3
描述复杂类型的矩阵
返回 LMI 的函数的内部描述 getlmis
1
| lmisys = getlmis % lmisys 称为存储在机器内部线性矩阵不等式系统的名称,一个线性矩阵不等式以 setlmis 开始,以 getlmis 结束
|
确定线性矩阵不等式中各项的内容 lmiterm
1
| lmiterm(termID, A, B, flag);
|
termID:是一个四项的整数向量,用于指定 LMI 中相的位置和所涉及的矩阵变量
termID(1) = +p/-p,其中 +p 表示第 p 个 LMI 左侧项,-p 表示第 p 个 LMI 右侧的相,也就是 $X_1termID(2 : 3) = [0, 0],对应于外部的矩阵termID(2 : 3) = [i, j],对应于左/右侧因子的第 (i, j) 块中的项termID(4) = 0 对应与外部的变量termID(4) = x 对应于变量 AXB ,X 是所需要反馈的矩阵变量,A,B是设定好的矩阵termID(4) = -x 对应于变量 AX’B
对于 (AXB) + (AXB)' = AXB + B'XA' 设置 flag = 's' ,允许使用单个 lmiterm 命令指定类别
约束条件下求 LMI 可行性问题 feasp
1
| [tmin, xfeas] = feasp(lmisys, options, target); % 如果返回 tmin <= 0 说明系统可行
|
lmisys 称为存储在机器内部线性矩阵不等式系统的名称options 是一个五维向量,用来描述迭代过程中的一些控制参数option(1) 分量不可用option(2) 该参数设定优化迭代过程中允许的最大迭代次数,默认值是 100option(3) 该参数设定了可行域的半径, option(3) = R > 0 表示限制决策变量在球体内 $\sum_{i=1}^Nx_i^2xfeas 的欧式范数不超过 R,该参数默认值为 $R=10^9$。可行域半径的设定可以避免产生具有很大数值的解 x,同时也可以加快计算过程,改进数值稳定性option(4) 该参数可用于加快迭代过程的结束,它提供了反映优化过程中迭代速度和解得到精度之间的一个折中指标。当该参数取值为一个正整数 n 时,表示在最后的 n 次迭代中如果每次迭代后 t 的减小幅度不超过 1%,则优化迭代过程就停止,默认是 10option(5) option(5)=1 表示不显示迭代过程中的数据, option(5)=0 则相反- 将对应的维度设置为 0 就是使用默认值
target 为 tmin 设定了目标值,使得只要 tmin < target 则优化过程停止,默认值为 0
为了调用 feasp 函数,需要首先确定线性矩阵不等式系统
在 LMI 约束下最小化线性目标 mincx
$$
\min C^Tx\\L(x)1
| [copt, xopt] = mincx(lmisys, c, options, xinit, target);
|