智能优化算法:动物迁徙优化算法
摘要:动物迁徙算法(Animal Migration Optimization,AMO)是李祥涛于2013年提出的一种用于求解优化问题的新型群智能优化算法。AMO算法突出优点是可调参数少,算法实现简单且精度相对较高
1.算法原理
动物迁徙行为是源于自然界中由于动物觅食、繁殖、气候等自然环境的变化而发生的自适应生存迁徙行为,动物的迁徙通常有一定的规律和路线,如当温度降低、食物缺乏时,动物就会往温度适宜、食物丰富的区域迁徙,这是自然界动物普遍存在的现象。同样的鸟类、哺乳动物、鱼类、爬行动物、两栖动物、昆虫和甲壳类动物都会进行迁徙,如北方的驯鹿冬季南移到能躲避大风雪的针叶林带,春季则北迁到食物丰富的苔原带;非洲的角马、斑马等在雨季来临时,迁往水草丰盛的地方,当雨季结束后,植物很快枯萎,它们又返回到往常的栖息地;白鶴、小编纹餘等多种餘类,常跟随作为它们食物的大鱼群迁徙;海巧、海狗等海兽类动物常有爬回到确定的生殖地点或冰块上去繁殖的习性。概括起来,动物喜欢在食物丰富,水源充足,气候条件适宜的地区生存,随着时间的推移,食物减少、水分减少,气候条件变化,生挣条件改变,不能满足动物生存需要时,动物种群便会迁往新的食物、水分丰富,气候条件适宜的区域,动物种群在迁徙的过程中,由于长途艰难爬涉,个别动物会离开迁徙种群体,在行进的过程中也会有新的动物加入到迁徙大军中。
动物迁徙算法是模拟上述动物行为的优化算法,动物迁徙算法主要分为种群迁徙过程和个体更新过程。为了便于描述动物迁徙优化算法,首先做以下2个理想假设:
(1)动物种群所处栖息地最优的动物个体将会保存到下一代。
(2)动物种群在迁徙过程中,有的动物会离开种群,同时有新的动物个体会加入种群,假设动物种群的规模是确定的,动物会依照概率Pa被新的个体所替代。
在迁徙过程中,算法模拟动物群体从当前所处栖息地域迁往新的所处栖息地域。在这个过程中,每个个体应当服从以上2个准则。在更新过程中,一些动物离开群体,一些动物又加入到动物群体。假定有一个全局最优解和后续的个体,置
D
D
D维空间编码向量表示一个个体,用最大值和最小值约束
D
D
D维向量;初始化种群大小为
N
P
NP
NP,动物个体可以表示为:
X
m
i
n
=
{
x
1
,
m
i
n
,
x
2
,
m
i
n
,
.
.
.
,
x
D
,
m
i
n
}
(1)
X_{min}=\{x_{1,min},x_{2,min},...,x_{D,min}\}\tag{1}
Xmin={x1,min,x2,min,...,xD,min}(1)
X m a x = x 1 , m a x , x 2 , m a x , . . . , x D , m a x (2) X_{max}={x_{1,max},x_{2,max},...,x_{D,max}} \tag{2} Xmax=x1,max,x2,max,...,xD,max(2)
因此,第i个个体的第j个向量初始化,可以表示为:
x
i
,
j
=
x
j
,
m
i
n
+
r
a
n
d
∗
(
x
j
,
m
a
x
−
x
j
,
m
i
n
)
(3)
x_{i,j}=x_{j,min}+rand*(x_{j,max} -x_{j,min})\tag{3}
xi,j=xj,min+rand∗(xj,max−xj,min)(3)
其中,rand是[0,1]之间的随机数。
在动物迁徙过程中,动物个体服从3个准则:(1)个体和它邻居的位置不会冲突;(2)个体和邻居朝着相同的方向进行迁徙;(3)新的个体仍然和原邻居相邻。对于第一条准则,要求群体中每个个体的位置。对于后两个准则,要求个体应当根据它邻居的当前位置迁往一个新的位置。图1采用一个环状拓补结果说明个体邻居的定义。为了便于说明,设置每一维设置邻居的个数为5。例如如果个体的下标是
i
i
i,那么它的邻居下标为
i
−
2
,
i
−
1
,
i
,
i
+
1
,
i
+
2
i-2,i-1,i,i+1,i+2
i−2,i−1,i,i+1,i+2组成。邻居的拓扑结构建立之后,随机选择一个邻居,然后根据它邻居的位置更新个体的位置,更新公式如下:
X
i
,
G
+
1
=
X
i
,
G
+
δ
(
X
n
e
i
b
o
r
h
o
o
d
,
G
−
X
i
,
G
)
(4)
X_{i,G+1}=X_{i,G}+\delta(X_{neiborhood,G}-X_{i,G})\tag{4}
Xi,G+1=Xi,G+δ(Xneiborhood,G−Xi,G)(4)
其中,
X
n
e
i
b
o
r
h
o
o
d
,
G
X_{neiborhood,G}
Xneiborhood,G是邻居的当前位置,根据不同的问题可以改变
δ
\delta
δ的值。在本文中为生成的随机数。
X
i
,
G
X_{i,G}
Xi,G是第i个个体的位置,
X
i
,
G
+
1
X_{i,G+1}
Xi,G+1是第i个个体的新位置。
在动物种群个体更新过程中,一些个体离开群体,同时一些个体又加入到群体中,假定群体的数量是恒定的,旧的个体会被新的个体按照概率Pa所取代。通过个体的适应度值来设置Pa,对于最好的适应度值,Pa为1,对于最差的适应度值,Pa为1/NP。其位置更新公式如下:
X
i
,
G
+
1
=
X
r
1
,
G
+
r
a
n
d
∗
(
X
b
e
s
t
,
G
−
X
i
,
G
)
+
r
a
n
d
(
X
r
2
,
G
−
X
i
,
G
)
(5)
X_{i,G+1}=X_{r1,G}+rand*(X_{best,G}-X_{i,G}) + rand(X_{r2,G}-X_{i,G})\tag{5}
Xi,G+1=Xr1,G+rand∗(Xbest,G−Xi,G)+rand(Xr2,G−Xi,G)(5)
其中
r
1
,
r
2
∈
[
1
,
.
.
.
,
N
P
]
r1,r2\in[1,...,NP]
r1,r2∈[1,...,NP]随机选取的整数,并且
r
1
≠
r
2
≠
i
r1\neq r2 \neq i
r1=r2=i。当产生新的后代解
X
i
,
G
+
1
X_{i,G+1}
Xi,G+1后,会对
X
i
,
G
X_{i,G}
Xi,G和
X
i
,
G
+
1
X_{i,G+1}
Xi,G+1的适应度进行比较,如果新解更优才被保存至下一代。
动物迁徙算法的步骤如下:
step1:在搜索区域随机产生种群,并对邻居进行编号。
step2:计算各点的适应度,并记录最优值。
step3.动物根据式(4)更新种群位置。
step4.计算适应度值,并记录最优值。
step5.个体更新,设置Pa,如果rand>Pa且更新后个体适应度值比原来更优,则更新个体否则不更新。
step6.记录最优值。
step7.判断是否满足算法停止条件,如果满足则输出最优解,否则重复step3-7。
2.实验结果
3.参考文献
[1]马明智. 动物迁徙算法及其应用研究[D].广西民族大学,2015.
4.Matlab代码
个人资料介绍