遗传算法的参数整定报告_第1页
遗传算法的参数整定报告_第2页
遗传算法的参数整定报告_第3页
遗传算法的参数整定报告_第4页
遗传算法的参数整定报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于遗传算法的PID控制器参数整定报告 一、 遗传算法。遗传算法(GAs)是基于自然界生物进化机制的搜索寻优技术。用遗传算法来整定PID参数,可以提高优化性能,对控制系统有良好的控制精度、动态性能和鲁棒性。一般的,Gas包括三个基本要素:复制、交叉和突变。二、PID Optimal-TuningPID控制:对偏差信号e(t)进行比例、积分和微分运算变换后形成的一种控制规律。 (1)可调参数:比例度(P)、 积分时间Ti(I)、微分时间Td(D)。通常,PID控制准则可以写成下面传递函数的形式: (2)Kp、Ti和Td分别是比例放大率、积分时间常量和微分时间常量。1) 比例控制(P):是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady stateerror),比例度减小,稳态误差减小;2) 积分(I)控制:在积分控制中,控制器的输出与输入误差信号的积分成正比关系。3) 微分(D)控制:在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。文中,性能指标是误差平方的时间加权积分,表示为: (3)其中n是非负整数,是积分周期。此外,其他标准项如超调量、上升时间和稳定时间也被一个合成性能指标选择: (4)分别代表超调量、上升时间和稳定时间。两个系数有用户定义或决定。预期的性能指标的最下化可以认为是小的超调量、短的上升时间和稳定时间。三个PID参数的编码方式如下: 、和都是八位二进制字符格式。自适应函数的选择关系到性能指标,如: (5)实际上,可以是任何一个能切实表达和关系的非线性函数。遗传操作是模拟生物基因遗传的操作,从优化搜索的角度而言,遗传操作可使问题的解一代一代地优化,并逼近最优解,主要包括三个遗传算子:选择、交叉和变异。关于他们的具体方法这里不在赘述。三、 计算机实现作者编程使用的事TURBO C。程序包括两个部分:一个是仿真PID控制系统的闭环阶跃响应;另一个是实施对一代所有成员的遗传算法的仿真,这里遗传算法将一代作为一个整体。在第一代生物的二进制代码随机产生之后,这个过程重复直至迭代次数达到预选的次数。步长、PID参数范围、性能指标、自适应函数和方法得时间延迟都是从一个文件中读取。而遗传算法的的参数,诸如世代数、交叉概率、变异概率、选择概率等通过菜单选择。整个闭环系统仿真的完成可以用四阶龙格库塔法或直接时域计算。在程序中,复制的实现是通过轮盘赌博法的线性搜索,面积加权于上一代成员的适应值。交叉发生在每一对复制产生的成员。交叉操作是将一个随机产生的一个在0到1之间数与交叉概率比较决定是否需要交叉。如果需要交叉,则在1到47之间随机产生一个交叉位置代码。变异,对新一代所有成员都随机产生一个0到1之间的数与变异概率比较,然后再决定是否改变代码的一位。同理,反转也是这样判定和操作的。另一需要说明的事,两个反转位置代码是在148之间随机选择的。同样,依据随机的预选概率,预选操作是用好的后代取代不好父代。除了这些基本操作,另一个过程叫做存储也在程序中进行,它是存储老一代适应值高的成为新一代。程序实现过程列出如下:(1) 将三个参数编码成二进制字符串;(2) 生成第一代成员编码成字符串;(3) 将字符串解码成三个参数:;(4) 计算所有的传递函数;(5) 使用四阶龙格库塔仿真闭环系统的阶跃响应;(6) 计算自适应函数;(7) 用轮盘赌博法复制(繁殖)新一代的48位二进制字符串;(8) 交叉,对新一代中每对进行交叉操作,交叉位置随机产生;(9) 变异,依据变异概率对新一代所以成员进行变异操作;(10) 反转,依据反转概率对新一代所以成员进行反转操作;(11) 预选,依据预选概率对新一代所以成员进行反转操作;(12) 存储老一代中自适应值高的使之成为新一代;(13) 重复(3)(12),迭代直至结果被接受。在程序中,不同的性能指标可以选择,如误差的平方时间加权的积分。通过改变性能指标组合或增加一些系数来改变那些不完全满足要求的成员的适应值。四、数值例子 在这里研究者共做了四个数值例子。使用了ZN和遗传两种算法,对于遗传算法每个例子分别又使用了三个性能指标函数:。(注:由于论文中只是指出了的表达式,其他数据都是取自于其他论文。所以在后面的数值仿真中,本文只使用自适应函数为来进行实现PID参数整定。) Example 2 ;研究者的数值结果详见附录参考文献。 本人对文中第二个例子进行了仿真:样本个数为30,采用二进制编码方式,交叉概率:Pc=0.6,变异概率:Pm=0.001,种群大小M=30,终止迭代进化次数G=100。得到最佳样本Bests= ;最终PID参数整定为Ki=15.5816;Ki=0.9912;Kd=0.7136。图1为系统阶跃响应,图2为目标函数J的优化过程。五、结论通过对仿真结果的对比,发现GA得到的结果总是好于ZN。GA成功的降低了不希望的超调量并且达到较少的上升和稳定时间。可以有效的解释作者提出的工作指标效果更好,在例1和例2中得到了充分的体现。 图1 带延迟的二阶系统的阶跃响应 图2 目标函数J的优化过程MATLAB主程序:%基于GA(Generic Algorithm)算法的PID参数整定clear all;close all;global rin yout timefG=100;%迭代次数Size=30;%种群大小CodeL=10;%编码长度/3MinX(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);E=round(rand(Size,3*CodeL); %初始化编码BsJ=0;for kg=1:1:G time(kg)=kg; for s=1:1:Size %译码 m=E(s,:); y1=0;y2=0;y3=0; m1=m(1:1:CodeL); for i=1:1:CodeL y1=y1+m1(i)*2(i-1); end Kpid(s,1)=(MaxX(1)-MinX(1)*y1/1023+MinX(1); m2=m(CodeL+1:1:2*CodeL); for i=1:1:CodeL y2=y2+m2(i)*2(i-1); end Kpid(s,2)=(MaxX(2)-MinX(2)*y2/1023+MinX(2); m3=m(2*CodeL+1:1:3*CodeL); for i=1:1:CodeL y3=y3+m3(i)*2(i-1); end Kpid(s,3)=(MaxX(3)-MinX(3)*y3/1023+MinX(3);%* 第一步 1 : 评估个体 BestJ(个体编码)*Kpidi=Kpid(s,:); Kpidi,BsJ=pidzd(Kpidi,BsJ); %调用M文件BsJi(s)=BsJ; end OderJi,IndexJi=sort(BsJi); BestJ(kg)=OderJi(1); BJ=BestJ(kg); Ji=BsJi+1e-10; fi=1./Ji; Oderfi,Indexfi=sort(fi); Bestfi=Oderfi(Size); BestS=Kpid(Indexfi(Size),:); Bestfi=Oderfi(Size); BestS=E(Indexfi(Size),:); kg BJ BestS; %* 第二步 : 选择和复制操作n* fi_sum=sum(fi); fi_Size=(Oderfi/fi_sum)*Size; fi_S=floor(fi_Size); kk=1; for i=1:1:Size for j=1:1:fi_S(i) TempE(kk,:)=E(Indexfi(i),:); kk=kk+1; end end%* 第三步 :交叉操作 *pc=0.60;n=ceil(20*rand);for i=1:2:(Size-1) temp=rand; if pctemp %交叉条件 for j=n:1:20 TempE(i,j)=E(i+1,j); TempE(i+1,j)=E(i,j); end endendTempE(Size,:)=BestS;E=TempE; %* 第四步: 变异操作 *pm=0.001-1:1:Size*(0.001)/Size; for i=1:1:Size for j=1:1:3*CodeL temp=rand; if pmtemp %变异条件 if TempE(i,j)=0 TempE(i,j)=1; else TempE(i,j)=0; end end end endTempE(Size,:)=BestS; E=TempE; %*end Bestfi %最大适应值 BestS %最佳个体编码 Kpidi %参数整定结果 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);%单位阶跃响应子程序:function Kpidi,BsJ=pidzd (Kpidi,BsJ)global rin yout timefts=0.001;%采样时间sys=tf(12.5,1,2.58,12.5); dsys=c2d(sys,ts,z); num,den=tfdata(dsys,v); rin=1.0; %输入的信号u_1=0.0;u_2=0.0;y_1=0.0;y_2=0.0;x=0,0,0;B=0;error_1=0;tu=1; s=0;P=1000; for k=1:1:P timef(k)=k*ts; r(k)=rin; u(k)=Kpidi(1)*x(1)+Kpidi(2)*x(2)+Kpidi(3)*x(3); %控制规律 if u(k)=10 u(k)=10; end if u(k)0.95&yout(k)1 erry

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论