离散论域模糊控制表的离线计算_第1页
离散论域模糊控制表的离线计算_第2页
离散论域模糊控制表的离线计算_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、For personal use only in study and research; not forcommercial use肂离散论域模糊控制表的离线计算聿一、题目芅已知单变量两维输入,一维输出模糊控制器,其两维输入为E, EC, 维输出为I,论域均为 E,EC,I -6 , -5, -4, -3, -2, -1 , 0 , 1 , 2 , 3 , 4 , 5 , 6, E 的论域划分为NB , NM , NS , NZ, PZ , PS , PM, PB,共8个模糊子集,其各自的隶属度函数如表1所示。EC和I的论域划分为NB , NM , NS, ZE , PS , PM , PB,

2、共7个模糊子集,它们的隶属 度函数都如表2所示。已知控制规则表如表3 所示,试求解输出控制表(如当e=-6 , ec=-6时,求输出i= ?,最终输出的控制表格式如如表4所示)。其中输入采用单点模糊法,输出清晰量采用加权平均法进行解模糊,可以用MATLAB编程计算。莁各变量的隶属度函数以及控制规则表如下:衿表1输入变量E的隶属度函数表膈E螄-6肁-5羁-4莆-3膄-2袂-1羂0蚈1薃2薂3蝿4螇5芆6莂NB袁1.0腿0.8螆0.6肃0.4蚈0.2芇0膅0袃0虿0莆0薅0薄0螁0螈NM羄0.2芄0.6薈1.0袇0.6蒃0.2肄0薀0艿0腿0薁0蚁0莇0薆0-+- 芁NS蒈0蒆0羅0.3肁0.7薀

3、1.0袈0.7莅0.3螂0薁0羆0袄0蒂0莈0荿NZ芄0芃0蒀0蒇0羇0.1羃0.6蒁1.0薆0莆0螃0芈0羈0螆0蒄PZ莀0肆0芅0芄0蒁0葿0蚄1.0羄0.6腿0.1薇0肄0蒁0芀0蚅PS蒃0賺0莁0肇0腿0羂0腿0.3膆0.7蚆1.0蚂0.7膀0.3蕿0肅0蒂PM节0蚇0蒅0膃0聿0罿0袄0袃0肀0.2膈0.6莃1.0蚃0.60.2PB000000000.20.40.60.81.0表2变量EC和I的隶属度函数表-6-5-4-3-2-10123456NB1.00.60.20000000000NM0.20.61.00.60.200000000NS000.20.61.00.60.2000000

4、ZE00000.20.61.00.60.20000PS0000000.20.61.00.60.200PM000000000.20.61.00.60.2PB00000000000.20.61.0表3控制规则表匸NBNMNSZEPSPMPBNBNBNBNBNBNMZEZENMNBNBNBNBNMZEZENSNMNMNMNMZEPSPSNZNMNMNSZEPSPMPMPZNMNMNSZEPSPMPMPSNSNSZEPMPMPMPMPMZEZEPMPBPBPBPBPBZEZEPMPBPBPBPB表4输出控制表(e, ec, i均为清晰量)-6-5-4-3-2-10123456-6-5.4-5.3-4.

5、7-4.2-4.0-4.0-3.4-2.9-1.7-1.0-0.50.00.0444750917963000000063714813286938000000-5-5.2-5.2-4.5-4.3-4.0-4.0-3.3-3.0-1.7-1.0-0.60.00.0857857500077000000214000500000786000000-4-5.4-5.3-4.7-4.2-3.7-3.4-2.8-2.5-0.50.00.41.11.0444750917963500815611128250000250250588-3-5.2-5.2-4.5-4.3-3.7-3.0-2.3-2.0-0.20.91

6、.32.02.0857857500077083000750000045259542000000-2-5.4-5.3-4.7-4.2-3.4-2.5-0.8-0.40.21.42.02.82.9444750917963000641696255750894976750412-1-5.2-5.2-4.5-4.3-3.3-2.0-0.30.91.72.32.94.34.38578575000770770003332595004781890770770-4.9-4.8-3.4-3.2-2.5-1.50.01.52.53.23.44.84.909100068800083374500074583300068

7、80000911-4.3-4.3-2.9-2.3-1.7-0.90.32.03.34.34.55.25.20770771894785002593330000770775008578572-2.9-2.8-2.0-1.4-0.20.40.82.53.44.24.75.35.44127509768947502556966410009639177504443-2.0-2.0-1.3-0.90.22.02.33.03.74.34.55.25.20000005422590450007500000830775008578574-1.0-1.1-0.40.00.52.52.83.43.74.24.75.35

8、.458825025000025012861181550096391775044450.00.00.61.01.73.03.34.04.04.34.55.25.200000078600050000021400000007750085785760.00.00.51.01.72.93.44.04.04.24.75.35.4000000938286813714063000000963917750444、基本原理这是一个二输入、单输出的模糊控制器的设计,主要包括输入模糊化、模糊推理、解模糊等基本过程,现在叙述如下:1输入模糊化在本实验实际过程中采用单点模糊集合的方法实现输入的模糊化,例如e为离散论域E

9、=-6,-5,-4,-3,-2,-1,0,1, 2,3,4,5,6,则 x*=,0 的输入模糊集合可表示为:2、模糊推理设某一时刻偏差为 e,偏差变化量为ec,则可根据由各条规则给出的模糊蕴含关系进 行合成推理运算,得到相应的输出控制量的模糊值:U =(e* and ec (Jr = Q(e* and ec*):R=U(e* and eC)0(A and BJt Cl1%l%忙mnMAT Cl) nec、(BlT Cl)l 1其中,m和n分别表示e和ec的论域所划分的模糊自己的个数,在本实验中, m=8,n=7,对应着本题目中规定的56条控制规则。控制器设计的核心就是对上式进行编程。3、解模糊

10、本实验采用加权平均的方式解模糊,其精确值的计算公式如下:三、实验程序:实验最终采用的程序如文件program中fuc1.m所示,fuc1_1.m和fuc1_2.m为了说明程序优化使用。就本题目而言,三个程序都可以解决问题。Maxmin.m是最大最小合成函数,供 fuc1_1.m 运行时调用。各个 excel 表格说明如下:Input1_Terms_Membership.xlsx、Input2_Terms_Membership.xlsx、Output_Terms_Membership.xlsx 分别为两个输入变量以及输出变量的隶属度函数表,用于在 MATLAB执行程序的时候读入, Output_

11、Result.xlsx为程序 运行结果。本实验采用的程序如下:%离散论域模糊控制表的离线计算e_domai n=-6:6;ec_doma in=e_doma in; u_doma in=e_doma in;湍属度函数读入In put1_Terms_Membership=xlsread(In put2_Terms_Membership=xlsread(Output_Terms_Membership=xlsread('In put1_Terms_Membership.xlsx''In put2_Terms_Membership.xlsx''Output_Te

12、rms_Membership.xlsx');););Rule=xlsread( 'Rule.xlsx' ); % 语言规则录入%如果论域长度和隶属度函数列数不同,程序报错 if len gth(e_domai n)=size(l nput1_Terms_Membership,2)fprintf( end'Error!Please in put the membership of i nput1 aga in!' if len gth(ec_doma in )=size(I nput2_Terms_Membership,2)fprintf('Err

13、or!Please in put the membership of i nput2 aga in!'endif len gth(u_domai n)=size(0utput_Terms_Membership,2)fprintf('Error!Please in put the membership of output aga in!'endfor m=1:le ngth(ec_domai n)for k=1:le ngth(e_doma in)%单点模糊化ec=zeros(1,le ngth(ec_domai n);ec(m)=1;e=zeros(1,le ngth(

14、e_doma in);e(k)=1;Uo=zeros(1,le ngth(u_domai n);for i=1:size(I nput1_Terms_Membership,1)for j=1:size(I nput2_Terms_Membership,1)a=ln put1_Terms_Membership(i,:);b=ln put2_Terms_Membership(j,:);c=Output_Terms_Membership(Rule(i,j),:);A1=a'* on es(size(c);B1=o nes(size(a')*c;R仁 mi n(A1,B1);A2=b&

15、#39;*o nes(size(c);B2=o nes(size(b')*c;R2=mi n(A2,B2);%最大-最小合成运算U1a=zeros(size(e,1),size(R1,2); U1b=zeros(size(ec,1),size(R2,2);for s=1:size(e,1)for t=1:size(R1,2)U1a(s,t)=max(mi n(e(s,:),R1(:,t)');endendfor s=1:size(ec,1)for t=1:size(R2,2)U1b(s,t)=max(mi n( ec(s,:),R2(:,t)');endendU仁 mi

16、 n(U1a,U1b);Uo=max(Uo,U1);endend%解模糊U(m,k)=sum(u_domai n.*Uo)/sum(Uo);endendxlswrite('Output Result.xlsx',U);%将结果以 excel 表格的形式给岀运行结果如题目中的表格4所示,各个精确量保留四位小数。四、程序优化及讨论1、 此程序中各个变量表的输入都是通过excel实现的。让 MATLAB通过程序从excel表中读入数组到工作空间中,同时为了方便查看结果,又将结果写到excel表中。这样,我们在设计一个二输入单输出的模糊控制器时,只需要在四个excel表中输入相应的数值

17、,而不需要进行程序的修改,唯一需要修改的就是各个变量的论域。整个程序的适应性还是比较强的,具有通用性。但付出的代价就是计算时间的延长,而时间延长的主要部分就花费在读取excel表上:>> tic;I nput1_Terms_Membership=xlsread('l nput1_Terms_Membership.xlsx');toc Elapsed time is 0.708815 sec on ds.可以看出,每读一个 excel表,就要花费约0.7s的时间。然而,这对一些数据量比较多 的隶属度函数表来说是有利的,我们可以将隶属度函数表以excel的表格储存起来,

18、直接调用,从而免去了在每次执行程序的时候在程序中修改输入量或者计算一个模糊控制器就新建 一个新程序,这样对提高工作效率和程序的通用性还是有很大帮助的。同时,我们也不需要担心输出的结果在 MATLAB关闭以后就丢失,可以直接储存在excel表中。本实验采用的程序时间复杂度如下:>> tic;fuc1;toc;Elapsed time is 7.668543 sec on ds.此外,其中求56条规则的并采用在循环中每一次都与上一次求并,并且用此次的计算 值冲掉上一次的计算值,这样就节省了硬件上 RAM空间的开销。2、在最开始的编程中,计算最大最小合成以及蕴含模糊关系时,我采用了子函数

19、调用的方式,这样可以使得主程序变得简洁,而如果一个功能相同的程序段在程序中重复出现时,我们考虑到程序的简洁性,就采用子程序调用的方法,但这个方法带来的代价也是程序调用 花费的时间开销。这种方法的实现是通过fuc1 1.m实现的,程序段如下:R1=maxmi n(a',c);R2=maxmi n(b',c); U1a=maxmi n(e,R1);U1b=maxmi n( ec,R2);子程序如下:fun cti on T = maxm in( R,S )%最大最小合成运算T=zeros(size(R,1),size(S,2);for s=1:size(R,1)for t=1:si

20、ze(S,2)T(s,t)=max(mi n( R(s,:),S(:,t)');endendend其时间复杂度为:>> tic;fuc1_1;tocEl apsed time is 9.216143 seco nds.可见,该方法相比实验采用的程序,速度要慢。3、 如果仅考虑该实验,而不用考虑程序的通用性,直接在.m文件中输入各个变量,即略去读写excel的过程,同时也不采用子程序调用的方式,这样的程序运行速度就要快很多。程序如fuc1_2.m所示。其时间复杂度为:>> tic;fuc1_2;tocElapsed time is 0.905725 sec on ds.该程序运行所花费的时间明显要低很多。4、综合分析为了程序的通用性,同时考虑到在实际应用中,二输入单输出的情况居多,因此我采 用了 excel读入输入量的方法,并且省去了子程序调用的过程,采用fuc1.m的方式。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论