智能优化算法应用:基于引力搜索算法PID参数优化 - 附代码
智能优化算法应用:基于引力搜索算法PID参数优化 - 附代码
本文主要介绍如何使用引力搜索算法对PID控制器的参数进行优化。通过设计适应度函数,利用引力搜索算法寻找最优的PID参数组合,以实现对二阶系统的有效控制。文章包括PID控制器简介、引力搜索算法原理、适应度函数设计、算法实验与结果以及Matlab代码实现。
1. PID简介
PID(比例-积分-微分)控制器通过比例单元P、积分单元I和微分单元D的线性组合构成控制量,实现对被控对象的控制。它主要适用于基本线性和动态特性不随时间变化的系统。不同的控制规律适用于不同的生产过程,必须合理选择相应的控制规律,否则PID控制器将达不到预期的控制效果。
当PID控制器采样周期较小时,可以将连续系统离散化,即以一阶差分代替微商,求和代替积分,矩形积分近似代替连续积分,得到如下差分方程:
$$
\Delta u(t) = K_p \Delta e(k) + K_i \Delta e(k) + K_d \Delta^2 e(k) \tag{1}
$$
其中,$e$为输入误差,$K_p$为比例系数,$K_i$为积分时间常数,$K_d$为微分时间常数。
2. 引力搜索算法简介
引力搜索算法是一种基于物理学中万有引力定律的优化算法。在该算法中,每个解都被视为一个粒子,粒子之间的相互作用力决定了它们的运动轨迹。通过模拟引力和斥力的作用,算法能够搜索到全局最优解。具体原理可以参考相关文献。
3. 适应度函数设计
在此算法中,目标函数设置如下:
$$
F = \int_{0}^{\infty} (w_1|e(t)| + w_2u^2(t))dt \tag{2}
$$
其中,$e(t)$为输入值与输出值之间的误差,考虑到迭代过程的动态特性,采取其绝对值的积分;$u(t)$为控制值,加入此项是为了避免控制幅度过大;$w_1$和$w_2$为权重,取值范围[0,1]。
此外,还需采取限制措施防止超调,即当出现超调时,在目标函数中额外引入超调项,此时的设置如下:
$$
F = \int_{0}^{\infty} (w_1|e(t)| + w_2u^2(t) + w_3|e(t)|)dt, e(t) < 0 \tag{3}
$$
其中,$w_3$为权值,且$w_3 >> w_1$,一般情况下,$w_1 = 0.999$,$w_2 = 0.001$,$w_3 = 100$。
所以引力搜索算法的目标就是找到一组PID值,使得F误差最小。
4. 算法实验与结果
本文选择二阶系统的传递函数:
$$
G(s) = \frac{50}{0.125s^2 + 7s} \tag{4}
$$
引力搜索算法参数设置如下:
SearchAgents_no = 50; % 种群数量
Max_iteration = 100; % 设定最大迭代次数
lb = -5; % 下边界
ub = 5; % 上边界
dim = 3; % 维度(PID三个参数)
S = 1; % 1为单位阶跃响应,其他为正弦输入
fobj = @(X) PID_controller(X, S); % 适应度函数
单位阶跃响应寻优结果:
从收敛曲线来看,单位阶跃和正弦输入,算法都在不断寻优。从单位阶跃响应来看,系统上升时间和超调均较小,控制效果明显。从正弦输入结果来看,输入与输出控制量误差较小。
5. 参考文献
[1] 贺圣彦, 曹中清, 余胜威. 基于花授粉算法的PID参数优化[J]. 计算机工程与应用, 2016.