我是靠谱客的博主 秀丽大象,最近开发中收集的这篇文章主要介绍MATLAB——LMI工具箱学习笔记(二)LMI工具箱一般用于求解三类问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

1、可行解问题

寻找一个 x ∈ R N xin 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

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

最后

以上就是秀丽大象为你收集整理的MATLAB——LMI工具箱学习笔记(二)LMI工具箱一般用于求解三类问题的全部内容,希望文章能够帮你解决MATLAB——LMI工具箱学习笔记(二)LMI工具箱一般用于求解三类问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部