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

news2024/11/24 17:26:27

目录

    • 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.coloradmin.cn/o/1646507.html

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

相关文章

CTF(Web)中关于执行读取文件命令的相关知识与绕过技巧

在我遇到的题目中,想要读取文件必然是要执行cat /flag这个命令,但是题目当然不会这么轻松。让你直接cat出来,必然会有各种各样的滤过条件,你要做的就是尝试各种方法在cat /flag的基础上进行各种操作构建出最终的payload。 下面我…

Redis学习汇总

目录 1.Linux环境下安装redis 2.redis的数据结构及命令 3.redis.conf配置文件常用配置 3.redis的事务操作 4.redis实现乐观锁 5.通过jedis操作redis 6.Springboot集成redis 7.自定义一个RedisTemplate 8.持久化策略 RDB和AOF 9.redis集群环境搭建 10.哨兵模式 11.缓…

Java面试题:多线程2

如何停止正在运行的线程 1,使用退出标志,使线程正常退出(run方法中循环对退出标志进行判断) 2,使用stop()方法强行终止(不推荐) 3,调用interrupt()方法中断线程 打断阻塞线程(sleep,wait,join),线程会抛出InterruptedException异常 打断正常的线程,可以根据打断状态来标记…

奶爸预备 |《P.E.T.父母效能训练:让亲子沟通如此高效而简单:21世纪版》 / 托马斯·戈登——读书笔记

目录 引出致中国读者译序前言第1章 父母总是被指责,而非受训练第2章 父母是人,不是神第3章 如何听,孩子才会说:接纳性语言第4章 让积极倾听发挥作用第5章 如何倾听不会说话的婴幼儿第6章 如何听,孩子才肯听第8章 通过改…

【春招特供】Unity面试题总结 | Unity基础篇

物体发生碰撞的必要条件? 两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体,而且必须是运动的物体带有Rigidbody脚本才能检测到碰撞。 2. Unity3d中的碰撞器和触发器的区别? 碰…

【LeetCode 121】买卖股票的最佳时机

思路 思路: 所谓代码的复杂性来源于业务的复杂性,如果能够想清楚业务实现逻辑,就能够轻松写出代码; 假设当前是第i天,如何在第i天赚到最多的钱?需要在第i天之前以最低价买入股票; 所以需要求…

[渗透利器]全能工具=信息收集->漏洞扫描->EXP调用

前言 hxd开发的工具,大致模块有(信息收集,漏洞扫描,暴力破解,POC/EXP,常用编码) 工具使用 下载后解压 安装环境 pip install -r requirements.txt 注意,该工具继承了两种不同的使…

深入了解C/C++的内存区域划分

🔥个人主页:北辰水墨 🔥专栏:C学习仓 本节我们来讲解C/C的内存区域划分,文末会附加一道题目来检验成果(有参考答案) 一、大体有哪些区域?分别存放什么变量开辟的空间? …

Django高级表单处理与验证实战

title: Django高级表单处理与验证实战 date: 2024/5/6 20:47:15 updated: 2024/5/6 20:47:15 categories: 后端开发 tags: Django表单验证逻辑模板渲染安全措施表单测试重定向管理最佳实践 引言: 在Web应用开发中,表单是用户与应用之间进行交互的重要…

工厂模式+策略模式完成多种登录模式的实现

前提 (简单工厂不属于设计模式,而是一种编程思想【抽象一层出来】)工厂方法模式、抽象工厂模式 以上都是为了解耦,如果考虑多个纬度(如需要同时考虑多种电器,多种品牌)则优先考虑抽象工厂。 …

iMazing下载安装不了怎么办?

iMazing是一款可用于iPhone、iPad等ios移动设备管理软件,但需要注意的是,iMazing只能安装在Windows与Mac系统中,不能安装在iOS移动设备上。iOS移动设备可以通过USB线或Wi-Fi连接Windows或Mac系统上的iMazing软件。 iMazing的安装失败&#x…

Linux--IIC驱动编程实验

对于 I2C 主机驱动,一旦编写完成就不需要再做修改,其他的 I2C 设备直接调用主机驱动提供的 API 函数完成读写操作即可。这个正好符合 Linux 的驱动分离与分层的思想,因此 Linux内核也将 I2C 驱动分为两部分: ①、 I2C 总…

3.栈和队列(汇总版)

目录 1.栈(一端插和删) 2.队列(一端插另一段删) 2.1队列的概念及结构 2.2 队列的实现 队列的接口 1.初始化队列 2.销毁队列 3.插入元素 4.出队列(头删) 5.访问对头 6.访问队尾 7.判断队列是否为…

练习题(2024/5/6)

1路径总和 II 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [5,4,8,11,null,13,4,7,2,null,null,5,1], target…

【漏洞复现】某小日子太阳能系统DataCube3审计

漏洞描述 某小日子太阳能系统DataCube3终端测量系统 多个漏洞利用方式 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进…

一起了解开源自定义表单的优势表现

随着社会的进步和科技的发展,越来越多的中小企业希望采用更为先进的软件平台,助力企业实现高效率的流程化管理。低代码技术平台、开源自定义表单已经慢慢走入大众视野,成为一款灵活、高效的数字化转型工具。流辰信息专注于低代码技术平台的研…

GitOps介绍

基础设施即代码 IaC 在理解 GitOps 之前,需要先理解什么是基础设施即代码。 基础设施即代码(Infrastructure as Code,简称IaC)是一种软件工程实践,它将基础设施的管理和配置过程像管理代码一样进行版本控制、自动化和…

RabbitMQ是怎么做消息分发的?——Java全栈知识(14)

RabbitMQ是怎么做消息分发的? RabbitMQ 的消息分发分为五种模式:分别是简单模式、工作队列模式、发布订阅模式、路由模式、主题模式。 1、简单模式 publisher 直接发送消息到队列消费者监听并处理队列中的消息 简单模式是最基本的工作模式,…

C++:哈希表和unordered系列容器的封装

一、unordered系列关联式容器的介绍 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log2N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是&…

软件测试必问的33个面试题

1.你为什么选择软件测试行业 因为之前有了解软件测试这个行业,觉得他的发展前景很好。 2.根据你以前的工作经验描述一下软件开发、测试过程,由那些角色负责,你做什么 要有架构师、开发经理、测试经理、程序员、测试员。我在里面主要是负责所…