1、用模糊控制实现水箱水温的恒温控制。水箱由底部的电阻性电热元件加热,由电动搅拌器实现均温。设控制的目标温度为 25C,以实测温度 T 与目标温度 R 之差,即误差e=T-R,以及误差变化率 ec 为输入,以固态继电器通电时间的变化量 u(以一个控制周期内的占空比表示,控制电加热器的功率)为输出。设 e 的基本论域为-5,5 C,其语言变量 E 的论域为-5, 5;ec 的基本论域为-1,1 C/s,其语言变量 EC 的论域为-5,5;控制量 u 的基本论域为-5,5 单位,其语言变量 U 的论域为-5,5。E、EC和 U 都选 5 个语言值NB ,NM ,NS,Z,PS ,PM,PB,各语言值的
2、隶属函数采用三角函数,其分布可用表 1 和表 2 表示,控制规则如表 3 所示。要求:1、画出模糊控制程序流程图;2、计算出模糊控制器的查询表,写出必要的计算步骤。表 1 语言变量 E、EC 的赋值表-5 -4 -3 -2 -1 0 1 2 3 4 5PB 0 0 0 0 0 0 0 0 0.1 0.4 1PS 0 0 0 0 0 0 0 0.5 1 0.5 0ZE 0 0 0 0 0.3 1 0.3 0 0 0 0NS 0 0.5 1 0.5 0 0 0 0 0 0 0NB 1 0.4 0.1 0 0 0 0 0 0 0 0表 2 语言变量 U 的赋值表-5 -4 -3 -2 -1 0 1
3、2 3 4 5PB 0 0 0 0 0 0 0 0 0.2 0.6 1PS 0 0 0 0 0 0 0 0.4 1 0.4 0ZE 0 0 0 0 0.5 1 0.5 0 0 0 0NS 0 0.4 1 0.4 0 0 0 0 0 0 0NB 1 0.6 0.2 0 0 0 0 0 0 0 0表 3 模糊控制规则表(内容为控制量 U)ECENB NS ZE PS PBNB PB PB PB PS ZENS PB PS PS ZE NSZE PS PS ZE NS NSPS PS ZE NS NS NBPB ZE NS NB NB NB解:步骤:1)输入输出语言变量的选择。输入变量选为实测温度
4、T 与目标温度 R 之差,即误差e,及误差变化率 ec;输出语言变量选固态继电器通电时间的变化量 u,故模糊控制系统为双输入单输出的基本模糊控制器。2)建立各语言变量的赋值表。设误差 e 的基本论域为 -5,5 。C ,输入变量 E 的论域为-5,-4,-3,-2,-1,0,1,2,3,4,5,误差的量化因子为 ke=5/5=1。语言变量 E 选取 5 个语言值:。表 1 为语言变量 E、EC 的赋值表,表 2 为语言变量 U 的赋值表,PBSZENB表 1 语言变量 E、EC 的赋值表-5 -4 -3 -2 -1 0 1 2 3 4 5PB 0 0 0 0 0 0 0 0 0.1 0.4 1
5、PS 0 0 0 0 0 0 0 0.5 1 0.5 0ZE 0 0 0 0 0.3 1 0.3 0 0 0 0NS 0 0.5 1 0.5 0 0 0 0 0 0 0NB 1 0.4 0.1 0 0 0 0 0 0 0 0表 2 语言变量 U 的赋值表-5 -4 -3 -2 -1 0 1 2 3 4 5PB 0 0 0 0 0 0 0 0 0.2 0.6 1PS 0 0 0 0 0 0 0 0.4 1 0.4 0ZE 0 0 0 0 0.5 1 0.5 0 0 0 0NS 0 0.4 1 0.4 0 0 0 0 0 0 0NB 1 0.6 0.2 0 0 0 0 0 0 0 03)建立模糊控
6、制规则表,总结控制策略,得出一组由 25 条模糊条件语句构成的控制规则,据此建立模糊控制规则表,如表 3 所示.表中行与列交叉处的每个元素及其所在列的第一行元素和所在行的第一列元素,对应于一个形式为”if E and EC then U”的模糊语句,根据该模糊语句可得相应的模糊关系 ,则总控制规则的总模糊关系为 。iR251=iRU表 3 模糊控制规则表(内容为控制量 U)ECENB NS ZE PS PBNB PB PB PB PS ZENS PB PS PS ZE NSZE PS PS ZE NS NSPS PS ZE NS NS NBPB ZE NS NB NB NB4)建立查询表。根据
7、推理合成原则,输出模糊集合 ,利用判决结果可2()TUER建立模糊控制器查询表。通过查表得出 U,乘以比例因子 Ku,(K u=umax/n=5/5=1),即查表得出的结果 U 即为控制量的值 u。5)流程图如下图所示流程图6)在线查询表如表 4 所示表 4 U 的在线查询表EC-5 -4 -3 -2 -1 0 1 2 3 4 5-5 5 5 5 5 5 5 5 3 3 3 0-4 5 3 3 3 3 3 3 0 0 0 0-3 5 3 3 3 3 3 3 0 0 0 0-2 5 3 3 3 3 3 3 0 0 0 0-1 3 3 3 3 0 0 0 -3 -3 -3 -30 3 3 3 3
8、0 0 0 -3 -3 -3 -31 3 3 3 3 0 0 0 -3 -3 -3 -32 3 0 0 0 -3 -3 -3 -3 -3 -3 -53 3 0 0 0 -3 -3 -3 -3 -3 -3 -54 3 0 0 0 -3 -3 -3 -3 -3 -3 -5E5 0 -3 -3 -3 -5 -5 -5 -5 -5 -5 -5附:程序代码E=1 0.4 0.1 0 0 0 0 0 0 0 0;0 0.5 1 0.5 0 0 0 0 0 0 0; 0 0 0 0 0.3 1 0.3 0 0 0 0;0 0 0 0 0 0 0 0.5 1 0.5 0;0 0 0 0 0 0 0 0 0.1
9、 0.4 1;%5*11 E 的赋值表矩阵EC=E;U=1 0.6 0.2 0 0 0 0 0 0 0 0;0 0.4 1 0.4 0 0 0 0 0 0 0;0 0 0 0 0.5 1 0.5 0 0 0 0;0 0 0 0 0 0 0 0.4 1 0.4 0;0 0 0 0 0 0 0 0 0.2 0.6 1;rule=5 5 5 4 3;5 4 4 3 3;4 4 3 2 2;4 3 2 2 1;3 2 1 1 1;%5*5 模糊控制规则表矩阵R=zeros(121,11);%申请模糊控制的隶属度关系矩阵%计算模糊控制隶属度关系矩阵 R?for ii=1:5 for jj=1:5U_ru
10、le=rule(ii,jj);%按控制规则表找出语言变量对应的向量A=E(ii,:);B=EC(jj,:);C=U(U_rule,:); %根据模糊算法,求(AB)对应按值取小for i=1:11for j = 1:11 if A(i)B(j)R_C(i,j)=B(j);elseR_C(i,j)=A(i);endendendR_C1=reshape(R_C,11*11,1);%转置成 121*1 的列向量,形成单条控制语句的模糊关系的隶属度函数 R1for i=1:11*11for j=1:11if R_C1(i)C(j) R1(i,j)=C(j);%得到 R1 是 121*11 的矩阵els
11、e R1(i,j)=R_C1(i);endendend %将 R1 合成为整个模糊关系的隶属度函数 R, R 是 121*11 的矩阵for i=1:121for j=1:11 if R(i,j)B1(jj)Temp(ii,jj)=B1(jj);elseTemp(ii,jj)=A1(ii);endendendTemp_T=reshape(Temp,121,1);%求出控制量U1=zeros(1,11);for ii=1:11 for jj=1:121 %将矩阵乘法中对应的项先取小,然后在取大,得到新的控制行向量U1(ii)=max(min(Temp_T(jj),R(jj,ii),U1(ii);endendtemp_maxU1=U1(1);%用最大隶属度方法去模糊化,求得可量化的值for k=1:11if(temp_maxU1U1(k) temp_maxU1=U1(k);line_no(3)=k;endendU(iii,jjj)=line_no(3)-6;%将结果从(1,11) 匹配到(-5,5)endend