基于蚁群算法PID控制寻优实现(有代码超详细) 联系客服

发布时间 : 星期三 文章基于蚁群算法PID控制寻优实现(有代码超详细)更新完毕开始阅读73f3fa14fad6195f312ba60b

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;%全局最佳适应值 %%迭代寻优