预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于遗传算法的PID整定原理及matlab仿真程序 主程序:chap5_2.m %ga(通用算法)程序优化EPID参数;closeall; globalrinyouttimef 尺寸=30;codel=3; minx(1)=zeros(1);maxx(1)=20*ones(1);minx(2)=zeros(1);maxx(2)=1.0*ones(1);minx( 3)=zeros(1);maxx(3)=1.0*ones(1); kpid(:,1)=minx(1)+(maxx(1)-minx(1))*rand(大小,1);kpid(:, 2)=minx(2)+(maxx(2)-minx(2))*rand(大小,1);kpid(:,3)=minx(3) +(maxx(3)-minx(3))*rand(大小,1); g=100;bsj=0; %***************开始转动***************分叉g=1:1:g time(kg)=kg; %******步骤1:evaluatebestj****fori=1:1:sizekpidi=kpid(i,:); [kpidi,bsj]=chap5_2f(kpidi,bsj); bsji(i)=bsj;终止 [oderji,indexji]=sort(bsji);bestj(kg)=oderji(1);bj=bestj(kg); ji=bsji+1e-10;%避免变零 fi=1./ji; %cm=最大值(ji); %fi=cm-ji; [oderfi,indexfi]=排序(fi);%排列Fismalltobiggerbestfi=oderfi(大 小);%letbestfi=最大值(fi) bests=kpid(indexfi(size),:);%letbests=e(m),mistheindexfibelongtomax(fi) kgbjbests %******step2:selectandreproductoperation******fi_sum=sum(fi); fi_u大小=(奥德菲/fi_u总和)*大小; fi_s=floor(fi_size);%selectingbiggerfivaluer=size-sum(fi_s); rest=fi_u-size-fi_u-s; [restvalue,index]=sort(rest); fori=尺寸:-1:尺寸-r+1 fi_s(index(i))=fi_s(index(i))+1;%addingresttoequalsizeend k=1; fori=size:-1:1%selectthesizethandreproducefirstlyforj=1:1:fi_s(i) tempe(k,:)=kpid(indexfi(i),:);%选择和生产 k=k+1;%kisusedtoreproduceendend %************步骤3:交叉操作************ pc=0.90; fori=1:2:(1号)温度=rand; ifpc>temp%crossoverconditionalfa=rand; tempe(i,:)=alfa*kpid(i+1,:)+(1-alfa)*kpid(i,:);tempe (i+1,:)=alfa*kpid(i,:)+(1-alfa)*kpid(i+1,:);恩登 tempe(size,:)=bests;kpid=tempe; %************步骤4:突变操作***************pm=0.10-[1:1:大小]**(0.01) /size;%biggerfi,smallerpmpm_uurand=rand(大小,代码);平均值=(最大值+最小 值)/2;dif=(maxx-minx); fori=1:1:size forj=1:1:codel ifpm(i)>pm_rand(i,j)%mutationconditiontempe(i,j)=mean(j)+dif(j)*(rand- 0.5);endendend %最佳个人温度(尺寸:)=最佳;kpid=tempe;endbestfibests best_j=bestj(g)figure(1); 情节(时间,bestj); xlabel(’times’);ylabel(’bestj’);figure(2); 绘图(timef,rin,'r',timef,yout,'b');xlabel(“时间”);伊拉贝尔 (“林,你”); 子程序:chap5_2f.m 函数[kpidi,bsj]=pid_gaf(kpidi