MATLAB——LMI工具箱学习笔记(二)

LMI工具箱一般用于求解三类问题

1、可行解问题

寻找一个 x ∈ R N x\in R^N xRN,使得 A ( x ) < B ( x ) A(x)<B(x) A(x)<B(x)成立。

该问题可转化为:

寻找一个最小的t,使得 A ( x ) − B ( x ) ≤ t I A(x)-B(x)\le tI A(x)B(x)tI成立,即: m i n    t min~~t min  t s . t .    A ( x ) − B ( x ) ≤ t I s.t.~~A(x)-B(x)\le tI s.t.  A(x)B(x)tI

MATLAB语言一般表达形式为:
[tmin, xfeas]=feasp(lmisys, options, target)

其中,tmin代表凸优化问题的全局最优值。如果tmin<0,则该问题有可行解;如果tmin>0,则该问题没有可行解。
xfeas用于提取该可行解x,提取方法为x=dec2mat(lmisys,xfeas,X)。
lmisys代表该矩阵不等式系统,需要预先定义好。
options是可选量,用于描述求解参数。
target是可选量,用于为tmin设置目标值,默认值为0,当tmin<target时,迭代停止。

2、具有LMI约束的一个线性目标函数的最小化问题

m i n x    c T x min_{x}~~c^Tx minx  cTx s . t .    A ( x ) < B ( x ) s.t.~~A(x)<B(x) s.t.  A(x)<B(x)

MATLAB语言一般表达形式为:
[copt, xopt]=mincx(lmisys, c, options, xinit, target)

其中,copt代表目标函数值 c T x c^Tx cTx的全局最优值。
xopt代表用于提取最优解,提取方法为x=dec2mat(lmisys,xopt,X)。
lmisys代表该矩阵不等式系统,需要预先定义好。
c是已知变量。
options是可选量,用于描述求解参数。
xinit是可选量,用于表示最优解xopt的一个初猜值,可加快求解过程。
target是可选量,用于为目标函数设置目标值,当 c T x c^Tx cTx<target时,迭代停止。

3、广义特征值的最小化问题

m i n    λ min~~\lambda min  λ s . t .    C ( x ) < D ( x )          0 < B ( x )           A ( X ) < λ B ( x ) s.t.~~C(x)<D(x)\\~~~~~~~~0<B(x)\\~~~~~~~~~A(X)<\lambda B(x) s.t.  C(x)<D(x)        0<B(x)         A(X)<λB(x)

MATLAB语言一般表达形式为:
[lopt, xopt]=gevp(lmisys, nlfc, options, linit, xinit, target)

其中,lopt代表优化问题的全局最优值。
xopt代表用于提取最优解,提取方法为x=dec2mat(lmisys,xopt,X)。
lmisys代表 λ = 1 \lambda =1 λ=1时的矩阵不等式系统。
mlfc代表含 λ \lambda λ的约束的个数。
options是可选量,用于描述求解参数。
linit,xinit是可选量,用于表示最优解lopt、xopt的初猜值,可加快求解过程。
target是可选量,当 λ \lambda λ<target时,迭代停止。

使用gevp必须注意到:

  1. 必须包含 λ = 1 \lambda =1 λ=1的这种情况。
  2. 要把 A ( x ) < B ( x ) A(x)<B(x) A(x)<B(x)放在最后定义。
  3. 必须要有使 0 < B ( x ) 0<B(x) 0<B(x)成立的约束。

4、为mincx确定目标函数 c T x c^Tx cTx

当目标函数是矩阵变量的一个仿射函数时,函数defcx可以为c的确定提供一个方便的方法。
如线性目标函数 T r a c e ( X ) + x 0 T P x 0 Trace(X)+x_0^TPx_0 Trace(X)+x0TPx0,其中X和P是两个对称矩阵变量, x 0 x_0 x0是一个给定向量。
使得 c T x = T r a c e ( X ) + x 0 T P x 0 c^Tx=Trace(X)+x_0^TPx_0 cTx=Trace(X)+x0TPx0的向量c可以用以下命令描述:

n=decnbr(lmisys);	% 获取决策变量个数
c=zeros(n,1);		% 确定向量c的维数

for i=1:n
	[Xj,Pj]=defcx(lmisys,j,X,P);
	c(j)=trace(Xj)+x0'*Pj*x0;
end

循环语句for每次循环取 x j = 1 x_j=1 xj=1,x的其他元为零,利用defcx求取矩阵变量Xj和Pj;然后对X=Xj,P=Pj,求取相应的c(j)。
其他目标函数处理也类似,如目标函数 m i n   γ min~\gamma min γ处理为:

n = decnbr(lmisys);             % 系统决策变量个数
c = zeros(n,1);                 % 确定向量c的维数

for j=1:n
     [r1j]=defcx(lmisys,j,r1);
      c(j)=trace(r1j);
end

本文是作者在日常学习生活中所作,难免有遗漏或错误,遇到问题的读者请点击给我写信向我的邮箱反馈,不胜感激。

  • 17
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值