T-S模糊系统结论参数的MATLAB仿真研究_第1页
T-S模糊系统结论参数的MATLAB仿真研究_第2页
T-S模糊系统结论参数的MATLAB仿真研究_第3页
T-S模糊系统结论参数的MATLAB仿真研究_第4页
T-S模糊系统结论参数的MATLAB仿真研究_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

T-S模糊系统结论参数的MATLAB仿真研究2用遗传算法来优化t-s模型的结论参数由于同时优化的参数的数量较多,故采取实数编码的方式对参数进行编码。编码经过是通过计算机产生所要优化的参数范围内的随机数,对每一个参数进行编码后,连接在一起构成一条染色体,然后就能够对它进行遗传操作。用matlab编程,确定寻优范围的重要代码如下:minx(1)=-5.0*ones(1);maxx(1)=5.0*ones(1);minx(2)=-5.0*ones(1);maxx(2)=5.5*ones(1);......minx(10)=-1*ones(1);maxx(10)=5*ones(1);kpar(:,1)=minx(1)+(maxx(1)-minx(1))*rand(size,1);kpar(:,2)=minx(2)+(maxx(2)-minx(2))*rand(size,1);......kpar(:,9)=minx(9)+(maxx(9)-minx(9))*rand(size,1);kpar(:,10)=minx(10)+(maxx(10)-minx(10))*rand(size,1);在产生大种群后,对个体进行初步挑选,去掉一些适应度差的个体,剩下的作为初始种群进行遗传操作,这种方法能够使种群在坚持多样性的同时,节省计算时间。进化代数确实定,一般是根据问题所要求的精度来确定,精度低,进化的代数就能够少一些,反之则多一些。适应度函数是衡量个体优劣的指标,为了到达寻优的目的,适应度函数一般是通过目的函数变换而来的,这里对t-s模型的参数进行辨识,采取的目的函数为均方误差:其中:t(k)为由辨识的模糊模型计算出的第k个采样时刻的输出值,α(k)为第k个采样时刻的实际输出值,q为总的采样次数。在进行选择操作时,是根据适应度越大,被选择的概率越大,所以,这里选用的适应度函数为:其中ε是一个较小的正实数,目的是为了避免除数为零的情况发生[3]。其重要代码如下:fori=1:1:size%下面为初始挑选cansu=kpar(i,:);code=cansu;rmse=computeitae(code);%计算均方误差;bsj=rmse;bsji(i)=bsj;%将均误差赋给bsjiendfi=1./bsji;%求适应度的值[oderfi,indexfi]=sort(fi)%对适应度值由小到大排列sortrsa=kpar(indexfi(size),:);fors=2:1:selectsizeshuijirsa=kpar(indexfi(size-s+1),:);sortrsa=[sortrsashuijirsa];sortrsakpar=sortrsasize=selectsize遗传操作一般包含选择,穿插和变异。选择方法采取蒙特卡罗法,按比例的适应度分配。若某个个体i,其适应度为fi,则其被选择的概率表示为:由于在进行遗传操作前,已经对个体进行了初步的挑选,所以为了避免对种群中优良个体的毁坏,这里采取单点穿插的方法,随机选择穿插点之后,将两个个体的穿插点后面的基因进行交换。变异采取实值变异的方法,随机选择染色体的某个基因,由于用实数编码的方法,每个基因就是一个要辨识的参数值,所以能够用一个函数实如今参数范围内适当改变该参数值的大小,进而到达坚持种群多样性的目的。为了使寻优不外早的收敛到次优解,随着进化代数的增长,需要适当增大变异率,其实现方法只需用一个函数来表示变异率:pm=0.1+[1:1:g]×0.1/g〔4〕式中:pm表示变异率,g代表进化代数。[1:1:g]表示一个数组,变化的范围为[1,g],步长为1。为了避免毁坏优良个体,变异率不宜取的过大。通过实验得知,在第一代时,可取变异率pm=0.1+1×0.1/g,第二代时,变异率pm=0.1+2×0.1/g,以此类推。这样随着进化代数的增长,pm也随着增长。另外,为了防止遗传操作对最优个体的毁坏,采用保留最优个体的方法。将每一代产生的最优个体放在该种群的最后,再继续进行的操作。整个算法的流程图如此图1所示。详细实现的遗传操作的重要代码如下:g=300;%进化的代数bsj=0;forkg=1:1:gtime(kg)=kg;%*******step1:计算误差****************fori=1:1:sizecansu1=kpar(i,:);selectcode=cansu1;error=computeitae(selectcode);%计算均方误差;bsj1=error;bsji1(i)=bsj1;end[oderji,indexji]=sort(bsji1);bestj(kg)=oderji(1);bj=bestj(kg);ji=bsji1+1e-10;%避免除零fi=1./ji;%求适应度的值[oderfi,indexfi]=sort(fi)%对适应度值由小到大排列bestfi=oderfi(size);bests=kpar(indexfi(size),:)%保存最大适应度值对应的染色体(参数)%*******step2:选择和复制************图1算法流程图fi_sum=sum(fi);fi_size=(oderfi/fi_sum)*size;fi_s=floor(fi_size);r=size-sum(fi_s);rest=fi_size-fi_s;[restvalue,index]=sort(rest);fori=size:-1:size-r+1fi_s(index(i))=fi_s(index(i))+1;endk=1;fori=size:-1:1forj=1:1:fi_s(i)tempe(k,:)=kpar(indexfi(i),:);k=k+1;end%step3穿插率不能太大pc=0.7;fori=1:2:(size-1)temp=rand;ifpctempalfa=rand;tempe(i,:)=alfa*kpar(i+1,:)+(1-alfa)*kpar(i,:);tempe(i+1,:)=alfa*kpar(i,:)+(1-alfa)*kpar(i+1,:);tempe(size,:)=bests;kpar=tempe;%*******step4:变异*******变异率不能太大pm=0.15+[1:1:size]*(0.01)/size;pm_rand=rand(size,codel);mean=(maxx+minx)/2;dif=(maxx-minx)/2;fori=1:1:sizeforj=1:1:codelifpm(i)pm_rand(i,j)tempe(i,j)=mean(j)+dif(j)*(rand-0.4);tempe(size,:)=bests;%保留最优个体kpar=tempe;bestsbest_j=bestj(g)figure(1);plot(time,bestj);xlabel('time(s)');ylabel('bestj');3实验结果经过300代进化后,均方误差能够到达0.0029,如此图2所示;经过400代之后,均方误差为0.0027,变化曲线如此图3所示。图中:横坐标是进化代数,纵坐标是均方误差

温馨提示

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

评论

0/150

提交评论