Kpid(:,3)=MinX(3)+(MaxX(3)-MinX(3))*rand(Size,1); G=1000; BsJ=0;
%*************** 开始运行 *************** for kg=1:1:G time(kg)=kg;
%****** 步骤 1 : 产生 BestJ ****** for i=1:1:Size
Kpidi=Kpid(i,:); %代入PID参数
[Kpidi,BsJ]=chap5_3f(Kpidi,BsJ);%调用系统模型函数
BsJi(i)=BsJ; %取出最优值 end
[OderJi,IndexJi]=sort(BsJi); BestJ(kg)=OderJi(1); BJ=BestJ(kg);
Ji=BsJi+1e-10; %避免除0运算
fi=1./Ji;
[Oderfi,Indexfi]=sort(fi); %从小到大排列fi Bestfi=Oderfi(Size); %令 Bestfi=max(fi)
BestS=Kpid(Indexfi(Size),:); %令 BestS=E(m), m 是 max(fi) 的索引
kg BJ BestS
%****** 步骤 2 : 选择与新种群产生 ****** 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);
for i=Size:-1:Size-r+1
fi_S(Index(i))=fi_S(Index(i))+1; % 使得种群大小保持不变 end
k=1;
for i=Size:-1:1 for j=1:1:fi_S(i)
TempE(k,:)=Kpid(Indexfi(i),:); % 选择与生成新个体
k=k+1; % k 用来生成新个体 end end
%************ 步骤 3 : 交叉运算 ************ Pc=0.90; for i=1:2:(Size-1) temp=rand;
if Pc>temp %交叉条件 alfa=rand;
TempE(i,:)=alfa*Kpid(i+1,:)+(1-alfa)*Kpid(i,:); TempE(i+1,:)=alfa*Kpid(i,:)+(1-alfa)*Kpid(i+1,:); end end
TempE(Size,:)=BestS; Kpid=TempE;
%************ 步骤 4: 变异运算 **************
Pm=0.10-[1:1:Size]*(0.01)/Size; %具有更大 fi的个体具有更小的 Pm Pm_rand=rand(Size,CodeL); Mean=(MaxX + MinX)/2; Dif=(MaxX-MinX);
for i=1:1:Size for j=1:1:CodeL
if Pm(i)>Pm_rand(i,j) %变异条件 TempE(i,j)=Mean(j)+Dif(j)*(rand-0.5); end end end
%保证 TempE(Size,:) 为最优个体 TempE(Size,:)=BestS; Kpid=TempE; end Bestfi BestS
Best_J=BestJ(G) figure(1); plot(time,BestJ);
xlabel('Times');ylabel('Best J'); figure(2);
plot(timef,rin,'r',timef,yout,'b'); xlabel('Time(s)');ylabel('rin,yout');
5.3. 仿真优化及分析
由式(4-2)可知,二次型性能指标的常数?的取值范围为0?首先取??1,
??1。
设置控制系统M函数模型的运行时间为100秒。给定阶跃信号,采用实数编码方式,经过100代进化,获得的优化PID整定结果为Kp=0.2756,Ki=0,Kd=0.9210,性能指标J=5.1323。得到系统动态响应曲线,如图5-2所示。
1.41.210.8Out(t)0.60.40.2001020304050Time(s)60708090100
图5-2 系统响应曲线
由图5-2可测得,系统调节时间T=34s,超调量为12.5%,最终达到稳定,无静态误差,得到较好的动静态响应特性。图5-3表示控制器输出波形,如图,控制器输出峰值为1.17,并且35秒后趋于稳定。
1.210.80.6U(t)0.40.20-0.201020304050Time(t)60708090100
图5-3 控制器输出波形
图5-4为遗传算法随进化代数增加,性能指标J的变化过程,在100代前后得到最优参数。
3x 1042.52Best J1.510.500100200300400500Times6007008009001000
图5-4 遗传算法优化过程
二次型性能指标系数是否对对优化结果产生影响,可通过改变?值并进行寻优来研究。?值分别为0.25,0.5,0.75,1时的响应曲线比较图如图5-4所示。
1.4ρ=1ρ=0.75ρ=0.5ρ=0.25 1.210.8Out0.60.40.20 0102030Time(s)405060
图5-5 不同参数值下的响应曲线比较
当?值增加时超调量上升,调节时间增加。
6. 总结
本文在二次型性能指标的要求下,通过研究遗传算法,对控制对象进行PID参数整定,对PID系数进行了优化。利用优化结果进行了系统仿真,分析了控制器输出响应与系统动态响应。并对在不同?值下的的系统响应进行了对比分析,得出结论。可以得出,利用遗传算法可以较好的优化PID控制器参数,使系统得到较好的动静态响应。
参考文献
1.关守平,周玮等. 计算机控制系统[M]. 北京:科学出版社,2009.
2.薛定宇,陈泉阳. 高等应用数学问题的MATLAB求解[M].北京:清华大学出版社,2008.
3.薛定宇.控制系统计算机辅助设计[M].北京:清华大学出版社,2006. 4.周明,孙树栋.遗传算法原理及应用[M].北京:国防工业出版社,1999. 5.刘金琨.先进PID控制MATLAB仿真[M].北京:电子工业出版社,2004. 6.苏小林,阎晓霞.基于遗传算法的PID参数优化技术电力系统及其自动化学 报,1997, 9(2):20----26.
7.刘国贤,林宪枢,杨奇逊.基于遗传算法的控制器参数寻优[J],现代电力,1997,14(3):18----22
8.杨智,高靖,基于遗传算法的预测自整定PID控制器[J].控制与决策,2000,15(1):113----115,118