文章目录

  • 背景
  • Squirrel search algorithm(SSA)
    • SSA
    • Random initialization(随机初始化)
    • Fitness evaluation(适应值评价)
    • Sorting, declaration and random selection(排序、声明和随机选择)
    • Generate new locations(生成新位置)
      • 第一种情况(橡树->山核桃树)
      • 第二种情况(普通树->橡树)
      • 第三种情况(普通树->山核桃树)
    • Aerodynamics of gliding(滑翔空气动力学)
    • Seasonal monitoring condition(季节变化条件)
      • 计算季节常量
      • 计算季节变化条件
    • Random relocation at the end of winter season(冬季末随机搬迁)
    • Stopping criterion(算法停止标准)
    • 算法步骤
  • 引用

背景

优化是在给定情况下为特定问题寻找最佳解决方案的过程。

受自然启发的算法可以大致分为三大类:进化算法(EA),群体智能算法(SI)和基于物理的算法(PB)。

  • EAs模仿自然界中生物的进化行为。GA以及差分进化算法可被视为EA的最标准形式。
  • 基于群体智能的技术,主要是模仿动物群体的智能社交行为。
    • 基于群体智能的算法会随着算法的发展而收集和利用有关搜索空间的全部信息。
    • PSO、ACO和ABC是SIs的代表性算法。

按照“no free lunch”(NFL)定理,没有一种自然启发式的优化技术可以最优地解决所有优化问题。这就意味着优化算法可以解决某些问题,但对其他类别的问题无效。


飞行松鼠被认为是空气动力学上最复杂的物种,它有一个类似降落伞的膜,可以帮助松鼠改变升力和阻力,在高空中从一棵树滑翔到另一棵树。

飞行松鼠不会飞行,而是采用滑翔方式快速和有效地跨越很长的距离。松鼠之所以要滑翔,是为了躲避捕食者,寻找捕食的最佳地点和以较小的代价进行捕食


Squirrel search algorithm(SSA)

当飞行松鼠开始觅食时,搜寻过程就开始了。飞行松鼠通过从一棵树滑行到另一棵树了来寻找食物;通过改变位置,搜索不同的森林区域

季节变化会显著影响飞行松鼠的觅食活动,松鼠在低温条件下会损失大量热量。因为它们的体温高、体型小,导致觅食过程的代价很大,并且由于天敌的存在而具有风险。在SSA算法中,通过检查季节变化条件,防止算法陷入局部最优。


1、森林中有n只飞行松鼠,假设一只松鼠在一棵树上

2、每只飞行松鼠都通过自己的动态觅食行为来寻找食物。

3、在森林中,只有三种类型的树:普通树、橡树和山核桃树。(normal tree\oak tree and hickory tree)

4、考虑森林区域被认为包含三个橡树和一个山核桃树


考虑松鼠数量n为50只

1棵山核桃树和3棵橡树是4个食物资源,其他46棵普通树没有食物资源(Number of Food)。也就是说,松鼠总数的92%生活在普通树上,其余的8%生活在有食物资源的树上。然而,食物资源的数量可以根据不用的约束$1<N_{fs}<n ,N_{fs} \in Z >0 $而变化

SSA

飞行松鼠的位置在SSA算法中由向量表示,每个向量有多个维度。因此,飞行松鼠可以在一维、二维、三维或超维搜索空间中滑行来改变自身的位置。

Random initialization(随机初始化)

森林中有n只飞鼠(FS),第i只飞鼠的位置可以通过一个矢量来确定。

所有飞鼠的位置可以表示为如下矩阵:
FS=[FS1.1FS1.2......FS1,dFS2.1FS2.2......FS2,d⋮⋮⋮⋮⋮⋮⋮⋮FSn.1FSn.2......FSn,d]FS=\begin{bmatrix}FS_{1.1} & FS_{1.2} &... &... & FS_{1,d}\\ FS_{2.1} & FS_{2.2} &... &... & FS_{2,d}\\ \vdots & \vdots & \vdots & \vdots\\ \vdots & \vdots & \vdots & \vdots\\ FS_{n.1} & FS_{n.2} &... &... & FS_{n,d}\\ \end{bmatrix} FS=⎣⎢⎢⎢⎢⎢⎢⎡​FS1.1​FS2.1​⋮⋮FSn.1​​FS1.2​FS2.2​⋮⋮FSn.2​​......⋮⋮...​......⋮⋮...​FS1,d​FS2,d​FSn,d​​⎦⎥⎥⎥⎥⎥⎥⎤​

  • FSi,jFS_{i,j}FSi,j​代表第i只松鼠在第j维上的值

下面等式均匀分布用来分配每个松鼠在森林中的初始位置。
FSi=FSL+U(0,1)×(FSU−FSL)FS_{i}=FS_{L}+U(0,1) \times(FS_U - FS_L) FSi​=FSL​+U(0,1)×(FSU​−FSL​)

  • FSLFS_{L}FSL​和FSUFS_{U}FSU​是第j维度上的第i个飞鼠的下界和上界
  • U(0,1)U(0,1)U(0,1)是在[0,1]范围内的均匀分布的随机数

Fitness evaluation(适应值评价)

通过将决策变量的值放入用户定义的适应度函数中,可以计算每个飞鼠的位置适应度。并将相应的适应度值存储在以下数组中:
f=[f1([FS1.1,FS1.2,...,FS1,d])f2([FS2.1,FS2.2,...,FS2,d])⋮⋮fn([FSn.1,FSn.2,...,FSn,d])]f=\begin{bmatrix} f_1([FS_{1.1},FS_{1.2},...,FS_{1,d}])\\ f_2([FS_{2.1},FS_{2.2},...,FS_{2,d}])\\ \vdots\\ \vdots\\ f_n([FS_{n.1},FS_{n.2},...,FS_{n,d}])\\ \end{bmatrix} f=⎣⎢⎢⎢⎢⎢⎢⎡​f1​([FS1.1​,FS1.2​,...,FS1,d​])f2​([FS2.1​,FS2.2​,...,FS2,d​])⋮⋮fn​([FSn.1​,FSn.2​,...,FSn,d​])​⎦⎥⎥⎥⎥⎥⎥⎤​

  • 每只松鼠位置的适应度描述了食物源的等级,即最佳食物源(山核桃树)、正常食物源(橡树)和无食物来源(普通树)。

Sorting, declaration and random selection(排序、声明和随机选择)

在存储了每只松鼠的位置适应度后,数组==按升序排序==。

最小适应值的松鼠停留在山核桃树上,接下来的三只松鼠停留在橡树上,它们可以向山核桃树飞行,其余的松鼠停留在普通树上。通过随机选择方式,选择已经满足它们日常能量需求的松鼠朝着山核桃树移动;剩下的松鼠继续朝橡树移动来获取日常所需能量。

松鼠的觅食行为会受到捕食者的影响,松鼠具体采用哪种移动策略根据捕食者的出现概率(PdpP_{dp}Pdp​)而定。

  • Pdp=0.1P_{dp} = 0.1Pdp​=0.1

Generate new locations(生成新位置)

松鼠在动态觅食过程中可能会出现**三种情况**。

在每种情况下,假设在没有捕食者的情况下,松鼠会在整个森林中滑翔,并高效的搜寻它喜欢的食物,但因捕食者的存在使得它变得谨慎,被迫在小范围内随机行走来寻找附近的隐藏位置

第一种情况(橡树->山核桃树)

在橡树(acorn nut trees)的松鼠可以移动到山核桃树(hickory nut tree)。

松鼠的新位置:
FSatt+1={FSatt+dg×Gc×(FShtt−FSatt),R1≥PdpRandomlocation,otherwiseFS_{at}^{t+1} =\begin{cases} FS_{at}^t + d_g \times G_c \times (FS_{ht}^t - FS_{at}^t), & R_1 \geq P_{dp}\\ Random location, & otherwise \end{cases} FSatt+1​={FSatt​+dg​×Gc​×(FShtt​−FSatt​),Randomlocation,​R1​≥Pdp​otherwise​

  • dgd_gdg​ is random gliding distance (随机滑翔距离)
  • R1R_1R1​是[0,1]的随机数
  • FSatFS_{at}FSat​代表松鼠在橡树上的位置
  • FShtFS_{ht}FSht​是松鼠到达山核桃树的位置
    • t表示当前迭代
  • GcG_cGc​为滑动系数
    • 可以实现全局和局部搜索之间的平衡
    • Gc=1.9G_c=1.9Gc​=1.9

第二种情况(普通树->橡树)

在普通树(normal trees)的松鼠移动到橡树(acorn nut trees)获取日常的能源所需。

松鼠的新位置:
FSntt+1={FSntt+dg×Gc×(FSatt−FSntt),R2≥PdpRandomlocation,otherwiseFS_{nt}^{t+1} =\begin{cases} FS_{nt}^t + d_g \times G_c \times (FS_{at}^t - FS_{nt}^t), & R_2 \geq P_{dp}\\ Random location, & otherwise \end{cases} FSntt+1​={FSntt​+dg​×Gc​×(FSatt​−FSntt​),Randomlocation,​R2​≥Pdp​otherwise​

  • R2R_2R2​是[0,1]的随机数
  • FSntFS_{nt}FSnt​代表松鼠在普通树上的位置

第三种情况(普通树->山核桃树)

有些在普通树(normal trees)上的松鼠,已经吃了橡果,它们可能会向山核桃树(hickory nut tree)移动以便储存山核桃来应对食物短缺

松鼠的新位置:
FSntt+1={FSntt+dg×Gc×(FShtt−FSntt),R3≥PdpRandomlocation,otherwiseFS_{nt}^{t+1} =\begin{cases} FS_{nt}^t + d_g \times G_c \times (FS_{ht}^t - FS_{nt}^t), & R_3 \geq P_{dp}\\ Random location, & otherwise \end{cases} FSntt+1​={FSntt​+dg​×Gc​×(FShtt​−FSntt​),Randomlocation,​R3​≥Pdp​otherwise​

  • R3R_3R3​是[0,1]的随机数

Aerodynamics of gliding(滑翔空气动力学)

松鼠的滑翔机制是通过平衡滑行来描述的,升力(L)和阻力(D)之和产生一个合力®,该合力与松鼠的重力大小相等且方向相反。

因此,R以恒定速度(V)保证松鼠能够在直线上与水平面成一定角度ϕ\phiϕ下降滑行。

升阻比或滑行比:
L/D=1/tan⁡ϕL/D = 1/\tan\phi L/D=1/tanϕ
松鼠可以通过减小下滑角来增加滑行路径长度,从而提高升阻比。升力是空气撞击膜产生了向下的偏转而产生的反推力的结果,定义为:
L=1/2ρCLV2SL=1/2\rho C_L V^2 S L=1/2ρCL​V2S

  • ρ=1.204kgm−3\rho=1.204 kgm^{-3}ρ=1.204kgm−3是空气密度
  • CLC_LCL​是升力系数
  • V=5.25ms−1V=5.25 ms^{-1}V=5.25ms−1是速度
  • S=154cm2S=154 cm^2S=154cm2是物体表面积

摩擦阻力定义为:
D=1/2ρV2SCD​D=1/2\rho V^2 S C_D​ D=1/2ρV2SCD​​

  • CDC_DCD​是摩擦阻力系数

    • 低俗移动时松鼠增加阻力
    • 高速移动时松鼠减小阻力

稳态下滑角为:ϕ=arctan⁡(DL)\phi = \arctan (\frac{D}{L})ϕ=arctan(LD​)

计算近似滑翔距离:dg=(hgtan⁡ϕ)d_g = (\frac{h_g}{\tan\phi})dg​=(tanϕhg​​)

  • hg=8mh_g=8mhg​=8m是滑行后发生的高度减少量

松鼠可以根据着陆位置,简单地改变升阻比来改变其滑行路径长度或dgd_gdg​.

  • CLC_LCL​是[0.675,1.5]之间的某个值
  • CD=0.6C_D=0.6CD​=0.6

松鼠通常在一次滑行中行进5到25m的水平距离,在SSA算法模型中,滑行距离载9~20米的范围内。dgd_gdg​的值过大会引起大的扰动,可能导致算法的性能不能令人满意。

因此,==dg/sfd_g/sfdg​/sf,将dgd_gdg​除以一个成为**比例因子(sf属于[16,37])**的非零值,sf=18sf=18sf=18==使得dgd_gdg​在[0.5,1.11]区间内浮动。

sf有助于实现全局搜索和局部寻优之间的均衡状态。

Seasonal monitoring condition(季节变化条件)

季节变化对飞行松鼠觅食活动有显著影响,松鼠在低温条件下会损失大量热量。

在SSA中引入季节监测条件,避免算法陷入局部最优解。

计算季节常量

季节常量ScS_cSc​
Sct=∑k=1d(FSat,kt−FSht,k)2S_c^t = \sqrt{\sum_{k=1}^d (FS_{at,k}^t - FS_{ht,k})^2} Sct​=k=1∑d​(FSat,kt​−FSht,k​)2​

  • t=1,2,3t=1,2,3t=1,2,3

计算季节变化条件

监测季节变化条件Sct<SminS_c^t < S_{min}Sct​<Smin​

SminS_{min}Smin​是季节性常数计算的最小值
Smin=10E−6(365)t/(tm/2.5)S_{min} = \frac{10 E^{-6}}{(365)^{t / (t_m /2.5)}} Smin​=(365)t/(tm​/2.5)10E−6​

  • t是当前迭代值
  • tmt_{m}tm​是最大迭代值
  • SminS_{min}Smin​值影响算法的全局和局部搜索能力
    • SminS_{min}Smin​值较大会有利于全局搜索
    • 较小值有利于算法的局部搜索

如果季节变化条件得到满足(即冬季已过),对无法在森林中寻找最佳冬季食物来源的松鼠进行随机迁移(即随机改变松鼠位置)

Random relocation at the end of winter season(冬季末随机搬迁)

如前所述,由于觅食成本低,冬季的结束会使飞鼠活跃起来。

冬季无法在森林中寻找最佳食物来源而存活下来的鼯鼠可能会向新的方向觅食。在建模中结合这种行为可以提高所提出算法的探索能力。

假设只有那些无法找到山核桃食物来源而存活下来的松鼠才会为了寻找更好的食物来源而向不同的方向移动。

The relocation of such flying squirrels is modelled through the following equation:
FSntnew=FSL+Leˊvy(n)×(FSU−FSL)FS_{nt}^{new} = FS_L + Lévy(n) \times (FS_U - FS_L) FSntnew​=FSL​+Leˊvy(n)×(FSU​−FSL​)
列维分布(Levy distribution)能够帮助算法更好的进行全局搜索。

列维飞行(Levy flight)帮助算法寻找远离当前最佳位置的新位置。列维飞行时一种随机改变步长的方法,其中步长是从列维分布中得出的。
$$
L(s) ~\mid s\mid ^{-1-\beta}\

0 < \beta \leq 2
$$

Lévy distribution
L(s,γ,μ)={γ2πexp⁡[−γ2(s−μ)]1(s−μ)3/20<μ<s<∞0otherwiseL(s,\gamma,\mu) =\begin{cases} \sqrt{\frac{\gamma}{2 \pi}} \exp[-\frac{\gamma}{2(s - \mu)}] \frac{1}{(s - \mu)^{3/2}} & 0 <\mu < s < \infty\\ 0 & otherwise \end{cases} L(s,γ,μ)={2πγ​​exp[−2(s−μ)γ​](s−μ)3/21​0​0<μ<s<∞otherwise​

  • μ,γ>0\mu,\gamma > 0μ,γ>0

    • γ\gammaγ是比例参数
    • μ\muμ是转换参数

Lévy flight
Leˊvy(x)=0.01×ra×σ∣rb∣1βLévy(x) = 0.01 \times \frac{r_a \times \sigma}{\mid r_b\mid ^{\frac{1}{\beta}}} Leˊvy(x)=0.01×∣rb​∣β1​ra​×σ​

  • ra,rbr_a,r_bra​,rb​是[0,1]区间上的两个正态分布随机数

  • β=1.5\beta=1.5β=1.5

  • σ=(Γ(1+β)×sin⁡(πβ2)Γ(1+β2)×β×2β−12)1/β\sigma =(\frac{\Gamma(1 + \beta) \times \sin(\frac{\pi \beta}{2})}{\Gamma(\frac{1 + \beta}{2}) \times \beta \times 2^{\frac{\beta -1}{2}}})^{1/\beta} σ=(Γ(21+β​)×β×22β−1​Γ(1+β)×sin(2πβ​)​)1/β

    • Γ(x)=(x−1)!\Gamma(x) = (x-1)!Γ(x)=(x−1)!

Stopping criterion(算法停止标准)

算法停止准则为最大迭代次数tmt_mtm​。

算法步骤


算法步骤

(1)定义输入参数

(2)为n只松鼠生成随机位置

(3)评估每只松鼠位置的适应值

(4)根据飞行松鼠的适应值,按升序排序松鼠位置

(5)将松鼠分配到山核桃树、橡树和普通树

(6)随机选择一些在普通树上的松鼠向山核桃树移动,其余的向橡树移动

(7)While(不满足停止准则)

(8)t从1到n1(n1为橡树向山核桃树移动的松鼠数量),如果R1≥PdpR_1 \geq P_{dp}R1​≥Pdp​,则执行公式FSatt+1=FSatt+dg×Gc×(FShtt−FSatt)FS_{at}^{t+1} =FS_{at}^t + d_g \times G_c \times (FS_{ht}^t - FS_{at}^t)FSatt+1​=FSatt​+dg​×Gc​×(FShtt​−FSatt​)

(9)t从1到n2(n2为普通树向橡树移动的松鼠数量),如果R2≥PdpR_2 \geq P_{dp}R2​≥Pdp​,则执行公式FSntt+1=FSntt+dg×Gc×(FSatt−FSntt)FS_{nt}^{t+1} =FS_{nt}^t + d_g \times G_c \times (FS_{at}^t - FS_{nt}^t)FSntt+1​=FSntt​+dg​×Gc​×(FSatt​−FSntt​)

(10)t从1到n3(n3为普通树向山核桃树移动的松鼠数量),如果R3≥PdpR_3 \geq P_{dp}R3​≥Pdp​,则执行公式FSntt+1=FSntt+dg×Gc×(FShtt−FSntt)FS_{nt}^{t+1} =FS_{nt}^t + d_g \times G_c \times (FS_{ht}^t - FS_{nt}^t)FSntt+1​=FSntt​+dg​×Gc​×(FShtt​−FSntt​)

(11)计算季节性常数。判断季节变化条件是否满足,满足则根据FSntnew=FSL+Leˊvy(n)×(FSU−FSL)FS_{nt}^{new} = FS_L + Lévy(n) \times (FS_U - FS_L)FSntnew​=FSL​+Leˊvy(n)×(FSU​−FSL​)和Leˊvy(x)=0.01×ra×σ∣rb∣1βLévy(x) = 0.01 \times \frac{r_a \times \sigma}{\mid r_b\mid ^{\frac{1}{\beta}}}Leˊvy(x)=0.01×∣rb​∣β1​ra​×σ​更新普通树上松鼠位置

(12)根据Smin=10E−6(365)t/(tm/2.5)S_{min} = \frac{10 E^{-6}}{(365)^{t / (t_m /2.5)}}Smin​=(365)t/(tm​/2.5)10E−6​更新SminS_{min}Smin​的值

(13)直到循环结束,得到山核桃树上松鼠的位置和适应值

引用

[1]Jain M , Singh V , Rani A . A novel nature-inspired algorithm for optimization: Squirrel search algorithm[J]. Swarm and Evolutionary Computation, 2018:S2210650217305229.

加油加油加油☺️☺️☺️☺️

智能优化算法之松鼠算法(Squirrel search algorithm)相关推荐

  1. 智能优化与机器学习结合算法实现数据预测matlab代码清单

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  2. 智能优化与机器学习结合算法实现数据分类matlab代码清单

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  3. 智能优化与机器学习结合算法实现时序数据预测matlab代码清单

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  4. 基于matlab智能优化与机器学习结合算法数据预测清单

    ​✅作者简介:热爱Matlab仿真的开发者,Matlab项目合作可私信.

  5. 各种智能优化算法比较与实现(matlab版)

    各种智能优化算法比较与实现(matlab版) 一. 方法介绍 1免疫算法(Immune Algorithm,IA) 1.1算法基本思想 免疫算法是受生物免疫系统的启发而推出的一种新型的智能搜索算法.它 ...

  6. 【优化求解】基于matlab粒子群算法和帝国殖民算法和萤火虫算法求解最小生成树优化问题【含Matlab源码 2376期】

    ⛄一.粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都 ...

  7. 智能优化算法:松鼠优化算法 - 附代码

    智能优化算法:松鼠优化算法 文章目录 智能优化算法:松鼠优化算法 1.算法原理 1.1 种群初始化 1.2 适应度值评价 1.3 生成新位置 1.4 滑翔的空气动力学 1.5 季节变化条件 2.实验结 ...

  8. Tabu搜索(TS—Tabu search)算法是近年来出现的用于求解组合优化问题的一种高效的启发式搜索技术。 本文采用固定并联电容器作为研究对象对系统进行无功补偿,并利用智能优化方法得到使配电网损耗

    禁忌搜索算法解决配电网无功优化问题对应的MATLAB源码,有对应的参考资料. 电力系统配电网的无功优化规划是保证配电网安全.经济运行的一项有效手段,是降低网损.提高电压质量的重要措施. 因此,电力系统 ...

  9. 【智能优化算法-白鲸优化算法】基于白鲸优化算法求解单目标优化问题附matlab代码

    1 内容介绍 白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和"鲸鱼坠落" ...

最新文章

  1. Programmer of Practice Manual
  2. Linux2.6内核PCI驱动程序开发
  3. Frogger--POJ 2253
  4. CPU 空闲时在干嘛?
  5. BZOJ 1009 [HNOI2008]GT考试
  6. 用matlab做一个有刻度的网格,已知45个点X Y Z的坐标值已知,如何用matlab画出网格图,另外每个小方格里带颜色 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  7. 自动生成数学题型二(框架struts2)题型如((a+b)*c=d)
  8. sql decimal 转string_音频怎么转文字?这个软件带你体验飞一般的感觉
  9. 美国OCC代理署长Brian Brooks将于今日离任,由首席运营官接任
  10. TensorBoard:图形可视化
  11. .NET下为百度文本编辑器UEditor增加图片删除功能
  12. 一致性哈希算法及其应用
  13. 计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
  14. Spring使用json转换工具
  15. R语言将两个矩阵数据进行相乘
  16. ProcessOn 在线作图,真香指南
  17. 镜像翻转_98年“后浪”科学家,首次挑战图片翻转不变性假设,一作拿下CVPR最佳论文提名...
  18. Wu反走样算法介绍(简单易懂) -Xiaolin Wu’s Algorithm
  19. 微信公众号 - Java推送公众号模板消息给用户
  20. mysql数据库—PXC集群

热门文章

  1. GEMU 107-263 8A 250V
  2. 用视频编辑软件给音频降噪的方法
  3. 2022继电保护判断题及答案
  4. 无线网dhcp服务器租期,缺省情况下,DHCP服务器分配IP地址的租期为()。
  5. 使用python爬取猫眼电影、房王、股吧论坛、百度翻译、有道翻译、高德天气、华夏基金、扇贝单词、糗事百科(糗事百科)
  6. 获取百度开放平台Access Token,调用百度统计接口
  7. 天才少年曹原再上热搜,25岁,3年5篇Nature一作论文
  8. Android应用程序资源的编译和打包过程分析
  9. 计算机网络学习笔记(三)——网络核心、接入网与物理媒体
  10. 每日安全简讯20160720