产生背景

粒子群优化(Particle Swarm Optimization, PSO)算法是由美国普渡大学的Kennedy和Eberhart于1995年提出,它的基本概念源于对鸟群觅食行为的研究。

设想这样一个场景:

一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢?
最简单有效的就是搜寻目前离食物最近的鸟的周围区域。

粒子群优化算法的基本原理

基本思想

将每个个体看作n维搜索空间中一个没有体积质量的粒子,在搜索空间中以一定的速度飞行,该速度决定粒子飞行的方向和距离。所有粒子有一个由优化函数决定的适应值。

基本原理

PSO初始化为一群随机粒子,然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解称为个体极值。另个一是整个种群目前找到的最优解,这个解称为全局极值。

算法定义

在n 维连续搜索空间中,对粒子群中的第i (i=1, 2, , m)个粒子进行定义:

粒子群优化算法Python代码 粒子群优化算法案例_人工智能


粒子群优化算法Python代码 粒子群优化算法案例_粒子群优化算法Python代码_02


粒子群优化算法Python代码 粒子群优化算法案例_粒子群_03


第1部分是粒子在前一时刻的速度;

第2部分为个体“认知”分量,表示粒子本身的思考,将现有的位置和曾经经历过的最优位置相比。

第3部分是群体“社会(social)”分量,表示粒子间的信息共享与相互合作。

粒子群优化算法Python代码 粒子群优化算法案例_迭代_04


分别控制个体认知分量和群体社会分量相对贡献的学习率。

随机系数增加搜索方向的随机性和算法多样性。

基于学习率

Kennedy给出以下4种类型的PSO模型:

粒子群优化算法Python代码 粒子群优化算法案例_优化算法_05


粒子群优化算法Python代码 粒子群优化算法案例_人工智能_06


粒子群优化算法Python代码 粒子群优化算法案例_优化算法_07


粒子群优化算法Python代码 粒子群优化算法案例_人工智能_08

粒子群优化算法的流程:

(1)初始化每个粒子。在允许范围内随机设置每个粒子的初始位置和速度。
(2)评价每个粒子的适应度。计算每个粒子的目标函数。
(3)设置每个粒子的Pi。对每个粒子,将其适应度与其经 历过的最好位置Pi进行比较,如果优于Pi,则将其作为该粒子的最好位置Pi。
(4)设置全局最优值Pg。对每个粒子,将其适应度与群体经历过的最好位置Pg进行比较,如果优于Pg,则将其作为当前群体的最好位置Pg。
(5)更新粒子的速度和位置。根据式(6.20)更新粒子的速度和位置。
(6)检查终止条件。如果未达到设定条件(预设误差或者迭代的次数),则返回第(2)步。

粒子群优化算法流程图

粒子群优化算法Python代码 粒子群优化算法案例_迭代_09

粒子群优化算法的参数分析

PSO算法的参数

粒子群优化算法Python代码 粒子群优化算法案例_粒子群优化算法Python代码_10


最大速度Vmax

粒子群优化算法Python代码 粒子群优化算法案例_粒子群优化算法Python代码_11


权重因子

粒子群优化算法Python代码 粒子群优化算法案例_迭代_12

位置更新方程中各部分的影响

粒子群优化算法Python代码 粒子群优化算法案例_粒子群优化算法Python代码_13


粒子群优化算法Python代码 粒子群优化算法案例_粒子群_14


粒子群优化算法Python代码 粒子群优化算法案例_粒子群_15


粒子群优化算法Python代码 粒子群优化算法案例_粒子群_16


粒子群优化算法Python代码 粒子群优化算法案例_人工智能_17

参数设置

粒子群优化算法Python代码 粒子群优化算法案例_优化算法_18

粒子群优化算法应用领域

粒子群优化算法已在诸多领域得到应用,归纳如下:

(1)神经网络训练 (7)经济领域
(2)化工系统领域 (8)图像处理领域
(3)电力系统领域 (9)生物信息领域
(4)机械设计领域 (10)医学领域
(5)通讯领域 (11)运筹学领域
(6)机器人领域 ………….

粒子群优化算法求解车辆路径问题

车辆路径问题(VRP)的模型

粒子群优化算法Python代码 粒子群优化算法案例_迭代_19


粒子群优化算法Python代码 粒子群优化算法案例_迭代_20

编码与初始种群

粒子群优化算法Python代码 粒子群优化算法案例_粒子群_21

实验结果

粒子群优化算法的各个参数设置如下:

种群规模:50

迭代次数:1000

c1的初始值为1,随迭代的进行,线性减小到0

C2=c3=1.4

Vmax<1000

优化结果及其与遗传算法的比较如表所示。