1.算法描述
T-S模糊模型是复杂非线性系统模糊建模中的一种典型的模糊动态模型,由Takagi 和Sugeno 于1985 年提出,其主要特点:前提部依据系统输入、输出间是否存在局部线性关系来进行划分,结论部由多项式线性方程来表达,从而构成各条规则间的线性组合,使非线性系统的全局输出具有良好的线性描述特性。模糊逻辑的设计不依赖被控对象的模型,但却非常依赖专家经验和知识。模糊逻辑的优点:能将人的控制经验通过模糊规则融入控制器中,通过设计模糊规则,实现高水平的控制器设计。
T-S模糊模型分为2种类型,一型T-S模糊系统是表示光滑非线性系统的有力工具。一般地,两种方法可以获得一型T-S模糊模型。
第一种方法主要基于系统的输入-输出数据,并运用系统辨识算法获得一型T-S模糊模型。当无法获得非线性系统的数学模型,而系统的输入-输出数据又可以获得时,主要采用这一方法。
第二种建模方法主要适合于非线性系统数学模型已知的情形。当非线性系统的数学模型已经被建立,运用扇区非线性法或局部近似方法可以获得期望的一型T-S模糊模型。
在T-S模糊模型中,对于双输入、单输出的系统可以用F条件语句:
来叙述。输出量u是一个数值函数f(x1,x2)。
对于1阶ts模型F推理,设第i条规则为Ri,则:
其中和表示第i条规则中的两个模糊集合。其中pi,qi,ri都是第i条规则的中的常数,他们共同反映了系统的固有特性。当输入量xi激活m条模糊规则时,最终输出U将由这m条规则的输出ui决定。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
A1=[-0.1 50; -1 -10];%A1=3*3
A2=[-0.1-rho^2 50;-1 -10];%A2=3*3
E1=[0.1 -0.5]';%E1=3*1
E2=E1;%E2=3*1
D1=[0.01;0.05];%D1=3*1
D2=D1;%D2=3*1
C=[1 1];%C=2*3
H=0;%H=2*1=[0.01 0]'
phi=1;%eye(2)-H*inv(H'*H)H'
r1=0.5;r2=0.5;
%%%%%%%%
setlmis([])
% 定义未知变量
Gama=lmivar(2,[1 1])%(2,[1 2])
L1=lmivar(2,[2 1])%(2,[3 2])
L2=lmivar(2,[2 1])%(2,[3 2])
M1=lmivar(2,[1 1])%(2,[1 2])
M2=lmivar(2,[1 1])%(2,[1 2])
P=lmivar(1,[2 1])%(1,[3 1])
%LMI i=1
lmiterm([1 1 1 P],1,A1,'s')
% lmiterm([1 1 1 P],-1,D1*inv(H)*C1,'s')
lmiterm([1 1 1 L1],1,C,'s')
lmiterm([1 2 1 Gama],1,phi*C*A1)
lmiterm([1 2 1 M1],1,C)
lmiterm([1 1 2 P],1,E1)
lmiterm([1 1 3 P],-1,D1)
lmiterm([1 1 3 L1],-1,H)
lmiterm([1 2 2 Gama],1,phi*C*E1,'s')
lmiterm([1 2 3 Gama],-1,phi*C*D1)
lmiterm([1 2 3 M1],-1,H)
lmiterm([1 2 4 0],1)
lmiterm([1 3 3 0],-r1*r1)
lmiterm([1 4 4 0],-r2*r2)
%LMI i=2
lmiterm([2 1 1 P],1,A2,'s')
lmiterm([2 1 1 L2],1,C,'s')
lmiterm([2 2 1 Gama],1,phi*C*A2)
lmiterm([2 2 1 M2],1,C)
lmiterm([2 1 2 P],1,E2)
lmiterm([2 1 3 P],-1,D2)
lmiterm([2 1 3 L2],-1,H)
lmiterm([2 2 2 Gama],1,phi*C*E2,'s')
lmiterm([2 2 3 Gama],-1,phi*C*D2)
lmiterm([2 2 3 M2],-1,H)
lmiterm([2 2 4 0],1)
lmiterm([2 3 3 0],-r1*r1)
lmiterm([2 4 4 0],-r2*r2)
%LMI 3
lmiterm([3 1 1 P],-1,1)
%求解器
LMIs=getlmis
[tmin,xfeas]=feasp(LMIs,[0,0,1000,0,0],-0.001)%
%求解各变量的值
P=dec2mat(LMIs,xfeas,P)
Gama=dec2mat(LMIs,xfeas,Gama)
L1=dec2mat(LMIs,xfeas,L1)
L2=dec2mat(LMIs,xfeas,L2)
% r=dec2mat(LMIs,xfeas,r)
M1=dec2mat(LMIs,xfeas,M1)
M2=dec2mat(LMIs,xfeas,M2)
A_098