SCI1区TOP:自适应学习粒子群算法SLPSO,深度解析+性能实测

目录

    • 1.摘要
    • 2.改进策略
    • 3.自适应学习粒子群算法
    • 4.结果展示
    • 5.参考文献
    • 6.获取代码


1.摘要

粒子群算法(PSO)是一种基于种群的随机搜索方法,广泛应用于科学和工程领域的连续空间优化问题,并已证明其高效性和有效性。许多实际问题的往往未知,因此依赖试错法寻找最合适PSO变体会导致较高的计算成本。本文提出了一种自适应学习粒子群算法(SLPSO),SLPSO结合了四种不同的PSO搜索策略,并通过概率模型描述每种策略被选择以更新粒子的概率,该模型能够根据策略在过去几代中的表现,自动调整用来提升搜索效率和优化结果。

2.改进策略

基于差分速度更新策略(DbV)

在许多速度更新策略中,PSO生成的速度向量通常被视为对旧速度向量的适度修改,受邻域粒子影响。这种方法导致其难以快速适应病态问题的不同优化阶段。因此, 采用差分进化策略(DE/current-to-rand/1):
U i d ← X i d + K × ( X k d − X i d ) + F × ( X j d − X h d ) U_{i}^{d}\leftarrow X_{i}^{d}+K\times\left(X_{k}^{d}-X_{i}^{d}\right)+F\times\left(X_{j}^{d}-X_{h}^{d}\right) UidXid+K×(XkdXid)+F×(XjdXhd)
受DE/current-to-rand/1策略的启发,DbV策略通过完全基于差异信息重新组合速度,避免了逐步调整速度的方式。与DE/current-to-rand/1不同,DbV不仅利用差异信息来更新速度向量,还将pbest作为吸引子,指导粒子的飞行方向:
V i a d i d ← X k d − X j d , c = N ( 0.5 , 0.2 ) . V i d ← c × V i a d i d + c × ( p b e s t i d − X i d ) . V i d = min ⁡ ( V max ⁡ d , max ⁡ ( V i d , V min ⁡ d ) ) , \begin{aligned} & Viad_i^d\leftarrow X_k^d-X_j^d, \\ & c=N(0.5,0.2). \\ & V_i^d\leftarrow c\times Viad_i^d+c\times\left(pbest_i^d-X_i^d\right). \\ & V_i^d=\min\left(V_{\max}^d,\max\left(V_i^d,V_{\min}^d\right)\right), \end{aligned} ViadidXkdXjd,c=N(0.5,0.2).Vidc×Viadid+c×(pbestidXid).Vid=min(Vmaxd,max(Vid,Vmind)),

基于估计速度更新策略(EbV)

PSO的一个显著特点是其较高的收敛速度,但全局精英 g b e s t gbest gbest的使用会对整个种群产生强烈的影响 ,容易导致搜索过程陷入局部最优解。在复杂的多峰问题中,PSO算法通常在初期表现出快速的收敛速度,但这种收敛仅持续几个世代,随后便会被困于局部最优解。估计分布算法(EDA)是一种基于模型的优化方法,EDA的更新操作通过学习个体分布的概率模型来调整整个种群的分布。本文提出了一种速度更新策略,基于三个位置的局部分布估计进一步提升搜索效率:
C = ( D − 1 ) N ( 0 , 1 ) D + C ( 0 , 1 ) D . V i d ← ( m e a n i d − X i d ) + C 3 ( p b e s t i d − m e a n i d ) 2 + ( X i d − m e a n i d ) 2 + ( X k d − m e a n i d ) 2 . V i d = min ⁡ ( V max ⁡ d , max ⁡ ( V i d , V min ⁡ d ) ) , \begin{aligned} \mathcal{C}= & \frac{(D-1)N(0,1)}{D}+\frac{\mathcal{C}(0,1)}{D}. \\ V_{i}^{d}\leftarrow & \left(mean_{i}^{d}-X_{i}^{d}\right)+\frac{\mathcal{C}}{\sqrt{3}}\sqrt{\left(pbest_{i}^{d}-mean_{i}^{d}\right)^{2}+\left(X_{i}^{d}-mean_{i}^{d}\right)^{2}+\left(X_{k}^{d}-mean_{i}^{d}\right)^{2}}. \\ V_{i}^{d}= & \min\left(V_{\max}^{d},\max\left(V_{i}^{d},V_{\min}^{d}\right)\right), \end{aligned} C=VidVid=D(D1)N(0,1)+DC(0,1).(meanidXid)+3 C(pbestidmeanid)2+(Xidmeanid)2+(Xkdmeanid)2 .min(Vmaxd,max(Vid,Vmind)),

CLPSO and PSO-CL-pbest

在CLPSO中,每个粒子每个分量的速度都有可能受到其他粒子 p b e s t pbest pbest的影响。这种策略促进了种群的多样性,从而能够有效解决多峰问题。
V i d ← w × V i d + c × r a n d i d × ( p b e s t f i ( d ) d − X i d ) . V i d = min ⁡ ( V max ⁡ d , max ⁡ ( V i d , V min ⁡ d ) ) , \begin{aligned} & V_{i}^{d}\leftarrow w\times V_{i}^{d}+c\times rand_{i}^{d}\times\left(pbest_{f_{i}(d)}^{d}-X_{i}^{d}\right). \\ & V_{i}^{d}=\min\left(V_{\max}^{d},\max\left(V_{i}^{d},V_{\min}^{d}\right)\right), \end{aligned} Vidw×Vid+c×randid×(pbestfi(d)dXid).Vid=min(Vmaxd,max(Vid,Vmind)),

CLPSO在大多数问题中具有非常大的搜索范围,本文提出了一种新的变种——PSO-CL-pbest,该变种在相对较小的区域内进行搜索:
V i d ← w × V i d + 0.5 × c × r a n d i × ( p b e s t f i ( d ) d − X i d + p b e s t i d − X i d ) . V i d = min ⁡ ( V max ⁡ d , max ⁡ ( V i d , V min ⁡ d ) ) . \begin{aligned} V_{i}^{d} & \leftarrow w\times V_{i}^{d}+0.5\times c\times rand_{i}\times\left(pbest_{f_{i}(d)}^{d}-X_{i}^{d}+pbest_{i}^{d}-X_{i}^{d}\right). \\ V_{i}^{d} & =\min\left(V_{\max}^{d},\max\left(V_{i}^{d},V_{\min}^{d}\right)\right). \end{aligned} VidVidw×Vid+0.5×c×randi×(pbestfi(d)dXid+pbestidXid).=min(Vmaxd,max(Vid,Vmind)).

3.自适应学习粒子群算法

在SLPSO中,每个策略都有一个执行概率 p r o S T R i proSTR_i proSTRi,用于确定第 i i i个策略在更新粒子时被选中的概率。初始时,所有策略的执行概率相等(0.25),并且四个策略的累加器 S i S_i Si都初始化为0。在每一代中,粒子会根据适应度值进行排序,然后为每个粒子分配一个权重:
w j = l o g ( p s − j + 1 ) l o g ( 1 ) + ⋯ + l o g ( p s ) w_j=\frac{log(ps-j+1)}{log(1)+\cdots+log(ps)} wj=log(1)++log(ps)log(psj+1)
这些权重会被加到与其对应的更新策略的累加器中。经过一定数量的代数(Gs)后,通过一定的规则更新每个更新策略的执行概率,以动态调整策略的使用频率:
p r o S T R j ′ = ( 1 − α ) p r o S T R j + α S j G s , p r o S T R j = p r o S T R j ′ / ( p r o S T R 1 ′ + ⋯ + p r o S T R 4 ′ ) , \begin{aligned} & proSTR_{j}^{\prime}=(1-\alpha)proSTR_{j}+\alpha\frac{S_{j}}{Gs}, \\ & proSTR_{j}=proSTR_{j}^{\prime}/(proSTR_{1}^{\prime}+\cdots+proSTR_{4}^{\prime}), \end{aligned} proSTRj=(1α)proSTRj+αGsSj,proSTRj=proSTRj/(proSTR1++proSTR4),

伪代码

4.结果展示

5.参考文献

[1] Wang Y, Li B, Weise T, et al. Self-adaptive learning based particle swarm optimization[J]. Information Sciences, 2011, 181(20): 4515-4538.

6.获取代码

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

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

相关文章

kotlin协程之CoroutineScope 与 CoroutineContext 详解

前言 在使用协程时,不管是看协程的源码还是日常使用,会经常看到 CoroutineScope 和 CoroutineContext, 这两个到底是什么东西呢?作用是什么? 本篇文章我们就来深入的理解一下 CoroutineScope 和 CoroutineContext。 …

win11编译llama_cpp_python cuda128 RTX30/40/50版本

Geforce 50xx系显卡最低支持cuda128,llama_cpp_python官方源只有cpu版本,没有cuda版本,所以自己基于0.3.5版本源码编译一个RTX 30xx/40xx/50xx版本。 1. 前置条件 1. 访问https://developer.download.nvidia.cn/compute/cuda/12.8.0/local_…

正向代理与反向代理

代理: 通常称为代理、代理服务器或 Web 代理,代理一般是指正向代理,是位于一组客户端计算机之前的服务器。当这些计算机向 Internet 上的站点和服务发出请求时,代理服务器将拦截这些请求,然后代表客户端与 Web服务器进行通信&…

Vue _总结

文章目录 一 Vue介绍1 什么是Vue.js2 MVVM二 第一个例子1 引入vue2 html中用法3 创建vue实例对象三 Vue基本语法1 v-text2 v-bind3 v-on4 v-model5 v-if6 v-for7 计算属性8 组件化全局注册本地注册9 生命周期10 员工程序使用vue.js重构list.htmladd.htmlupdate.html四 使用vue-…

理解梯度下降、链式法则、梯度消失/爆炸

第一章:人工智能之不同数据类型及其特点梳理 第二章:自然语言处理(NLP):文本向量化从文字到数字的原理 第三章:循环神经网络RNN:理解 RNN的工作机制与应用场景(附代码) 第四章:循环神经网络RNN、LSTM以及GR…

笔记四:C语言中的文件和文件操作

Faye:只要有正确的伴奏,什么都能变成好旋律。 ---------《寻找天堂》 目录 一、文件介绍 1.1程序文件 1.2 数据文件 1.3 文件名 二、文件的打开和关闭 2.1 文件指针 2.2.文件的打开和关闭 2.3 文件读取结束的判定 三、 文件的顺序读写 3.1 顺序读写…

mysql下载与安装、关系数据库和表的创建

一、mysql下载: MySQL获取: 官网:www.mysql.com 也可以从Oracle官方进入:https://www.oracle.com/ 下载地址:https://downloads.mysql.com/archives/community/ 选择对应的版本和对应的操作系统&#xff…

(数据结构)双向链表

(数据结构)带头双向循环链表 前言 前面链表部分,咱们着重讲解了不带头单向不循环链表,简称单链表。那么链表其实也分很多种类适用于各种各样的场景。通过单链表的学习,其实我们已经大致了解了链表的绝大多数的内容,所以接下来我通…

考研英语语法全攻略:从基础到长难句剖析​

引言 在考研英语的备考之旅中,语法犹如一座灯塔,为我们在浩瀚的英语知识海洋中指引方向。无论是阅读理解中复杂长难句的解读,还是写作时准确流畅表达的需求,扎实的语法基础都起着至关重要的作用。本文将结合有道考研语法基础入门课的相关内容,为大家全面梳理考研英语语法…

【计算机网络入门】应用层

目录 1.网络应用模型 1.1 C/S模型(客户端服务器模型) 1.2 P2P模型(对等模型) 2. DNS系统 2.1 域名 2.2 域名解析流程 3. FTP文件传输协议 4. 电子邮件系统 4.1 SMTP协议 4.2 pop3协议 4.3 IMAP协议 4.4 基于万维网的电…

【GoTeams】-3:构建api、重构错误码

本文目录 1. 构建api梳理调用关系api包的作用路由梳理注册Register代码语法 2. 重构错误码 1. 构建api 首先复制project-user,改名为project-api,放在总的路径下,然后在工作区中进行导入。 运行命令go work use .\project-api\新建工作区之…

游戏引擎学习第145天

仓库:https://gitee.com/mrxiao_com/2d_game_3 今天的计划 目前,我们正在完成遗留的工作。当时我们已经将声音混合器(sound mixer)集成到了 SIMD 中,但由于一个小插曲,没有及时完成循环内部的部分。这个小插曲主要是…

Qt 实现绘图板(支持橡皮擦与 Ctrl+Z 撤销功能)[特殊字符]

作业&#xff1a; 1&#xff1a;实现绘图的时候&#xff0c;颜色的随时调整 2&#xff1a;追加橡皮擦功能 3&#xff1a;配合键盘事件&#xff0c;实现功能 当键盘按 ctrlz的时候&#xff0c;撤销最后一次绘图 头文件.h #ifndef WIDGET_H #define WIDGET_H#include <QWidge…

打造智能聊天体验:前端集成 DeepSeek AI 助你快速上手

DeepSeek AI 聊天助手集成指南 先看完整效果&#xff1a; PixPin_2025-02-19_09-15-59 效果图&#xff1a; 目录 项目概述功能特点环境准备项目结构组件详解 ChatContainerChatInputMessageBubbleTypeWriter 核心代码示例使用指南常见问题 项目概述 基于 Vue 3 TypeScrip…

JPA编程,去重查询ES索引中的字段,对已有数据的去重过滤,而非全部字典数据

一、背景 课程管理界面&#xff0c;查询前&#xff0c;需要把查询元数据给出。 学科列表、学段列表和分类列表&#xff0c;我们把它定义为查询元数据。 一般的业务需求是&#xff1a; 系统维护好多个字典&#xff0c;比如学科、学段等等&#xff0c;相当于属性库。 但是&…

MySQL语法总结

本篇博客说明&#xff1a; &#xff01;&#xff01;&#xff01;.注意此系列都用的是MySQL语句&#xff0c;和SQLServer&#xff0c;PostgreSQL有些细节上的差别&#xff01;&#xff01;&#xff01; 1.每个操作都是先展示出语法格式 2.然后是具体例子 3.本篇注脚与文本顺讯息…

C++ Primer 交换操作

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

go切片定义和初始化

1.简介 切片是数组的一个引用&#xff0c;因此切片是引用类型&#xff0c;在进行传递时&#xff0c;遵守引用传递的机制。切片的使用和数组类似&#xff0c;遍历切片、访问切片的元素和切片的长度都一样。。切片的长度是可以变化的&#xff0c;因此切片是一个可以动态变化的数…

huggingface镜像站hf-mirror的各大AI模型文件下载

一、说明 huggingface地址&#xff1a;https://huggingface.co 但是由于需要国外网络&#xff0c;国内网络延迟较大或无法下载&#xff0c;所以使用国内镜像站&#xff1a; hf-mirror地址&#xff1a;https://hf-mirror.com/ 二、下载方法 1.本机安装了GIT 2.打开HF-Mirro…

Unity Shader 学习15:可交互式雪地流程

本质是 利用顶点变换实现的&#xff1a; 通过一个俯视整个场地的正交摄像机&#xff0c;根据绑定在移动物体身上的粒子系统&#xff0c;来获取物体移动过的位置&#xff0c;记录到一张RenderTexture上作为轨迹图&#xff0c;再通过这张图来对雪地做顶点变换。 1. 由于顶点变换需…