PID搜索算法(PSA)-SCI一区新算法-公式原理详解与性能测评 Matlab代码免费获取

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 

目录

原理简介

一、种群初始化

二、PID控制增量

(1)计算系统偏差

(2)PID调节

算法流程图和伪代码

性能测评

参考文献

完整代码


        PID搜索优化算法(PID-based search algorithm, PSA)是一种新型的元启发式算法(智能优化算法),灵感来源于增量PID算法,该算法通过连续调整系统偏差将整个种群收敛到最优状态。该成果由Yuansheng Gao等人于2023年12月发表在SCI人工智能一区顶刊《Expert Systems With Applications》上。

        由于发表时间较短,谷歌学术上仅被引用两次!你先用,你就是创新!

原理简介

        灵感:增量PID控制使当前时刻的控制量与前一时刻的控制量差,差就是新的控制量,这是一种递归算法。增量PID控制是一种比例积分微分控制,其调节过程如下图所示。用户设定目标值后,增量PID控制器将输出值提供给执行器,执行器根据输出值调节受控对象。调节后受控对象的实际值由传感器获取,并再次传递给增量PID控制器。

一、种群初始化

        优化问题由一组决策变量、约束条件和目标函数组成。可以假设该组中的决策变量的数量为d,并且变量的上界和下界分别为u和l。PSA的控制参数包括最大迭代次数T和种群大小n。然后初始种群可以表示为:

        其中xij表示第i个个体的第j个维度;uj和lj分别是第j个变量(维度)的上界和下界;r1是从0到1的随机数。

二、PID控制增量

(1)计算系统偏差

        对于最小化问题,迭代次数t处的最佳个体x*(t)是对应于总体历史最小值的个体。多次迭代t的总体偏差ek(t)为

        为了便于计算和迭代更新,当迭代次数为t时,前一次迭代的总体的偏差分别用ek-1(t)表示,前两次迭代的整体的偏差分别由ek-2(t)来表示。那么当t=1时,使ek-2(t)=ek-1(t)=ek(t)是值得的。当t>1时,ek-2(t)=ek-1(t-1)。在PID算法中,当t>1时,ek-1应等于用户设置值与系统中上一时刻的真实值之间的偏差。在PSA中,用户设置的值是最佳值,但每次迭代后的最佳值并不总是相同的;因此,在所提出的PSA中,ek-1(t)不能简单地等于ek(t-1)。如下图所示,ek-1(t)应等于x*(t)-x(t-1),但这也意味着存储x(t-1)。为了尽可能降低算法的空间复杂度,为了尽可能降低算法的空间复杂度,最好将ek(t-1)+x*(t)-x*(t-1)代替x*(t)-x(t-1)作为最终的ek-1(t)。

        因此,ek-1(t)可以表示为:

(2)PID调节

        在现实问题中,比例、积分和微分因子会根据不同的情况和问题进行调整。则当迭代次数为t时,PID调节的输出值Δu(t)为

        其中r2、r3和r4是n行1列中从0到1的随机数的矢量;Kp、Ki和Kd分别是比例、积分和微分的调整系数,在本文中分别设置为1、0.5和1.2。

        在传统的PID算法中,输出调节值为0意味着实际值在某个点上已经达到用户的设定值。但是,随着时间的增加,如果不调整受控对象,则真实值很快将不等于设定值。因此,为了防止这种现象,通常在原始调节值上添加一个常数。所有解都非常接近最佳解,这对PSA来说是不好的,尤其是在早期迭代中,这种现象可能导致算法陷入局部最优。因此,在原来的Δu(t)上,本文还增加了一个称为零输出的条件因子,以防止算法陷入局部最优。零输出在下式中定义:

        其中r5是n行和d列中从0到1的随机数的矢量;λ是在下式中计算的调整系数:

        λ随t的变化如图4所示。可以看出,λ随着t的增加而缓慢减小,这有助于算法充分探索。在后期,λ迅速下降,这有助于算法从探索转向开发。

        方程中的L是一个莱维飞行函数,定义为:

        其中u和v分别是服从标准正态分布的n行和d列随机数的矩阵;β是一个设置为1.5的因子。

        所有个体的更新都与Δu(t)和o(t)有关。种群更新公式定义为:

        其中η是n行1列的矩阵,表示为:

        其中r6是n行1列中的0到1个随机数的矩阵。

算法流程图和伪代码

        为了使大家更好地理解,这边给出算法流程和伪代码,非常清晰!

        如果实在看不懂,不用担心,可以看下代码,再结合上文公式理解就一目了然了!

性能测评

        原文作者以CEC2017的基准测试函数和六个约束问题。通过与近年来提出的七种元启发式算法的比较,验证了PSA的优化性能。

        这边为了方便大家对比与理解,采用23个标准测试函数,即CEC2005,并与经典的粒子群算法PSO进行对比!这边展示其中5个测试函数的图,其余十几个测试函数大家可以自行切换尝试!

        可以看到,PSA的效果还是非常不错的!在大部分函数上都超过了PSO算法,收敛速度也非常快,大家应用到各类预测、优化问题中是一个不错的选择~

参考文献

        [1]Gao Y. PID-based search algorithm: A novel metaheuristic algorithm based on PID algorithm[J]. Expert Systems with Applications, 2023: 120886.

完整代码

        如果需要免费获得图中的完整测试代码,只需点击下方小卡片,后台回复关键字:

PSA

        也可点击小卡片,后台回复个人需求(比如PSA-BiGRU)定制PID搜索算法PSA优化模型(看到秒回):

        1.回归/时序/分类预测类:SVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、BP、XGBoost、TCN、BiTCN、ESN等等均可~

        2.组合预测类:CNN/TCN/BiTCN/DBN/Adaboost结合SVM/RVM/ELM/LSTM/BiLSTM/GRU/BiGRU/Attention机制类等均可(可任意搭配非常新颖)~

        3.分解类:EMD、EEMD、VMD、REMD、FEEMD、TVF-EMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可~

        4.其他:机器人路径规划、无人机三维路径规划、DBSCAN聚类、VRPTW路径优化、微电网优化、无线传感器覆盖优化、故障诊断等等均可~

        5.原创改进优化算法(适合需要创新的同学):2024年的PID搜索算法PSA以及麻雀SSA、蜣螂DBO等任意优化算法均可,保证测试函数效果!

  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
《计算机控制课程设计-PID控制算法MATLAB仿真研究》这个课程设计主要研究了PID控制算法在计算机控制系统中的应用,并通过MATLAB仿真进行了实验研究。 PID控制算法是一种常用的控制算法,它可以通过对系统的误差、误差变化和积累误差进行调节来实现系统控制。在本课程设计中,首先通过理论学习的方式深入了解PID控制算法原理和数学模型。然后,利用MATLAB软件进行仿真实验,将PID控制算法应用于一个计算机控制系统的设计中。 在仿真实验中,首先需要构建一个控制系统的数学模型。然后,通过PID控制算法的调节参数,例如比例系数、积分系数和微分系数,对控制系统进行参数调节和优化。在对比实验中,可以通过调整不同的参数组合,分析不同参数对系统控制性能的影响。 通过实验研究,可以评估PID控制算法在这个计算机控制系统中的性能和效果。实验结果可以通过MATLAB软件进行数据分析和图形绘制,比较不同参数设置下系统的输出响应、稳态误差和控制精度等指标。 该课程设计对深入理解PID控制算法原理和应用具有重要意义。通过MATLAB仿真实验,学生可以掌握PID控制算法的实际应用方法,并了解其在工业、自动化等领域的广泛应用。同时,通过对系统的数学建模和仿真实验,学生还可以培养自己的实验设计和数据分析能力,提高自己的综合素质。 总之,《计算机控制课程设计-PID控制算法MATLAB仿真研究》这个课程设计通过理论学习和实验研究相结合的方式,深入研究了PID控制算法的应用。通过实验分析,可以获得PID控制算法在计算机控制系统中的性能和效果,提高学生的实践动手能力和综合素质。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值