问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

智能优化算法应用:基于粒子群算法PID参数优化 - 附代码

创作时间:
作者:
@小白创作中心

智能优化算法应用:基于粒子群算法PID参数优化 - 附代码

引用
CSDN
1.
https://blog.csdn.net/u011835903/article/details/139665628

本文介绍了一种使用粒子群算法优化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.粒子群算法简介

粒子群算法是一种基于群体智能的优化算法,其灵感来源于鸟群觅食行为。在算法中,每个粒子代表一个潜在的解决方案,粒子在解空间中搜索最优解。粒子通过跟踪两个极值来更新自己的速度和位置:个体极值(pBest)和全局极值(gBest)。

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, \quad 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.

6.Matlab 代码

(此处省略Matlab代码,如需获取完整代码,请联系作者)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号