基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)

基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)
基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)

基于模糊控制的速度控制

——地面智能移动车辆速度控制系统问题描述

利用模糊控制的方法解决速度跟踪问题,即已知期望速度(desire speed),控制油门(throttle output)和刹车(brake output)来跟踪该速度。已知输入:车速和发动机转速(值可观测)。欲控制刹车和油门电压(同一时刻只有一个量起作用)。

算法思想

模糊控制器是一语言控制器,使得操作人员易于使用自然语言进行人机对话。模糊控制器是一种容易控制、掌握的较理想的非线性控制器,具有较佳的适应性及强健性(Robustness)、较佳的容错性(Fault Tolerance)。利用控制法则来描述系统变量间的关系。不用数值而用语言式的模糊变量来描述系统,模糊控制器不必对被控制对象建立完整的数学模式。

Figure 1模糊控制器的结构图

模糊控制的优点:

(1)模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点是现场操作人员的控制经验或相关专家的知识,在设计中不需要建立被控对象的精确的数学模型,因而使得控制机理和策略易于接受与理解,设计简单,便于应用。

(2)由工业过程的定性认识出发,比较容易建立语言控制规则,因而模糊控制对那些数学模型难以获取,动态特性不易掌握或变化非常显著的对象非常适用。

(3)基于模型的控制算法及系统设计方法,由于出发点和性能指标的不同,容易导致较大差异;但一个系统语言控制规则却具有相对的独立性,利用这些控制规律间的模糊连接,容易找到折中的选择,使控制效果优于常规控制器。

(4)模糊控制是基于启发性的知识及语言决策规则设计的,这有利于模拟人工控制的过程和方法,增强控制系统的适应能力,使之具有一定的智能水平。

简化系统设计的复杂性,特别适用于非线性、时变、模型不完全的系统上。

模糊控制的缺点

1.模糊控制的设计尚缺乏系统性,这对复杂系统的控制是难以奏效的。所以如何建立一套系统的模糊控制理论,以解决模糊控制的机理、稳定性分析、系统化设计方法等一系列问题;

2.如何获得模糊规则及隶属函数即系统的设计办法,这在目前完全凭经验进行;

3.信息简单的模糊处理将导致系统的控制精度降低和动态品质变差。若要提高精度则必然增加量化级数,从而导致规则搜索范围扩大,降低决策速度,甚至不能实时控制;

4.如何保证模糊控制系统的稳定性即如何解决模糊控制中关于稳定性和鲁棒性问题。实现步骤以及算法

利用一般控制系统的架构,其中包含五个主要部分:定义变量、模糊化、知识库、逻辑判断及去模糊化,下面将就每一部分做简单的说明:

(1) 定义变量

也就是决定程序被观察的状况及考虑控制的动作,控制变量的选择要能够具有系统特性,而控制变量选择是否正确,对系统的性能将有很大的影响。在此控制问题上,输入变量有速度误差和实际速度,而控制变量则为下一个状态之输出油门和刹车。作为模糊控制器的语言变量,而如何选择则有赖工程师对于系统的了解和专业知识而定。因此,经验和工程知识在选择控制变量时占有相当重要的角色。

(2) 模糊化(fuzzify)

将输入值以适当的比例转换到论域的数值,利用口语化变量来描述测量物理量的过程,依适合的语言值(linguistic value)求该值相对之隶属度,此口语化变量我们称之为模糊子集合(fuzzy subsets)。当控制变量确定之后,接下来就是根据经验写出控制规则,但是在做成模糊控制规则之前,首先必需对模糊控制器的输入和输出变量空间做模糊分割。

本案例中输入空间有两个变量,可以用三个或五个模糊集合对空间做模糊分割,划分成三个或五个区域。由于程序实现的复杂性,暂时设置为三个。

模糊分割时各领域间重叠的程度大大地影响控制的性能;一般而言,模集合重叠的程度并没有明确的决定方法,目前大都依靠模拟和实验的调整决定分割方式,不过有文献提出大约1/3~1/2最为理想。重叠的部份意味着模糊控制规则间模糊的程度,因此模糊分割是模糊控制的重要特征。

由于隶属度函数是连续型的,这里采用高斯型的隶属函数。

Figure 2 速度误差的隶属度函数

即v ?的隶属度函数分别为: 110()

26120

()26

1

30

()261 0<10:() 10:() 30

:() 1 30v v v v P S v e v P M v e

e v P B v v μμμ?--?--

?--?

?=???≥??=???

??≥? 110

()26120

()26

1

30

()261 10<0

:() 10:() 30<0

:() 1 30

v v v v N S v e

v N M v e

e v N B v v μμμ?+-?+-

?+--?

?=???≤-??=??-?

??≤-?

其中左边为误差为正的情况,此时只有油门的输出,右边为误差为负的情况,此时只有

刹车的输出。

实际速度的隶属函数同样采用高斯型的,其图像同样如图Figure 1: 110()

26

120

()26

130()261 10<0:() 10:() 30<0:() 1 30

v v v v S v e v M v e

e v B v v μμμ----

---

=??≤-?=??-<=??≤-?

油门输出的隶属函数: 刹车输出的隶属函数:

1150()

2541300

()254

1

450

()2541 0

:() 1 t 450

t t t S v e M v e

e B v μμμ----

--

?=??≥?=??<=?

?≥? 18

()26

116()26

124

()26

:()

:():()v v v S b e

M b e

B b e

μμμ--

--

--

===

上式中,NB,NM,NS,ZO,PS,PM,PB等是论域中模糊集合的标记,其意义如下所示:

NB=负方向大的偏差(Negative Big);

NM=负方向中的偏差(Negative Medium);

NS=负方向小的偏差(Negative Small);

ZO=近于零的偏差(Zero);

PS=正方向小的偏差(Positive Small);

PM=正方向中的偏差(Positive Medium);

PB=正方向大的偏差(Positive Big)。

图中将模糊集合之全集合加以正规化为区间(0,1),在模糊控制上,使用标准化的模糊变量,其全集也常正规化,这时之正规化常数(亦称为增益常数),也是在设计模糊控制器时必须决定的重要参数。

(3) 规则库

包括数据库(data base)与规则库(rule base)两部分,其中数据库是提供处理模糊数据之相关定义;而规则库则由一群语言控制规则描述控制目标和策略。控制规则是模糊控制器的核心,规则的正确与否直接影响控制器的性能,而规则数目的多寡也是一个重要因素,因此下面将对控制规则做进一步的探讨。

模糊控制规则的取得方式:

a.专家的经验和知识

前面曾经提到模糊控制也称为控制上的专家系统,专家的经验和知识是设计上有余力的线索。人类日常生活常中判断事情时,使用语言定性分析多于数值定量分析;而模糊控制规则提供了一个自然的架构来描述人类的行为及决策分析,并且专家的知识通常可用if….then 的型式来表示。

藉由询问经验丰富的专家,在获得系统的知识后,将知识改为if….then的型式,则如此便可构成模糊控制规则。为了获得最佳的系统性能,常需多次使用试误法,以修正模糊控制规则。

b.操作员的操作模式

现在流行的专家系统,其想法只考虑知识的获得,专家巧妙地操作复杂的控制对象,但要将专家的诀窍加以逻辑化并不容易;因此,在控制上也要考虑技巧的获得。在许多工业系统无法以一般的控制理论做正确的控制,但是熟练的操员在没有数学模式下,也能够成功地控制这些系统;因此,记录操作员的操作模式,并将其整理为if….then的型式,可构成一组控制规则。

c.学习

为了改善模糊控制器的性能,必须让它有自我学习或自我组织的能力,得模糊控制器能依设定的目标,增加或修改模糊控制规则。

模糊控制规则的型式:

状态评估模糊控制规则

状态评估(state evaluation)模糊控制规则为类似人类的直觉思考,所以大多数的模糊控制器都使用这种模糊控制规则,其型式如下:

Ri:if x1 is Ai1 and x2 is Ai2….and xn i s Ain then y is Ci ;

其中x1,x2,…,xn及y为语言变量或称为模糊变量,代表系统的态变量和控制变量;Ai1,Ai2,…,Ain及Ci为语言值,代表论域中的模糊集合。其次还有另一种表示法,是将后件部改为系统状态变量的函数,其形式如下:

Ri:if x1 is Ai1 and x2 is Ai2….and xn is Ain then y=f1(x1,x2,…,xn)

设计模糊控制规则时,是在所设想对控制对象各阶段之反应,记述采取那一种控制比较好;首先选择各阶段的特征点,记录在模糊控制规则的前件部,然后思考在该点采取的动作,记录在模糊控制规则的后件部可分别得到如下的控制规则库:

a1:If v

?is PS and v is B then T is B;

b1:If v

?is PM and v is CE then T is CE;

c1:If v

?is PB and v is S then T is S ;

……

表为依上述程序所构成的9条控制规则,其中纵列为v值,横列为v

?值,表中所列之值为控制油门输出T值。由Table1可知规则数最多可为18条,但是v

?的值为负时,只有刹车B的输出。表中只使用了其中15条控制规则,也可依实际结果以及实验需求自行加减规则之数量;为了改善控制的结果,也可适当的改变规则数量以及规则。

(4) 模糊推理

推理模仿人类下判断时的模糊概念,运用模糊逻辑和模糊推论法进行推论,而得到模糊控制信号。不精确的前提集合中得出可能的不精确结论的推理过程,又称近似推理。在人的思维中,推理过程常常是近似的。此部分是模糊控制器的精髓所在。把模糊规则库中的模糊IF-Then规则结合起来,利用最大最小规则,程序实现的主要部分为该部分的内容。(5) 去模糊化(defuzzify)

将推论所得到的模糊值转换为明确的控制信号,做为系统的输出值。在实行模糊控制时,将许多控制规则进行上述推论演算,然后结合各个由演算得到的推论结果获得控制输出。为了求得受控系统的输出,必须将模糊集合去模糊化,本例中使用的是最大平均值法(Mean of Maximal,MOM):取隶属度最大的所有元素代表取模糊推论结论中,具有最大隶属度值作为去模糊化的输出值。若同时具有多点最大,则取平均值,该方法简单易操作。

结果分析

由于该方法所设的隶属函数数量较少分别为3个,所以实验结果会存在数值较少,输出只会固定在几个值之间,而在两个隶属函数交叉相对较多的区间下,结果的可信度将提高,同时由于实验中未能进行智能车实跑,所以不能进行数据的进一步分析和实验方法的改进,若要加强该控制精度,一方面应该增加规则数量,另一方面通过具体实验结果更改规则库中规则。

实验中遇到的问题与总结

问题归结为模糊控制的经典问题:

1.模糊规则及隶属函数如何获得;

2.如何保证该系统你给的稳定性;

3.实际操作中,编程实现时对于问题的数学化建立模型遇到了不小的困难,同时编程也是以极大的考验,尤其是在C语言编程实现时。

尽管模糊控制理论已在各大领域取得了极大的成就,但就此问题依然有若干问题急需解决,这就进一步要求我们给出模糊控制器的系统化设计方法;同时把握模糊控制的发展方向:由于模糊规则是人们对过程或对象模糊信息的归纳,对高阶、非线性、大时滞、时变因素以及随机干扰等难以获得完整的先验经验,使得单纯的模糊控制在此问题上显得有些粗糙,并且难以获得适应不同的运行状态,影响控制效果。利用和其他经典的控制理论的结合来控制。例如利用神经网络(BP)实现模糊控制规则或模糊推理,同样的算法还有PID、遗传算法等。

附录

matlab程序

%%两个输入分别为deltav和desire speed;%

%%两个输入分别为throttle output和brake output%

% data=load('speedcontrol.dat');

% Dspeed=data(:,2);%desire speed;

% clear all

% clc

%

%x=9;%input1

function [output1,output2]=new(input1,input2)

x=input1;

uxy1=[2,1,1;3,2,1;3,3,2];%rule base 1

uxy2=[2,1,1;1,2,2;3,3,3];%rule base 2

ux01=0;%degree of membership of error;

ux02=0;

if (x>=0)&&(x<10)

ux1=1;

else

if (x>=10)

ux1=exp((-0.5)*((x-10)/6).^2);

end

end

ux2=exp((-0.5)*((x-20)/6).^2);

if (x<30)

ux3=exp((-0.5)*((x-30)/6).^2);

else

if(x>=30)

ux3=1;

end

end

if (x<=0)&&(x>-10)

ux1=1;

else

if (x<=-10)

ux1=exp((-0.5)*((x+10)/6).^2);

end

end

ux2=exp((-0.5)*((x+20)/6).^2);

if (x>-30)&&(x<0)

ux3=exp((-0.5)*((x+30)/6).^2);

else

if(x<=-30)

ux3=1;

end

end

uxgroup=[ux1,ux2,ux3];

a=sort(uxgroup);

[i1,j1] = find(uxgroup==a(3));

[i2,j2] = find(uxgroup==a(2));

ux01=uxgroup(j1);

ux02=uxgroup(j2);

y=input2;%input2

uy01=0;%degree of membership of actual speed; uy02=0;

if (y>=0)&&(y<10)

uy1=1;

else

if (y>=10)

uy1=exp((-0.5)*((y-10)/6).^2);

end

end

uy2=exp((-0.5)*((y-20)/6).^2);

if (y<30)

uy3=exp((-0.5)*((y-30)/6).^2); else

if(y>=30)

uy3=1;

end

end

uygroup=[uy1,uy2,uy3];

b=sort(uygroup);

b1=b(3);

b2=b(2);

[k1,l1] = find(uygroup==b(3));

[k2,l2] = find(uygroup==b(2));

uy01=uygroup(l1);

uy02=uygroup(l2);

z=1:1:460;%output1

uz=0;%degree of membership of throttle; uz1=exp((-0.5)*((z-150)/54).^2);

uz2=exp((-0.5)*((z-300)/54).^2);

uz3=exp((-0.5)*((z-450)/54).^2); uzgroup=[uz1;uz2;uz3];

%%max-min

%%min

position1=uxy1(j1,l1);

min1=min(ux01,uy01);

min1=min1(1);

min11=min(min1,uzgroup(position1,:)); position2=uxy1(j1,l2);

min2=min(ux01,uy02);

min2=min2(1);

min12=min(min2,uzgroup(position2,:)); position3=uxy1(j2,l1);

min3=min(ux02,uy01);

min3=min3(1);

min13=min(min3,uzgroup(position3,:)); position4=uxy1(j2,l2);

min4=min(ux02,uy02);

min4=min4(1);

min14=min(min4,uzgroup(position4,:)); %%max

minall=[min11;min12;min13;min14]; maxminvalue=max(minall);

uoutput=max(maxminvalue);

[ss,ss1] = find(maxminvalue==uoutput);

output1=mean(ss1);%%throttle output和brake output% b=1:1:30;%output2

ub=0;%degree of membership of brake;

ub1=exp((-0.5)*((b-8)/6).^2);

ub2=exp((-0.5)*((b-16)/6).^2);

ub3=exp((-0.5)*((b-24)/6).^2);

ubgroup=[ub1;ub2;ub3];

%%max-min

%%min

position5=uxy2(j1,l1);

min5=min(ux01,uy01);

min5=min5(1);

min15=min(min5,ubgroup(position5,:));

position6=uxy2(j1,l2);

min6=min(ux01,uy02);

min6=min6(1);

min16=min(min6,ubgroup(position6,:));

position7=uxy2(j2,l1);

min7=min(ux02,uy01);

min7=min2(1);

min17=min(min7,ubgroup(position7,:));

position8=uxy2(j2,l2);

min8=min(ux02,uy02);

min8=min8(1);

min18=min(min8,ubgroup(position8,:));

%%max

minall02=[min15;min16;min17;min18];

maxminvalue02=max(minall02);

uoutput2=max(maxminvalue02);

[ss01,ss102] = find(maxminvalue02==uoutput2); output2=mean(ss102); %%brake output%

if (x>0)

output2=0;

else

output1=0;

end

C程序

#include

#include

double max(double i,double j)

{ return i>j?i:j;}

double min(double i,double j)

{ return i

void main()

{

//初始化

double x=0,ux1=0,ux2=0,ux3=0,ux01=0,ux02=0;

double y=0,uy1=0,uy2=0,uy3=0,uy01=0,uy02=0;

//输入速度误差和期望速度,其中第一个参数为速度误差,第二个参数为期望速度cout<<"输入速度和速度的值"<

cin>>x>>y;

if(x>0&&x<10)

ux1=1;

else

ux1=exp((-0.5)*pow((x-10.0)/6.0,2));

ux2=exp((-0.5)*pow((x-20.0)/6.0,2));

if(x>0&&x<30)

ux3=exp((-0.5)*pow((x-30.0)/6.0,2));

else

ux3=1;

int px1=0,px2=0;

if(ux1>ux2)

if(ux1>ux3)

if(ux2>ux3)

{

ux01=ux1;

px1=1-1;

ux02=ux2;

px2=2-1;

}

else

{

ux01=ux1;

px1=1-1;

ux02=ux3;

px2=3-1;

}

else

{

ux01=ux3;

px1=3-1;

ux02=ux1;

px2=1-1;

}

else

if(ux2>ux3)

if(ux1>ux3)

{

ux01=ux2;

px1=2-1;

ux02=ux1;

px2=1-1;

}

else

{

ux01=ux2;

px1=2-1;

ux02=ux3;

px2=3-1;

}

else

{

ux01=ux3;

px1=3-1;

ux02=ux2;

px2=2-1;

}

cout<<"ux1="<

cout<<"ux01="<

if(y>0&&y<10)

uy1=1;

else

uy1=exp((-0.5)*pow((y-10.0)/6.0,2));

uy2=exp((-0.5)*pow((y-20.0)/6.0,2));

if(x>0&&x<30)

uy3=exp((-0.5)*pow((y-30.0)/6.0,2));

else

uy3=1;

int py1=0,py2=0;

if(uy1>uy2)

if(uy1>uy3)

if(uy2>uy3)

{

uy01=uy1;

py1=1-1;

uy02=uy2;

py2=2-1;

}

else

{

uy01=uy1;

py1=1-1;

uy02=uy3;

py2=3-1;

}

else

{

uy01=uy3;

py1=3-1;

uy02=uy1;

py2=1-1;

}

else

if(uy2>uy3)

if(uy1>uy3)

{

uy01=uy2;

py1=2-1;

uy02=uy1;

py2=1-1;

}

else

{

uy01=uy2;

py1=2-1;

uy02=uy3;

py2=3-1;

}

else

{

uy01=uy3;

py1=3-1;

uy02=uy2;

py2=2-1;

}

cout<<"uy1="<

cout<<"uy01="<

// cout<<"x="<

int z; //output1

double uz1[460],uz2[460],uz3[460];

double uz=0; //degree of membership of throttle;

for(z=0;z<=459;z++)

{

if (z<150)

uz1[z]=1;

else

uz1[z]=exp((-0.5)*pow((z-150.0)/54.0,2));

uz2[z]=exp((-0.5)*pow((z-300.0)/54.0,2));

if (z<450)

uz3[z]=exp((-0.5)*pow((z-450.0)/54,2));

else

uz3[z]=1;

}

cout<<"uz1[162]="<

int uxy01[3][3]={2,1,1,3,2,1,3,3,2};

int uxy02[3][3]={2,1,1,1,2,2,3,3,3};

double min1,min2,min3,min4;

double min11[460],min12[460],min13[460],min14[460];

min1=min(ux01,uy01);

switch (uxy01[px1][py1])

{

case 1:

for(z=0;z<=459;z++)

{

min11[z]=min(min1,uz1[z]);

}

case 2:

for(z=0;z<=459;z++)

{

min11[z]=min(min1,uz2[z]);

};

case 3:

for(z=0;z<=459;z++)

{

min11[z]=min(min1,uz3[z]);

}

}

min2=min(ux01,uy02);

switch (uxy01[px1][py2])

{

case 1:

for(z=0;z<=459;z++)

{

min12[z]=min(min2,uz1[z]);

}

case 2:

for(z=0;z<=459;z++)

{

min12[z]=min(min2,uz2[z]);

};

case 3:

for(z=0;z<=459;z++)

{

min12[z]=min(min2,uz3[z]);

}

}

min3=min(ux02,uy01);

switch (uxy01[px2][py1])

{

case 1:

for(z=0;z<=459;z++)

{

min13[z]=min(min3,uz3[z]);

}

case 2:

for(z=0;z<=459;z++)

{

min13[z]=min(min3,uz2[z]);

};

case 3:

for(z=0;z<=459;z++)

{

min13[z]=min(min3,uz3[z]);

}

}

min4=min(ux02,uy02);

switch (uxy01[px2][py2])

{

case 1:

for(z=0;z<=459;z++)

{

min14[z]=min(min4,uz1[z]);

}

case 2:

for(z=0;z<=459;z++)

{

min14[z]=min(min4,uz2[z]);

};

case 3:

for(z=0;z<=459;z++)

{

min14[z]=min(min4,uz3[z]);

}

}

//max of max-min method

double maxvalue[460];

for(z=0;z<=459;z++)

{

maxvalue[z]=max(max(max(min11[z],min12[z]),min13[z]),min14[z]);

}

cout<<"min1="<

cout<<"maxvalue"<

int j,k,sumj;

j=0;

double output1;

double uoutput=maxvalue[0];

for(z=0;z<=459;z++)

if(maxvalue[z]>=uoutput)

{

uoutput=maxvalue[z];

j=z;

}

cout<<"uoutput="<

k=0;

sumj=0;

for(z=0;z<=459;z++)

if(maxvalue[z]==uoutput)

{

sumj+=z;

k=k+1;

}

output1=sumj/k;

cout<<"output1="<

}

模糊控制系统及其MATLAB实现

1. 模糊控制的相关理论和概念 1.1 模糊控制的发展 模糊控制理论是在美国加州伯克利大学的L.A.Zadeh 教授于1965 年建立的模糊集合论的数学基础上发展起来的。之后的几年间Zadeh 又提出了模糊算法、模糊决策、模糊排序、语言变量和模糊IF-THEN 规则等理论,为模糊理论的发展奠定了基础。 1975年,Mamdani 和Assilian 创立了模糊控制器的基本框架,并用于控制蒸汽机。 1978年,Holmblad 和Ostergaard 为整个工业过程开发出了第一个模糊控制器——模糊水泥窑控制器。 20世纪80年代,模糊控制开始在工业中得到比较广泛的应用,日本仙台地铁模糊控制系统的成功应用引起了模糊领域的一场巨变。到20世纪90年代初,市场上已经出现了大量的模糊消费产品。 近30 年来, 因其不依赖于控制对象的数学模型、鲁棒性好、简单实用等优点, 模糊控制已广泛地应用到图像识别、语言处理、自动控制、故障诊断、信息检索、地震研究、环境预测、楼宇自动化等学科和领域, 并且渗透到社会科学和自然科学许多分支中去, 在理论和实际运用上都取得了引人注目的成果。 1.2模糊控制的一些相关概念 用隶属度法来定义论域U 中的集合A ,引入了集合A 的0-1隶属度函数,用()A x μ表示,它满足: 1 ()0A x μ?=?? x A x A ∈? 用0-1之间的数来表示x 属于集合A 的程度,集合A 等价与它的隶属度函数()A x μ 模糊系统是一种基于知识或基于规则的系统。它的核心就是由所谓的 IF-THEN 规则所组成的知识库。一个模糊的IF-THEN 规则就是一个用连续隶属度函数对所描述的某些句子所做的IF-THEN 形式的陈述。例如: 如果一辆汽车的速度快,则施加给油门的力较小。 这里的“快”和“较小”分别用隶属度函数加以描述。模糊系统就是通过组合IF-THEN 规则构成的。 构造一个模糊系统的出发点就是要得到一组来自于专家或基于该领域知识的模糊IF-THEN 规则,然后将这些规则组合到单一系统中。不同的模糊系统可采用不用的组合原则。 用隶属度函数表征一个模糊描述后,实质上就将模糊描述的模糊消除了。 模糊控制系统设计的关键在于模糊控制器的设计。模糊控制器的设计主要有三个部分: (1) 输入量的模糊化 所谓模糊化(Fuzzification) 就是先将某个输入测量量的测量值作标准化处理,把该输入测量量的变化范围映射到相应论域中,再将论域中的各输入数据以相应

基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)

基于模糊控制的速度控制 ——地面智能移动车辆速度控制系统问题描述 利用模糊控制的方法解决速度跟踪问题,即已知期望速度(desire speed),控制油门(throttle output)和刹车(brake output)来跟踪该速度。已知输入:车速和发动机转速(值可观测)。欲控制刹车和油门电压(同一时刻只有一个量起作用)。 算法思想 模糊控制器是一语言控制器,使得操作人员易于使用自然语言进行人机对话。模糊控制器是一种容易控制、掌握的较理想的非线性控制器,具有较佳的适应性及强健性(Robustness)、较佳的容错性(Fault Tolerance)。利用控制法则来描述系统变量间的关系。不用数值而用语言式的模糊变量来描述系统,模糊控制器不必对被控制对象建立完整的数学模式。 Figure 1模糊控制器的结构图 模糊控制的优点: (1)模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点是现场操作人员的控制经验或相关专家的知识,在设计中不需要建立被控对象的精确的数学模型,因而使得控制机理和策略易于接受与理解,设计简单,便于应用。 (2)由工业过程的定性认识出发,比较容易建立语言控制规则,因而模糊控制对那些数学模型难以获取,动态特性不易掌握或变化非常显著的对象非常适用。 (3)基于模型的控制算法及系统设计方法,由于出发点和性能指标的不同,容易导致较大差异;但一个系统语言控制规则却具有相对的独立性,利用这些控制规律间的模糊连接,容易找到折中的选择,使控制效果优于常规控制器。 (4)模糊控制是基于启发性的知识及语言决策规则设计的,这有利于模拟人工控制的过程和方法,增强控制系统的适应能力,使之具有一定的智能水平。 简化系统设计的复杂性,特别适用于非线性、时变、模型不完全的系统上。 模糊控制的缺点

实验一--模糊控制器的MATLAB仿真

实验一 模糊控制器的MATLAB 仿真 一、实验目的 本实验要求利用MATLAB/SIMULINK 与FUZZYTOOLBOX 对给定的二阶动态系统,确定模糊控制器的结构,输入和输出语言变量、语言值及隶属函数,模糊控制规则;比较其与常规控制器的控制效果;研究改变模糊控制器参数时,系统响应的变化情况;掌握用 MATLAB 实现模糊控制系统仿真的方法。 实验时数:3学时。 二、实验设备:计算机系统、Matlab 仿真软件 三、实验原理 模糊控制器它包含有模糊化接口、规则库、模糊推理、清晰化接口等部分,输人变量是过程实测变量与系统设定值之差值。输出变量是系统的实时控制修正变量。模糊控制的核心部分是包含语言规则的规则库和模糊推理。模糊推理就是一种模糊变换,它将输入变量模糊集变换为输出变量的模糊集,实现论域的转换。工程上为了便于微机实现,通常采用“或”运算处理这种较为简单的推理方法。Mamdani 推理方法是一种广泛采用的方法。它包含三个过程:隶属度聚集、规则激活和输出总合。模糊控制器的体系结构如图1所示。 图1 模糊控制器的体系结构 四、实验步骤 (1)对循环流化床锅炉床温,对象模型为 ()()1140130120 ++s s 采用simulink 图库,实现常规PID 和模糊自整定PID 。 (2)确定模糊语言变量及其论域:模糊自整定PID 为2输入3输出的模糊控制器。该模糊控制器是以|e|和|ec|为输入语言变量,Kp 、Ki 、Kd 为输出语言变量,其各语言变量的论域如下:

误差绝对值:e={0,3,6,10}; 误差变化率绝对值:ec={0,2,4,6}; 输出Kp:Up={0,0.5,1.0,1.5}; 输出Ki:Ui={0,0.002,0.004,0.006}; 输出Kd:Ud={0,3,6,9}。 (3)语言变量值域的选取:输入语言变量|e|和|ec|的值域取值“大”(B)、“中”(M)、“小”(s)和“零”(Z) 4种;输出语言变量Kp、Ki、Kd的值域取值为“很大”(VB)、“大”(B)、“中”(M)、“小”(s) 4种。 (4)规则的制定:根据PID参数整定原则及运行经验,可列出输出变量Kp、Ki、Kd 的控制规则表。 (5)推理方法的确定 隐含采用“mamdani”方法:max-min; 推理方法,即“min”方法; 去模糊方法:面积中心法; 选择隶属函数的形式:三角型。

简易模糊控制器设计及MATLAB仿真

简易模糊控制器的设计及仿真 摘要:模糊控制(Fuzzy Control )是以模糊集理论、模糊语言和模糊逻辑推理为基础的一种控制方法,它从行为上模仿人的模糊推理和决策过程。本文利用MATLAB/SIMULINK 与FUZZY TOOLBOX 对给定的二阶动态系统,确定模糊控制器的结构,输入和输出语言变量、语言值及隶属函数,模糊控制规则,比较其与常规控制器的控制效果,用MATLAB 实现模糊控制的仿真。 关键词:模糊控制 参数整定 MATLAB 仿真 二阶动态系统模型: ()()1140130120 ++s s 采用simulink 图库,实现常规PID 和模糊自整定PID 。 一.确定模糊控制器结构 模糊自整定PID 为2输入3输出的模糊控制器。在MATLAB 的命令窗口中键入fuzzy 即可打开FIS 编辑器,其界面如下图所示。此时编辑器里面还没有FIS 系统,其文件名为Untitled ,且被默认为Mandani 型系统。默认的有一个输入,一个输出,还有中间的规则处理器。在FIS 编辑器界面上需要做一下几步工作。 首先,模糊自整定PID 为2输入3输出的模糊控制器,因此需要增加一个输入两个输出,进行的操作为:选择Edit 菜单下的Add Variable/Input 菜单项。

如下图。 其次,给输入输出变量命名。单击各个输入和输出框,在Current Variable 选项区域的Name文本框中修改变量名。如下图 最后,保存系统。单击File菜单,选择Export下的To Disk项。这里将创建的系统命名为PID_auot.fi。 二.定义输入、输出模糊集及隶属函数

基于matlab的模糊控制器的设计与仿真

基于MATLAB的模糊控制器的设计与仿真 摘要:本文对模糊控制器进行了主要介绍。提出了一种模糊控制器的设计与仿真的实现方法,该方法利用MA TLB模糊控制工具箱中模糊控制器的控制规则和隶属度函数,建立模型,并进行模糊控制器设计与仿真。 关键词:模糊控制,隶属度函数,仿真,MA TLAB 1 引言 模糊控制是一种特别适用于模拟专家对数学模型未知的较复杂系统的控制,是一种对模型要求不高但又有良好控制效果的控制新策略。与经典控制和现代控制相比,模糊控制器的主要优点是它不需要建立精确的数学模型。因此,对一些无法建立数学模型或难以建立精确数学模型的被控对象,采用模糊控制方法,往往能获得较满意的控制效果。 模糊控制器的设计比一般的经典控制器如PID控制器要复杂,但如果借助MATLAB则系统动态特性良好并有较高的稳态控制精度,可提高模糊控制器的设计效率。本文在MATLAB环境下针对某个控制环节对模糊控制系统进行了设计与仿真。 2 模糊控制器简介 模糊控制器是一种以模糊集合论,模糊语言变量以及模糊推理为数学基础的新型计算机控制方法。显然,模糊控制的基础是模糊数学,模糊控制的实现手段是计算机。本章着重介绍模糊控制的基本思想,模糊控制的基本原理,模糊控制器的基本设计原理和模糊控制系统的性能分析。 随着科学技术的飞速发展,在那些复杂的,多因素影响的严重非线性、不确定性、多变性的大系统中,传统的控制理论和控制方法越来越显示出局限性。长期以来,人们期望以人类思维的控制方案为基础,创造出一种能反映人类经验的控制过程知识,并可以达到控制目的,能够利用某种形式表现出来。而且这种形式既能够取代那种精密、反复、有错误倾向的模型建造过程,又能避免精密的估计模型方程中各种方程的过程。同时还很容易被实现的,简单而灵活的控制方式。于是模糊控制理论极其技术应运而生。 3 模糊控制的特点 模糊控制是以模仿人类人工控制特点而提出的,虽然带有一定的模糊性和主观性,但往往是简单易行,而且是行之有效的。模糊控制的任务正是要用计算机来模拟这种人的思维和决策方式,对这些复杂的生产过程进行控制和操作。所以,模糊控制有以下特点: 1)模糊控制的计算方法虽然是运用模糊集理论进行的模糊算法,但最后得到的控制规律是确定

洗衣机模糊控制matlab仿真

洗衣机模糊控制仿真 1.模糊控制背景 美国教授查徳(L.A.Zandeh)在1965年首先提出模糊集合的概念,由此打开了模糊数学及其应用的大门。 1974年英国教授马丹尼(E.H.Mamdani)首先将模糊集合理论应用于加热器的控制,创造了模糊控制的基本框架。 1980年,Sugeno开创了日本的首次模糊应用——控制一家富士电子水净化厂。1983年他又开始研究模糊机器人。 随着模糊控制技术的不断发展,模糊控制逐渐被应用到日用家电产品的控制,例如电饭锅﹑照相机﹑吸尘器﹑洗衣机等。 2.仿真目的 本次仿真的主要目的是设计一个比较合理的洗衣机模糊控制器,它能够根据被洗涤衣物的污泥多少和油脂多少,综合得到洗涤时间,从而达到最佳的洗涤效果。 3.仿真方法 本次仿真借助matlab中集成的模糊控制工具箱,使用图形界面进行模糊控制器的设计。最后随意给定几组输入,得到输出并作出简单分析。4.模糊控制器的设计 4.1模糊控制器理论设计方法 ①选择合适的模糊控制器类型; ②确定输入输出变量的实际论域; ③确定e,e?,u ?的模糊集个数及各模糊集的隶属度函数; ④输出隶属度函数选为单点,可使解模糊简单; ⑤设计模糊控制规则集; ⑥选择模糊推理方法; ⑦解模糊方法。

4.2实际设计过程 ①模糊控制器类型:选用两输入单输出模糊控制器,控制器输入为衣物的污泥和油脂,输出为洗涤时间。 ②确定输入输出变量的实际论域:输入为Mud(污泥)和Grease (油脂),设置Range=[0 100](输入变化范围为[0,100]);输出为Time(洗涤时间),Range=[0 60](输出变化范围为[0,60])。 对应matlab 中模糊控制模块: ③确定模糊集个数及各模糊集的隶属度函数:将污泥分为3个模糊集:SD (污泥少)MD (污泥中)LD(污泥多);將油脂分为三个模糊集:NG (油脂少)MG (油脂中)LG (油脂多);将洗涤时间非为5个模糊集:VS (很短)S (短)M (中等)L (长)VL (很长)。 输入﹑输出隶属度函数都定为三角形隶属函数。结合④输出隶属度函数选为单点,可使解模糊简单;定义污泥隶属函数如下 50)50()(x x SD -=μ 0≤x ≤50 50 x 0≤x ≤50 =Mad μ =)(x MD μ 50 ) 100(x - 50<x ≤100 50)50()(-=x x LD μ 50<x ≤100 对应matlab 中隶属度函数仿真图如下:

模糊控制系统及其MATLAB实现

模糊控制系统及其MATLAB实现 1. 模糊控制的相关理论和概念 1.1 模糊控制的发展 模糊控制理论是在美国加州伯克利大学的L.A.Zadeh教授于1965 年建立的模 糊集合论的数学基础上发展起来的。之后的几年间Zadeh又提出了模糊算法、模糊 决策、模糊排序、语言变量和模糊IF-THEN规则等理论,为模糊理论的发展奠定了 基础。 1975年,Mamdani和Assilian创立了模糊控制器的基本框架,并用于控制蒸 汽机。 1978年,Holmblad和Ostergaard为整个工业过程开发出了第一个模糊控制器——模糊水泥窑控制器。 20世纪80年代,模糊控制开始在工业中得到比较广泛的应用,日本仙台地铁 模糊控制系统的成功应用引起了模糊领域的一场巨变。到20世纪90年代初,市场 上已经出现了大量的模糊消费产品。 近30 年来, 因其不依赖于控制对象的数学模型、鲁棒性好、简单实用等优点, 模糊控制已广泛地应用到图像识别、语言处理、自动控制、故障诊断、信息并且渗透到社会科学和检索、地震研究、环境预测、楼宇自动化等学科和领域, 自然科学许多分支中去, 在理论和实际运用上都取得了引人注目的成果。 1.2 模糊控制的一些相关概念 用隶属度法来定义论域U中的集合A,引入了集合A的0-1隶属度函数, 用,()x表示,它满足: A xA,1, ,x(),,AxA,0,

用0-1之间的数来表示x属于集合A的程度,集合A等价与它的隶属度函 数,()x A 模糊系统是一种基于知识或基于规则的系统。它的核心就是由所谓的IF-THEN 规则所组成的知识库。一个模糊的IF-THEN规则就是一个用连续隶属度函数对所描述的某些句子所做的IF-THEN形式的陈述。例如: 如果一辆汽车的速度快,则施加给油门的力较小。 这里的“快”和“较小”分别用隶属度函数加以描述。模糊系统就是通过组合IF-THEN规则构成的。 构造一个模糊系统的出发点就是要得到一组来自于专家或基于该领域知识的模糊IF-THEN规则,然后将这些规则组合到单一系统中。不同的模糊系统可采用不用的组合原则。 用隶属度函数表征一个模糊描述后,实质上就将模糊描述的模糊消除了。 模糊控制系统设计的关键在于模糊控制器的设计。模糊控制器的设计主要有三个部分: (1) 输入量的模糊化 所谓模糊化(Fuzzification) 就是先将某个输入测量量的测量值作标准化处理,把该输入测量量的变化范围映射到相应论域中,再将论域中的各输入数据以相应的模糊语言值的形式表示,并构成模糊集合。这样就把输入的测量量转换为用 隶属度函数表示的某一模糊语言变量。 (2) 模糊逻辑推理 根据事先已定制好的一组模糊条件语句构成模糊规则库,运用模糊数学理论对 模糊控制规则进行推理计算,从而根据模糊控制规则对输入的一系列条件进行综合评估,以得到一个定性的用语言表示的量,即模糊输出量。完成这部分功能的过程就是模糊逻辑推理过程。

基于MATLAB的模糊控制洗衣机的设与仿真(谷风软件)

基于MATLAB的模糊控制洗衣机的设计与 仿真 卫瑶瑶,王胜红 (南京农业大学工学院,210031) 摘要:根据模糊控制的原理对传统洗衣机进行改造,设计了模糊控制系统。通过MA TLAB仿真,采用取最大隶属度法得到清晰化结果,所得结果与理论计算结果一致。 关键词:模糊控制;洗衣机;MA TLAB Design and Simulation of Fuzzy Control System of Washing Machine Based on MATLAB Wei yaoyao, Wang Shenghong (College of Engineering,Nanjing Agricultural University,210031) Abstract: This paper designed a fuzzy control system for washing machine based on the theory of fuzzy control. This paper conducted the simulation of MATLAB, and took maximum membership degree method to get the results of clarity. Finally, it’s proved that the simulation results is the same with theory calculation. Keywords: fuzzy control; washing machine; MATLAB 自动控制从最早的开环控制起步,然后是反馈控制、最优控制、随机控制,再到自适应控制、自学习控制、自组织控制,一直发展到自动控制的最新阶段——智能控制。智能控制的几个重要分支有:专家系统、模糊控制、神经网络控制等。作为人类思维外壳的自然语言,本身就带有模糊性,这是计算机所不能理解的。模糊控制是以模糊集合理论和模糊逻辑推理为基础,把专家用自然语言表述的知识和控制经验,通过模糊理论转换成数学函数,再用计算机进行处理。传统控制方法对一个系统进行控制时,首先要建立控制系统的数学模型,即描述系统内部物理量(或变量)之间关系的数学表达式,必须得知道系统模型的结构、阶次、参数等。然而在工程实践中人们发现,有些复杂的控制系统,虽然不能建立起数学模型,无法用传统控制方法进行控制,但是凭借丰富的实际操作经验,技术工人却能够通过相应操作得到满意的控制效果【1】。 模糊控制之所以被人们广泛接受,是因为其有以下优点:(1)模糊控制器的设计不依赖于被控对象的精确数学模型;(2)模糊控制易于被操作人员接受;(3)便于用计算机软件实现;(4)鲁棒性和适应性好。 1 洗衣机模糊控制系统的原理 传统洗衣机从控制角度看,实际上是一台按事先设定好的参数进行顺序控制的机器,它不能根据情况和条件的变化来改变参数。而模糊逻辑控制的智能洗衣机,它能够完成除开启电源、放取衣物之外的全部功能,智能洗衣机的核心是单片机控制板,它具有检测和控制

模糊控制在倒立摆中的MATLAB仿真应用

TAIYUAN UNIVERSITY OF SCIENCE & TECHNOLOGY 题目: 院(系): 专业: 学生姓名: 学号:

模糊控制在倒立摆中的仿真应用 1、倒立摆系统 简介 倒立摆有许多类型,例如图1-1的a和b所示的分别是轮轨式一级倒立摆系统和二级倒立摆系统的模型。倒立摆是一个典型的快速、多变量、非线性、本质不稳定系统,它对倒置系统的研究在理论上和方法论上具有深远的意义。对倒立摆的研究可归结为对非线性多变量本质不稳定系统的研究,其控制方法和思路在处理一般工业过程中也有广泛的用途。近些年来国内外不少专家学者对一级、二级、三级、甚至四级等倒立摆进行了大量的研究,人们试图寻找不同的控制方法实现对倒立摆的控制,以便检查或说明该方法的严重非线性和本质不稳定系统的控制能力。2002年8月11日,我国的李洪兴教授在国际上首次成功实现了四级倒立摆实物控制,也标志着我国学者采用自己提出的控制理论完成的一项具有原创性的世界领先水平的重大科研成果。 图1-1 倒立摆模型 (a)一级倒立摆模型(b)二级倒立摆模型 倒立摆系统可以简单地描述为小车自由地在限定的轨道上左右移动。小车上的倒立摆一端用铰链安装在小车顶部,另一端可以在小车轨道所在的垂直平面内自由转动,通过电机和皮带传动使小车运动,让倒立摆保持平衡并保持小车不和轨道两端相撞。在此基础上在摆杆的另一端铰链其它摆杆,可以组成二级、三级倒立摆系统。该系统是一个多用途的综合性试验装置,它和火箭的飞行及步行机器人的关节运动有许多相似之处,其原理可以用于控制火箭稳定发射、机器人控制等诸多领域。 倒立摆系统控制原理

单级倒立摆系统的硬件包括下面几个部分:计算机、运动控制卡、伺服系统、倒立摆和测量元件,由它们组成的一个闭环系统,如图1-2所示,就是单级倒立摆系统的硬件结构图。 图1-2 单级倒立摆硬件结构图 通过角度传感器可以测量摆杆的角度,通过位移传感器可以得到小车的位置,然后反馈给运动控制卡,运动控制卡与计算机双向通信。计算机获得实时数据,确定控制策略,发送到运动控制卡,运动控制卡执行计算机确定的控制策略,产生相应的控制量,由伺服电机转动来带动小车在水平轨道往复的运动,使摆杆保持倒立。 倒立摆系统状态方程 θ f 图1-3 单级倒立摆模型图 θ为杆与垂线的夹角,f为作用力,杆的质量m=,杆和小车的总重量m=,半杆长l=,重力加速度g=s2,采样周期T=.倒立摆的数学模型为:

模糊控制器的MATLAB仿真

实验一模糊控制器的MATLAB仿真 一、实验目的 本实验要求利用MATLAB/SIMULINK与FUZZYTOOLBOX对给定的二阶动态系统,确定模糊控制器的结构,输入和输出语言变量、语言值及隶属函数,模糊控制规则;比较其与常规控制器的控制效果;研究改变模糊控制器参数时,系统响应的变化情况;掌握用 MATLAB 实现模糊控制系统仿真的方法。 二、实验原理 模糊控制器它包含有模糊化接口、知识库(规则库、数据库)、模糊推理机、解模糊接口等部分。输人变量e(t)是过程实测变量y(t)与系统设定值s(t)之差值。输出变量y(t)是系统的实时控制修正变量。模糊控制的核心部分是包含语言规则的规则库和模糊推理机。而模糊推理就是一种模糊变换,它将输入变量模糊集变换为输出变量的模糊集,实现论域的转换。工程上为了便于微机实现,通常采用“或”运算处理这种较为简单的推理方法。Mamdani推理方法是一种广泛采用的方法。它包含三个过程:隶属度聚集、规则激活和输出总合。模糊控制器的组成框图如图2.1所示。 图2.1 模糊控制器的组成框图 三、模糊推理系统的建立 一个模糊推理系统的建立分为三个步骤:首先,对测量数据进行模糊化;其次,建立规则控制表;最后,输出信息的模糊判决,即对模糊量进行反模糊化,得到精确输出量。 模糊推理系统的建立,往往是设计一个模糊控制系统的基础。建立一个模糊推理系统有两类方法:一种是利用GUI建立模糊推理系统;另一种是利用MATLAB命令建立。下面根据实验内容,利用GUI建立模糊推理系统。 例:对循环流化床锅炉床温,对象模型为

()()1140130120 ++s s 采用simulink 图库,实现常规PID 和模糊自整定PID 。模糊自整定PID 为2输入3输出的模糊控制器。 1、 进入FIS 编辑器 在MATLAB 的命令窗口中键入fuzzy 即可打开FIS 编辑器,其界面如下图所示。此时编辑器里面还没有FIS 系统,其文件名为Untitled ,且被默认为Mandani 型系统。默认的有一个输入,一个输出,还有中间的规则处理器。在FIS 编辑器界面上需要做一下几步工作。 首先,模糊自整定PID 为2输入3输出的模糊控制器,因此需要增加一个输入两个输出,进行的操作为:选择Edit 菜单下的Add Variable/Input 菜单项。如下图。

模糊温度控制器的设计与Matlab仿真(DOC)

模糊温度控制器的设计与Matlab仿真 徐鹏 201403026 摘要:针对温度控制系统的时变、滞后等非线性特性及控制比较复杂的问题,提出了一种模糊控制方案以改善系统的控制性能.该方案采用mamdani推理型模糊控制器代替传统的PID控制器,依据模糊控制规则由SCR移相调控晶闸管控制电阻炉电热功率,实现对温度的控制. Matlab仿真结果表明,模糊控制的引入有效地克服了系统的扰动,改善了控制性能,提高了控制质量. 关键词:温度控制器;模糊控制;仿真分析 中图分类号: TP272 文献标志码:A Abstract:For the temperature controlsystem with the nonlinear characters of time-varying and lag and the comp lexity in control,a fuzzy control algorithm is p resented. Thealgorithm adop tsmamdani reasoning fuzzyPID controller to rep lace the traditional PID controller and use the SCR phase-shift thyristor to control the e-lectric resistance furnace power based on the fuzzy control rules to imp lement the temperature control. Matlabsimulation results show that the fuzzy control can effectively overcome the disturbance and imp rove the con-trol performance. Key words: temperature controller; fuzzy control; simulation analysis 0 引言 在工业生产过程中,温度控制是重要环节,控制精度直接影响系统的运行和产品质量. 在传统的温度控制方法中,一般采取双向可控硅装置,并结合简单控制算法(如PID算法) ,使温度控制实现自动调节. 但由于温度控制具有升温单向性、大惯性、大滞后等特点,很难用数学方法建立精确的模型,因此用传统的控制理论和方法很难达到好的控制效果. 鉴于此,本文拟以模糊控制为基础的温度智能控制系统,采用人工智能中的模糊控制技术,用模糊控制器代替传统的PID 控制器,以闭环控制方式实现对温度的自动控制. 1温度控制系统的硬件组成 在该温度控制装置中,由SCR移相调控晶闸管控制电阻炉来实现对温度的控制. 在温控系统中,通过CAN总线将控制站、操作站和通信处理单元连为一体. 温度控制系统的结构简图如图1所示.

基于MATLAB的模糊控制系统设计

实验一基于MATLAB的模糊控制系统设计 1.1实验内容 (1)基于MATLAB图形模糊推理系统设计,小费模糊推理系统; (2)飞机下降速度模糊推理系统设计; (3)水箱液位模糊控制系统设计及仿真运行。 1.2实验步骤 1小费模糊推理系统设计 (1)在MATLAB的命令窗口输入fuzzy命令,打开模糊逻辑工具箱的图形用户界面窗口,新建一个Madmdani模糊推理系统。 (2)增加一个输入变量,将输入变量命名为service、food,输出变量为tip,这样建立了一个两输入单输出模糊推理系统框架。 (3)设计模糊化模块:双击变量图标打开Membership Fgunction Editor窗口,分别将两个输入变量的论域均设为[0,10],输出论域为[0,30]。 通过增加隶属度函数来进行模糊空间划分。 输入变量service划分为三个模糊集:poor、good和excellent,隶属度函数均为高斯函数,参数分别为[1.5 0]、[1,5 5]和[1.5 10]; 输入变量food划分为两个模糊集:rancid和delicious,隶属度函数均为梯形函数,参数分别为[0 0 1 3]和[7 9 10 10]; 输出变量tip划分为三个模糊集:cheap、average和generous,隶属度函数均为三角形函数,参数分别为[0 5 10]、[10 15 20]和[20 25 30]。

(4)设置模糊规则:打开Rule Editor窗口,通过选择添加三条模糊规则: ①if (service is poor) or (food is rancid) then (tip is cheap) ②if (service is good) then (tip is average) ③if (service is excellent) or (food is delicious) then (tip is generous) 三条规则的权重均为 1. (5)模糊推理参数均使用默认值,通过曲面观察器(Surface Viewer)查看

单级倒立摆的模糊控制以及在MATLAB中的仿真

单级倒立摆的模糊控制以及在MATLAB中的仿真 摘要 倒立摆系统是一个典型的多变量、非线性、强藕合和快速运动的自然不稳定系统。因此倒立摆在研究双足机器人直立行走、火箭发射过程的姿态调整和直升机飞行控制领域中有重要的现实意义,相关的科研成果己经应用到航天科技和机器人学等诸多领域。 本文围绕一级倒立摆系统,采用模糊控制理论研究倒立摆的控制系统仿真问题。仿真的成功证明了本文设计的模糊控制器有很好的稳定性。主要研究工作如下: (1)使用了牛顿力学和Lagrange方程对倒立摆进行数学建模,推导出倒立摆系统传递函数和状态空间方程。 (2)分析了模糊控制理论的数学基础,对模糊控制的方法进行了研究:介绍了模糊子集、模糊关系和模糊推理等相关知识。 (3)介绍了如何利用Simulink建立倒立摆系统模型,特别是利用Mask封装功能,使模型更具灵活性,给仿真带来很大方便。 (4)进行一级倒立摆系统的控制器设计与仿真。通过matlab的Simulink实现倒立摆模糊控制系统的仿真。说明仿真结果的趋向。 关键词:倒立摆模糊控制仿真MATLAB 第一章绪论 1.1 倒立摆系统的重要意义 倒立摆系统是研究控制理论的一种典型实验装置,具有成本低廉,结构简单,物理参数和结构易于调整的优点,是一个具有高阶次、不稳定、多变量、非线性和强藕合特性的不

稳定系统。在控制过程中,它能有效地反映诸如可镇定性、鲁棒性、随动性以及跟踪等许多控制中的关键问题,是检验各种控制理论的理想模型。迄今人们已经利用经典控制理论、现代控制理论以及各种智能控制理论实现了多种倒立摆系统的控制稳定。倒立摆主要有:有悬挂式倒立摆、平行倒立摆、环形倒立摆、平面倒立摆;倒立摆的级数有一级、二级、三级、四级乃至多级;倒立摆的运动轨道可以是水平的,也可以是倾斜的:倒立摆系统己成为控制领域中不可或缺的研究设备和验证各种控制策略有效性的实验平台。同时倒立摆研究也具有重要的工程背景:如机器人的站立与行走类似双倒立摆系统;火箭等飞行器的飞行过程中,其姿态的调整类似于倒立摆的平衡等等。因此对倒立摆控制机理的研究具有重要的理论和实践意义。 1.2 倒立摆系统的控制方法 自从倒立摆产生以后,国内外的专家学者就不断对它进行研究,其研究主要集中在下面两个方面: (1)倒立摆系统的稳定控制的研究 (2)倒立摆系统的自起摆控制研究 而就这两方面而言,从目前的研究情况来看,大部分研究成果又都集中在第一方面即倒 立摆系统的稳定控制的研究。目前,倒立摆的控制方法可分如下几类: (1)线性理论控制方法 将倒立摆系统的非线性模型进行近似线性化处理获得系统在平衡点附近的线性化模型,然后再利用各种线性系统控制器设计方法得到期望的控制器。如1976年Mori etc的把倒立摆系统在平衡点附近线性化利用状念空间的方法设计比例微分控制器。1980年,Furuta etc基于线性化方法,实现了二级倒立摆的控制。1984年,Furuta首次实现双电机三级倒立摆实物控制。1984年,wattes研究了LQR(Linear Quadratic Regulator)方法控制倒立摆。这类方

基于MATLAB的温度模糊控制系统的设计

智能控制》课程论文 基于MATLAB的温度模糊控制系统的设计 成绩:任课教师:田志波班级:测控09-2 作者:胡 兵上交时间:2012.11.05 一、温度模糊控制 在工业生产过程中,温度控制是重要环节,控制精度直接影响系统的运行和产品质量。在传统的温度控制方法中,一般采取双向可控硅装置,并结合简单控制算法(如PID算法),使温度控制实现自动调节。但由于温度控制具有升温单向性、大惯性、大滞后等特点,很难用数学方法建立精确的模型,因此用传统的控制理论和方法很难达到好的控制效果。鉴于此,本文拟以模糊控制为基础的温度智能控制系统,采用人工智能中的模糊控制技术,用 模糊控制器代替传统的PID控制器,以闭环控制方式实现对温度的自动控制。 二、方案设计 利用MATLA的模糊控制箱及Simulink内含的功能元件,建立温度箱温度模糊控制器及其系统的模型。 1. 建立模糊控制器 采用温度偏差,即实际测量温度与给定温度之差e及偏差变化率ed作为模糊控制器的输 入变量,输出p为“PW波(脉冲宽度调制)”控制发热电阻的功率,来调节温度箱内温度的升降,形成典型的双输入单输出二维模糊控制器。

运用MATLA中的FIS编辑器,建立温度箱的Mamdan型模糊控制器,如图1所示。温度偏差e、温度偏差变化率ed和输出变量IZ的语言变量E, Ed, P都选择为{NB, NM NS Z, PS, PM PB},其中P和N分别表示正与负,B, M s分别表示大、中、小,z表示0。 图1模糊控制器模型 2. 建立控制决策及隶属函数 模糊控制决策及解模糊方法采用系统默认值,即极大极小合成运算与重心法解模糊。由模糊控制决策公式可求得输出变量的模糊集合为P =(E X Ed ) X R 本文都采用三角隶属函数,各变量的隶属函数如图2所示。其中,图2(a)为E和Ed,隶属 函数图,E和Ed的量化论域为[-6 , 6];图2(b)为P隶属函数图,EQ的量化论域为[-6 , 6]。不同的系统,其模糊集的隶属函数是不同的,要根据实际情况和实践经验而定。

MATLAB模糊控制仿真程序

clear all; close all; ts=20; sys1=tf([1],[60,1],'inputdelay',80); %生成或转换传递函数模型 dsys1=c2d(sys1,ts,'zoh'); %将连续系统离散化 [num1,den1]=tfdata(dsys1,'v'); %传统PID算法 u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; y_1=0;y_2=0;y_3=0; error_1=0;ei=0; for k=1:1:300 time(k)=k*ts; rin(k)=40; yout(k)=-den1(2)*y_1+num1(2)*u_5; error(k)=rin(k)-yout(k); ei=ei+error(k)*ts; kp=0.8;ki=0.005;kd=3.0; u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei; if u(k)>=110 u(k)=110; end if u(k)<=-110 u(k)=-110; end %返回PID参数 u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_1=error(k); end %获得传递函数模型数据

%模糊PID控制系统 a=newfis('fuzzf'); %创建新的模糊推理系统 f1=1; a=addvar(a,'input','e',[-5*f1,5*f1]); %添加e 的模糊语言变量 a=addmf(a,'input',1,'NB','trimf',[ -7.5 -5 -2.5]); %添加e 的模糊语言变量的隶属度函数(z型) a=addmf(a,'input',1,'NS','trimf', [-5 -2.5 0]); a=addmf(a,'input',1,'ZE','trimf',[-2.5 0 2.5]); a=addmf(a,'input',1,'PS','trimf',[0 2.5 5]); a=addmf(a,'input',1,'PB','smf',[2.5 5 7.5]); f2=1; a=addvar(a,'input','ec',[-10*f2,10*f2]); %添加ec 的模糊语言变量 a=addmf(a,'input',2,'NB','trimf',[-15 -10 -5]); a=addmf(a,'input',2,'NS','trimf',[-10 -5 0]); a=addmf(a,'input',2,'Z','trimf', [-5 -5.551e-017 5]); a=addmf(a,'input',2,'PS','trimf', [0 5 10]); a=addmf(a,'input',2,'PB','smf', [5 10 15]); f3=1.5; a=addvar(a,'output','u',[0*f3,220*f3]); %添加u 的模糊语言变量 a=addmf(a,'output',1,'NB','trimf', [-55 -4.441e-016 55]); a=addmf(a,'output',1,'NS','trimf', [0 55 110]); a=addmf(a,'output',1,'Z','trimf', [55 110 165]); a=addmf(a,'output',1,'PS','trimf', [110 165 220]); a=addmf(a,'output',1,'PB','smf',[165 220 275]); rulelist=[1 1 5 1 1; %编辑模糊规则 1 2 5 1 1; 1 3 5 1 1; 1 4 5 1 1; 1 5 5 1 1; 2 1 5 1 1; 2 2 4 1 1; 2 3 4 1 1; 2 4 3 1 1; 2 5 2 1 1; 3 1 5 1 1; 3 2 4 1 1;

matlab模糊控制实现教学内容

模糊控制作业 一介绍 模糊控制是指基于模糊逻辑描述一个过程的控制算法,是以模糊集合论、模糊语言变量及模糊逻辑推理为基础的,基于被控系统的物理特性,模拟人的思维方式和人的控制经验来实现的一种计算机智能控制。模糊控制器主要嵌有操作人员的经验和直觉知识,是模糊语言形式的控制方法,不需要预先知道被控对象结构、参数,不需要建立被控对象的精确数学模型,并能克服非线性因素、大惯性因素的影响,对调节对象的参数变化不敏感,对对象时变及纯滞后有一定的适应性,即具有较强的鲁棒性。模糊控制器的设计参数容易选择调整。模糊控制系统如图1-1所示 图1-1 模糊控制系统框图 二本作业介绍 1、选定模糊控制器的输入输出变量,并进行量程转换 输入语言变量选为实际浓度与给定值之间的偏差(纸浆浓度偏差)e及纸浆浓度偏差变化率ec,输出语言变量选为阀门开度增量u。首先确定e、ec和u 的基本论域分别为[-1.2%~1.2%]、[-0.6%~0.6%]和[-12~12],选定e、u的模糊集合的论域为[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6],ec的模糊集合的论域为[-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7] 2、确定模糊控制器的结构 根据系统输入变量个数可知,应采用采用双输入单输出模糊控制器。(如图2所示)模糊控制器主要包含三个功能环节:用于输入信号处理的模糊量化和模糊化环节,模糊控制算法功能单元,以及用于输出解模糊化的模糊判决环节。

e d/dt 图2 双输入单输出模糊控制器 3、确定各变量的模糊语言取值及相应的隶属函数,即进行模糊化 模糊化是将模糊控制器输入量的确定值转换为相应模糊语言变量值的过程,此相应语言变量均由对应的隶属度函数来定义。 对纸浆浓度偏差e 、纸浆浓度偏差变化率ec 、阀门开度的增量u 进行模糊化,分别用模糊语言变量X 、Y 、Z 进行表示,语言值集合均为{负大,负中,负小,零,正小,正中,正大},用英文缩写进行表示分别为: X={NBe,NMe,NSe,ZOe,PSe,PMe,PBe} Y={ NBec,NMec,NSec,ZOec,PSec,PMec,PBec } Z={ NBu,NMu,NSu,ZOu,PSu,PMu,PBu } 模糊化包括两个任务:第一个任务是进行论域变换,过程参数的实际范围称为基本论域,可以通过变换系数(量化因子)实现由基本论域到量化论域的变换;第二个任务是求得输入对应于语言变量的隶属度。取三角形隶属函数,并取为均非均匀间隔。 a.任务一:求量化因子 e 、ec 和u 的基本论域分别为[-1.2%~1.2%]、[-0.6%~0.6%]和[-12~12],量化论域分别为[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6],[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6],[-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7] 。 纸浆浓度偏差e 的量化因子Ke=6/0.012=500,纸浆浓度偏差变化率ec 的量化因子Kec=6/0.006=1000,通过量化因子即可实现由基本论域到量化论域的变换。 b.任务二:取隶属度函数 选用三角形隶属度函数,如图所示: 图2-1 纸浆浓度偏差e 的隶属度函数 二维 模糊 控制器

基于matlab的洗衣机模糊控制器的设计及仿真

基于matlab的洗衣机模糊控制器的设计及仿真

————————————————————————————————作者:————————————————————————————————日期: ?

基于ma tla b的洗衣机模糊控制器的设计及仿真 以洗衣机洗涤时间的模糊控制系统设计为例,其控制原理是根据衣物上污泥和油脂的程度,调节洗涤时间,该控制是一个开环的模糊决策过程,模糊控制按以下步骤进行: 1. 确定模糊控制器的结构 选用两输入单输出的模糊控制器。控制器的输入为衣物的污泥和油脂,输出 为洗涤时间。 2. 定义输入、输出的模糊集 将污泥分为3个模糊集:SD (污泥少),MD (污泥中),L D(污泥多),取 值为[0,100];将油脂分为3个模糊集:NG (油脂少),MG (油脂中),LG (油脂多),取值为[0,100];将洗涤时间分为5个模糊集:VS (很短),S(短),M(中等),L(长),V L(很长),取值为[0,60]。 3. 定义输入、输出隶属函数 选用如下三角形隶属函数可实现污泥的模糊化。 ? 采用Ma tlab进行仿真,污泥隶属函数仿真结果如图1所示。 选用如下三角形隶属函数实现油脂的模糊化,如图2所示。 ?? ?? ? ??≤<-=?? ?≤<-≤≤=≤≤-==100 5050/)50()(1005050/)100(50050/)(50050/)50()(x x x x x x x x x x x LD MD SD μμμμ污泥 ?? ?? ? ??≤≤-=?? ?≤<-≤≤=≤≤-==100 5050/)50()(1005050/)100(50050/)(50050/)50()(y y y y y y y y y y y LG MG NG μμμμ油脂

相关文档
最新文档