0
点赞
收藏
分享

微信扫一扫

优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)


今天为各位讲解一种改进的粒子群优化算法-随机漂移粒子群优化算法(Random Drift Particle Swarm Optimization,RDPSO)。RDPSO算法于2013年由孙俊教授等人提出,该算法设计思路源自于金属导体中自由电子的运动模型。相比于经典的PSO,RDPSO可以增强粒子摆脱局部最优的能力


目录

  • 标准PSO算法
  • RDPSO算法
  • 标准PSO算法Python工具包


标准PSO算法


我们在​​MATLAB数学建模(六) | 粒子群优化(PSO)算法讲解 (上)​​​和​​基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)​​这两篇推文讲解过标准PSO算法的基本思想。


在这里我们再做一个简短回顾,标准PSO算法中粒子位置的更新公式如下:



其中,k为迭代次数;

 为惯性权重, 其取值一般为随着迭代次数的增加从0.9到0.4线性递减;

  为第  代粒子  的位置;

  为第  代粒子  的位置;

  为第  代粒子  的速度;

  为第  代粒子  的速度;

  为第  代个体最优粒子  的位置;

  为第  代全局最优粒子的位置;

  和  为  之间的随机数;

  和  为常数。


学者Clerc等人发现标准PSO算法稳定收敛的条件是每个粒子都趋向于点  。其中 

 ,  是一个满足(0,1)均匀分布的随机数。


RDPSO算法



在RDPSO算法中,每个粒子的搜索行为被认为和金属导体中自由电子的运动规律是相似的。因此,RDPSO算法中粒子的搜索行为被认为热运动和漂移运动的叠加,即每个粒子的速度公式包含两个分量:


 ,其中  和 


 ,M为种群中粒子数目,  为第  代个体最优粒子  是一个服从标准正太分布的随机数。



综上所述, 

有学者研究发现当  的取值为随着迭代次数的增加从0.9到0.3线性递减, 


最终,粒子i的位置更新公式为:


RDPSO算法伪代码如下所示:

优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)_python


标准PSO算法Python工具包


标准PSO算法有现成的Python工具包——PySwarms,官网链接如下:

​​https://pyswarms.readthedocs.io/en/latest/index.html​​

优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)_python_02


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]


优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)_粒子群_03



参考文献


[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.


OK,今天就到这里啦,各位可点击下方图片留言

优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)_粒子群_04


举报

相关推荐

粒子群算法(PSO)——Java实现

0 条评论