基础樽海鞘群算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107767869
基本SSA在领导者位置更新阶段, 个体在食物源 附近移动, 搜索范围不受限制, 使得收敛后期个体不 能在极值点进行精确搜索, 还有可能跳出极值点. 为 了改善这一问题, 本文提出将衰减因子引入SSA, 得 到添加衰减因子的樽海鞘群算法(reduction factor salp swarm algorithm, RSSA), 使得领导者位置更新范围 随着迭代次数的增加而逐渐减小, 收敛前期避免陷入 局部极值, 收敛后期越来越逼近最优值, 达到更高的 求解精度.
添加衰减因子的领导者位置更新公式(4)如下:
x
j
1
=
{
A
(
l
)
[
F
j
+
c
1
(
(
u
b
j
−
l
b
j
)
c
2
+
l
b
j
)
]
,
c
3
⩾
0.5
,
A
(
l
)
[
F
j
−
c
1
(
(
u
b
j
−
l
b
j
)
c
2
+
l
b
j
)
]
,
c
3
<
0.5
,
(4)
x_j^1=\left\{
其中控制搜索范围的衰减因子
A
(
l
)
A(l)
A(l) 是一个非线性递 减函数, 定义如下:
A
(
l
)
=
e
−
30
(
l
L
)
(5)
A(l)=\mathrm{e}^{-30\left(\frac{l}{L}\right)} \tag{5}
A(l)=e−30(Ll)(5)
收敛前期, 搜索范围不受限, 个体可以充分在全局 移动, 充分发挥算法的全局搜索能力, 避免陷入局部 极值; 收敛后期, 随着个体越来越逼近最优值, 搜索范 围也逐渐减小, 个体在限制范围内进行精确搜索, 增强 局 部 搜 索 能 力 , 以 达 到更高的求解精度。
基本SSA算法没有参数影响跟随者的位置更新, 跟随者的移动由个体自身位置和前一个个体位置综 合决定, 精英个体的影响权重小, 使得跟随者对领导 者的协助作用很小. 为了增强精英个体的影响权 重, 本文将动态学习策略引入 SSA, 得到引入动态 学习的楢海鞘群算法 (dynamic learning salp swarm algorithm, DSSA), 先比较
x
j
i
x_j^i
xji 与
x
j
i
−
1
x_j^{i-1}
xji−1 的适应值, 在适应 值较大的位置(即离最优值距离较远的位置)上添加削 弱因子
k
k
k, 以削弱较差位置个体的影响权重, 增强较优 位置个体的影响权重.
引入动态学习策略的跟随者位置更新公式如下:
x
j
i
=
{
1
2
(
k
×
x
j
i
+
x
j
i
−
1
)
,
f
(
x
j
i
)
⩾
f
(
x
j
i
−
1
)
,
1
2
(
x
j
i
+
k
×
x
j
i
−
1
)
,
f
(
x
j
i
)
<
f
(
x
j
i
−
1
)
,
i
⩾
2
,
(6)
其中:
f
(
x
j
i
)
f\left(x_j^i\right)
f(xji) 和
f
(
x
j
i
−
1
)
f\left(x_j^{i-1}\right)
f(xji−1) 分别表示两位置的适应值,
k
k
k 是 服从参数为
0.5
0.5
0.5 的指数分布随机数.
在收敛过程中, 精英个体能更好的发挥协助作用, 帮助领导者做决策, 不断向食物源逼近, 提高寻优效 率.
RDSSA 的实现流程如下所示:
Step 1 设定种群规模 N N N 、迭代次数 Iteration、维 数 D D D 和上、下边界;
Step 2 初始化樽海鞘群个体的位置, 并计算各个 体的适应值Fitness, 将最小适应值个体的位置确定为 食物源位置FoodPosition;
Step 3 生成衰减因子 A ( l ) A(l) A(l), 根据式(4)更新领导 者位置;
Step 4 生成随机数 k k k, 根据式(6)更新跟随者位 置;
Step 5 计算更新位置后的个体适应值, 若小于当 前FoodPosition, 则更新FoodPosition;
Step 6 判断当前迭代次数是否达到预设迭代次 数, 若已达到, 结束迭代, 否则返回执行 Step 3;
Step 7 输出FoodPosition位置及该位置上的适应 值Fitness.
[1]陈雷,蔺悦,康志龙.基于衰减因子和动态学习的改进樽海鞘群算法[J].控制理论与应用,2020,37(08):1766-1780.