基于遗传算法的PID整定原理及matlab仿真程序.pdf
基于遗传算法的PID整定原理及matlab仿真程序--第1页
基于遗传算法的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
基于遗传算法的PID整定原理及matlab仿真程序--第1页
基于遗传算法的PID整定原理及matlab仿真程序--第2页
%******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),:);