深圳做h5网站设计,网站排名英文怎么说,外贸业务怎么利用网站开发客户,长沙企业网站建设企业模糊控制 所谓模糊控制#xff0c;就是对难以用已有规律描述的复杂系统#xff0c;采用自然语言#xff08;如大#xff0c;中#xff0c;小#xff09;加以描述#xff0c;借助定性的#xff0c;不精确的以及模糊的条件语句来表达#xff0c;模糊控制是一种基于语言的…模糊控制 所谓模糊控制就是对难以用已有规律描述的复杂系统采用自然语言如大中小加以描述借助定性的不精确的以及模糊的条件语句来表达模糊控制是一种基于语言的智能控制。 传统的自动控制器的综合设计都要建立在被控对象准确的数学模型即传递函数模型或状态空间模型的基础上但是实际上很多系统的影响因素很多通常找出精确的数学模型这种情况下模糊控制的诞生就显得意义重大因为模糊控制不需要建立数学模型不需要预先知道过程精确的数学模型。模糊控制与传统的PID控制具有如下优点 1无需知道被控对象的数学模型 2反映人类智慧思维的智能控制 3易被人们所接受是一种语言变量控制器 4构造容易从属于智能控制的范畴尤其适用于非线性时变滞后系统的控制 5抗干扰能力强响应速度快并对系统参数的变化有较强的鲁棒性 1. 工作原理 把各种传感器测出的精确量转换为适用于模糊运算的模糊量然后将这些量在模糊控制器中加以运算最后再将运算结果中的模糊量转换为精确量以便对各执行器进行具体的操作控制这就说明在模糊控制中存在着一个模糊量与精确量之间相互转化的问题如下图所示
模糊控制原理图如下图所示
2. 模糊语言集 模糊语言集用表示一般有{负大负中负小零正小正中正大}用模糊语言变量E来描述偏差或者用符号表示 负大Negative Big简称NB 负中Negative Medium简称NM 负小Negative Small简称NS 零Zero简称ZE 正小Positive Small简称PS 正中Positive Medium简称PM 正大Positive Big简称PB
3. 隶属函数 各参数相对应子集的隶属函数分别由不同的函数族决定参数的相应子集指该参数被人为地划分成的等级所构成的一组模糊集合相应子集的多少由控制精度决定例如参数“温差”的相应子集可以是“正大正中负小负大”也可以是“正大正中正小负小负中负大”后者比前者模糊子集多所以控制精度更高在其他相同条件的情况下。 常用的隶属函数如下所示。 1z型隶属度函数zmf
2S型隶属度函数smf
3三角形隶属度函数trimf
3.1 模糊控制数学基础 3.1.1 模糊控制集合的代数运算
3.1.2 模糊关系 1普通关系两个集合中的元素之间是否有关联。 2模糊关系两个模糊集合中的元素之间关联程度的多少。
3.1.3 模糊关系的合成
3.1.4 模糊推理
3.1.5 模糊决策 模糊决策模糊判决解模糊清晰化由模糊推理得到的结论或者操作是一个模糊向量转化为确定值的过程。 1最大隶属度法
2加权平均判决法
3中位数法
3.1.6 模糊推理的运用
3.1.7 模糊控制系统的组成
与一般的计算机控制系统不同的是模糊控制系统的控制器是模糊控制器模糊控制器是基于模糊条件语句描述的语言控制规则又称为模糊语言控制器。 输入输出变量 1模糊控制的输入变量通常取E或EEC或EECER分别构成所谓的一维二维三维模糊控制器一般选择控制量的增量作为模糊控制器的输出变量。 2描述模糊控制器的输入输出变量状态负大NB负中NM负小NS零O正小PS正中PM正大PB。 3描述误差变量的词集一般取为负大NB负中NM负小NS负零NO正零PO正小PS正中PM正大PB。 模糊变量E的赋值表
模糊控制规则 1条件语句的基本类型为if A or B and C or D then E 例如水温控制规则之一为若水温高或偏高且温度上升快或较快则加大冷水流量。 用条件语句表达为if ENB or NM and ECNB or NM then UPB 3.1.8 模糊控制算法的工程实现 在大型的模糊控制系统中常采用软件模糊推理法模糊关系模糊推理以及模糊判决的运算可以离线进行最后得到模糊控制器输入量的量化等级EEC与输出量即系统控制量的量化等级U之间的确定关系这种关系通常称为控制表。 3.2 水位控制系统 3.2.1 控制目标 控制模型如下图所示控制进水阀S1和出水阀S2使水箱水位保持在目标水位O处。
3.2.2 控制规则 1若当前水位高于目标水位则向外排水差值越大排水越快 2若当前水位低于目标水位则向内注水差值越大注水越快 3若当前水位和目标水位相差很小则保持排水速度和注水速度相等 注建立模糊控制规则的基本思想当误差大或较大时选择控制量应该以尽快消除误差为主而当误差较小时选择控制量要防止超调以系统的稳定性为主要出发点。 3.2.3 控制步骤 1我们选择目标水位和当前水位的差值e作为观察量选取阀门开度u为控制量。 2将偏差e划分为5个模糊集负大NB、负小NS、零ZO、正小PS、正大PBe为负表示当前水位低于目标水位e为正表示当前水位高于目标水位。设定e的取值范围为[-3,3]。
此时偏差e对应的模糊表如下表所示。 -3 -2 -1 0 1 2 3 PB 0 0 0 0 0 0.5 1 PS 0 0 0 0.5 1 0.5 0 ZO 0 0 0.5 1 0.5 0 0 NS 0 0.5 1 0.5 0 0 0 NB 1 0.5 0 0 0 0 0 3将控制量u划分为5个模糊集负大NB、负小NS、零ZO、正小PS、正大PBu为负表示增大进水阀门S1的开度同时减小出水阀门S2的开度u为正表示减小进水阀门S1的开度同时增大出水阀门S2的开度。设定u的取值范围为[-4,4]隶属度函数如下。
此时控制量u对应的模糊表如下表所示。 -4 -3 -2 -1 0 1 2 3 4 PB 0 0 0 0 0 0 0 0.5 1 PS 0 0 0 0 0 0.5 1 0.5 0 ZO 0 0 0 0.5 1 0.5 0 0 0 NS 0 0.5 1 0.5 0 0 0 0 0 NB 1 0.5 0 0 0 0 0 0 0 4制定模糊规则模糊规则的制定是模糊控制的核心内容控制性能的好坏很大程度上由模糊规则决定目前主要是根据经验来制定相应的规则 若e负大则u负大 若e负小则u负小 若e为零则u为零 若e正小则u正小 若e正大则u正大 6进行模糊决策最终需要的控制量u即为模糊控制的输出u可由偏差矩阵e和模糊关系矩阵R合成得到 7控制量的反模糊化 我们模糊决策得到的控制量u是一个矩阵并不能直接应用在工程上因此需要将u解释为实际中的特定行为即反模糊化操作。目前常用的反模糊化方法有以下几种 最大隶属度法应用于计算简单控制要求不高场合 重心法可以使得输出更平滑 加权平均法工业上应用最广泛 3.3 模糊控制算法实现 3.3.1 MATLAB代码 clc clear%创建模糊控制器 a newfis(‘fuzzy tank’);%输入变量 a addvar(a,‘input’,‘e’,[-3,3]); %设置变量e为输入且定义域[-3,3] a addmf(a,‘input’,1,‘NB’,‘zmf’,[-3,-1]); %Z型隶属度函数 a addmf(a,‘input’,1,‘NS’,‘trimf’,[-3,-1,1]); %三角形隶属度函数 a addmf(a,‘input’,1,‘ZO’,‘trimf’,[-2,0,2]); %三角形隶属度函数 a addmf(a,‘input’,1,‘PS’,‘trimf’,[-1,1,3]); %三角形隶属度函数 a addmf(a,‘input’,1,‘PB’,‘smf’,[1,3]); %S型隶属度函数%输出变量 a addvar(a,‘output’,‘u’,[-4,4]); %设置变量u为输出且定义域[-4,4] a addmf(a,‘output’,1,‘NB’,‘zmf’,[-4,-2]); %Z型隶属度函数 a addmf(a,‘output’,1,‘NS’,‘trimf’,[-4,-2,0]); %三角形隶属度函数 a addmf(a,‘output’,1,‘ZO’,‘trimf’,[-2,0,2]); %三角形隶属度函数 a addmf(a,‘output’,1,‘PS’,‘trimf’,[0,2,4]); %三角形隶属度函数 a addmf(a,‘output’,1,‘PB’,‘smf’,[2,4]); %S型隶属度函数%建立模糊规则 rulelist[1 1 1 1; 2 2 1 1; 3 3 1 1; 4 4 1 1; 5 5 1 1]; a addrule(a,rulelist);%设置反模糊化算法 a1 setfis(a,‘DefuzzMethod’,‘mom’); %采用最大隶属度平均法进行反模糊化 writefis(a1,‘tank’); %保存tank文件 a2 readfis(‘tank’); %读取tank文件%绘制图像figure(1); plotfis(a2); %绘制模糊控制器结构figure(2); plotmf(a,‘input’,1); %绘制输入隶属度函数图像figure(3); plotmf(a,‘output’,1); %绘制输出隶属度函数图像%打开模糊调试器 showrule(a); ruleview(‘tank’); MATLAB仿真结果如下图所示。
3.3.2 C语言代码 #include #include #include #define N 7 //定义量化论域模糊子集的个数//模糊语言定义#define NB -3#define NM -2#define NS -1#define ZO 0#define PS 1#define PM 2#define PB 3struct { //规则表 int rule[ N ][ N ] ; //模糊规则表 //隶属度函数 char f_type_e ; //e的隶属度函数类型 char f_type_de ; //de的隶属度函数类型 char f_type_u ; //u的隶属度函数类型 float paras_e[ 3N ] ; //e的隶属度函数的参数 float paras_de[ 3N ] ; //de的隶属度函数的参数 float paras_u[ 3N ] ; //u的隶属度函数的参数 //模糊运算参数 float Ke ; //Ken/emax,量化论域为[-3,-2,-1,0,1,2,3] float Kde ; //Ken/demax,量化论域为[-3,-2,-1,0,1,2,3] float Ku ; //Keumax/n,量¢化论域为[-3,-2,-1,0,1,2,3] float umax ; //输出的上限 float emax ; //误差基本论域上限 float demax ; //误差变化率基本论域的上限 //控制目标参数 float target ; //控制目标 float actual ; //实际值 float e ; //误差 float e_pre ; //上一次的误差 float de ; //误差的变化率 }fuzzy;/******************************************************* Name :trimf Function :三角隶属度函数 Parameter : x:自变量 (a,b,c):定义域 Return :结果 /float trimf( float x, float a, float b, float c ){ float u ; if( ( xa )( xb ) ) u ( x-a )/( b-a ) ; else if( ( xb )( xc ) ) u ( c-x )/( c-b ) ; else u 0 ; return u ; }/ Name :gaussmf Function :正态隶属度函数 Parameter : x:自变量 ave:均值 sigma:方差 Return :结果 /float gaussmf( float x, float ave, float sigma ){ float u ; if( sigma0 ) printf(“方差不允许小于0\n”); else u exp( -pow( ( ( x-ave )/sigma ), 2 ) ) ; return u ; }/ Name :trapmf Function :梯形隶属度函数 Parameter : x:自变量 (a,b,c,d):定义域 Return :结果 *******************************************************/float trapmf( float x, float a, float b, float c, float d ){ float u ; if( ( xa )( xelse if( ( xb )( x **