当前位置:首页 > 基于蚁群算法PID控制寻优实现(有代码超详细)
8765Kp、Ki、Kd优化曲线 最优个体适应值10090807060KpKiKd参数值43210 02040迭代次数6080100适应值5040302010002040迭代次数6080100图11Kp,Ki,Kd的优化曲线图12最优个体适应值的变化曲线
由图9和图10可以看出,在该组参数下,控制信号峰值为1.1377,响应曲线的峰值为1.147,上升过程超调较小,为14.7%。系统经过35s进入稳态,稳态值为1,无稳态误差,符合工程实际要求。与利用下山单纯形法的优化结果进行对比如表1所示。
表1利用粒子群优化算法与下山单纯形法的优化结果比较
参数指标
Kp Ki Kd 调节时间 控制信号峰值 响应曲线峰值 稳态值 响应曲线超调量 最小适应值J
粒子群优化算法
0.2512 0 0.8865 35s 1.1377 1.147 1 14.7% 5.6192
下山单纯形法
0.2705 0 0.8344 43s 1.1049 1.174 1 17.4% 5.6319
通过比较,可以得出在采用粒子群优化算法优化得到的最优PID控制器参数下,与采用下山单纯形法相比,调节时间缩短8s,虽然控制信号峰值略大,但是响应曲线峰值降低,超调量有17.4%减小到14.7%,且最小适应值小于下山单纯形的最小适应值。所以,采用粒子群优化算法得到的是全局最优解。
为了研究二次型性能指标的?值对优化结果的影响,令?值分别为0,0.2,
0.4,0.6,0.8,1时的控制信号的波形比较图和响应曲线比较图分别如图13和图14所示。
10864rou=0rou=0.2rou=0.4rou=0.6rou=0.8rou=1 u(t)20-2-4-6 01020304050t60708090100
图13 不同?值下最优控制信号的波形比较图
1.41.210.8 rou=0rou=0.2rou=0.4rou=0.6rou=0.8rou=1y(t)0.60.40.20 01020304050t60708090100
图14 不同?值下最优响应曲线比较图
比较在不同?值下,最优控制的结果如表2所示。
表2 在不同?值下最优控制的结果比较
?值
Kp Ki Kd 调节时间 控制信号峰值 响应曲线峰值
0 0.5484 0 8.5526 13s 9.101 1.255
0.2 0.3466 0 1.7594 30s 2.106 1.098
0.4 0.3047 0 1.3287 31s 1.6334 1.121
0.6 0.2804 0 1.1164 33s 1.3968 1.133
0.8 02635 0 0.9819 34s 1.2454 1.141
1.0 0.2512 0 0.8865 35s 1.1377 1.147
稳态值 响应曲线超调量 最小适应值J
0.9999 25.5% 1.4219
1 9.8% 3.7910
1 12.1% 4.4884
1 13.3% 4.9577
1 14.1% 5.3202
1 14.7% 5.6192
由表2可以看出,在二次型性能指标常数?的取值范围[0,1]内,当??0时,为特殊情况,即指标忽略控制信号的影响。此时调节时间最短,控制信号峰值、响应曲线峰值和超调量均最大,且有稳态误差。当?值分别为0.2,0.4,0.6,0.8,1时,调节时间变长,控制信号峰值减小,响应曲线峰值和超调量逐渐增大,均无稳态误差。
5. 结论
本文采用粒子群优化算法,在二次型性能指标下对离散PID控制器的控制参数Kp,Ki,Kd进行了优化,并对在不同的二次型性能指标参数?值下的优化结果进行了比较。仿真结果表明,粒子群优化算法能够较好的找到离散PID控制器控制参数的最优解,且最优解随着二次型性能指标参数?值的变化而改变。可以得出,采用优化算法优化后的结果的好坏取决于所选用的性能指标,好的性能指标能帮助找到更好更适合工程应用的最优解。
参考文献
1. 于海生等.微型计算机控制技术[M].北京:清华大学出版社,2004. 2. 刘建昌,关守平,周玮等. 计算机控制系统[M]. 北京:科学出版社,2009. 3. Kennedy JF, Eberhart RC. Particle swarm optimization. In: Proceedings of IEEE international conference on neural networks; 1995. p. 1942–8.
4. Kennedy JF, Eberhart RC, Shi Y. Swarm intelligence. San Francisco, CA, USA: Morgan Kaufmann Publications; 2001.
5. 王伟,于军琪. 基于单纯形法的最优PID控制器设计[J]. 装备制造技术,2009(6):77~78.
6. The MathWorks Inc.Simulink Design Optimization User’s Guide, 2010.
附录:
Simulink部分的程序实现 function z=PID2cl(x)
assignin('base','Kp',x(1));%粒子群依次赋值给Kp assignin('base','Ki',x(2));%粒子群依次赋值给Ki assignin('base','Kd',x(3));%粒子群依次赋值给Kd
[t_time,x_state,y_out]=sim('PID2_cuilei.mdl',[0,30]);%使用命令行运行控制系统模型
z=y_out(end,1);%返回性能指标
PSO部分的程序实现
%%清空环境 clearall; clc; %%参数设置 w=0.6;%惯性因子 c1=2;%加速常数 c2=2;%加速常数 Dim=3;%维数
SwarmSize=50;%粒子群规模 ObjFun=@PIDcl;%待优化函数句柄 MaxIter=100;%最大迭代次数 MinFit=-Inf;%最小适应值 Vmax=1; Vmin=-1; Ub=[10 10 10]; Lb=[0 0 0];
%%粒子群初始化
Range=ones(SwarmSize,1)*(Ub-Lb);
Swarm=rand(SwarmSize,Dim).*Range+ones(SwarmSize,1)*Lb;%初始化粒子群 VStep=rand(SwarmSize,Dim)*(Vmax-Vmin)+Vmin;%初始化速度 fSwarm=zeros(SwarmSize,1); for i=1:SwarmSize
fSwarm(i,:)=feval(ObjFun,Swarm(i,:));%粒子群的适应值计算 end
%%个体极值和群体极值
[bestfbestindex]=min(fSwarm); zbest=Swarm(bestindex,:);%全局最佳 gbest=Swarm;%个体最佳 fgbest=fSwarm;%个体最佳适应值 fzbest=bestf;%全局最佳适应值 %%迭代寻优
共分享92篇相关文档