金豺优化算法及其改进

1. 金豺优化算法简介

金豺优化(Golden jackal optimization,GJO)算法是2022年提出的一种新的元启发式算法,该算法模仿金豺的合作狩猎行为,包括搜索猎物、包围猎物和攻击猎物三个基本步骤。

2. 金豺优化算法基本原理

2.1 灵感来源

金豺狩猎过程主要分为三个基本阶段:

  1. 搜索猎物,并逼近猎物;
  2. 包围猎物,并刺激猎物直到它们停止运动;
  3. 攻击猎物。

2.2 数学模型与算法

2.2.1 搜索空间模型

金豺种群初始化数学描述:
Y0=Ymin⁡+rand⁡×(Ymax⁡−Ymin⁡)(1)Y_{0}=Y_{\min }+\operatorname{rand} \times\left(Y_{\max }-Y_{\min }\right) \tag{1}Y0=Ymin+rand×(YmaxYmin)(1)
其中,

  • Y0Y_0Y0为初始金豺种群的位置;
  • rand⁡\operatorname{rand}rand是[0,1]范围内的随机数;
  • Ymax⁡Y_{\max }YmaxYmin⁡Y_{\min }Ymin分别是求解问题的上下边界。

猎物矩阵表示:
 Prey =[Y1,1⋯Y1,j⋯Y1,d⋮⋱⋮⋮Yi,1⋯Yi,j⋯Yi,d⋮⋮⋱⋮Yn,1⋯Yn,j⋯Yn,d](2)\text { Prey }=\left[\begin{array}{ccc}Y_{1,1} & \cdots & Y_{1,j} & \cdots & Y_{1,d} \\\vdots & \ddots & \vdots & \vdots \\Y_{i,1} & \cdots & Y_{i,j} & \cdots & Y_{i,d} \\\vdots & \vdots & \ddots & \vdots \\Y_{n,1} & \cdots & Y_{n,j} & \cdots & Y_{n,d}\end{array}\right] \tag{2} Prey =Y1,1Yi,1Yn,1Y1,jYi,jYn,jY1,dYi,dYn,d(2)
其中,

  • Prey\text{Prey}Prey为猎物矩阵;
  • Yi,jY_{i,j}Yi,j为第iii个猎物的第jjj维位置;
  • nnn为猎物的数量;
  • ddd为问题求解的维度。

在优化过程中,采用适应度(目标)函数估计每个猎物的适应度值,所有猎物的适应度值矩阵表示如下:
FOA=[f(Y1,1;Y1,2;⋯ ;Y1,d)f(Y2,1;Y2,1;⋯ ;Y2,d)⋮f(Yn,1;Yn,2;⋯ ;Yn,d)](3)F_{O A}=\left[\begin{array}{c}f(Y_{1,1};Y_{1,2};\cdots;Y_{1,d}) \\f(Y_{2,1};Y_{2,1};\cdots;Y_{2,d}) \\\vdots \\f(Y_{n,1};Y_{n,2};\cdots;Y_{n,d})\end{array}\right] \tag{3}FOA=f(Y1,1;Y1,2;;Y1,d)f(Y2,1;Y2,1;;Y2,d)f(Yn,1;Yn,2;;Yn,d)(3)
其中,

  • FOAF_{OA}FOA为猎物的适应度值矩阵;
  • f()f()f()为适应度函数或目标函数;
  • 适应度值最优的作为雄豺,适应度值次优的作为雌豺,豺狼对得到相应猎物的位置。

2.2.2 搜索猎物(勘探阶段)

豺狼知道如何感知并跟随猎物,但猎物不会轻易被抓住偶尔会逃脱。因此,豺狼就会等待和寻找其他的猎物。雄性豺狼领导狩猎工作;雌性豺狼跟随雄性豺狼。
豺狼位置更新公式:
Y1(t)=YM(t)−E⋅∣YM(t)−rl⋅Prey⁡(t)∣(4)Y_{1}(t)=Y_{M}(t)-E \cdot\left|Y_{M}(t)-r l \cdot \operatorname{Prey}(t)\right| \tag{4}Y1(t)=YM(t)EYM(t)rlPrey(t)(4)
Y2(t)=YFM(t)−E⋅∣YFM(t)−rl⋅Prey⁡(t)∣(5)Y_{2}(t)=Y_{F M}(t)-E \cdot\left|Y_{F M}(t)-r l \cdot \operatorname{Prey}(t)\right| \tag{5}Y2(t)=YFM(t)EYFM(t)rlPrey(t)(5)
其中,

  • ttt为当前迭代次数;
  • Prey⁡(t)\operatorname{Prey}(t)Prey(t)为第ttt次迭代的猎物的位置;
  • YM(t),YFM(t)Y_M(t),Y_{FM}(t)YM(t),YFM(t)分别为第ttt次迭代的雄性豺狼和雌性豺狼的位置;
  • Y1(t),Y2(t)Y_1(t),Y_2(t)Y1(t),Y2(t)分别为第ttt次迭代的与猎物相应的雄性豺狼和雌性豺狼更新后的位置。

猎物逃脱能量计算:
E=E1×E0(6)E = E_1\times E_0 \tag{6}E=E1×E0(6)
E1E_1E1表示猎物能量的下降过程,E0E_0E0表示猎物能量的初始状态
E0=2×r−1(7)E_0 = 2\times r - 1 \tag{7}E0=2×r1(7)
rrr为[0,1]范围内的随机数
E1=c1×(1−tT)(8)E_1 = c_1\times(1 - \frac{t}{T}) \tag{8}E1=c1×(1Tt)(8)
其中,

  • rrr为[0,1]范围内的随机数;
  • TTT为最大迭代次数;
  • c1c_1c1为常数,取值为1.5;在整个迭代过程中,E1E_1E1从1.5线性减少到0。

(4)(5)中参数rlrlrl是基于莱维分布的随机数,计算:
rl=0.05×LF(y)(9)r l = 0.05\times L F (y) \tag{9}rl=0.05×LF(y)(9)
其中,LF()LF()LF()是莱维飞行函数
LF(y)=0.01×μ×σ∣v(1/β)∣;σ=(Γ(1+β)×sin⁡(πβ2)Γ(1+β2)×β×(2β−12))1β(10)L F(y)=0.01 \times\frac{\mu \times \sigma}{\left|v^{(1 / \beta)}\right|} ; \\\sigma=\left(\frac{\Gamma(1+\beta) \times \sin (\frac{\pi \beta}{2})}{\Gamma(\frac{1+\beta}{2}) \times \beta \times\left(2^{\frac{\beta - 1}{2}}\right)}\right)^{\frac{1}{\beta}} \tag{10}LF(y)=0.01×v(1/β)μ×σ;σ=Γ(21+β)×β×(22β1)Γ(1+β)×sin(2πβ)β1(10)
其中,μ\muμvvv为(0,1)范围内的随机数;β\betaβ为默认常数,取值为1.5。

最终豺狼位置更新公式:
Y(t+1)=Y1(t)+Y2(t)2(11)Y(t + 1)=\frac{Y_{1}(t)+Y_{2}(t)}{2} \tag{11}Y(t+1)=2Y1(t)+Y2(t)(11)
其中,Y(t+1)Y(t + 1)Y(t+1)为第t+1t + 1t+1次迭代后的豺狼的位置。

2.2.3 包围并攻击猎物(开发阶段)

当猎物被豺狼侵扰时,它们的逃脱能量会减少,然后豺狼对会将在前一阶段检测到的猎物包围起来。当豺狼对将猎物包围后,开始攻击并吞食猎物。
豺狼位置更新公式:
Y1(t)=YM(t)−E⋅∣rl⋅YM(t)−Prey⁡(t)∣(12)Y_{1}(t)=Y_{M}(t)-E \cdot\left|r l \cdot Y_{M}(t)-\operatorname{Prey}(t)\right| \tag{12}Y1(t)=YM(t)ErlYM(t)Prey(t)(12)
Y2(t)=YFM(t)−E⋅∣rl⋅YFM(t)−Prey⁡(t)∣(13)Y_{2}(t)=Y_{F M}(t)-E \cdot\left|r l \cdot Y_{F M}(t)-\operatorname{Prey}(t)\right| \tag{13}Y2(t)=YFM(t)ErlYFM(t)Prey(t)(13)
式中:

  • ttt为当前迭代次数;
  • Prey(t)\text{Prey}(t)Prey(t)为第ttt次迭代的猎物的位置;
  • YM(t),YFM(t)Y_M(t),Y_{FM}(t)YM(t),YFM(t)分别为第ttt次迭代的雄性豺狼和雌性豺狼的位置;
  • Y1(t),Y2(t)Y_1(t),Y_2(t)Y1(t),Y2(t)分别为第ttt次迭代的与猎物相应的雄性豺狼和雌性豺狼更新后的位置

最终豺狼位置更新同样按照公式(11)计算。

算法伪代码

Inputs: The population size N and maximum number of iterations T
Outputs: The location of prey and its fitness value
Initialize the random prey population Yi (i=1, 2, ..., N)
while (t<T)
    Calculate the fitness values of preys
    Y_1 = best prey (Male Jackal position)
    Y_2 = second best prey (Female Jackal Position)
    for (each prey)
        Update the evading energy "E" using Eq. (6), Eq. (7) and Eq. (8)
        Update "rl" using Eq. (9) and Eq. (10)
        if(|E|>=1) (Exploration phase)
            Update the prey position using Eq (4), Eq. (5) and Eq. (11)
        if(|E|<1) (Exploitation phase)
            Update the prey position using Eq. (12), Eq. (13) and Eq. (11)
        end for 
    t=t+1
end while
return Y1

3. 改进算法

文章[2]针对基本金豺算法在种群初始化、进化后期收敛以及位置更新机制方面的不足,提出了有效的改进策略

3.1. 混沌初始化

  • 问题:基本金豺算法(GJO)采用随机方式生成初始种群,导致种群多样性较差,影响算法的求解精度和速度。
  • 改进方法:IGJO算法采用Logistic-Tent混沌初始化策略。Logistic映射结构简单、发散性强,但分布不均匀;Tent映射迭代速度快、概率密度均匀,但混沌区间有限。复合混沌映射融合了两者优点,具有结构简单、不可预测性和遍历性的性质,能保持种群多样性,使算法更易逃离局部最优解。
  • 操作步骤:先通过Logistic-Tent混沌映射公式
    xi+1,d={(rxi,d(1−xi,d)+(4−r)xi,d/2) mod (1),xi,d<0.5(rxi,d(1−xi,d)+(4−r)(1−xi,d)/2) mod (1),xi,d≥0.5x_{i+1, d}=\begin{cases}(r x_{i, d}(1 - x_{i, d})+(4 - r) x_{i, d}/2)\text{ mod }(1), & x_{i, d}<0.5 \\ (r x_{i, d}(1 - x_{i, d})+(4 - r)(1 - x_{i, d})/2)\text{ mod }(1), & x_{i, d}\geq0.5\end{cases}xi+1,d={(rxi,d(1xi,d)+(4r)xi,d/2) mod (1),(rxi,d(1xi,d)+(4r)(1xi,d)/2) mod (1),xi,d<0.5xi,d0.5
    选取初值,其中(r \in[0,4]) ,(i=1,2,\cdots,n)表示种群规模,(d=1,2,\cdots,m)表示混沌变量序号,(x_{i, d})表示当前混沌映射结果。该公式融合了Logistic映射和Tent映射的优势,利用Logistic映射的强发散性与Tent映射均匀的概率密度,使生成的混沌序列更具多样性和遍历性。再将混沌序列映射到函数空间中,得到金豺个体表达式
    Yi,d=Ymin,d+xi,d×(Ymax,d−Ymin,d)Y_{i, d}=Y_{min, d}+x_{i, d} \times(Y_{max, d}-Y_{min, d})Yi,d=Ymin,d+xi,d×(Ymax,dYmin,d)
    ,(Y_{max, d})和(Y_{min, d})为搜索上下限。通过这一步,将混沌变量转化为金豺个体在搜索空间中的初始位置,为后续的优化搜索提供多样化的起点,增强算法的全局搜索能力。

3.2. 高斯变异

  • 问题:基本金豺算法在进化迭代后期,种群多样性会快速下降,容易陷入局部收敛。
  • 改进方法:对当前最优位置以一定概率执行高斯变异策略,维持种群多样性和算法收敛性之间的平衡。同时借鉴“贪婪”选择思想,比较变异前后适应度值大小,确定最优适应度个体位置。
  • 操作步骤:使用高斯变异算子
    Ybest(t+1)=YM(t)(1+Gaussian(σ))Y_{best }(t+1)=Y_{M}(t)(1+Gaussian(\sigma))Ybest(t+1)=YM(t)(1+Gaussian(σ))
    对当前最优位置进行变异,(Y_{best }(t+1))表示变异后位置,(Gaussian(\ ))为高斯随机分布变量。高斯变异通过引入随机扰动,为算法在局部搜索中提供跳出局部最优的机会,避免算法过早收敛。然后按
    YM(t+1)={Ybest(t+1),其他YM(t),f(Ybest(t+1))>f(YM(t))Y_{M}(t+1)=\begin{cases}Y_{best }(t+1), & \text{其他} \\ Y_{M}(t), & f(Y_{best }(t+1))>f(Y_{M}(t))\end{cases}YM(t+1)={Ybest(t+1),YM(t),其他f(Ybest(t+1))>f(YM(t))
    更新全局最优位置。这里依据“贪婪”选择思想,保留适应度值更优的个体位置,确保算法在探索新解的同时,不会丢失当前已找到的较优解,保障算法的收敛性。

3.3. 引入PSO思想

  • 问题:基本金豺算法在更新下一代位置信息时,仅考虑金豺个体位置与种群中雄豺和母豺位置信息,忽略了自身经验对个体的影响。
  • 改进方法:引入粒子群算法(PSO)思想改进金豺位置更新过程。在PSO中,粒子更新位置会考虑个体最优位置和全局最优位置,将金豺个体经历过的最佳位置信息引入位置更新公式。
  • 操作步骤:采用新的位置更新公式
    Yi(t+1)=c1r1(w1Y1(t)+w2Y2(t))+c2r2(Pbest−Yi(t))Y_{i}(t+1)=c_{1}r_{1}(w_{1}Y_{1}(t)+w_{2}Y_{2}(t))+c_{2}r_{2}(P_{best}-Y_{i}(t))Yi(t+1)=c1r1(w1Y1(t)+w2Y2(t))+c2r2(PbestYi(t))
    ,其中(c_{1})、(c_{2})为学习权重(本文取2),(r_{1}),(r_{2})为([0,1])的随机数,(P_{best})为金豺个体历史最优位置。该公式综合考虑了金豺个体当前位置与种群中其他个体(雄豺和母豺)的位置关系,以及个体自身的历史最优位置,使金豺个体在搜索过程中不仅能参考群体信息,还能利用自身经验进行更有效的搜索。同时,
    w1=∣Y1∣∣Y1+Y2∣w_{1}=\frac{\left|Y_{1}\right|}{\left|Y_{1}+Y_{2}\right|}w1=Y1+Y2Y1
    w2=∣Y2∣∣Y1+Y2∣w_{2}=\frac{\left|Y_{2}\right|}{\left|Y_{1}+Y_{2}\right|}w2=Y1+Y2Y2
    通过这两个权重公式,动态调整雄豺和母豺位置信息在更新过程中的影响程度,使算法能够根据实际情况更灵活地进行搜索,提高搜索效率和精度。

通过以上改进,IGJO算法在优化双向长短期记忆网络(BiLSTM)参数时,能更有效地搜索最优解,提高了电力负荷预测模型的精度和性能。

4. 自己的思考

尝试修改映射方法
采用sin-cos映射
sin-cos映射

5. 参考文献

[1] Chopra N , Ansari M M .Golden jackal optimization: A novel nature-inspired optimizer for engineering applications[J].Expert Systems with Application, 2022(Jul.):198.DOI:10.1016/j.eswa.2022.116924.

[2] 谢国民,王润良.基于改进金豺算法的短期负荷预测[J].电力系统及其自动化学报,2024,36(03):65-74.DOI:10.19635/j.cnki.csu-epsa.001268.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值