改进的PSO算法对PID控制器的参数优化
2018-09-19张春雷赵成龙瞿佳伟
陈 龙 张春雷 陈 璨 赵成龙 张 冀 瞿佳伟
(四川大学 制造科学与工程学院 成都610065)
PID算法简单,鲁棒性好,可靠性高,结构简单,广泛应用于工业控制和运动控制中,因为其将历史偏差、当前偏差、最近偏差结合起来考虑,方便建立一个精确的数学控制系统模型,因此在工业控制当中占据着重要的地位。然而实际的工业现场中,相对于高级控制算法,PID控制具有很多的不确定性、精度低、时滞性、非线性的运行工况差等问题,常规的PID算法难以达到控制的要求,需要引入高级控制算法的思想对PID进行改进。
随着人工智能技术的发展进步,有基于神经网络的 PID控制和结合蚁群和模拟退火算法的 PID控制,以及基于群体智能的PSO算法对PID参数的整定。
粒子群算法(Particle Swarm Optimization,PSO),是由Eberhart博士和Kennedy博士在1995年提出的一种基于群体智能的优化算法[1],通过个体与群体粒子的搜索迭代寻优逐渐找到最优解。针对非线性、复杂多峰的函数、PSO算法简单、通用性强、需要调整的参数少、收敛速度快的特点往往对其具有良好的优化能力。将改进的粒子群算法与PID算法结合,这些年得到了深入的研究和应用,任子武[2]等提出了一种带变异算子的改进粒子群优化算法。金翠云[3]等通过引入粒子最差位置关系和最优位置关系从而有效获得优化能力。
目前针对PSO算法,可以从参数选择,粒子群多样性研究,与其他优化算法相结合进行改进,但是难以克服粒子群易陷入局部寻优、全局寻优后期收敛速度慢的缺点。故采用一种收敛速度快,搜索精度高的自适应惯性系数ω的均值粒子群优化算法,对算法中的ω采取动态自适应变化方式,将粒子群的适应度值分为三种,每一种采取不同的惯性系数ω,同时把个体极值和全局极值线性组合来获得全局最优和个体最优。
用几个基准测试函数,验证本文提出的优化算法的高效可行性;得出改进该算法的高效和可行性,然后将该算法应用于PID参数整定中,将优化的参数与标准粒子群算法优化的PID参数做仿真对比。
1 标准粒子群算法
每个优化的问题都是一个粒子,每个粒子都有一个潜在的解。每一个粒子都有一个历史最优解和一个群体最优解,每个粒子都在指定的空间不断更新自己的位置和速度来搜索最优值。粒子群优化算法流程如图1所示。
1.1 算法流程及公式
在n个粒子组成的D维空间内粒子群不断地迭代更新寻找最优解。Xi=(Xi1,Xi2,Xi3,…,XiD)为某个粒子某个时刻的位置,其中Xi∈ LDHD,LD为搜索位置的最小值,HD为搜索位置最大值。Vi= (Vi1,Vi2,Vi3,… ,ViD),Vi∈ VminVmax其中Vmin为搜索速度的最小值,Vmax为搜索速度最大值。每个粒子在空间进行寻优的时候,需要结合自身历史最优值和群体历史最优值。
粒子自身历史最优值为:
粒子群自身最优位置为:
粒子在空间更新位置:
D维空间粒子速度更新公式:
图1 粒子群优化算法流程图
2 改进的粒子群算法
在标准粒子群算法中,一开始粒子群每个粒子的位置都是随机的,在粒子群开始迭代过程中,每个粒子根据个体的经验和群体的经验寻找最优解,每个粒子的位置都是一个潜在的解,惯性系数ω越大,局部最优解被忽略的概率越大,ω越小则容易忽略全局最优解,所有的粒子都有一个适应度函数,用来评价粒子所在位置的好坏,而适应度函数的值又和被优化函数具有关联性。适应度值越小,则离全局最优位置越近。如果能快速找到粒子的适应度值,对提高整个粒子群的算法收敛速度非常重要。设第d次迭代粒子适应度值为f(xd),再把求出的适应度值降序排列,然后一分为二分别算出适应度值f(x1),f(x2),再把f(xd)和f(x1),f(x2)进行比较,当f(xd)小于 f(x1),那么该粒子在全局最优位置附近,当f(xd)大于 f(x2),该粒子离最优位置越来越远。当f(x1)< f(xd)< f(x2),那么该粒子的位置不算太优也不算太差。根据不同位置而分出不同优劣等级的粒子群,相应采取不同的ω,达到快速寻优的能力。当f(xd)小于 f(x1),该粒子已经在全局最优位置附近,那么相应的f(x1)系数ω就要取小一些,有利于粒子群集中收缩到最优位置。当f(xd)大于f(x2)时,容易陷入局部寻优,所以將ω取得大一些,令ω=0.8。当f(x1)< f(xd)< f(x2)时使ω在[0.3 0.7]内随机取值,提高全局优化能力。粒子群算法的速度迭代公式是继承之前的速度然后根据自身经验和群体的经验来选择飞行方向和大小。由Deep K和Bansal JC提出均值粒子群优化算法[4],对速度迭代公式中的个体认知和群体认知部分做了修正,利于更快搜索到全局最优点,更新公式变化为:
文献[5]采取线性下降惯性因数的方法:
其中ωmax,ωmin为最大和最小惯性因数。n和nmax为当前迭代次数和最大迭代次数。c1和c2是个体学习因子和群体学习因子。c1指导粒子自身调整飞行经验和路径规划,c2指导粒子群根据以往飞行经验选择优化路径。学习因子选择得当能够很好的调整算法性能。文献[6]將收缩因子引入 PSO算法中,其表达式为:φ=c1+c2,收缩因子x提高了粒子群算法精度。
2.1 算法流程
(1)种群初始化,初始化最大迭代次数,粒子位置 LDHD,个体学习因子c1,社会学习因子c2,粒子飞翔速度范围 VmaxVmin,搜索空间D。
(2)根据个体最优位置和全局最优位置,计算适应度值f(xd)。
(3)降序排列所计算出的适应度值,一分为二,分别求出平均值f(x1),f(x2)。
(4)比较每个粒子的适应度值f(xd)和f(x1),f(x2)的关系,根据每个粒子所处位置的优劣程度,结合相应的惯性系数ω。
(6)判断整个算法是否达到优化的条件,如果是,则终止,如果不是返回步骤2。
(7)得到最优解,结束算法流程,跳出程序。
2.2 基准测试函数
对改进的粒子群算法(M-PSO)用基准测试函数进行对比试验,以验证其优化能力,其中c1=1.5,c2=1.5,粒子总数为100,每个标准函数的适应度值测试30次后取平均值,将改进的粒子群算法与标准的PSO算法进行对比。根据表1和图2可以得出改进的粒子群算法在精度和收敛性上都比标准粒子群算方法要好。
表1 标准函数测试结果
图2 标准粒子群算法与改进的粒子群算法(M-PSO)对测试函数的优化曲线
3 改进的粒子群算法对PID参数进行整定
3.1 PID参数自整定方法
对PID控制系统进行参数选取,使得由控制器和控制对象所组成的闭环回路控制系统的动态性能达到期望指标。自Ziegler和Nichols提出对PID控制器的参数整定起,已经有很多种方法被用于参数整定,包括经典PID调节的单参数整定法以及具有研究难点和复杂度的非线性智能PID参数整定方法等。
工业中常用经验试凑法、临界比例度法、衰减曲线法和响应曲线法用于PID整定。临界比例度法使用最广,但是当工艺要求严格,求取比例度小时,不适宜用这种方法,简单易行的衰减曲线法分为4:1衰减曲线法和10:1的衰减曲线法,在响应迅速,控制系统干扰太大的环境下不适合采用这种方法,经验试凑法是在时间过程中不断调试总结而来的,往往根据经验调整。对于非线性复杂度高的多参数控制系统是研究的热点和难点。PSO群体智能算法能够很好的处理非线性约束问题,相比于其他算法具有一定的优越性,将自适应的PSO算法应用于PID控制进行参数整定优化,將使得控制系统具有鲁棒性好,适应性强等特点,这种智能算法,方便控制系统处理复杂多变的控制系统。
3.2 基于改进的PSO算法进行PID参数整定
把粒子群的适应度值作为评价PID控制器性能好坏的参数,为了能够准确评估控制效果,采用误差绝对值乘以时间积分(ITAE)作为判别控制性能的指标[7-10]:
ITAE在工程运算中能够有效体现控制系统的综合性能,用它得出的控制性能参数使得系统稳定性,超调量小,响应时间快等优点,因此选用ITAE作为算法性能的评价函数。
利用改进的PSO算法对PID控制系统参数优化,將产生的粒子群依次赋值给Kp,Ki,Kd,然后运行已经建立好的仿真模型输出性能指标,判断该性能指标是否满足条件,如果满足得出最优解,如果不满足,更新粒子群进行运行Simulink模块,直到满足终止条件。通过Matlab辨识出温度控制系统的传递函数,然后对其进行仿真分析,其传递函数表达式为:
3.3 仿真实验及结果分析
运行代码和仿真模块可以看出 ITAE不断变小最终等于1.0543,当ITAE达到稳点的最小值过后所得到的Kp、Ki、Kd值就是满足最优控制性能的参数组合,Kp=32.6365,Ki=0.1656,Kd=37.8990。将这些参数传回Simulink仿真。模块得到单位阶跃响应图,如图3所示。
图3 PSO优化PID得到的阶跃响应图
由图3可知,相比于标准PSO算法,改进的算法(MPSO),ITAE随着迭代次数的增加,减小的幅度更大,从而所获得的PID参数也较好,改进的粒子群算法使得控制系统超调量小,稳定性好,由此得到的PID参数也是最好的。
4 结语
本文提出的一种基于惯性系数ω和粒子适应度值相结合的方法,使得每个粒子依据自身的适应度值选择合适的惯性系数ω,从而加强了粒子群算法对于复杂问题的控制和优化,在不明显增加改进算法难度和复杂度的情况下,大幅的提高了算法的寻优能力,提升了整定PID参数的能力,最后通过仿真对比表明本文提出方法能够取得更好的整定效果。