智能优化算法:象群算法-附代码
摘要:象群优化算法(Elephant Herding Optimization, EHO)是 Wang 等人于2016 年提出了一种新的群体智能优化算法,用于解决全局无约束优化问题,它源于自然界中大象的畜牧行为。它已经成功应用于多级别阈值,支持向量机参数优化,调度问题等诸多问题。尽管 EHO 算法是一种较新的元启发式算法,但它有着结构简单、控制参数少以及易于和其它方法相结合等特点,能够很好的解决寻优问题。
1.算法原理
在自然界中,一个象群可分为几个氏族,每个氏族都有母象作为首领,在每一代中,一定数量的雄象会离开氏族。对于不同氏族的的大象在族长(氏族中位置最好的大象)的领导下生活,固定数量的雄象在长大后会离开它们所在的氏族,从而执行氏族更新操作来更新氏族中每个大象的位置,得到新的大象氏族位置,随后执行分类操作,进而优化氏族中位置较差的大象位置。
在基本的象群优化算法中氏族代表着局部搜索,离开氏族的雄象则执行全局搜索。在基本的 EHO 算法中,先进行更新操作决定算法的搜索方向和局部搜素详细程度,随后实现分离操作。这个过程包括两个阶段:氏族更新操作和分离操作。
1.1 氏族更新操作
来自不同群体的大象在族长的领导下一起生活。 女族长是氏族中适应度最好的大象。每个大象的位置都根据其位置和女族长的位置进行更新。 族长的位置根据氏族中心的位置进行更新。
随机初始化大象种群,将大象种群分为
n
n
n 个氏族,每个氏族中有
j
j
j 个大象个体,在每次迭代中,每个大象
j
j
j 的位置都会随氏族
c
i
c_i
ci 中族长(适应度值最好的位置
x
b
e
s
t
,
c
i
x_{best,ci}
xbest,ci,)移动:
x
n
e
w
,
c
i
,
j
=
x
c
i
,
j
+
α
.
(
x
b
e
s
t
,
c
i
−
x
c
i
,
j
)
.
r
(1)
x_{new,ci,j} = x_{ci,j}+\alpha.(x_{best,ci}-x_{ci,j}).r \tag{1}
xnew,ci,j=xci,j+α.(xbest,ci−xci,j).r(1)
式中:
x
n
e
w
,
c
i
,
j
x_{new,ci,j}
xnew,ci,j,是更新后的位置,
x
c
i
,
j
x_{ci,j}
xci,j,是上一代的位置,
x
b
e
s
t
,
c
i
x_{best,ci}
xbest,ci,是在氏族
c
i
c_i
ci中适应度最好的位置,
α
∈
[
0
,
1
]
\alpha \in [0,1]
α∈[0,1]代表氏族中位置最佳的女族长
x
b
e
s
t
,
c
i
x_{best,ci}
xbest,ci,对大象个体
x
c
i
,
j
x_{ci,j}
xci,j的影响的比例因子,
r
∈
[
0
,
1
]
r \in [0,1]
r∈[0,1]是算法后期用来提高种群多样性的随机数。
氏族
c
i
c_i
ci中女族长的位置
x
b
e
s
t
,
c
i
x_{best,ci}
xbest,ci,被定为:
x
n
e
w
,
c
i
,
j
=
β
∗
x
c
e
n
t
e
r
,
c
i
(2)
x_{new,ci,j} = \beta*x_{center,ci} \tag{2}
xnew,ci,j=β∗xcenter,ci(2)
式中:
β
∈
[
0
,
1
]
\beta \in [0,1]
β∈[0,1] 代表第二个算法参数,它控制氏族中心
x
c
e
n
t
e
r
,
c
i
x_{center,ci}
xcenter,ci的影响。氏族中心被定义为:
x
c
e
n
t
e
r
,
c
i
,
d
=
(
∑
j
=
1
n
c
i
x
c
i
,
j
,
d
)
/
n
c
i
(3)
x_{center,ci,d} = (\sum_{j=1}^{n_{ci}}x_{ci,j,d})/n_{ci} \tag{3}
xcenter,ci,d=(j=1∑ncixci,j,d)/nci(3)
其中
1
≤
d
≤
D
1\leq d \leq D
1≤d≤D代表第
d
d
d 维,
D
D
D 是搜索空间的总维数,
n
c
i
n_{ci}
nci 是氏族
c
i
c_i
ci 中大象的数量。
1.2 氏族分离操作
雄性大象在长大后会离开他们的群体,以增加群体的全局搜索能力和密度。最坏的大象(适应度最差的大象)被删除,并在搜索空间进行随机搜索以增加搜索性能。
在每个氏族
c
i
c_i
ci中,具有最差适应度函数值的恒定数量的大象会被移动到新的位置。它们的位置定义为:
x
w
o
r
s
t
,
c
i
=
x
m
i
n
+
{
x
m
a
x
−
x
m
i
n
+
1
}
∗
r
a
n
d
(4)
x_{worst,ci} = x_{min}+\{x_{max} - x_{min} + 1\}*rand \tag{4}
xworst,ci=xmin+{xmax−xmin+1}∗rand(4)
其中
x
m
i
n
x_{min}
xmin和
x
m
a
x
x_{max}
xmax分别表示搜索空间的下限和上限,
r
a
n
d
∈
[
0
,
1
]
rand \in [0,1]
rand∈[0,1]。
EHO 算法的基本步骤如下:
Step1: 初始化种群、设置最大迭代次数。
Step2: 用适应度函数计算每个大象个体的适应度值,得到当前最优个体位置。
Step3: 根据公式(1)更新种群中每个大象个体的位置,使用公式(2)更新当前最优个体的位置。
Step4: 计算更新之后的每个大象个体的适应度值,评估种群,得到更新后的种群最优和最差的大象个体位置。
Step5: 使用公式(4)更新当前最差个体位置,保留更好的解。
Step6: 判断是否达到最大迭代次数,若是,则输出当前最优个体位置以及对应的适应度值,否则返回执行 Step2。
2.算法结果
3.参考文献
[1]张子建,王宏伟,周怀芳,尤森槟.基于多机制混合象群算法的混沌系统参数估计[J].微电子学与计算机,2020,37(06):40-45.
[1]曹倩倩. 象群优化算法的改进及其在网络入侵检测中的应用[D].湖北工业大学,2020.
4.Matlab代码
5.Python代码
个人资料介绍