引言
PID控制器的普及源于其简单性,可靠性和成本效益,在广泛的工业应用中。然而,PID参数的调整对于实现期望的性能至关重要,对于高阶系统或具有不确定性的系统,传统技术可能无法有效处理这一任务。为了应对传统调优方法带来的挑战,元启发式优化算法被视为一种很有前途的替代方案。
本期利用matlab编程构建直流电机PID调速器模型,实现基于优化算法的参数整定,即,找到PID最优的控制参数,比例系数Kp,积分系数Ki和微分系数Kd。好处是:无需构建PID的simulink模型,摆脱matlab版本的限制,可在任意matlab版本上运行,通用性更强,更容易扩展到其他控制器中。提供4种目标函数用以优化的目标函数,可自由切换。
-
平方误差积分(integral of squared error,ISE)
-
时间乘绝对误差积分(integral of time multiplied absolute error,ITAE)
-
时间乘平方误差积分(integral of time multiplied squared error,ITSE)
-
绝对误差积分(integral of absolute error,IAE)
直流电机PID调速器来自SCI论文:
(https://doi.org/10.1016/j.jestch.2020.08.011)
中的模型,如图所示:
您仅需要做的工作是:
-
用代码构建PID模型。和其他优化一样,PID参数整定也需要优化四要素:变量上限,下限、维度和目标函数。按照文献,暂以0.001 ≤ Kp, Ki, Kd ≤ 25为例,PID的参数有3个,所以维度为3;目标函数以构建4种:ISE/ITAE/ITSE/IAE。最关键的是利用编程实现PID模型的构建,这种方式可方便灵活扩展到其他控制模型和应用中。
-
选择适应度函数。这里我们已经将4种适应度函数集成好了,自由切换,只需要输入1-4其中一个整数,就可以选择对应的适应度函数。非常方便,代码改动的工作量只有一个数字的量。
-
选择喜爱的优化算法和用于对比的优化算法。示例代码中选择了利用哈里斯鹰优化算法HHO、黑翅鸢算法BKA、鲸鱼优化算法WOA优化PID参数,进行简单的对比。优化算法都是独立的以函数编写的m文件,便于管理和调用。当然,公众号也发布了340多种算法都可以使用很多,它们大多都是以函数的形式调用。使用非常方便,代码工作量也仅一行。如果你想使用的算法不是函数的形式,请把它修改成函数形式,方便调用。
-
点击运行。你只管点运行,剩下的交给算法。
以ITAE为函数,考虑到优化算法的随机性,采用多次运行后的结果作为最终结果更具说服力,最后结果进行展示,并提供8种统计指标:
1.最优值(Best),
2.最差值(Worst),
3.均值(Mean),
4.中位数(Median),
5.标准差(Std),
6. wilcoxon秩和检验(Wilcoxon's rank-sum test) ,
7. wilcoxon符号秩检验(Wilcoxon signed-rank test ) ,
8. Friedman检验(Friedman Test)
另外,还有箱型图(Boxplot)展现数据的分布。
Matlab代码下载
微信搜索并关注-优化算法侠,或扫描下方二维码关注,以算法名字搜索历史文章即可下载。
340多种基础的群智能优化算法-matlab
175种群智能优化算法python库
求解cec测试函数-matlab
解决12工程设计优化问题-matlab
求解11种cec测试函数-python
解决12种工程设计优化问题-python
用于改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)
沙场大点兵:24种信号分解方法(附matlab代码)
沙场大点兵:27种一维数据转换成二维图像的方法-matlab代码沙场大点兵:27种一维数据转换成二维图像的方法-matlab代码https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486260&idx=1&sn=81b1970cb89364c0289ccdfb403e5388&chksm=c12be731f65c6e273a85456326b503b7f35d9f035405050932ff1926e0b1bfa8076b1bc2d1f2&token=25423484&lang=zh_CN#rd