粒子群优化(PSO)算法

article/2025/10/7 1:51:58

一.算法思想

         粒子群算法( Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。最简单有效的策略?寻找鸟群中离食物最近的个体来进行搜素。PSO算法就从这种生物种群行为特性中得到启发并用于求解优化问题。用一种粒子来模拟上述的鸟类个体,每个粒子可视为N维搜索空间中的一个搜索个体,粒子的当前位置即为对应优化问题的一个候选解,粒子的飞行过程即为该个体的搜索过程.粒子的飞行速度可根据粒子历史最优位置和种群历史最优位置进行动态调整.粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子单独搜寻的最优解叫做个体极值,粒子群中最优的个体极值作为当前全局最优解。不断迭代,更新速度和位置。最终得到满足终止条件的最优解。
二.算法介绍

①问题抽象

      鸟被抽象为没有质量和体积的微粒(点),并延伸到N维空间,粒子i在N维空间的位置表示为矢量Xi=(x1,x2,…,xN),飞行速度表示为矢量Vi=(v1,v2,…,vN)。每个粒子都有一个由目标函数决定的适应值(fitness value),并且知道自己到目前为止发现的最好位置(pbest)和现在的位置Xi。这个可以看作是粒子自己的飞行经验。除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值),这个可以看作是粒子同伴的经验。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。 

②更新规则

③算法流程

1、初始化

     首先,我们设置最大迭代次数,目标函数的自变量个数,粒子的最大速度,位置信息为整个搜索空间,我们在速度区间和搜索空间上随机初始化速度和位置,设置粒子群规模为M,每个粒子随机初始化一个飞翔速度。

2、 个体极值与全局最优解

       定义适应度函数,个体极值为每个粒子找到的最优解,从这些最优解找到一个全局值,叫做本次全局最优解。与历史全局最优比较,进行更新。

3、 更新速度和位置的公式

 

 

4、 终止条件

(1)达到设定迭代次数;(2)代数之间的差值满足最小界限

 

以上就是最基本的一个标准PSO算法流程。和其它群智能算法一样,PSO算法在优化过程中,种群的多样性和算法的收敛速度之间始终存在着矛盾.对标准PSO算法的改进,无论是参数的选取、小生境技术的采用或是其他技术与PSO的融合,其目的都是希望在加强算法局部搜索能力的同时,保持种群的多样性,防止算法在快速收敛的同时出现早熟收敛。

④参数分析

      参数:群体规模N,惯性因子 ,学习因子c1和c2,最大速度Vmax,最大迭代次数Gk。

      群体规模N:一般取20~40,对较难或特定类别的问题可以取到100~200。

      最大速度Vmax:决定当前位置与最好位置之间的区域的分辨率(或精度)。如果太快,则粒子有可能越过极小点;如果太慢,则粒子不能在局部极小点之外进行足够的探索,会陷入到局部极值区域内。这种限制可以达到防止计算溢出、决定问题空间搜索的粒度的目的。

      权重因子:包括惯性因子和学习因子c1和c2。使粒子保持着运动惯性,使其具有扩展搜索空间的趋势,有能力探索新的区域。c1和c2代表将每个粒子推向pbest和gbest位置的统计加速项的权值。较低的值允许粒子在被拉回之前可以在目标区域外徘徊,较高的值导致粒子突然地冲向或越过目标区域。

     ⑤参数设置:

        参数w,c1,c2的选择分别关系粒子速度的3个部分:惯性部分、社会部分和自身部分在搜索中的作用。如何选择、优化和调整参数,使得算法既能避免早熟又能比较快的收敛,对工程实践有着重要意义。

  1. 惯性权重w描述粒子上一代速度对当前代速度的影响。w值较大,全局寻优能力强,局部寻优能力弱;反之,则局部寻优能力强。当问题空间较大时,为了在搜索速度和搜索精度之间达到平衡,通常做法是使算法在前期有较高的全局搜索能力以得到合适的种子,而在后期有较高的局部搜索能力以提高收敛精度。所以w不宜为一个固定的常数。


http://chatgpt.dhexx.cn/article/ayQKFC62.shtml

相关文章

智能优化算法——粒子群优化算法(PSO)(小白也能看懂)

前言: 本文主要参考B站的一篇学习视频后,加之自己的理解和浓缩精华,不想看文字的可以直接划到末尾去b站看原视频,非常通俗易懂。 理论知识: 感性认知:如下面一张图片所示。在一个范围内,以三…

智能算法系列之粒子群优化算法

本博客封面由ChatGPT DALLE 2共同创作而成。 文章目录 前言1. 算法思想2. 细节梳理2.1 超参数的选择2.2 一些trick 3. 算法实现3.1 问题场景3.2 python实现 代码仓库:IALib[GitHub] 前言 本篇是智能算法(Python复现)专栏的第三篇文章,主要介绍粒子群优化…

粒子群优化算法(PSO)

粒子群优化算法(PSO) 粒子群优化算法(PSO)是一种进化计算技术,源于对鸟群捕食行为的研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物及群活动行…

数学建模——粒子群优化算法(PSO)【有详细样例 + 工具:matlab】(万字总结)

文章目录 一、粒子群优化算法(PSO)是什么?二、粒子群优化算法有什么用?三、粒子群优化算法的适用范围?四、算法简介(有助于理解)五、算法流程第一步:初始化第二步:计算粒子的适应度第三步:更新个体极值与全…

粒子群优化算法(PSO)附代码

文章目录 1 算法介绍2 算法模型3 实现步骤4 MATLAB代码实现PSO算法4.1. main.m4.2. 运行结果 1 算法介绍 粒子群优化算法(Particle Swarm Optimization,PSO)是一种经典的群智能算法,该算法灵感源自于鸟类飞行和觅食的社会活动,鸟群通过个体之…

浏览器添加划词翻译插件

网站:https://github.com/Selection-Translator/crx-selection-translate 安装下载的扩展程序

Chrome划词翻译-Saladict

Saladict 沙拉查词是一款专业划词翻译扩展,为交叉阅读而生。大量权威词典涵盖中英日韩法德西语,支持复杂的 划词操作、网页翻译、生词本、PDF,以及 Vimium 全键盘操作 。 迄今为止最好用的网页划词翻译插件。 下载安装地址:Chrome…

谷歌划词翻译

谷歌划词翻译是个谷歌插件 复制及时翻译很好用 插件下载地址 配置谷歌翻译方法

惊了,MATLAB竟能制作如此方便的划词翻译工具???

我点开程序一看,程序第一行就写着import, 却歪歪斜斜的每行上都是着MATLAB几个大字。 我横竖睡不着,仔细看了半夜, 才从字缝里看出字来,满页都写着 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀——Java 其实用的…

python实现划词翻译

最近因为编程,需要大量地看一些说明文档,无奈说明文档都是英文的,可把我这个半桶水折腾死了,太多词汇不知道,一个个复制翻译太麻烦了。于是我根据自己的需要,用python写了一个划词翻译。 一:使…

划词翻译简单实现

环境:archlinux ,其余linux系统类似 安装依赖 sudo pacman -S xsel sudo pacman -S translate-shell sudo pacman -S libnotify脚本书写 创建脚本 touch word_translate.sh chmod x word_translate.sh vim word_tranlate.sh#!/bin/bashwhile true; d…

Chrome划词插件-有道词典

当我们在阅读文章,查找资料或者查看英文文献时,经常会遇到不认识的英文单词,这时,我们往往会复制单词百度一下才行。 其实,遇到这种情况,我们可以直接下载一个有道词典的Chrome划词插件,遇到需…

PDF划词翻译插件

PDF划词翻译插件 1、打开一个拓展插件的下载网站2、下载沙拉查词并安装3、进入详情,设置为允许打开文件网址4、固定她5、打开她的设置最终划词结果 1、打开一个拓展插件的下载网站 点击此网站地址 2、下载沙拉查词并安装 打开开发者模式,把下载好的.cr…

福昕pdf阅读器的划词翻译功能如何添加(图文并茂)

一、打开福昕阅读器 二、可在上方工具栏,点击“帮助”,关于福昕阅读器领鲜版查看安装的版本信息,如图1-1,图1-2 图1-1 图1-2 三、找到上方工具栏的图标按键,名为“自定义快速访问工具栏”,如图1-3&#…

谷歌浏览器无法翻译成中文,谷歌翻译,最新(沉浸式翻译和划词翻译,chrome无法翻译,谷歌浏览器无法翻译此网页)

简介:谷歌浏览器自带的翻译功能,对我们来说用处很大,但有的时候突然就会变成“无法翻译此网页”,之前给大家提供过两种无法翻译此网页的解决方案,这次再给大家分享下两款别的翻译方法; 一、上次介绍&#x…

关于网页划词翻译

2013-4-21 近日偶然看到js页面文字选中后分享到新浪微博实现,发现原来竟然只要一句话就可以实现获取划词。便萌生自己写个划词翻译的东东,方便自己看文档。 我首先想到了之前看到的油猴插件,最早是在看优酷去广告插件的原理时知道这个东西。感…

基于Edge浏览器的沙拉划词插件使用教程(好用的翻译插件)

1.使用目的 - 使用沙拉划词实现网页多种翻译源进行实时翻译。 - 使用沙拉划词实现PDF翻译。 2.安装方法 2.1 打开edge扩展 点击工具栏右侧… 然后点击扩展 进入扩展 2.2 下载沙拉划词 2.2.1 点击获取扩展 2.2.2点击搜索 搜索沙拉划词 回车搜索 正常获取并添加扩展 出现沙…

PDF划词翻译软件

PDF划词翻译 一个简单的PDF划词翻译软件。 Github仓库地址:https://github.com/WCX1024979076/simple_pdf_translator Github下载地址: https://github.com/WCX1024979076/simple_pdf_translator/releases/tag/v0.1.0 Gitee仓库地址: htt…

推荐一个谷歌浏览器插件:划词翻译

地址:划词翻译插件 最近在看一些英文文档,遇到了一些词汇不认识,在谷歌浏览器上找到了这个翻译插件 谷歌浏览器自己有一个全文翻译的功能,对于一些技术类文档,有些词如果翻译错误了就会闹出笑话来,限于对…

一个简单的划词翻译工具

一个简单的划词翻译工具 看论文时经常要翻译,然而手动复制粘贴到翻译网站上又很麻烦,有些划词翻译工具比如有道的划词和取词,虽然不用按快捷键只选中文本就能翻译,但有时也会失灵什么的,于是就自己用python写了个调用百…