遗传算法的模糊控制器优化设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于遗传算法的模糊控制器优化设计 基于遗传算法的模糊控制器优化设计思想: 通常FLC是基于专家经验和知识进行设计的,但很多情况下专家经验不可得。这时可采用遗传算法来优化模糊控制规则,进而优化控制系统,使系统达到理想输出。 模糊PID控制系统结构图 基于遗传算法的模糊PID控制系统结构图 设计思想 第一步:初始化各项参数,设定种群规模(随机选择10条染色体),遗传代数(3代)。 被控对象的传递函数为:。 第二步:当遗传代数为1时,将各条染色体代入系统,计算系统输出,染色体适配值。 将具有最大适配值的染色体取出,将具有最大适配值染色体运算所得的系统输出取出。将10条染色体传入第二代,按适配值大小,交叉概率,变异概率进行复制,交叉和变异,从而产生第二代染色体。 第三步:将新产生的染色体重新代入系统进行第二代计算。同理进行第三代染色体的计算。 第四步:进行完三代染色体的系统输出,绘制每代中具有最大适配值时的系统输出图像。 三:程序 clc close all T=0.1; %控制系统采样时间 TM=1000; %控制系统运行次数 time=zeros(1,TM); %E=zeros(1,TM); kp=0.2;ki=0.002;kd=10; tr=0; %定义初始种群参数 N=10; %初始种群数目 M=3; %遗传代数 varb=3; %语言值个数 yout1=zeros(N,TM); yout=zeros(M,TM);%存放 fitness=zeros(1,N); %************************************************ %产生初始种群W n=varb^2; n1=varb^2+varb*2; %每条染色体的长度 mfpara1=randint(N,n,[1,varb]); %rule table mfpara2=-1*rand(N,varb); %mfpara2(1),mfpara2(2),mfpara2(3)分别为an,bn,cn mfpara3=rand(N,varb); %mfpara3(1),mfpara3(2),mfpara3(3)分别为ap,bp,cp init=[mfpara1,mfpara2,mfpara3]; %离散化被控对象 num=[1]; den=conv(conv([1,0.1],[1,0.2]),[1,0.7]); g=tf(num,den); yn=c2d(g,T,zoh); [tt,ff]=tfdata(yn,v); %循环开始 p=1; while p=M %循环代数从1到3 q=1 while q=N %染色体数从1到10 y=zeros(1,TM); u=zeros(1,TM); er=zeros(1,TM); yr=zeros(1,TM); e1=0;e2=0;E1=0; y1=0;y2=0;y3=0; u1=0;u2=0;u3=0; e=zeros(1,TM); E=zeros(1,TM); for k=1:TM %运行系统 yr(k)=1; y(k)=-ff(2)*y1-ff(3)*y2-ff(4)*y3+tt(2)*u1+tt(3)*u2+tt(4)*u3; y3=y2;y2=y1;y1=y(k); u3=u2;u2=u1; e(k)=yr(k)-y(k); er(k)=(e(k)-e1)/T; detae=fu_zzy(init(q,:),e(k),er(k),varb); %调用模糊控制规则程序 E(k)=e(k)+detae; u(k)=kp*E(k)+ki*sum(E)+kd*(E(k)-E1); E1=E(k); u1=u(k); e2=e1;e1=e(k); end for k=1:TM if abs(y(k)-1)=0.1 tr=k*T; %上升时间tr break end end ymax=0; for k=1:TM if ymaxy(k) ymax=y(k); %最大输出ymax end end for k=1:TM

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档