资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
西安理工大学研究生课程论文/研究报告课程名称: 智能控制 任课教师: 论文/研究报告题目: 基于遗传算法的模糊控制器最优设计 完成日期: 2016 年 8 月 27 日学 科: 电力电子与电力传动 学 号: 姓 名: 1.基于遗传算法的模糊控制MATLAB程序:clear allclose allclcT=0.1; %控制系统采样时间TM=200; %控制系统运行次数time=zeros(1,TM);kp=0.2;ki=0.002;kd=20;tr=0; %定义初始种群参数N=10; %初始种群数目M=3; %遗传代数varb=3; %语言值个数yout1=zeros(N,TM);yout=zeros(M,TM);fitness=zeros(1,N); %产生初始种群n=varb2;n1=varb2+varb*2; %每条染色体的长度mfpara1=randint(N,n,1,varb); %控制规则表mfpara2=-1*rand(N,varb); %mfpara2(1),mfpara2(2),mfpara2(3)分别为an,bn,cnmfpara3=rand(N,varb); %mfpara3(1),mfpara3(2),mfpara3(3)分别为ap,bp,cpinit=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 ymax2)|(overshoot1)|(accer50) fitness2=0; else tr1=tr*50; overshoot1=overshoot*100; accer1=accer*2; index=tr1,abs(overshoot1),accer1; fitness1=(0.6*index(1)+1.2*index(2)+1.2*index(3)/3; fitness2=100-fitness1; end fitness(q)=fitness2; y; yout1(q,:)=y; q=q+1 end %一代种群运行完毕 fitness maxfit1,h=max(fitness); maxfit(p)=maxfit1 %每代的最大适配值存入maxfit yout(p,:)=yout1(h,:); %每一代当适配值最大时,系统的阶跃响应输出 init=gene_tic(init,fitness,p,N,varb,n,n1); %调用遗传算法优化,得到新的种群 p=p+1end %运行3代后结束 for k=1:TM time(k)=k*T;end plot(time,yout(1,:),r-,time,yout(2,:),g-,time,yout(3,:),b-)legend(遗传第1代,遗传第2代,遗传第3代)grid onbest=max(maxfit) e1=1;y=;e=;e1=0;y1=0;y2=0;y3=0;u1=0;u2=0;u3=0;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; u(k)=kp*e(k)+ki*sum(e)+kd*(e(k)-e1); u1=u(k); e1=e(k); endfigure(2)opt=find(maxfit=best);plot(time,y,-,time,yout(opt(1),:)legend(PID控制器,GA优化的模糊PID控制器)grid on各子函数MATLAB程序:1) 模糊控制子程序fu_zzy.mfunction detae=fu_zzy(init,F,L,varb)if F=1 F=1;endif L=1 L=1;end %模糊控制规则an=init(10);bn=init(11);cn=init(12);ap=init(13);bp=init(14);cp=init(15);a=newfis(fuzzf); %建立隶属度函数a=addvar(a,input,F,-1,1);a=addmf(a,input,1,NL,zmf,-1,an);a=addmf(a,input,1,ZR,trimf,an,0,ap);a=addmf(a,input,1,PL,smf,ap,1);a=addvar(a,input,L,-1,1);a=addmf(a,input,2,NL,zmf,-1,bn);a=addmf(a,input,2,ZR,trimf,bn,0,bp);a=addmf(a,input,2,PL,smf,bp,1);a=addvar(a,output,detae,-1,1);a=addmf(a,output,1,NL,zmf,-1,cn);a=addmf(a,output,1,ZR,trimf,cn,0,cp);a=addmf(a,output,1,PL,smf,cp,1); %建立控制规则表rulelist=1 1 init(1) 1 1;1 2 init(2) 1 1;1 3 init(3) 1 1; 2 1 init(4) 1 1;2 2 init(5) 1 1;2 3 init(6) 1 1; 3 1 init(7) 1 1;3 2 init(8) 1 1;3 3 init(9) 1 1;a=addrule(a,rulelist);a1=setfis(a,DefuzzMethod,mom);writefis(a1,fuzzf);a2=readfis(fuzzf); %模糊控制器输出detae=evalfis(F,L,a2)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号