布谷鸟算法求解车间调度问题
基本原理
布谷鸟算法
理想化描述
- 每只布谷鸟选择一个巢并产一个卵
- 具有高质量的卵保留到下一代
- 可选择巢的数量是固定的,并且布谷鸟的卵被原巢主鸟发现的概率 p a ∈ ( 0 , 1 ) p_a\in(0,1) pa∈(0,1) ,此情形下,原巢主鸟可能将布谷鸟的卵扔掉或放弃巢穴。
L e ˊ v y L\acute{e}vy Leˊvy飞行
一种典型的随机游走机制,表示一类非高斯随机过程,并与
L
e
ˊ
v
y
L\acute{e}vy
Leˊvy稳定分布有关。
L
e
ˊ
v
y
L\acute{e}vy
Leˊvy是一种连续概率分布,
上述三种情况可使用基本函数表示概率密度分布函数
基本理论框架
布谷鸟算法的基本思想是巢寄生行为及鸟类的
L
e
ˊ
v
y
L\acute{e}vy
Leˊvy飞行。
伪代码:
begin
目标函数
f
(
x
)
,
x
=
(
x
1
,
⋅
⋅
⋅
,
x
d
)
T
f(x),x=(x_1,···,x_d)^T
f(x),x=(x1,⋅⋅⋅,xd)T
初始化种群,产生n个巢
x
i
(
i
,
2
,
3
,
⋅
⋅
⋅
,
n
)
x_i(i,2,3,···,n)
xi(i,2,3,⋅⋅⋅,n)
while(t小于最大迭代次数或终止条件)
布谷鸟通过飞行产生一个新解并评价适应度
f
i
f_i
fi
随机选择一个巢穴
f
f
f
if(
f
i
f_i
fi>
f
j
f_j
fj)
用新解代替旧解
end
丢弃一部分劣解(
p
a
p_a
pa)并建立新解
保留最优解
对解进行排序并找到当前最优解
end while
结果显示
end
当布谷鸟
i
i
i产生了一个新解
x
i
t
+
1
+
α
⊕
L
e
ˊ
v
y
(
λ
)
x_i ^{t+1} + \alpha \oplus L\acute{e}vy(\lambda)
xit+1+α⊕Leˊvy(λ)
其中a为步长,一个随机游走是一个马尔可夫决策过程,下一个状态/位置仅由当前状态、转移概率决定。
L
e
ˊ
v
y
L\acute{e}vy
Leˊvy飞行产生的随机游走,其步长服从
L
e
ˊ
v
y
L\acute{e}vy
Leˊvy分布
L
e
ˊ
v
y
(
λ
)
−
u
=
t
−
λ
L\acute{e}vy(\lambda) - u =t^{-\lambda}
Leˊvy(λ)−u=t−λ
改进的布谷鸟算法
教学优化算法(teaching learning based optimization,TLBO)
优点: 不需要参数,收敛速度快
缺点: 某些难以优化的问题中容易陷入局部最优
Teacher phase
教师尝试将班级的平均水平提升到
T
A
T_A
TA,现实操作中可实现平均成绩由
M
1
M_1
M1增加到
M
2
M_2
M2
M
j
M_j
Mj为平均值,
T
i
T_i
Ti为第
i
i
i次迭代过程中的教师。新旧平均值之间的差距计算公式:
D
i
f
f
e
r
e
n
t
M
e
a
n
i
=
r
i
(
M
n
e
w
−
T
F
M
i
)
DifferentMean_i = r_i(M_new - T_FM_i)
DifferentMeani=ri(Mnew−TFMi)
其中
r
i
r_i
ri为0-1之间的随机数,
M
n
e
w
M_new
Mnew为教师水平,
T
F
T_F
TF为教学因子,决定着平均值的改变
T
F
=
r
o
u
n
d
[
1
+
r
a
n
d
(
0
,
1
)
2
−
1
]
T_F = round[1+rand(0,1){2-1}]
TF=round[1+rand(0,1)2−1]
由此可进行当前最新解的更新
X
n
e
w
,
i
=
X
o
l
d
,
i
+
D
i
f
f
e
r
e
n
t
M
e
a
n
i
X_{new,i} = X_{old,i}+DifferentMean_i
Xnew,i=Xold,i+DifferentMeani
Learner phase
学生之间相互学习增长自己的知识水平。
算法的每次迭代中,
i
i
i次迭代两个不同的学生
X
i
X_i
Xi和
X
j
X_j
Xj,其中
i
≠
j
i\not=j
i=j
{
X
n
e
w
,
i
=
X
o
l
d
,
i
+
r
i
(
X
i
−
X
j
)
,
f
(
X
i
)
<
f
(
X
j
)
X
n
e
w
,
i
=
X
o
l
d
,
i
+
r
i
(
X
j
−
X
i
)
,
f
(
X
j
)
<
f
(
X
i
)
\left\{ \begin{matrix} X_{new,i}= X_{old,i}+r_{i}(X_i-X_j), f(X_i)<f(X_j) \\ X_{new,i}= X_{old,i}+r_{i}(X_j-X_i), f(X_j)<f(X_i) \end{matrix} \right.
{Xnew,i=Xold,i+ri(Xi−Xj),f(Xi)<f(Xj)Xnew,i=Xold,i+ri(Xj−Xi),f(Xj)<f(Xi)
如果
X
n
e
w
X_{new}
Xnew比
X
o
l
d
X_{old}
Xold好
算法步骤如下:
Step1:初始化种群,确定优化问题的设计变量
Step2:选定当前种群最优解为教师,并计算种群的平均值
Step3:根据
D
i
f
f
e
r
e
n
t
M
e
a
n
i
DifferentMean_i
DifferentMeani公式及算法当前解和最优解之间的差值
Step4:根据
X
n
e
w
,
i
X_{new,i}
Xnew,i更新学生的知识
Step5:更新当前解
Step6:重复Step2-5,直至满足终止条件
基于教学优化机制的改进布谷鸟算法
优化算法的高效性意味着算法有很强的全局搜索性能,很快的收敛速度以及适用于求解大部分领域的优化问题。
首先初始化参数,然后根据适应值将种群分成两部分,较好的一部分执行 L e ˊ v y L\acute{e}vy Leˊvy飞行,另一部分利用数学规划机制进行更新,对于劣解按变异概率进行变异,计算适应度值,重复操作,直至算法终止。