matlab中LMI工具箱使用
初始化一个 LMI 系统
1 | setlmis(lmi0); |
向 LMI 系统中添加矩阵变量 lmivar
1 | X = lmivar(type, struct); % 常用 |
type类型对应的数值 | 含义 |
---|---|
1 | 对角线对称矩阵格式,每个对角块都是满块 |
2 | 矩形块,struct=[m,n] 表示 m x n 阶矩阵 |
3 | 描述复杂类型的矩阵 |
type=1
struct 包含两个基本变量
- 第一个描述矩阵块的阶数
第二个描述矩阵块的类型
| 0 | 标量 |
| —- | —— |
| 1 | 满块 |
| -1 | 零块 |
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_1<X_2$ 中不等式的左右termID(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^2<R^2$ 中,或者说向量xfeas
的欧式范数不超过 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
1 | [copt, xopt] = mincx(lmisys, c, options, xinit, target); |
LMI 系统由 lmisys
描述。 向量 c 的长度必须与 x 相同。 该长度对应于函数 decnbr
返回的决策变量的数量。 对于用矩阵变量表示的线性目标,可以使用 defcx
轻松导出足够的c向量。
target
是目标函数的一个设定目标,只要某个可行的 x 满足 $e^Tx≤target$,求解过程就停止option
是一个 5 维向量,用来描述优化迭代过程中的一些控制参数option(1)
该参数确定了最优值copt
所要求的精度,默认是 $10^{-2}$option(2)
该参数设定优化迭代过程中允许的最大迭代次数,默认值是 100option(3)
该参数设定了可行域的半径,与feasp
中的定义一致option(4)
该参数用于加快迭代过程的结束,当该参数取值为一个正整数 n 时,表示在最后的 n 次迭代中如果每次迭代后 $C^Tx$ 的减小幅度在给定的京都内,则优化迭代过程就停止,默认是 5option(5)
option(5)=1
表示不显示迭代过程中的数据,option(5)=0
则相反- 将对应的维度设置为 0 就是使用默认值
others
Mat2dec
根据矩阵变量值构造决策变量向量
Dec2mat
从决策变量向量中提取矩阵变量值。将求解器求出的向量,根据对称性转换为普通的矩阵
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LuosBlog!