智能优化算法:蛇优化算法-附代码

智能优化算法:蛇优化算法

1.蛇优化算法简介

蛇优化算法是2022年提出的一种新的元启发式算法,该算法是一种模仿蛇特殊交配行为的新型智能优化算法。对于每条蛇(雄性/雌性),如果在食物数量足够,温度很低的条件下,就会努力得到最好的伴侣。

2.蛇优化算法基本原理

2.1 蛇交配行为

雄性和雌性之间的交配行为受到一些因素的影响。蛇通常在春末和初夏温度较低的时候进行交配,但蛇交配过程不仅取决于温度,还取决于食物的供应。如果温带低,且食物充足,彼此竞争的雄性会互相争斗以吸引雌性的注意。雌性有权决定是否交配。如果交配发生,雌性就开始在巢或洞穴中产卵,卵一出来就会离开。

2.2 灵感来源

蛇优化算法的灵感来源于蛇的交配行为。如果温度较低,且食物可用,蛇的交配行为发生;否则蛇只会寻找食物或吃现有的食物。基于此,将考虑蛇优化算法的搜索过程分为两个阶段:勘探和开发。勘探描述了环境因素,即寒冷的地方和食物,该阶段并不存在蛇只在它周围的环境中寻找食物的这种情况。

开发包括许多过渡阶段,以提高算法的搜索效率。如果食物是可用的,但温度很高,蛇会只关注吃可用的食物。最后,如果食物可用,且该区域很冷,则交配过程发生。在交配过程中有一些情况,即战斗模式或交配模式。在战斗模式中,每个雄性会战斗得到最好的雌性,每个雌性会努力选出最好的雄性。在交配模式中,每对蛇交配行为的发生取决于食物的可用性数量。在搜索空间中,如果交配行为发生,雌性就有可能产卵,孵化成新的蛇。

2.3 数学模型与算法

2.3.1 初始化

蛇种群初始化数学描述如下:

X i = X min ⁡ + r × ( X max ⁡ − X min ⁡ ) (1) {X_i} = {X_{\min }} + r \times \left( {{X_{\max }} - {X_{\min }}} \right) \tag{1} Xi=Xmin+r×(XmaxXmin)(1)
式中: X i {X_i} Xi为第i个蛇的位置;r是[0,1]范围内的随机数; X max ⁡ X_{\max } Xmax X min ⁡ X_{\min } Xmin分别是求解问题的上下边界。

2.3.2 将种群分为雌性和雄性两个组

假设雄性的数量为50%,雌性的数量为50%。种群被分为两组:雄性组和雌性组。用以下2个公式来划分种群。

N m ≈ N / 2 (2) {N_m} \approx N/2 \tag{2} NmN/2(2)

N f = N − N m (3) {N_f}{\rm{ = }}N - {N_m} \tag{3} Nf=NNm(3)

式中: N N N为蛇种群的大小规模; N m N_m Nm为雄性的数量; N f N_f Nf为雌性的数量。

评估每一组,并定义温度和食物数量

在每一组中找出最好的个体,得到最好的雄性 f b e s t , m f_{best,m} fbest,m和最好的雌性 f b e s t , f f_{best,f} fbest,f食物的位置 f f o o d f_{food} ffood

温度可以用以下公式来定义:
T e m p = e x p ( − t T ) (4) Temp = exp\left( {\frac{{ - t}}{T}} \right) \tag{4} Temp=exp(Tt)(4)
式中:t为当前的迭代次数;T为最大的迭代次数。

食物数量 Q Q Q可以用以下公式定义:

Q = c 1 ∗ e x p ( t − T T ) (5) Q = {c_1} * exp\left( {\frac{{t - T}}{T}} \right) \tag{5} Q=c1exp(TtT)(5)
式中: c 1 c_1 c1为一个常数,取0.5。

2.3.3 勘探阶段(没食物)

如果 Q < T h r e s h o l d Q<Threshold Q<Threshold(阈值 T h r e s h o l d = 0.25 Threshold=0.25 Threshold=0.25),蛇通过选择任何随机位置来搜索食物,并更新它们的位置。要模拟勘探阶段,如下所述:

X i , m ( t + 1 ) = X r a n d , m ( t ) ± c 2 × A m × ( ( X max ⁡ − X min ⁡ ) × r a n d + X min ⁡ ) (6) {X_{i,m}}(t + 1) = {X_{rand,m}}(t) \pm {c_2} \times {A_m} \times \left( {\left( {{X_{\max }} - {X_{\min }}} \right) \times rand + {X_{\min }}} \right) \tag{6} Xi,m(t+1)=Xrand,m(t)±c2×Am×((XmaxXmin)×rand+Xmin)(6)
式中: X i , m X_{i,m} Xi,m为雄性位置; X r a n d , m X_{rand,m} Xrand,m为随机选择的雄性的位置;rand是[0,1]范围内的随机数; A m A_m Am为雄性寻找食物的能力,计算公式如下:

A m = e x p ( − f r a n d , m f i , m ) (7) {A_m} = exp\left( {\frac{{ - {f_{rand,m}}}}{{{f_{i,m}}}}} \right) \tag{7} Am=exp(fi,mfrand,m)(7)
式中: f r a n d , m f_{rand,m} frand,m为随机选择的雄性的位置的 X r a n d , m X_{rand,m} Xrand,m适应度值, f i , m f_{i,m} fi,m为雄性位置的 X i , m X_{i,m} Xi,m适应度值;为 c 2 c_2 c2一个常数,取0.05。

X i , f = X r a n d , f ( t + 1 ) ± c 2 × A f × ( ( X max ⁡ − X min ⁡ ) × r a n d + X min ⁡ ) (8) {X_{i,f}} = {X_{rand,f}}(t + 1) \pm {c_2} \times {A_f} \times \left( {\left( {{X_{\max }} - {X_{\min }}} \right) \times rand + {X_{\min }}} \right) \tag{8} Xi,f=Xrand,f(t+1)±c2×Af×((XmaxXmin)×rand+Xmin)(8)
式中: X i , f X_{i,f} Xi,f为雌性位置; X r a n d , f X_{rand,f} Xrand,f为随机选择的雌性的位置;rand是[0,1]范围内的随机数; A f A_f Af为雌性寻找食物的能力,计算公式如下:

A f = e x p ( − f r a n d , f f i , f ) (9) {A_f} = exp\left( {\frac{{ - {f_{rand,f}}}}{{{f_{i,f}}}}} \right) \tag{9} Af=exp(fi,ffrand,f)(9)
式中: f r a n d , f f_{rand,f} frand,f为随机选择的雄性的位 X r a n d , f X_{rand,f} Xrand,f的适应度值, f i , f f_{i,f} fi,f为雄性位置 X i , f X_{i,f} Xi,f的适应度值。

2.3.4 开发阶段(有食物)

Q > T h r e s h o l d Q>Threshold Q>Threshold的条件下,如果 t e m p e r a t u r e > T h r e s h o l d ( 0.6 ) temperature>Threshold(0.6) temperature>Threshold(0.6),那么温度处于热状态(hot)。蛇只会寻找食物,位置更新公式如下:

X i , j ( t + 1 ) = X f o o d ± c 3 × T e m p × r a n d × ( X f o o d − X i , j ( t ) ) (10) {X_{i,j}}(t + 1) = {X_{food }} \pm {c_3} \times Temp \times {\rm{ }}rand{\rm{ }} \times \left( {{X_{food }} - {X_{i,j}}(t)} \right) \tag{10} Xi,j(t+1)=Xfood±c3×Temp×rand×(XfoodXi,j(t))(10)
式中: X i , j X_{i,j} Xi,j为蛇个体(雄性或雌性)的位置; X f o o d X_{food} Xfood为蛇个体的最佳位置;rand是[0,1]范围内的随机数; c 3 c_3 c3为一个常数,取2。

Q > T h r e s h o l d Q>Threshold Q>Threshold的条件下,如果 t e m p e r a t u r e < T h r e s h o l d ( 0.6 ) temperature<Threshold(0.6) temperature<Threshold(0.6),那么温度处于冷状态(cold)。蛇将处于战斗模式或交配模式。

(a)战斗模式

X i , m ( t + 1 ) = X i , m ( t ) + c 3 × F M × r a n d × ( Q × X b e s t , f − X i , m ( t ) ) (11) {X_{i,m}}(t + 1) = {X_{i,m}}(t) + {c_3} \times FM \times {\rm{ }}rand{\rm{ }} \times \left( {Q \times {X_{best,f}} - {X_{i,m}}(t)} \right) \tag{11} Xi,m(t+1)=Xi,m(t)+c3×FM×rand×(Q×Xbest,fXi,m(t))(11)
式中: X i , m X_{i,m} Xi,m为第i个雄性的位置; X b e s t , f X_{best,f} Xbest,f为雌蛇组中的最佳位置;rand是[0,1]范围内的随机数;为 F M FM FM雄性战斗能力。

X i , f ( t + 1 ) = X i , f ( t ) + c 3 × F F × r a n d × ( Q × X b e s t , m − X i , f ( t ) ) (12) {X_{i,f}}(t + 1) = {X_{i,f}}(t) + {c_3} \times FF \times rand \times \left( {Q \times {X_{best,m}} - {X_{i,f}}(t)} \right) \tag{12} Xi,f(t+1)=Xi,f(t)+c3×FF×rand×(Q×Xbest,mXi,f(t))(12)
式中: X i , f X_{i,f} Xi,f为第i个雌性的位置; X b e s t , m X_{best,m} Xbest,m为雄蛇组中的最佳位置;rand是[0,1]范围内的随机数; F F FF FF为雌性战斗能力。

F M FM FM F E FE FE可以由以下公式计算出来:

F M = e x p ( − f b e s t , f f i ) (13) FM = exp\left( {\frac{{ - {f_{{\rm{b}}est,f}}}}{{{f_i}}}} \right) \tag{13} FM=exp(fifbest,f)(13)

F F = e x p ( − f b e s t , m f i ) (14) FF = exp( {\frac{{ - {f_{{\rm{b}}est,m}}}}{{{f_i}}}}) \tag{14} FF=exp(fifbest,m)(14)

式中: f b e s t , f f_{best,f} fbest,f为雌蛇组中的最佳位置 X b e s t , f X_{best,f} Xbest,f的适应度值; f b e s t , m f_{best,m} fbest,m为雄蛇组中的最佳位置 X b e s t , m X_{best,m} Xbest,m的适应度值;为 f i f_i fi蛇个体的适应度值。

(b)交配模式
X i , m ( t + 1 ) = X i , m ( t ) + c 3 × M m × r a n d × ( Q × X i , f ( t ) − X i , m ( t ) )   (15) {X_{i,m}}(t + 1) = {X_{i,m}}(t) + {c_3} \times {M_m} \times rand \times \left( {Q \times {X_{i,f}}(t) - {X_{i,m}}(t)} \right)\ \tag{15} Xi,m(t+1)=Xi,m(t)+c3×Mm×rand×(Q×Xi,f(t)Xi,m(t)) (15)

X i , f ( t + 1 ) = X i , f ( t ) + c 3 × M f × r a n d × ( Q × X i , m ( t ) − X i , f ( t ) )   (16) {X_{i,f}}(t + 1) = {X_{i,f}}(t) + {c_3} \times {M_f} \times rand \times \left( {Q \times {X_{i,m}}(t) - {X_{i,f}}(t)} \right)\ \tag{16} Xi,f(t+1)=Xi,f(t)+c3×Mf×rand×(Q×Xi,m(t)Xi,f(t)) (16)

式中: X i , m X_{i,m} Xi,m为第i个雄性的位置; X i , f X_{i,f} Xi,f为第i个雌性的位置;rand是[0,1]范围内的随机数;和 M m , M f M_m,M_f Mm,Mf分为雄性和雌性的交配能力,可以由以下公式计算出来:

M m = e x p ( − f i , f f i , m ) (17) {M_m} = exp\left( {\frac{{ - {f_{i,f}}}}{{{f_{i,m}}}}} \right) \tag{17} Mm=exp(fi,mfi,f)(17)

M f = e x p ( − f i , m f i , f ) (18) {M_f} = exp\left( {\frac{{ - {f_{i,m}}}}{{{f_{i,f}}}}} \right) \tag{18} Mf=exp(fi,ffi,m)(18)

式中: f i , m f_{i,m} fi,m为第i个雄性位置的适应度值;为 f i , f f_{i,f} fi,fi个雌性位置的适应度值。如果卵孵化,选择最差的雄性和雌性,并替换它们。

X w o r s t , m = X min ⁡ + r a n d × ( X max ⁡ − X min ⁡ ) (19) {X_{worst,m}} = {X_{\min }} + {\rm{ }}rand{\rm{ }} \times \left( {{X_{\max }} - {X_{\min }}} \right) \tag{19} Xworst,m=Xmin+rand×(XmaxXmin)(19)

X w o r s t , f = X min ⁡ + r a n d × ( X max ⁡ − X min ⁡ ) (20) {X_{worst,f}} = {X_{\min }} + {\rm{ }}rand{\rm{ }} \times \left( {{X_{\max }} - {X_{\min }}} \right) \tag{20} Xworst,f=Xmin+rand×(XmaxXmin)(20)

式中: X w o r s t , m X_{worst,m} Xworst,m为雄蛇组中的最差位置;为 X f , m X_{f,m} Xf,m雌蛇组中的最差位置。

算法流程如下:

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1] Hashim, F. A., & Hussien, A. G. (2022). Snake Optimizer: A novel meta-heuristic optimization algorithm.Knowledge-Based Systems, 108320.

5.Matlab代码

  • 9
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值