1.鹅优化算法介绍

鹅优化算法(GOOSE Algorithm,简称GOOSE)是一种基于鹅群休息和觅食行为的新型智能优化算法,由Rebwar Khalid Hamad于2024年提出。该算法模拟了鹅在面对潜在威胁时发出警鸣唤醒群体、以及单腿站立保持平衡的行为。通过自适应调整搜索空间的分辨率和搜索速度,GOOSE算法能够快速准确地找到最优解,具有收敛速度快、精度高等优点,广泛适用于各种复杂的优化问题。该研究成果已于2024年1月发表在SCI期刊《Evolving Systems》(JCQ3区)。

目前研究的人还比较少,比较容易发文章!下面是算法原理介绍和代码(带注释详解)

2.鹅的行为--有助于理解算法原理

在自然环境中,每一群鹅都有一到两只守卫负责看护,其他鹅则在草地上觅食或休息。守卫的鹅通常会站在一只脚上。有时,它会抬起一只腿,夹住一块小石头,这样每当它打瞌睡时,石头掉落,将它惊醒。当鹅听到任何陌生的声音或看到不寻常的动静时,它们会发出响亮的叫声,提醒群体中的其他鹅保持警觉,确保安全。与其他鸟类不同,鹅的反应方式通常对人类有益。鹅有着响亮且具有攻击性的叫声,非常适合用来保护它们的领地。鹅对自己的家园极具占有欲,尤其是在交配期和育雏期,它们会猛烈地守卫领地。图1展示了这些鹅在群体中与其他个体的互动。

图1 GOOSE休息状态下行为的照片

通过这种行为,鹅群体在彼此之间营造了一种有吸引力的保护氛围。该方法是基于鹅的行为提出了一种新的元启发式算法。该算法的基本技术是基于鹅尝试单腿站立并用另一条腿举起石头。具体步骤如下:

  1. 在休息时,鹅会聚集在一起,其中一只鹅单腿站立保持平衡。
  2. 偶尔,它会抬起一只腿,夹住一块小石头,这样当它打瞌睡时,石头会掉落,将它惊醒。
  3. 当鹅察觉到任何意外的噪声或活动时,会发出响亮的叫声,提醒群体中的其他鹅保持警觉,确保安全。

最初,鹅会聚集在它们的栖息地和休息区。群体中会有一只鹅被指定为守卫,它开始执行任务,通过单腿站立来保持平衡。每当这只守卫的鹅进入睡眠状态时,它的腿或携带的石头会掉落到地面。这时,石头掉落的声音会传播到群体中的其他鹅,听到声音的鹅会进入警觉状态。因此,其他鹅听到守卫鹅的叫声需要一些时间。这种声音传播的距离可以通过乘以声音在空气中传播的速度343米/秒来估算。图2展示了鹅的守卫行为。

图2 GOOSE行为、探索与开发的示意图
图2 GOOSE行为、探索与开发的示意图

3.GOOSE算法原理详解

接下来会有大量公式,大家不要被吓退了,其实很简单,有时候甚至不需要知道数学含义,后续给出的代码也有与公式一一对应的详细注释。

(1)开发阶段

根据2.鹅的行为所述的群体保护机制,开发阶段的实现依赖于此。

首先会计算鹅用脚夹住的石头的重量 S_Wit,该重量估计在5到25克之间。通过公式(1),为每次迭代随机分配一个石头的重量。

然后,通过公式(2),计算石头掉落到地面的时间T_o_A_Oit,这个时间是随机的,范围从1到当前循环维度的数量。

通过公式(3),确定石头掉落到地面后发出的声音传播并传递到群体中其他个体所需的时间。

接下来的公式(4)中,计算声音在多次迭代中传播并传递给鹅群个体所需的总时间。然后,通过公式(5),将总时间除以2,得到平均时间。

该算法使用一个随机变量rnd负责平衡开发和探索阶段的分布。变量pro的值在范围[0, 1]内随机选择。假设变量pro的值大于0.2,同时石头重量 S_Wit 大于等于12,公式(6)计算石头掉落速度 F_F_S,该速度是通过 T_o_A_Oit 与石头重量 S_Wit 的平方根之积除以重力加速度9.81得到的。

通过公式(7),计算声音传播的距离 D_S_Tit​,这是声音速度 S_S(在空气中的343.2 m/s)与传播时间 T_o_A_Sit的乘积。

接着,通过公式(8),计算守卫鹅与正在休息或觅食的其他鹅之间的距离 D_Git。这是声音传播距离 D_S_Tit的一半。

为了在种群中找到一个新的位置 Xit+1​,也就是唤醒群体中的个体,我们需要确定一个新的最佳位置(BestX),该过程由公式(9)描述。公式由石头掉落速度 F_F_S加上鹅之间的距离 D_Git 以及平均时间 T_A的平方之积构成。

如果变量 S_Wit 和 pro 分别小于12和0.2,则使用公式(10)计算新的 F_F_S。与公式(6)类似,但在这里进一步考虑 S_Wit 和重力的影响。

在另一种情况下,我们用公式(11)重新计算一个新的位置 Xit+1​。公式(11)中,所有变量(如石头的掉落速度、鹅之间的距离、平均时间,以及系数 coe)依次相乘。

总结一下就是:在开发阶段,通过公式(9)和公式(11)确定新的位置 Xit+1。具体使用哪个公式由变量pro 和 S_Wit 的值决定。

图3 声音在空气中的传播距离

(1)勘探阶段

在该阶段中,鹅随机地从当前发现的最佳位置唤醒,以调节随机唤醒或保护个体的行为。如果鹅未用脚携带石头,那么鹅群中的个体会随机被唤醒。一旦其中一只鹅醒来,它们会开始保护鹅群中的所有个体。显然,如前文所述,如果变量 rnd 的值小于 0.5,则适用如方程 (3) 和方程 (4) 中所示的规则。同时检查最小时间 M_T 是否大于总时间 T_T,若大于,则将最小时间赋值为总时间。

变量 alpha 的值从 2 到 0。其值在每次循环迭代中会显著减少。方程 (12) 用于改进搜索空间中新 X 值的结果:

其中,Max_It 是最大迭代次数。通过调整搜索阶段的方向,使其朝向最有可能是最佳解的方向计算,两个参数 M_Talpha 起到了重要作用。

需要确保鹅以随机方式(通过 randn(1, dim) 函数)在搜索空间中探索个体。此外,M_Talpha 变量都用于提高鹅算法的搜索性能。在方程 (13) 中,M_Talpha 被随机数相乘,然后添加到搜索空间中的最佳位置:

其中,dim 是求解问题的维度数,Best_pos 是我们在搜索区域中找到的最佳位置。

总结来说,鹅算法从随机生成种群开始。在第一次迭代中,它会检查种群中的值,并在边界外部的值被重置后恢复到边界内。此外,目标函数用于确定搜索边界内的最佳分数和最佳位置。

为了控制开发和探索阶段,使用了随机变量 rnd 和随机选定的值。如果 rnd 的值大于或等于 0.5,则进入开发阶段。在这种情况下,还有两个随机变量,比如 pro 和石头的重量 S_W。如果 pro 大于 0.2,且石头的重量大于或等于 12,则适用方程 (1)、(2)、(3)、(4)、(5)、(6)、(7)、(8) 和 (9)。另一方面,如果 pro 小于或等于 0.2,且石头重量小于 12,则适用方程 (1)、(2)、(3)、(4)、(5)、(7)、(8)、(10) 和 (11)。

rnd 小于 0.5 的情况下,进入探索阶段。为此,使用了变量 T_O_A_ST_Talpha。在这种情况下,按顺序应用方程 (3)、(4)、(12) 和 (13)。

此外,在该算法中,采用了三种方法来在搜索空间中找到新的 X 值。开发阶段使用了两个方程,例如方程 (9) 和方程 (11)。但是,在探索阶段仅使用方程 (13) 来发现新的 X 值。

具体算法流程如下图:

图4 鹅优化算法流程图

4.GOOSE算法代码实现及改进

for i=1:size(X,1)  % 遍历每个搜索代理

       % 越界判断与处理,如果搜索代理越界,返回搜索代理到搜索空间的边界
        Flag4ub=X(i,:)>ub;   % 检查是否超出了上边界
        Flag4lb=X(i,:)<lb;   % 检查是否超出了下边界
        X(i,:)=(X(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;  % 将未越界的坐标保持不变,而将超出上边界的坐标调整为上边界值,超出下边界的坐标调整为下边界值             
    
        % 计算每个搜索代理(鹅)的目标函数值
        fitness=fobj(X(i,:));
        
            % 如果当前解的目标函数值比最好的还小,则更新最佳解
            if fitness<Best_score 
               Best_score=fitness;     % 更新最佳目标函数值      
               Best_pos=X(i,:);        % 更新最佳解的位置                   

            end
    end
    
    % 更新搜索代理的位置
    for i=1:size(X,1)        

代码的主要步骤包括

  • 初始化搜索代理的位置。
  • 每个搜索代理根据目标函数评估其当前位置的适应度。
  • 使用不同的更新策略(基于速度、时间等参数)来更新代理的位置。
  • 每次迭代中,记录最佳目标值,并更新最佳解。

个人分析:

如图5所示,无论是精度还是收敛速度方面,鹅算法目前还存在较大的提升空间

F5 

于是,尝试改进鹅算法,仅仅使用Sine映射改进初始化种群就可以有不错的效果,完整Matlab代码(带注释)见 200 鹅优化算法GOOSE以及基于Sine映射的鹅优化算法-数据 ,代码运行流程视频版见200 鹅优化算法 GOOSE 【2024最新】_哔哩哔哩_bilibili,如需指导请私聊。

改进鹅算法与原算法比较

参考文献

  1. Hamad R K, Rashid T A. GOOSE algorithm: A powerful optimization tool for real-world engineering challenges and beyond[J]. Evolving Systems, 2024: 1-26.
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐