文章目录
- 一、理论基础
- 1、花朵授粉算法
- 2、基于引力搜索策略的花朵授粉算法
- 2.1 引力搜索算法
- 2.2 引力机制的FPA
- 2.3 算法的实现
- 二、仿真实验与结果分析
- 三、参考文献
一、理论基础
1、花朵授粉算法
请参考这里。
2、基于引力搜索策略的花朵授粉算法
2.1 引力搜索算法
请参考这里。
2.2 引力机制的FPA
花朵授粉算法全局授粉(优化)部分的个体位置的更新不能单纯依靠莱维飞行来改变步长,这在一定程度上依然存在陷入局部极值的问题。
针对该问题在花朵授粉算法的全局授粉(优化)部分引入引力机制,在引力的作用下花朵个体向质量大的个体移动,而质量最大的个体占据着最优位置,个体间的相互引力促进个体进行优化信息的共享,从而引导个体向最优解区域展开搜索。因此,万有引力机制能使花朵利用自身与其他花朵间的万有引力来牵制本身不均匀的随机游走的莱维飞行机制,使花朵受莱维飞行和个体间的引力的双重影响,引导种群向最优解靠近。所有的花朵个体通过万有引力相互吸引,并通过引力使所有的花朵朝惯性质量较大的个体方向移动,惯性质量大的花朵(当前较好个体)比惯性质量小的花朵(当前较差个体)移动缓慢。通过这种引力作用,花朵个体间相互交流、相互协作,保证了算法的开采能力。另外,万有引力的加速度与物体所受外力的方向一致,也就说明加速度的方向与大小直接影响着花朵的移动方向和大小。在花朵授粉算法中,花朵间产生的加速度直接左右着花朵的迭代位置的改变,进而引导算法的全局授粉(优化)。因此,花朵授粉算法中的全局授粉公式修改为式(1):
x
i
t
+
1
=
a
i
k
+
γ
L
(
λ
)
(
g
∗
−
a
i
k
)
(1)
x_i^{t+1}=a_i^k+\gamma L(\lambda)\left(g_*-a_i^k\right)\tag{1}
xit+1=aik+γL(λ)(g∗−aik)(1)其中,
a
i
k
a_i^k
aik为花朵
i
i
i在第
t
t
t代受种群中其他花朵的万有合引力所产生的加速度,
L
(
λ
)
L(\lambda)
L(λ)是对应于花朵
i
i
i在第
t
t
t代的莱维飞行位移(步长)。
由式(1)可以看出,改进后的花朵位置的更新中既考虑到了花朵授粉算法中本身的莱维飞行机制,又考虑到了种群中个体受到的万有引力的作用。这样,在花朵授粉算法的全局授粉(优化)部分引入引力机制,使花朵个体的位置随迭代进化受莱维飞行和引力两种机制的共同作用:一方面,利用莱维飞行的随机性和不均匀性的跳跃动作使花朵个体跳离局部极值;另一方面,花朵个体间的引力机制使花朵间进行信息共享,朝着质量大(最优解)的花朵移动。
2.3 算法的实现
针对花朵授粉算法的局限性,以及花朵授粉算法中所特有的莱维飞行机制和引力搜索算法中的引力机制,提出了基于引力搜索机制的花朵授粉算法GSFPA,改进算法中利用引力搜索算法中的引力策略作用于花朵授粉中全局寻优(授粉)部分,与花朵授粉算法本身的莱维飞行机制共同指导种群的迭代优化。
GSFPA算法的具体实施步骤如下:
步骤1. 初始化GSFPA算法的参数:种群数
N
N
N,转换概率
p
p
p,最大迭代次数
N
_
i
t
e
r
N\_iter
N_iter,维数
D
D
D,万有引力初始系数
G
0
G_0
G0等参数;
步骤2. 随机初始化种群的位置,计算每个解的适应度值,并求解出当前的最优值、最优解和最差值;
步骤3. 根据相应公式计算个体的万有引力系数
G
t
G_t
Gt;
步骤4. 根据相应公式计算惯性质量
M
i
(
t
)
M_i(t)
Mi(t);
步骤5. 根据相应公式计算个体
i
i
i的引力之和
F
i
k
(
t
)
F_i^k(t)
Fik(t);
步骤6. 根据相应公式计算个体
i
i
i的加速度
a
i
k
a_i^k
aik;
步骤7. 若转换概率
p
>
r
a
n
d
p>rand
p>rand,按式(1)对解进行更新,并进行越界处理;
步骤8. 若转换概率
p
<
r
a
n
d
p<rand
p<rand,按FPA的局部授粉公式对解进行更新,并进行越界处理;
步骤9. 计算步骤7或步骤8的适应度值,并更新全局最优值、全局最优解和全局最差值;
步骤10. 判断结束条件,若满足,退出程序并输出最优值及最优解,否则,转步骤3。
二、仿真实验与结果分析
将GSFPA与PSO、ABC和FPA进行对比,以文献[1]中表1的F1、F2、F3(高维单峰函数/30维)、F8、F9、F10(高维多峰函数/30维)、F14、F15、F16(低维函数/2维、2维、2维)为例,实验设置种群规模为20,最大迭代次数为500,每种算法独立运算50次,结果显示如下:
- 函数适应度值的收敛曲线对比及收敛结果
函数:F1
PSO:最差值: 136.7366, 最优值: 45.6954, 平均值: 78.5905, 标准差: 21.6733
ABC:最差值: 677.1412, 最优值: 88.0789, 平均值: 294.5426, 标准差: 150.4328
FPA:最差值: 3256.8588, 最优值: 798.4602, 平均值: 1493.4369, 标准差: 447.2057
GSFPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F2
PSO:最差值: 14.8244, 最优值: 3.5029, 平均值: 7.019, 标准差: 2.2936
ABC:最差值: 71.7289, 最优值: 48.6301, 平均值: 59.2809, 标准差: 5.5993
FPA:最差值: 69.7187, 最优值: 31.5497, 平均值: 46.4325, 标准差: 9.2584
GSFPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F3
PSO:最差值: 8538.8371, 最优值: 1151.5564, 平均值: 2446.0648, 标准差: 1470.9844
ABC:最差值: 53391.9577, 最优值: 27646.7587, 平均值: 44236.9952, 标准差: 5621.5928
FPA:最差值: 28306.6478, 最优值: 10549.7327, 平均值: 18242.0539, 标准差: 3909.3464
GSFPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F8
PSO:最差值: 2.3514, 最优值: 1.4216, 平均值: 1.7379, 标准差: 0.19988
ABC:最差值: 8.8395, 最优值: 1.6597, 平均值: 3.6406, 标准差: 1.3294
FPA:最差值: 25.3684, 最优值: 8.3295, 平均值: 15.0171, 标准差: 3.4486
GSFPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F9
PSO:最差值: 10.5425, 最优值: 1.937, 平均值: 6.1144, 标准差: 2.0772
ABC:最差值: 32.8877, 最优值: 18.4422, 平均值: 27.9057, 标准差: 2.971
FPA:最差值: 21.4866, 最优值: 12.2541, 平均值: 16.2842, 标准差: 1.9622
GSFPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F10
PSO:最差值: 1.1591e-12, 最优值: 1.7872e-13, 平均值: 3.7239e-13, 标准差: 1.624e-13
ABC:最差值: 1.813e-10, 最优值: 2.1169e-11, 平均值: 8.7483e-11, 标准差: 3.6715e-11
FPA:最差值: 4.2554e-12, 最优值: 1.1178e-12, 平均值: 2.0711e-12, 标准差: 5.5589e-13
GSFPA:最差值: -1, 最优值: -1, 平均值: -1, 标准差: 0
函数:F14
PSO:最差值: -0.99975, 最优值: -1, 平均值: -0.99998, 标准差: 4.7284e-05
ABC:最差值: -1, 最优值: -1, 平均值: -1, 标准差: 0
FPA:最差值: -0.93625, 最优值: -0.9999, 平均值: -0.98288, 标准差: 0.019299
GSFPA:最差值: -1, 最优值: -1, 平均值: -1, 标准差: 0
函数:F15
PSO:最差值: 4.2723e-05, 最优值: 3.6898e-08, 平均值: 5.7442e-06, 标准差: 9.5186e-06
ABC:最差值: 1.2954e-09, 最优值: 1.7405e-17, 平均值: 6.1513e-11, 标准差: 2.5569e-10
FPA:最差值: 0.0064172, 最优值: 2.0504e-06, 平均值: 0.00049125, 标准差: 0.0009834
GSFPA:最差值: 0.015429, 最优值: 1.1192e-05, 平均值: 0.0014845, 标准差: 0.0027543
函数:F16
PSO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 5.2005e-06
ABC:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 1.9827e-15
FPA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 1.1054e-08
GSFPA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 3.6291e-07
- 独立运行50次的函数最优适应度值比较特性图
实验结果表明:改进算法的寻优性能显著优于基本的花朵授粉算法,其收敛速度、收敛精度、鲁棒性均较对比算法有较大提升。
三、参考文献
[1] 肖辉辉, 万常选, 段艳明, 等. 基于引力搜索机制的花朵授粉算法[J]. 自动化学报, 2017, 43(4): 576-594.