数学建模--粒子群算法(PSO)的Python实现
目录
1.开篇提示
2.算法流程简介
3.算法核心代码
4.算法效果展示
1.开篇提示
"""
开篇提示:
这篇文章是一篇学习文章,思路和参考来自:https://blog.csdn.net/weixin_42051846/article/details/128673427?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4-128673427-blog-127750401.235^v38^pc_relevant_anti_t3&spm=1001.2101.3001.4242.3&utm_relevant_index=7
我基于自己的研究习惯对于该博主的文章进行了部分的学习和理解,并且对于代码进行了部分的修改,但总体还是参考他的思路和代码,在这里表示非常的感谢!
如果你想更了解PSO算法的内核,请您移步其博客,该博客给出了非常细致的分析。
代码修改处如下所示:
1.添加图片中的中文文字(matplotlib汉化问题)
2.fit_fun()书写简化
3.绘图更加清晰精炼
4.修改迭代函数部分中的计算量
"""
2.算法流程简介
"""
粒子群算法(PSO):是一种模拟鸟类觅食的智能优化算法
该算法的求解思路就是将待求解问题的每一个候选解视作鸟群中的每一个个体的具体位置信息,
每个候选解对应的最优适应度值作为每个个体在该位置处所能搜索到的食物的量,
通过个体间位置信息的相互交流来发现目标范围内的最优适应度值对应的最优候选解。
###重要概念
使用粒子群算法的时候我们需要及时去更新两个主要算式,也是PSO中最重要的两个公式
1.粒子的位置信息需要进行不断更新,对于每一个粒子的位置信息的计算更新公式:x(t+1)=x(t)+V(t+1)
2.对于粒子的下一次的移动更新距离,就涉及到了迭代的移动方向和距离,其更新公式如下所示:V(t+1)=wV(t)+c1r1(pbest(t)-x(t))+c2r2(gbest(t)-x(t))
有了以上的公式,我们处理PSO问题就变得比较简单了!
"""
"""
具体的算法流程如下:
1.基础参数的设置
2.初始化loc,v和种群适应度
3.标记最优个体数据
4.进行种群迭代运算
5.绘制可视化图片查看变化趋势
"""
本题中需要处理的问题是:(设置搜索空间维度为20,范围为[-10,10])

3.算法核心代码
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
#matplotlib支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def fit_fun(x):y1=0for i in range(len(x)-1):y1=y1+100*((x[i+1]-x[i]*x[i])*(x[i+1]-x[i]*x[i]))+(x[i]-1)*(x[i]-1)y=abs(y1)return y
#1.基础参数的设置
range1=[-10,10]#取值范围
pso_number=300#进化种群的数量
iterators = 2000 #迭代次数最好大于500次以上,不然效果不明显
w=0.8 #惯性因子
#两个加速系数
c1=2
c2=2
#种群个体的位置
loc=np.zeros((pso_number,20))
#种群个体的移动速度
v= np.zeros((pso_number, 20))
#种群的个体适应度值
fitness=np.zeros(pso_number)#2.初始化loc,v和种群适应度
for j in range(pso_number):loc[j] = np.random.uniform(low=-10, high=10,size=(1, 20))v[j] = np.zeros((1,20))fitness[j] = fit_fun(loc[j])
#3.标记最优个体数据
allpg,bestpg=loc[fitness.argmin()].copy(),fitness.min()#allpg,bestpg分别表示种群历史最优个体和适应度值
poppn,bestpn=loc.copy(),fitness.copy()#poppn,bestpn分别存储个体历史最优位置和适应度值
bestfitness=np.zeros(iterators)#bestfitness用于存储每次迭代时的种群历史最优适应度值
#4.进行种群迭代运算
#开始迭代
for i in range(iterators):print("此时为第",i+1,"次迭代:")for m in range(pso_number):r1 = np.random.rand()r2 = np.random.rand()#计算移动速度同时更新位置信息v[m]=w*v[m]+c1*r1*(poppn[m]-loc[m])+c2*r2*(allpg-loc[m])loc[m]=loc[m]+v[m]#确保更新后的位置在取值范围内loc[loc<range1[0]]=range1[0]loc[loc>range1[1]]=range1[1]#计算适应度值fitness[m] = fit_fun(loc[m])#更新个体历史最优适应度值if fitness[m]<bestpn[m]:bestpn[m]=fitness[m]poppn[m]=loc[m].copy()#更新种群历史最优适应if bestpn.min()<bestpg:bestpg=bestpn.min()allpg=poppn[bestpn.argmin()].copy()bestfitness[i]=bestpgprint("当前最佳的群体适应值为:",bestfitness[i])#5.绘制可视化图片查看变化趋势
fig=plt.figure()
plt.title('适应度的变化曲线')
x=range(1,iterators+1,1)
plt.plot(x,bestfitness,color="green",label="PSO优化曲线",linewidth=2.0, linestyle="-")
plt.xlabel("迭代次数范围")
plt.ylabel("适应度值范围")
plt.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0.7, 0.85))
plt.savefig('C:/Users/Zeng Zhong Yan/Desktop/粒子群算法.png', dpi=500, bbox_inches='tight')
plt.show()
4.算法效果展示

相关文章:
数学建模--粒子群算法(PSO)的Python实现
目录 1.开篇提示 2.算法流程简介 3.算法核心代码 4.算法效果展示 1.开篇提示 """ 开篇提示: 这篇文章是一篇学习文章,思路和参考来自:https://blog.csdn.net/weixin_42051846/article/details/128673427?utm_mediumdistribute.pc_relevant.none-task-blog-…...
【C++】STL-函数对象-内建函数对象
0.前言 1.算术仿函数 #include <iostream> using namespace std;// STL-内建函数对象-算术仿函数 #include<functional> // 内建函数对象头文件//以下举例两个仿函数 -- negate and plus// negate 一元仿函数 取反仿函数 void test01() {negate<int>n;cout …...
Redis 教程 - Redis 基本操作
Redis 教程 - Redis 基本操作 Redis(Remote Dictionary Server)是一个开源的内存数据库,它提供了键值对存储和多种数据结构的支持,被广泛应用于缓存、消息队列、计数器等场景。本教程将介绍 Redis 的基本操作,包括连接…...
FreeRTOS中断与任务之间同步(Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,422 )
前言: FreeRTOS中,中断需要注意几点: 何时使用中断;中断服务函数(ISR)要处理的数据量有多大,通常我们希望中断的切换越快越好,也就是说,ISR尽量采用耗时较少的处理方式…...
WebRTC清晰度和流畅度
WebRTC清晰度和流畅度 flyfish WebRTC提供了4种模式DISABLED,MAINTAIN_FRAMERATE,MAINTAIN_RESOLUTION,BALANCED // Based on the spec in // https://w3c.github.io/webrtc-pc/#idl-def-rtcdegradationpreference. // These options are …...
华为数通方向HCIP-DataCom H12-821题库(单选题:181-200)
第181题 某管理员需要创建AS Path过滤器(ip as-path-iter),允许AS_Path中包含65001的路由通过,那么以下哪一项配置是正确的? A、ip as-path-filter 1 permit 65001 B、ip as-path-filter 1 permit "65001 C、ip as-path-filter 1 permit *6500…...
海康威视二次开发适配安卓电视盒子
收到一个需求,需要在安卓电视盒子上适配海康威视摄像头视频: 1.类似电视家app界面,左边滑动菜单显示通道列表、设置按钮,遥控器呼出菜单。 2.遥控器操作:切换视频通道、云台上下左右控制、缩放等。 3.服务器域名、用…...
NIO原理浅析(二)
IO分类 阻塞和非阻塞 阻塞IO:用户空间引发内核空间的系统调用,需要内核IO操作彻底完成之后,返回值才会返回到用户空间,执行用户的操作。阻塞指的用户空间程序的执行状态,用户空间程序需要等到IO操作彻底执行完毕。j…...
leetcode每日一练-第53题-最大子数组和
一、思路 动态规划 二、解题方法 使用了两个变量 maxSum 和 currentSum 来分别记录全局的最大和和当前连续子数组的和。遍历数组时,我们不断更新 currentSum,并比较是否需要更新 maxSum。最后,maxSum 就是最大的连续子数组和。 三、code …...
京东云接入【风险识别】接口
京东云的接入文档写的真的跟逗你玩一样,就给提供了一个简单的实例,其他的全靠自己摸索。 这篇文章描述的是激动云【风险识别接口】接入,也会介绍如何接入其他的一些未在文章内描述到的接口。 这里使用的是python SDK,先安装 pip…...
在 linux 虚拟机上安装配置 hive
目录 一 下载hive 安装包 二 解压 hive 并配置环境变量 三 配置hive 的配置文件 四 更新 guava 五 hive初始化 六 开启远程连接 七 使用datagrip 连接 hive 一 下载hive 安装包 百度网盘资源如下: 链接: https://pan.baidu.com/s/18jF-Qri0hc52_rtL61O0YQ?…...
作品集(陆续上传中)
智能家居---不断完善中 家居-CSDN直播 家居 语音刷抖音 --- 基于串口和adb 基于守护进程的语音刷抖音-CSDN直播 基于守护进程的语音刷抖音 海天一色项目 --- 船舶靠港零碳排加热器 FTP云盘 --- 多进程和socket FTP云盘-CSDN直播 FTP云盘...
论文解读 | 三维点云深度学习的综述
原创 | 文 BFT机器人 KITTI 是作为基准测试是自动驾驶中最具影响力的数据集之一,在学术界和工业界都被广泛使用。现有的三维对象检测器存在着两个限制。第一是现有方法的远程检测能力相对较差。其次,如何充分利用图像中的纹理信息仍然是一个开放性的问题…...
基于costas环的载波同步系统matlab性能仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................................ I_Dataroun…...
解码自我注意的魔力:深入了解其直觉和机制
一、说明 自我注意机制是现代机器学习模型中的关键组成部分,尤其是在处理顺序数据时。这篇博文旨在提供这种机制的详细概述,解释它是如何工作的,它的优点,以及它背后的数学原理。我们还将讨论它在变压器模型中的实现和多头注意力的…...
mysql之存储引擎
目录 存储引擎概念 MyISAM MyISAM特点 MyISAM 表的存储格式 MyISAM适用的生产场景 InnoDB InnoDB特点 选择存储引擎依据 MyISAM 和 INNODB区别 命令 查看系统支持的存储引擎 查看表使用的存储引擎 修改存储引擎 存储引擎概念 MySQL中的数据用各种不同的技术存…...
服务器日志出现大量NTLM(NT LAN Manager)攻击
日志名称:Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/8/30 20:57:40 事件 ID:4625 任务类别:登录 级别: 信息 关键字: 审核失败 用户: 暂缺 计算机: WIN-QBJ3ORTR0CF 描述: 帐户登录失败。 主题: 安全 ID:NULL SID 帐户名:- 帐户域:- …...
Spring学习|Spring简介、IOC控制反转理解、IOC创建对象方式
Spring Spring:春天------>给软件行业带来了春天! 2002,首次推出了Spring框架的雏形: interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。 RodJohnson,Spring Framework创始人&…...
DDR2 IP核调式记录2
本文相对简单,只供自己看看就行。从其它的博客找了个代码,然后记录下仿真波形。 1. 功能 直接使用quartus生成的DDR2 IP核,然后实现循环 -->写入burst长度的数据后读出。 代码数据的传输是32位,实际使用了两片IC。因此IP核也是…...
【ES6】js 中class的extends、super关键字用法和避坑点
在JavaScript中,使用class关键字可以实现面向对象编程。其中,extends和super是两个非常重要的关键字,它们分别用于实现类的继承和调用父类的方法。 一、extends关键字 extends关键字用于实现类的继承,它可以让一个子类继承父类的…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
