基于遗传算法的PID参数优化设计_第1页
基于遗传算法的PID参数优化设计_第2页
基于遗传算法的PID参数优化设计_第3页
基于遗传算法的PID参数优化设计_第4页
基于遗传算法的PID参数优化设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

基于遗传算法的PID参数优化设计摘要:PID调节器是最早发展起来的控制策略之一,遗传算法是一种借鉴生物界自然选择和自然遗传学机理上的迭代自适应概率性搜索算法。遗传算法模仿生物进化的步骤,在优化过程中引入选择,交叉,变异等算子,选择是从父代种群中将适应度较高的个体选择出来,以优化种群;交叉是从种群中随机地抽取一对个体,并随机地选择多位进行交叉,生成新样本,达到增大搜索空间的目的;变异是为了防止选择和交叉丢失重要的遗传信息,它对个体按位进行操作,以提高GA的搜索效率和全局搜索能力。通过适应度函数来确定寻优方向,与其他一些常规整定方法相比,遗传算法比较简便,整定精度较高。关键字:PID调节器,遗传算法,适应度函数Abract:Keyword:1引言传统的比例、积分、微分控制,即PID控制具有算法简单、鲁棒性好和可靠性高等优点,已经被广泛用于工业生产过程控制。但工程实际中,PID控制器的比例、积分和微分调节参数往往采用实验加试凑的方法由人工整定。PID控制作为比较成熟的控制技术广泛应用于工业生产过程,目前绝大多数底层控制都采用PID控制器。实际应用中控制器的参数往往采用实验试凑的方法人工整定,该方法往往整定不良、性能不佳,而且对运行工况的适应性很差。近年来随着计算机技术的广泛应用,人工智能算法PID整定策略发展迅速,如模糊PID、专家PID、神经元网络PID以及遗传算法等。这些算法能够实现提高优化性能,缩短整定时间,实际应用方便的控制目标。2PID控制器PID控制器是将偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对被控对象进行控制的。模拟PID控制的系统原理图如图2-1所示。 图2-1.模拟PID控制的系统原理图模拟PID控制规律为位置式:(2-1)当系统采样周期为时,对上式离散化处理,可得到离散位置式PID控制表达式:(2-2)式中,。增量式PID控制表达式可以表示为:(2-3)(2-4)2遗传算法简介2.1遗传算法的基本原理遗传算法(GeneticAlgorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,将达尔文生物进化理论引入参数寻优之中,适应度高的个体越容易被保留,经过若干代数遗传操作,种群各个体的适应度不断提高,直至满足一定的极限条件,获得优化问题最优解。此外,遗传算法对初始值没有特殊要求,不需要充足的先验知识即可求解,应用性极强。 遗传算法的主要操作步骤有:染色体编码(含解码)、种群选择、交叉、变异。2.2遗传算法的特点同常规优化算法相比,遗传算法有以下特点:1)遗传算法是对参数的编码进行操作,而不对参数本身。首先基于一个有限的字母表,把最优化问题的自然参数集编码为有限长度的字符串。2)遗传算法是从许多点开始并行操作的,而不局限于一点,有效防止搜索过程收敛于局部最优解。3)遗传算法通过目标函数来计算适应度,不需要其他推导和附加信息,对问题的依赖性较小。4)遗传算法的寻优规则是由概率决定的,而非确定性的。5)遗传算法在解空间进行高效启发式搜索,而非盲目地穷举或完全随机搜索。6)遗传算法对于待寻优的函数基本无限制,它不要求函数连续和可微,可以是数学解析式所表达的显函数,又可以是映射矩阵甚至是神经网络等隐函数,因而应用范围较广。7)遗传算法具有并行计算的特点,因而可以通过大规模并行计算来提高计算速度。8)遗传算法计算简单,功能强,更适合大规模复杂问题的优化。3遗传算法的基本操作3.1二进制编码 染色体编码方式主要有二进制编码和实数编码两种。相比较而言,二进制编码的执行效率较高,遗传算法应用较简便,故在此主要介绍二进制编码和解码。顾名思义,二进制编码是仅由0、1组成的编码,初始个体的基因值可以用均匀分布的随机数产生。假如要估计的参数个数为,染色体长度为,那么每个个体的编码数为。针对该个体(参数组)第个元素进行解码有:(5)其中,与分别代表该元素取值上下限,表示该元素二进制编码的十进制转换值。3.2选择算子 依据“优胜劣汰,适者生存”的进化思想,适应度越高的个体能够产生后代的概率越大,其被保留的概率也越大。一般的遗传算法大多采用基于轮盘赌的选择策略:假设一个种群含有个个体,每个个体的适应度为,将其归一化:(6)然后前项相加作为选择依据,即当大于等于随机数时,选择该个体保留。这样适应度较高的个体占的比例大,其被随机选中的概率也大。3.3复制复制是从一个旧种群中选择生命力强的个体位串产生新种群的过程。根据位串的适配值拷贝,也就是指具有高适配值的位串更有可能在下一代中产生一个或多个子孙。它模仿了自然现象,应用了达尔文的适者生存理论。复制操作可以通过随机方法来实现。若用计算机程序来实现,可考虑首先产生0~1之间均匀分布的随机数,若某串的复制概率为40%,则产生的随机数在0~0.40之间时,该串被复制,否则被淘汰。此外,还可以通过计算方法实现,其中较典型的几种方法为适应度比例法、期望值法、排位次序法等。适应度比例法较常用。3.4交叉复制操作能从旧种群中选择出优秀者,但不能创造新的染色体。而交叉模拟了生物进化过程中的繁殖现象,通过两个染色体的交换组合,来产生新的优良品种。它的过程为:在匹配池中任选两个染色体,随机选择一点或多点交换点位置;交换双亲染色体交换点右边的部分,即可得到两个新的染色体数字串。交换体现了自然界中信息交换的思想。交叉有一点交叉、多点交叉、还有一致交叉、顺序交叉和周期交叉。一点交叉是最基本的方法,应用较广,它是指染色体切断点有一处,例如:A:1011001110->1011000101B:0010100101->00101011103.5变异变异运算用来模拟生物在自然界的遗传环境中由于各种偶然因素的基因突变,它以很小的概率随机地改变遗传基因(表示染色体的符号串的某一位)的值。在染色体以二进制编码的系统中,它随机地将染色体的某一基因由1变为0,或由0变为1。若只有选择和交叉,而没有变异,则无法在初始基因组合以外的空间进行搜索,使进化过程在早期就陷入局部解而进入终止过程,从而影响解的质量。为了在尽可能大的空间中获得质量较高的优化解,必须采用变异操作。4基于遗传算法的PID控制设计4.1遗传算法整定PID参数的优点采用遗传算法进行PID三个系数的整定,具有以下优点:1)与单纯形法相比,遗传算法同样具有良好的寻优特性,且它克服了单纯形法的初值敏感性。在初始条件选择不当的情况下,遗传算法在不需要给出调节器初始参数的情况下,仍能寻找到合适的参数,使控制目标满足要求。同时单纯形法难以解决多值函数问题以及在多参数寻优(如串级系统)中,容易造成寻优失败或时间过长,而遗传算法的特性决定了它能很好地克服以上问题。2)与专家整定法相比,它具有操作方便,速度快的优点,不需要复杂的规则,只需要对字符串进行复制、交叉、变异运算,便可达到寻优。避免了专家整定法中前期大量的知识库整理工作以及大量的仿真实验。3)遗传算法是从许多点开始并行操作,在解空间进行高效启发式搜索,克服了从单点出发的弊端以及搜索的盲目性,从而提高运算速度,避免了过早陷入局部最优解(如图1所示)。4)遗传算法不仅适用于单目标寻优,而且也适用于多目标寻优。根据不同的控制系统,针对一个或多个目标,遗传算法均能在规定的范围内寻找到合适参数。遗传算法作为一种全局优化算法,得到了越来越广泛的应用。近年来,遗传算法在控制上的应用日益增多。图1遗传算法的运算过程4.2基于遗传算法整定PID参数的步骤(1)确定决策变量和约束条件我们知道,PID控制的三个系数为Kp、Ki、Kd,我们可以根据参数的物理意义和经验来确定它们的取值范围,即约束条件。建立优化模型为获取满意的过渡过程动态特性,采用误差绝对值时间积分性能指标作为参数选择最小目标函数。为防止控制量过大,在目标函数中加入控制输入的平方项。最后选用以下公式作为参数选择的最优指标:J=式中,有e(t)为系统误差,u(t)为控制器输出,为上升时间,,,为加权值。同时,为避免超调,采用遗传算法的处罚功能,即一旦超调,将超调量作为最优指标的一项,此时最优指标为:如果e(t)<0则J=其中,为加权值,且»。确定编码和解码方法。遗传算法有二进制、格雷码、浮点数和实数编码方法。用实数编码无需解码,但进行遗传操作时不太方便;用二进制编码方法,遗传操作方便,解码处理后即可得到最优解。确定个体评价方法,即确定个体适应度函数(FitnessFunction)。评价个体适应度的一般过程是:对个体编码串进行解码处理后,可得到个体的表现型;由表现型可计算出对应个体的目标函数值;根据最优问题的类型,有目标函数值按一定的转换规则可求出个体的适应度。确定遗传算法的运行参数根据实际情况确定群体大小M、遗传代数kg、交叉概率Pc、变异概率Pm和权值,,,的大小。本文取M=30,kg=100,Pc=0.9,Pm不固定,=0.999=0.001,=2,=100。编写遗传算法程序,并进行仿真,从而得到优化后的PID参数。4.3遗传算法PID参数整定1模型描述 对于连续二阶模型(8)将其化作状态空间结构框图如图2所示。图2系统状态空间结构框图那么该系统可以转换为状态空间表达式(9)将其写为微分方程组的形式,解该方程组就可以得到连续系统的输出量。另一种处理方法是将该连续系统离散化,对于二阶系统而言,其Z传递函数的分子分母最多为Z的2次。后向差分变换后,可以得到(10)本文将以,,的连续系统为例进行数字PID参数整定2目标函数表述 目标函数选取不同,将会导致参数整定结果不同。因此目标函数的选取直接关系到控制效果的优劣。本文以二次型性能指标函数(11)其中,为常数。由于遗传算法选择目标函数值最大的个体,而实际上二次性能指标越小越好,故可令目标函数(12)其中为一极小的正数,用于防止造成计算失误,可令。该目标函数充分考虑了控制量和输出量的稳定性和动态性能,往往能够获得满意的控制效果。5遗传算法整定PID参数的编程实现与仿真5.1工业对象的数学建模由于工业领域中的被控对象一般为一阶或二阶环节,因此,在本文里我们拟定受控对象的传递函数为如下:G(s)=其中采样时间为20s。5.2遗传算法整定PID参数的实现与控制效果5.2.1编写最优指标的M文件利用遗传算法整定PID参数,首先,最核心的是要编写最优指标的m文件。m文件里主要是一个函数,函数里包含了受控对象以及性能指标的程序实现。它是联系遗传算法与PID整定环节的桥梁。具体程序见附件。根据4.2的步骤(2)可以得出目标函数J如下:J=e(t)0J=e(t)<0MATLAB程序实现:fori=1:1:PJi(i)=0.999*abs(error(i))+0.001*u(i)^2;B=B+Ji(i);ifi>1erry(i)=yout(i)-yout(i-1);iferry(i)<0B=B+100*abs(erry(i));endendendBsJ=B+2*tu;在控制系统里要求目标函数的值越小越好。然而,在遗传算法里是按照最大化方向进行搜索的。因此,设计适应度函数为:F=1/J.主程序的编程实现也比较简单,具体如下:Ji=BsJi+1e-10;%避免分母为零fi=1./Ji;在MATLAB程序里用此句来调用函数:[Kpidi,BsJ]=fitness(Kpidi,BsJ);因此,在写完m文件时,应把文件命名为fitness.m。另外一个也是非常重要的,那就是传递函数的生成与定义输出,实现如下:由于传递函数为:G(s)=Z变换后可得G(z)=程序实现:ts=20;%采样时间20ssys=tf(1,[60,1],’inputdelay’,80);%生成传递函数G(s)dsys=c2d(sys,ts,'z');%Z变换G(z)[num,den]=tfdata(dsys,'v');%返回z变换后的各项系数其中:num(1)=0num(2)=0.2835den(1)=1den(2)=-0.7165=G(z)=,从而U(z)*0.2835=Y(z)(z-0.7165)即U(z)*num(2)=Y(z)(z+den(2))写成差分方程为:y(k+1)=-den(2)y(k)+num(2)u(k)差分方程在程序可以如下实现:yout(k)=-den(2)*y_1+num(2)*u_1;u_1=u(k);y_1=yout(k);5.2.1编写主程序主程序里是遗传算法的实现,其中最重要的是三个遗传操作:复制、交叉、变异。遗传算法的程序流程图如图2所示:图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);fori=Size:-1:Size-r+1fi_S(Index(i))=fi_S(Index(i))+1;endk=1;fori=Size:-1:1forj=1:1:fi_S(i)TempE(k,:)=Kpid(Indexfi(i),:);k=k+1;endend交叉交叉概率在本文里设定为0.9,交叉的主要程序如下:Pc=0.90;%交叉概率fori=1:2:(Size-1)temp=rand;ifPc>tempalfa=rand;TempE(i,:)=alfa*Kpid(i+1,:)+(1-alfa)*Kpid(i,:);TempE(i+1,:)=alfa*Kpid(i,:)+(1-alfa)*Kpid(i+1,:);endendTempE(Size,:)=BestS;Kpid=TempE;变异变异部分程序的实现如下:Pm=0.10-[1:1:Size]*(0.01)/Size;Pm_rand=rand(Size,CodeL);Mean=(MaxX+MinX)/2;Dif=(MaxX-MinX);fori=1:1:Sizeforj=1:1:CodeLifPm(i)>Pm_rand(i,j)TempE(i,j)=Mean(j)+Dif(j)*(rand-0.5);endendend定义输出本程序的定义了两个输出,一个是目标函数值J;另一个是PID参数整定后的具体值。BestfiBestSBest_J=BestJ(G)figure(1);plot(time,BestJ);xlabel('Times');ylabel('BestJ');figure(2);plot(timef,rin,'r',timef,yout,'b');xlabel('Time(s)');ylabel('rin,yout1,yout');主程序的完整程序见附件。5.2.2仿真结果与分析根据遗传算法优化PID参数的步骤,运行程序,经过100代的进化,可获得优化参数Kp=1.0814、Ki=0.9093、Kd=0.0329,性能指标J=218.3443。性能指标的优化过程和经过优化后的PID控制阶跃响应分别如图3和图4所示:图3性能指标J的优化过程图4整定后的PID阶跃响应由上图可知,基于遗传算法整定PID的阶跃响应曲线能保证系统的稳定,调节时间较短,曲线能较快速地到达稳态,但是超调量较大。附录Matlab里遗传算法程序:clearall;%清除了所有的变量,包括全局变量globalcloseall;globalrinyouttimef%定义全局变量Size=30;%样本个数定为30CodeL=3;MinX(1)=zeros(1);MaxX(1)=20*ones(1);%定义Kp的取值范围为0-20MinX(2)=zeros(1);MaxX(2)=1.0*ones(1);%定义Ki的取值范围为0-1MinX(3)=zeros(1);MaxX(3)=1.0*ones(1);%定义Kd的取值范围为0-1Kpid(:,1)=MinX(1)+(MaxX(1)-MinX(1))*rand(Size,1);%取值为0-1的随机数产生初始种群Kpid(:,2)=MinX(2)+(MaxX(2)-MinX(2))*rand(Size,1);Kpid(:,3)=MinX(3)+(MaxX(3)-MinX(3))*rand(Size,1);G=100;%100代进化BsJ=0;%最优指标初始值%***************开始运行***************forkg=1:1:Gtime(kg)=kg;%******Step1:估计最优指标******fori=1:1:SizeKpidi=Kpid(i,:);[Kpidi,BsJ]=fitness(Kpidi,BsJ);%调用m函数BsJi(i)=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);%Bestfi取得适应度最大值BestS=Kpid(Indexfi(Size),:);%LetBestS=E(m),mistheIndexfibelongtomax(fi)kg%输出BJBestS%******Step2:选择与复制******fi_sum=sum(fi);fi_Size=(Oderfi/fi_sum)*Size;fi_S=floor(fi_Size);%SelectingBiggerfivaluefloor()朝负无穷方向舍入r=Size-sum(fi_S);Rest=fi_Size-fi_S;[RestValue,Index]=sort(Rest);fori=Size:-1:Size-r+1fi_S(Index(i))=fi_S(Index(i))+1;endk=1;fori=Size:-1:1forj=1:1:fi_S(i)TempE(k,:)=Kpid(Indexfi(i),:);%选择与复制k=k+1;%k用于复制endend%************Step3:交叉************Pc=0.90;%交叉概率fori=1:2:(Size-1)temp=rand;ifPc>temp%交叉条件alfa=rand;TempE(i,:)=alfa*Kpid(i+1,:)+(1-alfa)*Kpid(i,:);TempE(i+1,:)=alfa*Kpid(i,:)+(1-alfa)*Kpid(i+1,:);endendTempE(Size,:)=BestS;Kpid=TempE;%************Step4:变异**************Pm=0.10-[1:1:Size]*(0.01)/Size;%Pm应取很小值Pm_rand=rand(Size,CodeL);Mean=(MaxX+MinX)/2;Dif=(MaxX-MinX);fori=1:1:Sizeforj=1:1:CodeLifPm(i)>Pm_rand(i,j)%MutationConditionTempE(i,j)=Mean(j)+Dif(j)*(rand-0.5);endendendTempE(Size,:)=BestS;Kpid=TempE;endBestfiBestSBest_J=BestJ(G)figure(1);plot(time,BestJ);xlabel('Times');ylabel('BestJ');figure(2);plot(timef,rin,'r',timef,yout,'b');xlabel('Time(s)');ylabel('rin,yout1,yout');适应度函数的m文件(

温馨提示

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

评论

0/150

提交评论