优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)
目录
▎标准PSO算法
▎RDPSO算法
▎标准PSO算法Python工具包
01 | 工具包适用范围
02 | 工具包安装方法
03 | 工具包使用实例
▎参考文献
今天为各位讲解一种改进的粒子群优化算法-随机漂移粒子群优化算法(Random Drift Particle Swarm Optimization,RDPSO)。RDPSO算法于2013年由孙俊教授等人提出,该算法设计思路源自于金属导体中自由电子的运动模型。相比于经典的PSO,RDPSO可以增强粒子摆脱局部最优的能力。
▎标准PSO算法
我们在MATLAB数学建模(六) | 粒子群优化(PSO)算法讲解 (上)和基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)这两篇推文讲解过标准PSO算法的基本思想。
在这里我们再做一个简短回顾,标准PSO算法中粒子位置的更新公式如下:
其中,k为迭代次数;
w为惯性权重, 其取值一般为随着迭代次数的增加从0.9到0.4线性递减;
为第k+1代粒子i的位置;
为第k代粒子i的位置;
为第k+1代粒子i的速度;
为第k代粒子i的速度;
为第k代个体最优粒子i的位置;
为第k代全局最优粒子的位置;
r1和r2为(0,1)之间的随机数;
c1和c2为常数。
学者Clerc等人发现标准PSO算法稳定收敛的条件是每个粒子都趋向于点 。其中计算公式如下: , 是一个满足(0,1)均匀分布的随机数。
▎RDPSO算法
在RDPSO算法中,每个粒子的搜索行为被认为和金属导体中自由电子的运动规律是相似的。因此,RDPSO算法中粒子的搜索行为被认为热运动和漂移运动的叠加,即每个粒子的速度公式包含两个分量:
,其中 和 的计算公式分别如下:
其中 ,M为种群中粒子数目,为第k代个体最优粒子i的位置。是一个服从标准正太分布的随机数。
综上所述,的计算公式如下:
有学者研究发现当的取值为随着迭代次数的增加从0.9到0.3线性递减,取值恒为1.45时,RDPSO算法具有较好的性能。
最终,粒子i的位置更新公式为:
RDPSO算法伪代码如下所示:
▎标准PSO算法Python工具包
标准PSO算法有现成的Python工具包——PySwarm,官网链接如下:
Welcome to PySwarms’s documentation!pyswarms.readthedocs.io/en/latest/index.html正在上传…重新上传取消
01 | 工具包适用范围
目前PySwarm工具包既可用来求解单目标连续优化问题,又可用来求解基于序列的单目标离散优化问题,如车间调度问题、旅行商问题等。
02 | 工具包安装方法
在终端执行如下命令:
pip install pyswarms
03 | 工具包使用实例
求解问题为 ,求解代码如下,其中w设为0.9,c1设为0.5,c2设为0.3,种群数目n_particles设为10,迭代次数iters设为1000:
# Import modules
import numpy as np# Import PySwarms
import matplotlib.pyplot as plt
import pyswarms as ps
from pyswarms.utils.functions import single_obj as fx
from pyswarms.utils.plotters import plot_cost_history# Some more magic so that the notebook will reload external python modules;
# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython# Set-up hyperparameters
options = {'c1': 0.5, 'c2': 0.3, 'w':0.9}# Call instance of PSO
optimizer = ps.single.GlobalBestPSO(n_particles=10, dimensions=2, options=options)# Perform optimization
cost, pos = optimizer.optimize(fx.sphere, iters=1000)plot_cost_history(cost_history=optimizer.cost_history)
plt.show()
求解结果如下:
best cost: 5.230774092236189e-41
best pos: [-1.73648867e-21 7.02085095e-21]
▎参考文献
[1]Sun J, Palade V, Wu X J, et al. Solving the power economic dispatch problem with generator constraints by random drift particle swarm optimization[J]. IEEE Transactions on Industrial Informatics, 2013, 10(1): 222-232.
[2]李超. 粒子群优化算法改进策略及其应用研究[D]. 江南大学, 2021.
优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)相关推荐
- 智能算法系列之粒子群优化算法
本博客封面由ChatGPT + DALL·E 2共同创作而成. 文章目录 前言 1. 算法思想 2. 细节梳理 2.1 超参数的选择 2.2 一些trick 3. 算法实现 3.1 问题场景 3. ...
- 【优化算法】细菌粒子群优化算法【含Matlab源码 1195期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]细菌粒子群优化算法[含Matlab源码 1195期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏Mat ...
- 粒子群优化算法分布式电源选址定容 matlab源代码,分析了分布式电源接入配电网前后对网络损耗的影响,在此基础上提出采用混合模拟退火算法的改进粒子群优化算法进行分布式电源选址和定代码按照高水平文章复现
(1)粒子群优化算法分布式电源选址定容 如图12 matlab源代码,代码按照高水平文章复现,保证正确 分析了分布式电源接入配电网前后对网络损耗的影响,在此基础上提出采用混合模拟退火算法的改进粒子群优 ...
- 多目标粒子群优化算法_基于粒子群优化的投资组合优化研究
原文链接: 基于粒子群优化的投资组合优化研究tecdat.cn 我今年的研究课题是使用粒子群优化(PSO)的货币进位交易组合优化.在本文中,我将介绍投资组合优化并解释其重要性.其次,我将演示粒子群优 ...
- 【微电网优化】基于matlab粒子群优化算法的微电网调度(光伏、储能、电动车、电网交互)【含Matlab源码 2190期】
一.粒子群算法求解电联供型微电网经济运行优化简介 0 引言 热电联供 (combined heat and power, CHP) 系统建立在能源梯级利用的概念基础上, 统一解决了电能和热能的供应问题 ...
- 【计算智能】——群体智能算法(蚁群优化算法ACO、粒子群优化算法PSO)
群体智能算法 与大多数基于梯度的优化算法不同,群体智能算法依靠的是概率搜索算法. 与梯度算法及传统演化算法相比优点: 没有集中控制约束,不会因为个体的故障影响整个问题的求解. 以非直接信息交流的方式确 ...
- 蚁群算法优化神经网络matlab源程序,粒子群优化神经网络的程序大集合
粒子群程序集合 866867259psobp psobp.m pso(粒子群算法)优化神经网络 粒子群算法(PSO)应用于神经网络优化[matlab] PSOt A Particle Swarm Op ...
- trainlm算法c语言,粒子群优化的BP神经网络模型对C、Mn两种元素收得率的预测
粒子群优化的BP神经网络模型对C.Mn两种元素收得率的预测 来源:用户上传 作者: 摘 要:本文首先对数据进行处理,利用收得率公式求出历史收得率:并利用已知的影响元素收得率的主要影响因素结合BP神经网 ...
- 9.群智能算法及其应用: 粒子群优化算法及应用, 蚁群算法及其应用
本文内容为浙江工业大学王万良慕课课程的课程讲义, 将其整理为OneNote笔记同时添加了本人上课时的课堂笔记, 且主页中的思维导图就是根据课件内容整理而来, 为了方便大家和自己查看,特将此上传到CSD ...
最新文章
- Run time setting设置详解
- java xmn xms_JVM调优总结 -Xms -Xmx -Xmn -Xss(转)
- 小米笔记本服务器系统,小米笔记本Pro GTX版
- hdu区域赛在线热身赛 暨 第十二场组队赛
- fedora20 安装ror
- class_create和class_device_create
- 的引用_懵!啥是Java软引用、弱引用、虚引用?
- 游戏设计规则探秘之提高动词的健壮性
- 基于Python从头开始使用 RMSProp 进行梯度下降
- shapefile(.shp)空间数据格式详细说明
- 14个开源Ajax框架
- ISO9000与ISO14000标准的不同点
- linux虚拟磁带机管理,linux虚拟磁带机
- 华为笔记本重装系统步骤
- .NET Standard
- 如何用Matlab在极坐标系下绘图并调整极坐标初始角位置
- KDevelop详细Debug教程
- 从零开始搭建Linux共享服务器(云享系统)
- 【22年2月12日更新】新版傻妞+对接onebot协议+对接青龙教程+常用命令
- Bmob用户功能详解(三)