超详细|粒子群优化算法及其MATLAB实现

news2024/11/17 20:27:34

本文主要介绍粒子群算法的背景与理论,并结合对应部分的MATLAB程序对其实现流程做了阐述,代码获取方式见文末。

00 文章目录

1 粒子群优化算法
2 问题导入
3 MATLAB程序实现
4 改进策略
5 展望

01 粒子群优化算法

1.1 粒子群优化算法背景

近年来,人们通过对社会型生物群体行为的模拟提出了一类新型的生物启发式计算方法——群体智能优化算法。群体智能优化算法的核心思想主要来源于大自然的某种特殊现象或者群体动物的某种特殊行为,尤其是生物群体之间的高智能性协调合作机制,比如鸟群与鱼群的协同运动(见图2.8)、大雁群体的迁徙、蚂蚁群体的协同工作、狼群的协同扑食等。群体智能优化算法一经提出,便引起多个学科领域研究人员的广泛关注,成为人工智能以及社会、经济、生物等交叉学科的热点和前沿领域。

在这里插入图片描述

图源于网络,侵删

粒子群算法(particle swarm optimization,PSO)是在1995年由美国社会心理学家Kennedy和电气工程师 Eberhart 提出的[1],主要思想来源于对鸟类群体行为的研究,他们的模型和仿真算法主要利用了生物学家Heppner 提出的模型[2]。

PSO算法解决问题是先初始化一组随机解,通过迭代搜寻最优值。在PSO算法中,每个优化问题的解看做搜索空间的一只鸟,称为“粒子”。所有的粒子对应着优化问题的适应值,粒子的速度决定其飞行的方向和距离,粒子通过追寻群体中的最优粒子来完成在解空间的搜索。PSO算法自提出以来,由于其计算简单、易于实现、控制参数少等特点,引起了国内外相关领域众多学者的关注和研究。

对 PSO算法的研究主要体现在3个方面:一是对PSO算法理论的研究,二是对PSO算法的性能改进研究,三是将PSO算法应用在各个领域。从目前的研究情况来看,对后两方面的研究占了绝大多数。

1.2 标准粒子群优化算法

PSO算法的基本思想是通过群体中个体之间的协作和信息共享来寻找最优解,是一种基于群体智能的仿生智能计算方法。首先,随机初始化一群没有体积和质量的粒子,将每个粒子视为优化问题的一个可行解,粒子的好坏由一个事先设定的适应度函数来确定。每个粒子将在可行解空间中运动,并由一个速度变量决定其方向和距离。通常粒子将追随当前的最优粒子,并经过逐代搜索后得到最优解。在每一代中,粒子将跟踪两个最优解:一是粒子本身迄今为止找到的最优解;另一个是整个群体迄今为止找到的最优解。

假设一个由n个粒子组成的群体在D维的搜索空间以一定的速度飞行。粒子i状态属性设置如下:
位置(也即代表了决策变量):在这里插入图片描述

其中,粒子每维的数值应在其搜索空间的上下限内,根据目标函数即可计算出每个粒子位置Xi对应的适应度值。
速度:在这里插入图片描述

个体极值:在这里插入图片描述

种群的群体极值:在这里插入图片描述

其中,i=1,2,…,N
在每次迭代过程中,粒子通过个体极值和群体极值更新自身速度和位置,即:在这里插入图片描述

式中,w为惯性权重;d=1,2,…,D;i=1,2,…,n;k为当前迭代次数;Vid为粒子速度;r1,r2,为区间(0,1)内均匀分布的随机数;c1,c2,分别称为个体认知因子和社会学习因子(二者统称加速度因子),通常取c1=c2。为防止粒子的盲目搜索,一般建议将其位置和速度限制在一定的区间。
对于上式中的:在这里插入图片描述

其右边由三部分组成:
第一部分为“惯性”部分﹐反映了粒子的运动“习惯”,代表粒子有维持自己先前速度的趋势;
第二部分为“认知”部分,反映了粒子对自身历史经验的记忆,代表粒子有向自身历史最佳位置逼近的趋势;
第三部分为“社会”部分,反映了粒子间协同合作与知识共享的群体历史经验,代表粒子有向群体或邻域历史最佳位置逼近的趋势。

由此看来,粒子群算法的通用性比较好,适合处理多种类型的目标函数和约束,并且容易与传统的优化方法结合,从而改进自身的局限性,更高效地解决问题。

02 问题导入

引入一个多峰的非线性函数来验证PSO算法的性能,函数如下:在这里插入图片描述

其图像如下:在这里插入图片描述

其极限位置是在(0,0)附近取得极大值,极大值为1.0054

03 MATLAB程序实现

粒子群算法的执行流程如下,按照图中的思路进行编码在这里插入图片描述

其中,本文在惯性权重部分采用线性递减的权重策略,因为Shi等[3] 指出了惯性权重的作用,即较大的惯性权重有利于全局寻优,而较小的惯性权重则有利于局部寻优。因此,如果在迭代计算过程中惯性权重呈线性递减,例如由0.9到0.4等,则 PSO 算法在开始时具有良好的全局搜索性能,能够迅速定位到接近全局最优点的区域,而在后期具有良好的局部搜索性能,能够精确得到全局最优解。线性递减公式如下:在这里插入图片描述

式中,tmax,为最大迭代次数;t为当前迭代次数;wstrat为初始惯性权重; wend为终止惯性权重。

3.1 初始化

初始化包括设置粒子群参数与初始化粒子位置以及速度。在这里插入图片描述

3.2 评价粒子

即寻找最优粒子与赋值在这里插入图片描述

3.3 更新粒子并迭代

在这里插入图片描述

3.4 运行结果

在这里插入图片描述

运行出的最优适应度、最优位置为:在这里插入图片描述

由此看出差不多取到了极限值了。

04 改进策略

Clerc于1999年在进化方程中引入压缩因子以保证算法的收敛性,同时使得速度的限制放松,使PSO算法具有更好的收敛速度;
Angeline于 1998年和1999年借鉴进化计算中的选择和杂交概念,将其引入PSO算法中以提高算法的收敛性;
Lovbjerg等人于2001年将遗传算法中的子群体概念引人PSO算法中,同时引人繁殖算子以进行子群体的信息交流宏;
窦全胜等人于2005年从增强粒子群优化能力出发,将模拟退火和分工策略两种机制引入到了PSO算法中;
刘宇等人于2006年充分利用粒子速度信息,改变了粒子速度的更新方式,并且引人了精英集团策略,提出了简约PSO算法﹔
刘洪波等人于2006年在分析了PSO算法的收敛性的基础上利用混沌特性提高群体的多样性和搜索遍历性,提高了粒子的持续搜索能力;

本文粒子群代码获取方式,

##########################################################
微信公众号 KAU的云实验台 回复 PSO
##########################################################

这些改进方法作者也将在后面的文章中陆续更新,如果这篇文章对你有帮助或启发,可以点赞或关注哦 (ง •̀_•́)ง(不点也行)

参考文献

[1] Ozcan E,Mohan C. Particle swarm optimization:Surfing the waves[C].Proceedings of 1999 Congresson Evolutionary Computation,1999,1939~1943.
[2] Heppner F , Grenander U. A stochastic nonlinear model for coordinated bird flocks[ M]. AAASPublications,1990.
[3] Shi Y, Eberhart R. A modified particle swarm optimizer [C]. In: Proceedings ofIEEE International Conference on Evolutionary Computation, 1998: 69-73.

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

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

相关文章

亿发软件:智慧中药房信息化建设,中医药安全煎煮解决方案

传统的中药饮片煎煮服用较为繁琐,局限了诸多人群的使用。为了优化医疗服务,并满足患者不断增长的中医药需求,智慧中药房的概念应运而生。智慧化中药房通过信息化和自动化相结合,旨在提高中药处方的管理和效率。下面就让我们了解一下中药配方颗…

创建一个nuxt项目

yarn create nuxt-app ssr 启动项目 如果使用npm run start 可能会报错,提示需要配置为开发环境 可以先执行npm run dev 看看

HPM6750系列--第三篇 搭建MACOS编译和调试环境

一、目的 在上一篇《HPM6750系列--第二篇 搭建Ubuntu开发环境》我们介绍了Ubuntu上开发HPM6750,本篇主要介绍MAC系统上的开发环境的搭建过程,整个过程和Ubuntu上基本类似。 二、准备 首先我们在Mac电脑上打开一个terminal,然后创建一个…

苹果Vision Pro手势+眼球融合交互的奥秘

毫无疑问,Vision Pro在眼球追踪手势的融合交互体验上,给AR/VR头戴设备带来了新突破,在用户体验上的提升非常明显。 ​那么,为什么Vision Pro上这一功能会被如此值得关注呢?为了弄清楚,我们先来看看主流VR设…

037:mapboxGL输入经纬度,地址坐标转换,弹出位置点地址信息

第037个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中输入经纬度,地址坐标转换,弹出位置点地址信息. 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共158行)相关API参考:专栏目标示例效果 配置方式…

配置Jenkins slave agent(通过jnlp)方式连接

上一章,使用ssh的方式添加了两个agent,并都成功完成了构建任务,这一章使用jnlp的方式配置agent,jnlp方式配置agent有个好处,就是agent是主动去找到Master请求连接的,master->agent的通道可以配置一个age…

【AUTOSAR】BMS开发实际项目讲解(二十九)----电池管理系统电池充放电功率控制与SOC

电池充放电功率控制 关联的系统需求 Sys_Req_3901、Sys_Req_3902、Sys_Req_3903、Sys_Req_3904; 功能实现描述 电池充放电功率控制主要包括以下内容: 60S可用功率 参见[CELL] 30S可用功率 参见[CELL] 10S可用功率 参见[CELL] SOP算法 ID Description ASI…

LVDS接口ADC要点数据采集流程

一:要点 1.如果两片AD,四路输出做了同步化处理之后,一定只用同步化模块读时钟(一片AD的时钟)去上传数据,到DDR3模块。 2.ADS42和LTC2208的ADC的数据伴随时钟都来源与输入的采样时钟(有些采样时…

虚拟机上用docker + nginx跑前端并支持https和http

情况是这样,我在虚拟机上,使用docker跑前端,需要这个前端支持https,原http的话自动跳转到https。另外,前端部署使用了负载均衡,即使用了3个docker跑前端:1个入口,另外2个是前端&…

Wi-Fi模块(ESP8266)详解

Wi-Fi模块——ESP8266 0. Wi-Fi模块概述1. 常见的Wi-Fi模块2. ESP8266模块2.1 概念2.2 特点 3. STM32F103C8T6使用ESP8266进行无线通信的示例代码 0. Wi-Fi模块概述 Wi-Fi模块是一种用于无线通信的设备,它能够通过Wi-Fi技术实现设备之间的无线数据传输和互联网连接…

java面试Day18

1.什么是 MySQL 执行计划?如何获取执行计划并对其进行分析? MySQL 执行计划是指 MySQL 查询优化器生成的一份详细的查询执行计划,它展示了 MySQL 在执行查询时所采取的具体执行计划,包括表的访问顺序、数据读取方式、使用的索引、…

大模型入局传统算法,LLMZip基于LLaMA-7B实现1MB文本压缩率90%!

论文链接: https://arxiv.org/abs/2306.04050 随着以ChatGPT、GPT-4为代表的AI大模型逐渐爆火进入公众视野,各行各业都开始思考如何更好的使用和发展自己的大模型,有一些评论甚至认为大模型是以人工智能为标志的第四次产业革命的核心竞争产品…

11.窗口看门狗-WWGD

1.窗口看门狗概述: (1)之所以称为窗口是因为其喂狗时间是一个有上下限的范围内(窗口),可以通过设定相关寄存器,设定其上限时间(下限时间固定)。喂狗的时间不能过早也不能过晚。而独立看门狗限制喂狗时间在0-x内&#…

Zigbee模块(CC2530)详解

Zigbee模块(CC2530) 0. Zigbee概述1. 常见的Zigbee模块2. CC2530模块3. STM32使用CC2530模块方法代码模板 0. Zigbee概述 Zigbee是一种无线通信协议,专为低功耗、低数据速率的应用而设计。它工作在2.4 GHz频段,常用于家庭自动化、…

MYSQL-SELECT语句超详解

目录 前言: SELECT语法 示例 单个字段查询 多个字段查询 查询所有字段 没有FROM的SELECT 查询系统时间 数值计算 虚拟表dual WHERE语句 示例 AND OR 比较运算符 AND OR 运算符优先级 IN NOT IN BETWEEN NOT BETWEEN LIKE EXISTS ORDER BY LIMIT …

SpringBoot(三)SpringBoot搭建简单服务端

之前的两篇文章介绍了如何使用ItelliJ社区版创建SpringBoot项目以及SpringBoot的starter。本篇,介绍下如何使用SpringBoot搭建一个简单的服务端,实现一个新用户注册的场景,供前端和移动端去使用。本篇需要你对SpringBoot的starter&#xff0c…

基于LLM构建文本生成系统

背景: 在流量存量时代,内容运营重要性不言而喻。在流量时代,内容可以不要过于多样化和差异化,只需要有足够多的人流量,按流量转化比率来看,1000个人有1%概率转化,素材不变只要增加足够多的流量…

SpringSecurity之概述

概述 是一个功能强大且高度可定制的身份验证和访问控制框架; 是一个专注于为Java应用程序提供身份验证和授权的框架 核心功能 1.认证 2.验证 3.攻击防范 原理解析 SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链; WebAsy…

探索分治算法:解决复杂问题的有效策略

目录 引言: 一. 基本原理: 二. 适用场景: 三. 分治算法的步骤: 四. 示例:归并排序算法 五. 优缺点: 引言: 在计算机科学中,分治算法是一种在解决复杂问题时常被使用的有效策略…

OBU协议-【CWAVE 客户端接口使用手册】Protobuf-CWAVEII版

1. 说明 (Instruction) 本文档针对所有在 OBU上位机进行开发的客户端程序 上位机进行开发的客户端程序 。开发时需使用者 使用谷歌提供的 protobuf工具结合我公司提供的 nebulalink.servercwaveii.proto文 件进行开发。 Protobuf相关介绍: https://www.ibm.com/deve…