混合模拟退火和教与学的鸽群优化算法
文章目录
摘要:为了改善鸽群优化算法(PIO)容易陷入局部最优和解精度较低的特点,提出一种混合模拟退火和教与学的鸽群优化算法。首先,将鸽群优化算法和模拟退火相结合,可以利用模拟退火跳出局部最优,得到较为精确的解。然后,在鸽群优化算法的速度更新公式中加入惯性权重,并采用线性递减的策略,与教与学算法相结合,增加种群的多样性。
1.鸽群算法
基础鸽群算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/109774886
2.改进鸽群优化算法
2.1 模拟退火鸽群优化算法
模拟退火
[
4
]
{ }^{[4]}
[4] 是模拟物体从高温降为低温的过程, 根据 Metropolis 准则, 由于降温操作, 物体从状态
i
\mathrm{i}
i 变为状态
j
\mathrm{j}
j, 能 量也从
E
(
i
)
E(i)
E(i) 变为
E
(
j
)
E(j)
E(j), 能量的变化量为
Δ
E
=
E
(
i
)
−
E
(
j
)
\Delta E=E(i)-E(j)
ΔE=E(i)−E(j), 当
Δ
E
>
0
\Delta E>0
ΔE>0, 接受变化的新状态; 当
Δ
E
<
0
\Delta E<0
ΔE<0, 以一定的概率接 受当前的新状态。当概率
p
=
exp
(
E
(
i
)
−
E
(
j
)
/
T
)
>
p=\exp (E(i)-E(j) / T)>
p=exp(E(i)−E(j)/T)> rand 时, 接受 当前的新状态, 否则保留旧的状态。其中,
T
=
T
⋅
\mathrm{T}=\mathrm{T} \cdot
T=T⋅ decayscale, decayscale 为退火系数。
模拟退火鸽群优化算法(SAPIO ) 是以鸽群优化算法为主 流程, 加人了模拟退火机制, 对每个鸽子的位置进行局部寻优, 使算法在接受较优解的同时, 以一定的概率接受较差解, 能够 使算法跳出局部最优。随着物体的降温, 能量逐渐趋于稳定状 态,算法达到全局最优。
2.2 线性递减的惯性权重和速度更新
在鸽群优化算法中, 前期需要较大的速度, 有利于全局搜 索, 能较快地定位最优解的大致位置。随着惯性权重的减小, 速度减小, 能够进行精细的局部搜索和得到更精确的解, 该方 法加快了算法的收敛速度, 提高了算法性能
[
5
]
{ }^{[5]}
[5] 。惯性权重的调 节和速度公式如下:
w
=
w
start
−
w
start
−
w
end
T
1
×
t
(6)
w=w_{\text {start }}-\frac{w_{\text {start }}-w_{\text {end }}}{T 1} \times t \tag{6}
w=wstart −T1wstart −wend ×t(6)
v i t = w ∗ v i t − 1 ⋅ e − R t + rand ⋅ ( x gbest − x i t − 1 ) (7) \begin{gathered} v_i^t=w * v_i^{t-1} \cdot e^{-R t}+\operatorname{rand} \cdot\left(x_{\text {gbest }}-x_i^{t-1}\right) \end{gathered}\tag{7} vit=w∗vit−1⋅e−Rt+rand⋅(xgbest −xit−1)(7)
2.3 教与学优化算法
教与学优化算法(TLBO) [6] 包括教师阶段和学习阶段。在教师阶段,选择种群中最好的个体作为教师,通过教行为提高学生的平均成绩。设
x
teacher
x_{\text {teacher }}
xteacher 是教师,
α
\alpha
α 是学习因子, 且
α
=
\alpha=
α= round
(
1
+
(1+
(1+ rand
(
0
,
1
)
)
,
x
mean
(0,1)), x_{\text {mean }}
(0,1)),xmean 种群内所有个体的平均值。教 师阶段的更新公式如下:
x
i
t
=
x
i
t
−
1
+
rand
(
0
,
1
)
×
(
x
teacher
−
α
×
x
mean
)
(8)
x_i^t=x_i^{t-1}+\operatorname{rand}(0,1) \times\left(x_{\text {teacher }}-\alpha \times x_{\text {mean }}\right) \tag{8}
xit=xit−1+rand(0,1)×(xteacher −α×xmean )(8)
在学习阶段, 从种群中随机选出两个不同的个体
x
p
x_p
xp 和
x
q
x_q
xq, 比较两个个体之间的差异。令
x
i
x_i
xi 向其中优秀的个体进行学习。 学生阶段的更新公式如下:
x
i
t
=
{
x
i
t
−
1
+
rand
(
0
,
1
)
×
(
x
p
t
−
x
i
t
−
1
)
,
f
(
x
p
)
<
f
(
x
q
)
x
i
t
−
1
+
rand
(
0
,
1
)
×
(
x
q
t
−
x
i
t
−
1
)
,
f
(
x
p
)
>
f
(
x
q
)
(9)
x_i^t= \begin{cases}x_i^{t-1}+\operatorname{rand}(0,1) \times\left(x_p^t-x_i^{t-1}\right), & f\left(x_p\right)<f\left(x_q\right) \\ x_i^{t-1}+\operatorname{rand}(0,1) \times\left(x_q^t-x_i^{t-1}\right), & f\left(x_p\right)>f\left(x_q\right)\end{cases} \tag{9}
xit={xit−1+rand(0,1)×(xpt−xit−1),xit−1+rand(0,1)×(xqt−xit−1),f(xp)<f(xq)f(xp)>f(xq)(9)
TLSAPIO 算法实现
输入: 种群规模
N
\mathrm{N}
N, 最大迭代次数
T
1
+
T
2
\mathrm{T} 1+\mathrm{T} 2
T1+T2 。
输出:最优个体
x
gbest 。
x_{\text {gbest 。 }}
xgbest 。
Step1: 初始化鸽群算法相关的参数, 包括速度和位置。
Step2: 计算鸽子的适应度值, 找出个体极值
x
p
x_p
xp 和全局极值
x
gbest
∘
x_{\text {gbest } \circ}
xgbest ∘
Step3: 执行地图和指南针算子, 并根据公式(1)和(2) 更新鸽子的速度和位置。
Step4: 当 t > T 1 t>\mathrm{T} 1 t>T1 时, 停止执行地图和指南针算子, 转而去执 行地标算子。否则继续 Step3。
Step5: 执行地标算子, 对鸽子的适应度值进行排序, 适应 度值较低的鸽子执行教与学优化算法, 并根据公式 (7) 、(8) 和(9)更新速度和位置, 同时计算适应度值。
Step6: 当 t > T 2 t>\mathrm{T} 2 t>T2 时, 停止执行地标算子, 输出最后结果。否 则继续 Step5。
Step7: 计算两次位置变化引起的适应度值的变化量
Δ
f
=
f
i
(
x
i
(
t
+
1
)
)
−
f
i
(
x
i
(
t
)
)
\Delta f=f_i\left(x_i(t+1)\right)-f_i\left(x_i(t)\right)
Δf=fi(xi(t+1))−fi(xi(t)), 如果
Δ
f
<
0
\Delta f<0
Δf<0 或
exp
(
−
Δ
f
/
T
)
>
\exp (-\Delta f / T)>
exp(−Δf/T)> rand, 则接受新位置, 否则保留旧位置。
Step8: 执行降温操作,
T
=
T
⋅
\mathrm{T}=\mathrm{T} \cdot
T=T⋅ decayscale。
Step9: 判断是否满足终止条件, 若满足, 则结束算法, 输 出全局最优值。否则转 Step2。
3.实验结果
4.参考文献
[1]未建英,张丽娜,付发.混合模拟退火和教与学的鸽群优化算法[J].科技经济导刊,2019,27(12):153-155.