优化算法(六)——金鹰优化(GEO)
去年诸事缠身,又停更了好久,新年新气象,祝大家2023年新年快乐~今天分享的是Mohammadi-Balani等人于2021年提出的金鹰优化算法(Golden Eagle Optimizer, GEO),是一种受鹰群捕猎行为启发的优化算法,通过调整攻击系数和巡航系数的值来完成从探索到开发的过渡。
1. 算法介绍
金鹰算法作为一个优秀进化算法已成功优化许多工程问题,在算法迭代前首先会生成一个随机解 X\in(x_1,x_2,...,x_n) ,之后算法将根据金鹰捕猎时的飞行方式,进行巡航和攻击。
探索阶段
金鹰围捕猎物时的巡航即算法的探索阶段,通过巡航向量在超平面内完成搜索空间的探索过程,其公式如下所示:
\sum_{n}^{i=1}{z_ix_i}=d (1)
其中 z_i= 是超平面的法向量,d 将用于计算\vec{C_l} ,除此之外GEO使用 c_k 表示固定变量的值,如下所示:
c_k=d-\sum_{i,i\neq k}{a_i/a_k} (2)
其中, c_k 为目标点的第 k 个元素, a_i 为攻击向量中的第 i 个元素, a_k 同理。因此就找到飞行超平面上的随机目标点。因此,此时超平面上目标点可以表示为:
\vec{C_l} =(c_1=rand,c_2=rand,...c_k=d-\sum_{i,i\neq k}{a_i/a_k},c_n=rand) (3)
其中, rand 为的随机数
开发阶段
相较于探索阶段,金鹰开发阶段的位置更新则只与猎物的位置有关,其公式为:
\vec{A}= \vec{X_f^*}-\vec{X_f} (4)
其中,式中\vec{A} 为金鹰的攻击向量, \vec{X_f} 为随机选择的金鹰的历史最优位置。
在完成 \vec{C_i} 和 \vec{A} 的计算后,则进行位置更新,公式为:
x_{t+1}=x_t+x_i^t (5)
其中, x_i^t 为更新时的飞行步长
x_i^t=r1pa\frac{A_i}{||A_i||}+r2pc\frac{C_i}{||Ci||} (6)
其中, p_a,p_c分别为攻击系数和巡航系数,控制对金鹰飞行 r_1,r_2\in , ||{\vec{A}}_i|| 和 ||{\vec{C}}_i|| 为向量的内积,可用下式表示:
\left|\left|{\vec{A}}_i\right|\right|=\sqrt{\sum_{i=1}^{n}a_i^2}\ ,\ \left|\left|{\vec{C}}_i\right|\right|=\sqrt{\sum_{i=1}^{n}c_i^2} (7)
p_a=p_a^0+\left(\frac{t}{T}\right)|p_a^T-p_a^0| (8)
p_c=p_c^0-\left(\frac{t}{T}\right)|p_c^T-p_c^0| (9)
2.源代码
代码传送门: https://ww2.mathworks.cn/matlabcentral/fileexchange/84430-golden-eagle-optimizer-toolbox?s_tid=srchtitle_Golden%20Eagle%20Optimizer_1
3. 引用
Mohammadi-Balani A, Nayeri M D, Azar A, et al. Golden eagle optimizer: A nature-inspired metaheuristic algorithm. Computers & Industrial Engineering, 2021, 152: 107050.
页:
[1]