智能优化算法:松鼠优化算法

文章目录

  • 智能优化算法:松鼠优化算法
    • 1.算法原理
      • 1.1 种群初始化
      • 1.2 适应度值评价
      • 1.3 生成新位置
      • 1.4 滑翔的空气动力学
      • 1.5 季节变化条件
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab代码

摘要:松鼠优化算法是于2018年提出的一种简单高效的新型优化算法,具有收敛快寻优强的特点。

1.算法原理

飞行松鼠是一类栖息在树上并在夜间进行活动的啮齿动物,它们特别适合滑翔运动。目前,飞行松鼠共有15属44种,其中大部分分布在欧洲和亚洲的落叶林区(特别是东南亚)。在欧亚大陆以外发现的、研究最多的是南部飞行松鼠。飞行松鼠被认为是空气动力学上最复杂的物种,它有一个类似降落伞的膜,可以帮助松鼠改变升力和阻力,在高空中从一棵树滑翔到另一棵树。飞行松鼠不会飞行,而是采用滑翔方式快速和有效地跨越很长的距离。松鼠之所以要滑翔,是为了躲避捕食者、寻找捕食的最佳地点和以较小的代价进行捕食。

飞行松鼠的觅食策略灵活多变,这可以帮助飞行松鼠以最佳的方式应对食物资源。比如,松鼠为了满足秋季的营养需求,它们选择吃掉可以大量获取的橡树籽,将山核桃存储在巢穴里、其他洞穴中或者地底下。由于冬季温度低且营养需求较高,飞行松鼠在觅食时如发现山核桃就立刻慈鲷,如果没有山核桃,飞行松鼠会从储存的备用食物中吃山核桃。因此,飞行松鼠根据营养需求,有选择地吃一些坚果和储存其他坚果。

为了简化数学模型,考虑以下假设。落叶森林中有 n只松鼠,每只松鼠停留在一棵树上。每只松鼠都单独寻找食物,并通过动态觅食行为来优化利用食物资源。在森林中,只有三种类型的树 —普通树、橡树和山核桃树。飞行松鼠的位置在SSA算法中由向量表示,每个向量有多个维度。因此,飞行松鼠可以在一维、二维、三维或超维搜索空间中滑行来改变它们自身的位置。

1.1 种群初始化

森林中有n只飞鼠,第i只松鼠的位置可以通过一个矢量来确定。所有松鼠的位置在边界范围内随机初始化,如下式:
FSi,j=lb+rand∗(ub−lb)(1)FS_{i,j}=lb+rand*(ub - lb) \tag{1} FSi,j​=lb+rand∗(ub−lb)(1)
FSi,jFS_{i,j}FSi,j​代表第i只松鼠第j维的值。ub,lb分别为变量的上下边界。rand为[0,1]之间的随机数。

1.2 适应度值评价

每只松鼠位置的适应值描述了食物源的等级,即最佳食物源(山核桃树)、正常食物源(橡树)和无食物来源(普通树)。在存储了每只松鼠的位置的适应值后,数组按升序排序。最小适应值的松鼠停留在山核桃树上,接下来的三只松鼠停留在橡树上,它们可以向山核桃树飞行,其余的松鼠停留在普通树上。通过随机选择方式,选择已经满足每日所需能量的松鼠朝着山核桃树移动,剩余的松鼠将朝着橡树移动以获取每日所需能量。松鼠的觅食行为会受到天敌的影响,松鼠具体采用哪种移动策略也要根据天敌的出现概率(Pdp)而定。

1.3 生成新位置

在飞行松鼠的觅食过程中,可能会出现三种情况。在每种情况下,假设在没有天敌的情况下,松鼠在整个森林中滑行并高效地搜寻它最喜欢的食物,而天敌的存在使它变得谨慎,松鼠被迫在小范围内随机行走,来搜寻附近的躲藏地点。

①第一种情况,在橡树上的松鼠会向山核桃树移动
FSatt+1={FSatt+dg∗Gc∗(FShtt−FSatt),R1≥PdpRandomLocation,otherwise(2)FS_{at}^{t+1}=\begin{cases} FS_{at}^t + d_g*G_c*(FS_{ht}^t - FS_{at}^t),R_1\geq P_{dp}\\ Random Location,otherwise \end{cases}\tag{2} FSatt+1​={FSatt​+dg​∗Gc​∗(FShtt​−FSatt​),R1​≥Pdp​RandomLocation,otherwise​(2)
其中 dgd_gdg​ 是随机滑行距离,R1R_1R1​是[0,1]范围内的随机数, FShttFS_{ht}^tFShtt​是山核桃树的位置,ttt表示当前迭代。滑动常数GcG_cGc​ 实现全局与局部搜索之间的平衡,经过大量分析论证,GcG_cGc​ 的值设为1.9。

②第二种情况,在普通树上的松鼠会向橡树移动
FSntt+1={FSntt+dg∗Gc∗(FSatt−FSntt),R2≥PdpRandomLocation,otherwise(3)FS_{nt}^{t+1}=\begin{cases} FS_{nt}^t + d_g*G_c*(FS_{at}^t - FS_{nt}^t),R_2\geq P_{dp}\\ Random Location,otherwise \end{cases}\tag{3} FSntt+1​={FSntt​+dg​∗Gc​∗(FSatt​−FSntt​),R2​≥Pdp​RandomLocation,otherwise​(3)
R2R_2R2​是[0,1]范围内的随机数。

③第三种情况,一些在普通树上的松鼠已经吃了橡果,它们可能会向山核桃树移动以便储存山核桃来应对食物短缺。
FSntt+1={FSntt+dg∗Gc∗(FShtt−FSntt),R3≥PdpRandomLocation,otherwise(4)FS_{nt}^{t+1}=\begin{cases} FS_{nt}^t + d_g*G_c*(FS_{ht}^t - FS_{nt}^t),R_3\geq P_{dp}\\ Random Location,otherwise \end{cases} \tag{4} FSntt+1​={FSntt​+dg​∗Gc​∗(FShtt​−FSntt​),R3​≥Pdp​RandomLocation,otherwise​(4)
R3R_3R3​是[0,1]范围内的随机数。

所有情况下,天敌出现的概率都为0.1。

1.4 滑翔的空气动力学

松鼠的滑行机制是通过平衡滑行来描述的,升力(L)和阻力(D)之和产生一个合力®,该合力与飞鼠的重力大小相等且方向相反。因此,R以恒定速度(V)保证松鼠能够在直线上与水平面成一定角度 ϕ\phiϕ下降滑行。升阻比或滑行比定义如下:
L/D=1/tanϕ(5)L/D=1/tan\phi \tag{5} L/D=1/tanϕ(5)
松鼠可以通过减小下滑角来增加滑行路径长度,从而提高升阻比。升力是空气撞击膜产生了向下的偏转而产生的反推力的结果,定义为:
L=1/2ρCLV2S(6)L=1/2\rho C_LV^2S \tag{6} L=1/2ρCL​V2S(6)
其中( ρ=1.204kg/m3ρ = 1.204 kg/m^3ρ=1.204kg/m3 )为空气密度,CLC_LCL​ 称为升力系数,V=5.25m/sV =5.25 m/sV=5.25m/s为速度,S=0.0154m2S =0.0154 m^2S=0.0154m2 )为松鼠膜表面积。
D=1/2ρV2SCD(7)D=1/2\rho V^2SC_D\tag{7} D=1/2ρV2SCD​(7)
CDC_DCD​ 是摩擦阻力系数,低速移动时松鼠增加阻力,高速移动时松鼠减小阻力。
ϕ=arctan(L/D)(8)\phi = arctan(L/D) \tag{8} ϕ=arctan(L/D)(8)

dg=hgtanϕ(9)d_g=\frac{h_g}{tan\phi}\tag{9} dg​=tanϕhg​​(9)

其中hg=8mh_g =8mhg​=8m是滑行后发生的高度减少量,计算dgd_gdg​ 所需的所有参数值,包括CLC_LCL​ 和CDC_DCD​ ,都是来自于自然界的真实测量值。因此,松鼠可以根据着陆位置,简单地改变升阻比来改变其滑行路径长度或dgd_gdg​ 。CLC_LCL​的取值为[0.675,1.5]之间的某个值,CDC_DCD​的值为0.6。飞行松鼠通常在一次滑行中行进5到25米的水平距离,在SSA算法模型中,滑行距离在9~20米的范围内。dgd_gdg​ 的值过大会引起大的扰动,可能导致算法的性能不能令人满意。因此将d g 除以一个称为比例因子(sfsfsf)的非零值,sfsfsf = 18使得dgd_gdg​ 在[0.5,1.11]区间内浮动。因此,sfsfsf有助于实现全局搜索和局部寻优之间的均衡状态。

1.5 季节变化条件

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

①计算季节常量ScS_cSc​
Sct=∑z=13∑k=1d(FSat,kt,z−FSht,k)2(10)S_c^t=\sqrt{\sum_{z=1}^3 \sum_{k=1}^d(FS_{at,k}^{t,z} - FS_{ht,k})^2} \tag{10} Sct​=z=1∑3​k=1∑d​(FSat,kt,z​−FSht,k​)2​(10)
②计算季节变化条件Sct<SminS_c^t<S_{min}Sct​<Smin​
Smin=10E−63652.5t/tm(11)S_{min}=\frac{10E^-6}{365^{2.5t/t_m}}\tag{11} Smin​=3652.5t/tm​10E−6​(11)
其中ttt和tmt_mtm​分别是当前和最大迭代值,SminS_minSm​in 值影响算法的全局和局部搜索能力。SminS_minSm​in 的值较大会有利于全局搜索,而SminS_minSm​in 的较小值有利于算法的局部搜索。对于任何启发式算法,全局和局部搜索过程需要进行有效的平衡。这种平衡可以通过滑动常数GcG_cGc​ 来维持也可以通过在迭代过程中自适应地
改变SminS_{min}Smin​ 的值来实现。

③如果季节变化条件得到满足(冬天结束),则随机改变普通树上松鼠的位置。
FSnt,it+1=FSi,L+Levy(FSi,U−FSi,L)(12)FS_{nt,i}^{t+1}=FS_{i,L}+Levy(FS_{i,U}-FS_{i,L})\tag{12} FSnt,it+1​=FSi,L​+Levy(FSi,U​−FSi,L​)(12)
列维分布(Levy distribution)能够帮助算法以更好和更有效的方式进行全局搜索,列维飞行(Levy flight)帮助算法寻找远离当前最佳位置的新位置。列维飞行是一种随机改变步长的方法,其中步长是从列维分布中得出的。
Levy=0.01ra∗σ∣rb∣1/β(13)Levy = 0.01\frac{r_a*\sigma}{|r_b|^{1/\beta}} \tag{13} Levy=0.01∣rb​∣1/βra​∗σ​(13)
其中rar_ara​ 和rbr_brb​是[0,1]区间上的两个正态分布随机数, β =1.5,σ 计算如下:
σ=(Γ(1+β)∗sin(πβ/2)Γ(1+β2)∗β∗2((β−1)/2))1/β(14)\sigma = (\frac{\Gamma(1+\beta)*sin(\pi\beta/2)}{\Gamma(\frac{1+\beta}{2})*\beta*2^{((\beta-1)/2)}})^{1/\beta} \tag{14} σ=(Γ(21+β​)∗β∗2((β−1)/2)Γ(1+β)∗sin(πβ/2)​)1/β(14)
算法步骤

1)定义输入参数
2)为n只松鼠生成随机位置
3)评估每只松鼠位置的适应值
4)根据飞行松鼠的适应值,按升序排列它们的位置
5)将飞行松鼠分配到山核桃树、橡子树和普通树
6)While(不满足停止准则)
8)for z=1 to n1(橡树上向山核桃树移动的松鼠数量)
9)利用公式(2)更新松鼠位置
10)for u=1 to n2(普通树上向橡树移动的松鼠数量)
11)利用公式(3)更新松鼠位置
12)for e=1 to n3(普通树上向山核桃树移动的松鼠数量)
13)利用公式(4)更新松鼠位置
14)计算松鼠适应值,升序排列位置,将飞行松鼠分配到
山核桃树、橡子树和普通树
15)判断季节变化条件是否满足,满足则根据公式(14-
16)更新普通树上松鼠位置
16)根据公式(13)更新SminS_minSm​in 的值
17)计算松鼠适应值,升序排列位置,将飞行松鼠分配到
山核桃树、橡子树和普通树
18)程序While循环结束,输出山核桃树上松鼠的位置和
适应值。

2.实验结果

3.参考文献

[1]韩毅,徐梓斌,张亮.国外新型智能优化算法——松鼠觅食算法[J].现代营销(信息版),2019(09):44-45.

4.Matlab代码

个人资料介绍

智能优化算法:松鼠优化算法 - 附代码相关推荐

  1. 智能优化算法:闪电搜索算法-附代码

    智能优化算法:闪电搜索算法-附代码 文章目录 智能优化算法:闪电搜索算法-附代码 1.算法原理 1.1 过渡放电体 1.2 空间放电体 1.3 引导放电体 2.算法结果 3.参考文献 4.Matlab ...

  2. 智能优化算法:布谷鸟搜索算法-附代码

    智能优化算法:布谷鸟搜索算法-附代码 文章目录 智能优化算法:布谷鸟搜索算法-附代码 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 摘要:谷鸟搜索算法(cuckoo search , ...

  3. 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码

    基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...

  4. 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

    基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...

  5. 相位 unwrap 与 wrap 算法详解(附代码)

    相位 unwrap 与 wrap 算法详解(附代码) 最近接手了一个项目,光通信方面的,我负责编写初测结果的数据处理算法,其中有一个算法叫做 unwrap 与 wrap,之前没有听说过.通过询问同事与 ...

  6. 数据挖掘领域十大经典算法之—SVM算法(超详细附代码)

    相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-Apriori算法 数据挖掘领域十大经 ...

  7. 二分查找算法详解(附代码)

    二分查找算法详解(附代码) 注: 现有一个升序 不重复的数组 查询target是否在此数组中并返回序号 使用条件 使用二分算法的两个条件: 有序 不重复 混淆处 二分算法两种方式容易弄混淆的地方:就是 ...

  8. 数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)

    相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-SVM算法(超详细附代码) 数据挖掘领 ...

  9. 麻雀优化算法_多种智能优化算法应用案例分享-附代码

    1.智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割 智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码_Jack旭的博客-CSDN博客​blog.csdn.net 2.智能优化算法 ...

  10. 智能优化算法:麻雀搜索算法-附代码

    2020智能优化算法:麻雀搜索算法 文章目录 2020智能优化算法:麻雀搜索算法 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 5.Python代码 摘要:麻雀搜索算法(Sparro ...

最新文章

  1. 建立名称server
  2. electron builder 打包错误 cannot unpack electron zip file 解决方案
  3. JavaWeb项目中如何扩展一个Request对象——包装器HttpServletRequestWrapper
  4. c++标准I/O输入流
  5. py-rfcn算法caffe配置,训练及应用到自己的数据集
  6. 服务器维修工单,运维工单--服务器申请工单
  7. php增删改查参数化,JPA之使用JPQL语句进行增删改查
  8. python之父的名字-Python 常见双下划线关键字的用法
  9. Hutool工具里,POST方法,body中传参的几种调用方法
  10. Visual C# 2005 - 如何制作多变化字体之浮雕字
  11. 兄弟j220怎么清零_兄弟j220怎么清零_兄弟Brother全系列打印机清零大全
  12. python攻击校园网_Python模拟校园网登录
  13. python docx创建表格
  14. 【LeetCode】Day3-Excel表列名称
  15. excel+if函数+android,Excel中if函数多重条件的使用
  16. android 打印图片乱码,Android 无线连接WiFi打印机打印图片全部乱码
  17. android平板 代码禁用wifi模块,使平板电脑无线模块禁用的方法
  18. 机器学习-数据科学库 12 美国人口数据分析案例
  19. Arthas线上代码诊断神器-定位问题
  20. 区块链+游戏:未来真的有未来吗?

热门文章

  1. 中科大和东北大学计算机考研,中科大计算机研究生一个月补助多少阿
  2. puppy linux 5.11中文集成清爽160m,中文Puppy Linux开发者之家
  3. python_在无须过多援引的情况下创建字典
  4. 【从0到1搭建LoRa物联网】5、国产LoRa终端ASR6505驱动DHT11
  5. 你是弱者,又有什么了不起
  6. PHP后门反弹连接DVWA
  7. 新版电商运营学习路线图(全套视频笔记素材合集)
  8. 密码学概述与基本加密方式
  9. SMBIOS介绍(1):概述
  10. 电信宽带连接不上无线可连接服务器,我家装的是电信的宽带,能连上无线网络,但是就是不能上网连接的信号也是非常好,请问是什么问题...