matlab模糊控制倒立摆控制系统设计仿真 第5页
图5-1 、 (即θ,ω)的模糊隶属度曲线
针对这九个不同的区域,对倒立摆模型进行局部线性化,可以得到倒立摆的模糊模型。这里有五个线性化方程,模糊规则为
If 为ZR and 为ZR then
If 为ZR and 为NG或PO then
If 为NG或PO and 为ZR then
If 为PO and 为PO then
If 为NG and 为NG then
If 为PO and 为NG then
If 为NG and 为PO then
其中
以x和u作为输入,可以建立倒立摆系统的模糊模型,供进一步仿真之用。
对于每个栅格区域选择期望的闭环极点(-4±j5.457),这相当于10%的超调量和1秒的过渡过程。每个子系统采用u=-Fx的反馈控制,据此可以得到这五个子系统的反馈增益矩阵F:
参照倒立摆的模糊建模过程,可以设计模糊控制器,其模糊规则为
If 为ZR and 为ZR then
If 为ZR and 为NG或PO then
If 为NG或PO and 为ZR then
If 为PO and 为PO then
If 为NG and 为NG then
If 为PO and 为NG then
If 为NG and 为PO then
MATLAB程序如下:
%Sugeno型模糊控制器设计
%
%模糊控制器设计
clear
tc=newfis('tc','sugeno');
tc=addvar(tc,'input','theta',[-pi pi]);
tc=addmf(tc,'input',1,'NG','gaussmf',[1.2 -3]);
tc=addmf(tc,'input',1,'ZR','gaussmf',[1.2 0]);
tc=addvar(tc,'input',1,'omega',[-5 5]);
tc=addmf(tc,'input',2,'NG','gaussmf',[1.8 -5]);
tc=addmf(tc,'input',2,'ZR','gaussmf',[1.8 0]);
tc=addmf(tc,'input',2,'PO','gaussmf',[1.8 5]);
tc=addvar(tc,'output','u',[-2 2]);
tc=addmf(tc,'output',1,'No.1','linear',[-357.4135 -45.3333 o]);
tc=addmf(tc,'output',1,'No.2','linear',[-341.4135 -45.3333 o]);
tc=addmf(tc,'output',1,'No.3','linear',[-662.5861 -102.6667 o]);
原文请找腾讯752018766;辣/文-论~文'网
http://www.751com.cn1 3 5 1 1;
2 1 2 1 1;
2 2 1 1 1;
2 3 2 1 1;
3 1 5 1 1;
3 2 3 1 1;
3 3 4 1 1;]
tc=addrule(tc,rulelist);
%系统的模糊建模
model=newfis('model','sugeno');
model=addvar(model,'input','theta',[-pi pi]);
model=addmf(model,'input',1,'NG','gaussmf',[1.2 -3]);
model=addmf(model,'input',1,'ZP','gaussmf',[1.2 0]);
model=addmf(model,'input',1,'PO','gaussmf',[1.2 3]);
model=addvar(model,'input','omega',[-5 5]);
model=addmf(model,'input',2,'NG','gaussmf',[1.8 -5]);
model=addmf(model,'input',2,'ZR','gaussmf',[1.8 0]);
model=addmf(model,'input',2,'PO','gaussmf',[1.8 5]);
model=addvar(model,'input','u',[-5 5]);
model=addmf(model,'input',3,'Any','gaussmf',[1.5 -5]);
model=addvar(model,'output','d_theta',[-2 2]);
model=addmf(model,'output',1,'No.1','linear',[0 1 0 0]);
model=addmf(model,'output',1,'No.2','linear',[0 1 0 0]);
model=addmf(model,'output',1,'No.3','linear',[0 1 0 0]);
model=addmf(model,'output',1,'No.4','linear',[0 1 0 0]);
model=addmf(model,'output',1,'No.5','linear',[0 1 0 0]);
model=addvar(model,'output','d_omega',[-2 2]);
model=addmf(model,'output',2,'No.1','linear',[17.2941 0 -0.1765 0]);
model=addmf(model,'output',2,'No.2','linear',[14.4706 0 -0.1765 0]);
model=addmf(model,'output',2,'No.3','linear',[5.8512 0 -0.0799 0]);
model=addmf(model,'output',2,'No.4','linear',[7.2437 0.5399 -0.0779 0]);
model=addmf(model,'output',2,'No.5','linear',[7.2437 -0.5399 -0.0779 0]);
rulelist1=[1 1 0 4 4 1 1;
1 2 0 3 3 1 1;
1 3 0 5 5 1 1;
2 1 0 2 2 1 1;
2 2 0 1 1 1 1;
2 3 0 2 2 1 1;
3 1 0 5 5 1 1;
3 2 0 3 3 1 1;
3 3 0 4 4 1 1];
Model=addrule(model,rulelist1);
%系统仿真
N=500;h=0.005;
X=[1.309;0];
y=zeros(2,N);
u=zeros(1,N);
for k=2:N
u(k)=(-1)*evalfis([x(1),x(2)],tc);
k0=evalfis([x(1),x(2),u(k)],model)';
x1=x+h*k0/2;
k0=evalfis([x1(1),x1(2),u(k)],model)';
x1=x+h*k0/2;
k0=evalfis([x1(1),x1(2),u(k)],model)';上一页 [1] [2] [3] [4] [5]
matlab模糊控制倒立摆控制系统设计仿真 第5页下载如图片无法显示或论文不完整,请联系qq752018766