【智能算法】PID搜索算法(PSA)原理及实现

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取


1.背景

2023年,Y Gao受到PID控制理论启发,提出了PID搜索算法(PID-based Search Algorithm, PSA)。

在这里插入图片描述
在这里插入图片描述

2.算法原理

2.1算法思想

PID算法是控制领域的经典算法,分为增量PID控制和位置PID控制,它通过偏差的比例(P)、积分(I)和微分(D)进行控制。PSA通过连续调整系统偏差将整个种群收敛到最优状态。

在这里插入图片描述

2.2算法过程

增量PID控制

计算系统偏差对于最小化问题,迭代次数t处的最佳个体x*(t)是对应于总体历史最小值的个体。多次迭代t的总体偏差ek(t):
e k ( t ) = x ∗ ( t − 1 ) − x ( t − 1 ) (1) \mathbf e_k(t)=\mathbf x^*(t-1)-\mathbf x(t-1)\tag{1} ek(t)=x(t1)x(t1)(1)
为了便于计算和迭代更新:
e k − 1 ( t ) = e k ( t − 1 ) + x ∗ ( t ) − x ∗ ( t − 1 ) (2) \mathbf{e}_{k-1}(t)=\mathbf{e}_k(t-1)+x^*(t)-x^*(t-1)\tag{2} ek1(t)=ek(t1)+x(t)x(t1)(2)
在这里插入图片描述

PID调节

在现实问题中,比例、积分和微分因子会根据不同的情况和问题进行调整。当迭代次数为t时,PID调节的输出值Δu(t):
Δ u ( t ) = K p ⋅ r 2 ⋅ [ e k ( t ) − e k − 1 ( t ) ] + K i ⋅ r 3 ⋅ e k ( t ) + K d ⋅ r 4 ⋅ [ e k ( t ) − 2 e k − 1 ( t ) + e k − 2 ( t ) ] (3) \begin{aligned}\Delta\mathbf{u}(t)=K_{p}\cdot\mathbf{r}_{2}\cdot[\mathbf{e}_{k}(t)-\mathbf{e}_{k-1}(t) ]+K_{i}\cdot\mathbf{r}_{3}\cdot\mathbf{e}_{k}(t)+K_{d}\cdot\mathbf{r}_{4}\cdot[\mathbf{e}_{k}(t)-2\mathbf{e}_{k-1}(t)+\mathbf{e}_{k-2}(t) ]\end{aligned}\tag{3} Δu(t)=Kpr2[ek(t)ek1(t)]+Kir3ek(t)+Kdr4[ek(t)2ek1(t)+ek2(t)](3)
其中r2、r3和r4是n行1列中从0到1的随机数的矢量;Kp、Ki和Kd分别是比例、积分和微分的调整系数,论文中分别设置为1、0.5和1.2。
在传统的PID算法中,输出调节值为0意味着实际值在某个点上已经达到设定值。但是,随着时间的增加,如果不调整受控对象,则真实值很快将不等于设定值。因此,增加了一个称为零输出的条件因子,以防止算法陷入局部最优:
o ( t ) = ( cos ⁡ ( 1 − t / T ) + λ r 5 ⋅ L ) ⋅ e k ( t ) (4) \mathbf{o}(t)=(\cos(1-t/T)+\lambda\mathbf{r}_5\cdot\mathbf{L})\cdot\mathbf{e}_k(t)\tag{4} o(t)=(cos(1t/T)+λr5L)ek(t)(4)
其中,r5是n行和d列中从0到1的随机数的矢量,λ是调整系数:
λ = [ ln ⁡ ( T − t + 2 ) / ln ⁡ ( T ) ] 2 (5) \lambda=\left[\ln(T-t+2)/\ln(T)\right]^2\tag{5} λ=[ln(Tt+2)/ln(T)]2(5)
λ随着t的增加而缓慢减小,这有前期算法充分探索。在后期,λ迅速下降,这有助于算法从探索转向开发。个体的更新都与Δu(t)和o(t)有关:
x ( t + 1 ) = x ( t ) + η ⋅ Δ u ( t ) + ( 1 − η ) ⋅ o ( t ) (6) \mathbf{x}(t+1)=\mathbf{x}(t)+\eta\cdot\Delta\mathbf{u}(t)+(1-\eta)\cdot\mathbf{o}(t)\tag{6} x(t+1)=x(t)+ηΔu(t)+(1η)o(t)(6)
其中,η是n行1列的矩阵:
η = r 6 cos ⁡ ( t / T ) (7) \eta=\mathbf{r}_6\cos(t/T)\tag{7} η=r6cos(t/T)(7)

流程图

在这里插入图片描述

伪代码

在这里插入图片描述
在这里插入图片描述

3.结果展示

使用测试框架,测试PSA性能 一键run.m

  • 【智能算法】省时方便,智能算法统计指标——一键运行~

CEC2017-F6
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.参考文献

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

5.代码获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓应用开发(一):工具与环境

开发工具 Android Studio,用于开发 Android 应用的官方集成开发环境 (IDE)。包括以下功能: 基于Gradle的构建系统 gradle是一个项目构建工具,将源工程打包构建为apk 安卓模拟器统一环境代码编辑模拟器实时更新Github集成Lint功能&#xff0…

4+1视图,注意区分类图与对象图

注意区分类图和对象图。对象图标记的是对象名,命名形式 对象名:类名,或者:类名。这里没有出现冒号,表示的是类图。 对象图(object diagram)。 对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一…

数据结构十一:数组相关经典面试题

本篇博客详细介绍分析数组/顺序表常见的面试题,对于前面所学知识进行一个巩固,同时介绍一些力扣刷题中的一些概念:如:输出型参数等,在刷题中培养自己的编程思维,掌握常见的编程套路,形成题感&am…

嵌入式Linux学习第二天

今天学习linuxC编程。首先要熟悉linux下编写c程序的过程。 编写程序Hello World! 首先创建存放程序的文件夹,如下图所示: 接下来在创建一个文件夹来保存这节要编写的代码。指令:mkdir 3.1 接下来我们要设置VIM编辑器的一些配置&#xff0…

自定义类型②③——联合体和枚举

自定义类型②③——联合体和枚举 1.联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员结构体和联合体的对比1.4 联合体大小的计算1.5 联合体的应用①1.5 联合体的应用② 2. 枚举2.1 枚举类型的声明2.2 枚举类型的特点2.3 枚举的优点 1.联合体 1.1 联合体类型的声明 关…

【C语言】高质量选择题

目录 题目一: 题目二: 题目三: 题目四: 题目五: 题目六: 题目七: 题目八: 题目九: 题目十: 题目十一: 题目十二: 题目十…

腾讯地图商业授权说明一篇文章讲清楚如何操作

最近在使用腾讯地图,发现我要上架应用商店APP需要我有地图的授权书。 认真研究了一下原来腾讯地图现在要收费了,如果你打算以商业目的使用它,比如对第三方用户收费或者进行项目投标等,就需要先获取腾讯位置服务的商业授权许可。申…

Netty核心线程模型源码分析

文章目录 一、Netty线程模型简介二、Netty线程模型源码分析1. 服务端源码分析 一、Netty线程模型简介 Netty的线程模型图如下所示: 具体细节看这篇博客 二、Netty线程模型源码分析 1. 服务端源码分析 首先我们在写Netty服务端程序的时候最开始是下面两句代码&a…

Vue中Element的下载

打开vscode让项目在终端中打开 输入npm install element-ui2.15.3 然后进行下载 在node_modules中出现element-ui表示下载完成 然后在输入Vue.use(ElementUI); import Vue from vue import App from ./App.vue import router from ./router import ElementUI from element-ui…

基于树的时间序列预测(LGBM)

在大多数时间序列预测中,尽管有Prophet和NeuralProphet等方便的工具,但是了解基于树的模型仍然具有很高的价值。尤其是在监督学习模型中,仅仅使用单变量时间序列似乎信息有限,预测也比较困难。因此,为了生成足够的特征…

Day62:单调栈 LeedCode503. 下一个更大元素 II 42. 接雨水

503. 下一个更大元素 II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数…

【从零开始学架构 前言】整体的学习路线

本文是《从零开始学架构》的第一篇学习笔记,在工作6年左右的这个时间点需要有一些先行的理论来指导即将面临的复杂实践,以便在真正面临复杂实践的时候能有所参照。 主要从以下几个方面和顺序来进行学习 架构基础:从架构设计的本质、历史背景…

【Leetcode 42】 接雨水

基础思路: (1)需要将问题最小化,首先计算第i个位置最多容纳多少雨水(细长的一条水柱),然后求和就是总的雨水量; (2)第i个位置容纳雨水量 min(左侧最高, 右…

计算机组成结构—高速缓冲存储器(Cache)

目录 一、Cache的基本工作原理 1.Cache工作原理 2.命中率 3.Cache的基本结构 4.Cache的改进 二、Cache和主存之间的映射方式 1.直接映射 2.全相联映射 3.组相联映射 三、Cache中主存块的替换算法 四、Cache的写策略 概为了解决 CPU 和主存之间速度不匹配的问题&#x…

达梦主从数据库实例恢复

测试环境:实时主备数据库 1、在节点1向测试表aaa插入数据 如图可见,会话139695153554808向aaa表插入了10000行数据。事务id460520。 2、提交前在另一个窗口kill掉dmserver进程。 3、查看节点2的数据库日志 上图可见,系统执行alter database…

Docker网络基础

简介 Docker 本身的技术依赖于近年来 Linux 内核虚拟化技术的发展,Docker 对 Linux 内核的特性有很强的依赖。Docker 使用到的与 Linux 网络有关的主要技术有:网络命名空间、veth 设备对、网桥、ipatables 、路由。 网络命名空间 为了支持网络协议栈的多个实例,Linux在网络栈…

2024广州高端房产/留学移民/海外院校/国际教育展

2024广州海外置业移民留学展览会 The 7th Guangzhou Overseas Real Estate Immigrant Study Exhibition 2024年7月27日-28日 27th-28th July, 2024 广州保利世贸博览馆(海珠区新港东路1000号) Guangzhou Poly World Trade …

锂电池SOH估计 | Matlab实现基于ALO-SVR模型的锂电池SOH估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池SOH估计 | Matlab实现基于ALO-SVR模型的锂电池SOH估计 蚁狮优化支持向量机锂电池健康状态SOH估计; 具体流程如下; 1、分析锂离子电池老化数据集,从中选取具有代表电池性能衰减…

dumpsys meminfo 流程中细节

源码基于:Android U 参考: dumpsys meminfo 详解(R) dumpsys meminfo 详解(U) 1. 命令入口 MemBinder frameworks/base/services/core/java/com/android/server/am/AMS.javastatic class MemBinder extends Binder {ActivityManagerService mActivity…

python 中如何匹配字符串

python 中如何匹配字符串? 1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 import re line"this hdr-biz 123 model server 456" patternr"123" matchObj re.matc…