智能优化算法:蚁狮优化算法-附代码


摘要:蚁狮优化(Ant Lion Optimizer,ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法[1]。由于引入了随机游走、轮盘赌策略及精英策略,使得 ALO 算法成为一种种群多样、寻优性能强、调节参数少、易于实现的搜索技术。

1.算法原理

ALO 算法核心思想是模拟蚁狮捕猎蚂蚁的狩猎机制以实现全局寻优。蚁狮在捕猎前会在在沙质土中利用其巨大的下颚挖出一个漏斗状的陷阱,并藏在陷阱底部等待猎物到来。一旦随机游走的蚂蚁落入陷阱时,蚁狮迅速将其捕食,随后重新修缮陷阱等待下一次捕猎。ALO 算法通过数值模拟实现蚂蚁和蚁狮之间的相互作用将问题优化:引入蚂蚁的随机游走实现全局搜索,通过轮盘赌策略和精英策略保证种群的多样性和算法的寻优性能。蚁狮相当于优化问题的解,通过猎捕高适应度的蚂蚁实现对近似最优解的更新和保存。

1.1 蚂蚁的随机游走

蚂蚁在自然界中随机游走寻找食物的过程可以看作各搜索代理搜寻可行域的过程。随机游走的过程在数学上可以表示为:
X(t)=[0,cussum(2r(t1)1),...,cussum(2r(tn)1)](1) X(t)=[0,cussum(2r(t_{1})-1),...,cussum(2r(t_{n})-1)]\tag{1}
式中:X(t)X(t)为蚂蚁随机游走的步数集;cumsumcumsum 为计算累加和;tt 为随机游走的步数(本文取最大迭代次数);r(t)r(t)为一个随机函数,定义为
r(t)={1,rand>0.50,rand0.5(2) r(t)=\begin{cases} 1,rand>0.5\\0,rand\leq0.5\end{cases} \tag{2}
式中:randrand为[0,1]的随机数。

由于可行域存在边界,不能直接用式(1)更新蚂蚁的位置。为确保蚂蚁在可行域范围内随机游走,需根据式(3)对其进行归一化
Xit=(Xitai)(ditcit)(biai)+cit(3) X_{i}^{t}=\frac {(X_{i}^{t}-a_{i})*(d_{i}^{t}-c_{i}^{t})}{(b_{i}-a_{i})}+c_{i}t\tag{3}
式中: aia_{i} 为第$ i$ 维变量随机游走的最小值; bib_{i}为第ii 维变量随机游走的最大值;ctic_{t}^{i}为第ii维变量再第tt次迭代的最小值;ditd_{i}^{t}为第 ii 维变量在第$ t$ 次迭代最大值。

1.2蚁狮对蚂蚁随机游走的影响

蚁狮制造的陷阱会影响蚂蚁随机游走的路线,为对此假设进行数学建模,提出
{cit=Alit+Ctdit=Aljtdt(4) \begin{cases} c_{i}^{t}=Al_{i}^{t} + C^{t}\\d_{i}^{t}=Al_{j}^{t}-d^{t}\end{cases}\tag{4}
式中: ctc^{t}为所有变量在第tt 次迭代的最小值; dtd^{t}为所有变量在第 tt 次迭代的最大值; AljtAl_{j}^{t} 为被选定的第jj 只蚁狮在第 tt 次迭代的位置。

1.3自适应机制

通过轮盘赌策略选择某只蚂蚁具体被哪只蚁狮捕食,每只蚂蚁只能被一只蚁狮捕食,而适应度越高的蚁狮捕获蚂蚁的概率越大。另外,蚂蚁一旦落入蚁狮制造的陷阱,蚁狮就会向陷阱边缘抛沙以防止蚂蚁逃脱。此时,蚂蚁随机游走的范围将急剧缩小。通过下列方程模拟这种现象
ct=ctI,dt=dtI(5) c^{t}=\frac {c^{t}}{I},d^{t}=\frac {d^{t}}{I}\tag{5}

I={1,t0.1T10vtT,t>0.1T(6) I=\begin{cases}1,t\leq0.1T\\10^{v}*\frac{t}{T},t>0.1T \end{cases}\tag{6}

式中: II 为比例系数;TT为最大迭代次数; vv 为一个随着迭代次数增大而变化的数。当蚂蚁的适应度值比蚁狮小时,则认为蚁狮将其捕获,此时蚁狮会根据蚂蚁的位置来更新位置
Aljt=Antit,iff(Antit)<f(Aljt)(7) Al_{j}^{t}=Ant_{i}^{t},if\quad f(Ant_{i}^{t})<f(Al_{j}^{t}) \tag{7}
式中: AntitAnt_{i}^{t} 为第ii只蚂蚁在第tt次迭代的位置; ff 为适应度函数。

1.4 精英策略

每次迭代后,选择适应度最好的蚁狮作为精英蚁狮。第tt只蚂蚁在第t+1t +1次迭代的位置由式(8)确定
Antit+1=RAt(l)+REt(l)2(8) Ant_{i}^{t+1}=\frac {R_{A}^{t}(l)+R_{E}^{t}(l)}{2}\tag{8}
式中: RAt(l)R_{A}^{t}(l)为蚂蚁在一只由轮盘赌在第 tt 次迭代选择到的蚁狮周围随机游走第 ll 步产生的值; REt(l)R_{E}^{t}(l)为蚂蚁在第tt代的精英蚁狮周围随机游走第ll步产生的值。ll为蚂蚁随机游走步数内的任何值。

2.算法步骤

(1)数据初始化。确定蚂蚁和蚁狮的数量以及变量维数,在可行域内随机初始化它们的位置,并计算相应的适应度值。

(2)确定精英蚁狮。选择初始化后蚁狮种群中适应度最好的作为精英蚁狮。

(3)通过轮盘赌为每只蚂蚁选择一只蚁狮,根据蚁狮位置更新 ct,dt,cit,ditc_{t},d_{t},c_{i}^{t},d_{i}^{t} 的值,并使该蚂蚁按照式(1)、式(3)在蚁狮及精英蚁狮附近随机游走,最后按式(8)取平均值作为蚂蚁的位置。

(4) 每次迭代后重新计算蚂蚁和蚁狮适应度值,根据蚂蚁的位置和适应度更新蚁狮位置,适应度最好的位置为新精英蚁狮的位置。

(5)判断是否到达最大迭代次数,若到达则输出结果并结束迭代,否则重复步骤 (3)

3.算法结果

智能优化算法:蚁狮优化算法-附代码

4.参考文献

[1]Seyedali Mirjalili. The Ant Lion Optimizer[J]. Advances in Engineering Software,2015,83.

[2]陈承滨,余岭,潘楚东,陈泽鹏.基于蚁狮优化算法与迹稀疏正则化的结构损伤识别[J].振动与冲击,2019,38(16):71-76+99.

5.Matlab代码

https://mianbaoduo.com/o/bread/Z5iUk5c=

相关文章: