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


文章目录

  • 智能优化算法:松鼠优化算法
  • 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只松鼠的位置可以通过一个矢量来确定。所有松鼠的位置在边界范围内随机初始化,如下式:
智能优化算法:松鼠优化算法 - 附代码_python
智能优化算法:松鼠优化算法 - 附代码_python_02代表第i只松鼠第j维的值。ub,lb分别为变量的上下边界。rand为[0,1]之间的随机数。

1.2 适应度值评价

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

1.3 生成新位置

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

①第一种情况,在橡树上的松鼠会向山核桃树移动
智能优化算法:松鼠优化算法 - 附代码_算法_03
其中 智能优化算法:松鼠优化算法 - 附代码_优化算法_04 是随机滑行距离,智能优化算法:松鼠优化算法 - 附代码_机器学习_05是[0,1]范围内的随机数, 智能优化算法:松鼠优化算法 - 附代码_优化算法_06是山核桃树的位置,智能优化算法:松鼠优化算法 - 附代码_算法_07表示当前迭代。滑动常数智能优化算法:松鼠优化算法 - 附代码_python_08 实现全局与局部搜索之间的平衡,经过大量分析论证,智能优化算法:松鼠优化算法 - 附代码_python_08

②第二种情况,在普通树上的松鼠会向橡树移动
智能优化算法:松鼠优化算法 - 附代码_python_10
智能优化算法:松鼠优化算法 - 附代码_python_11是[0,1]范围内的随机数。

③第三种情况,一些在普通树上的松鼠已经吃了橡果,它们可能会向山核桃树移动以便储存山核桃来应对食物短缺。
智能优化算法:松鼠优化算法 - 附代码_机器学习_12
智能优化算法:松鼠优化算法 - 附代码_人工智能_13是[0,1]范围内的随机数。

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

1.4 滑翔的空气动力学

松鼠的滑行机制是通过平衡滑行来描述的,升力(L)和阻力(D)之和产生一个合力®,该合力与飞鼠的重力大小相等且方向相反。因此,R以恒定速度(V)保证松鼠能够在直线上与水平面成一定角度 智能优化算法:松鼠优化算法 - 附代码_人工智能_14下降滑行。升阻比或滑行比定义如下:
智能优化算法:松鼠优化算法 - 附代码_python_15
松鼠可以通过减小下滑角来增加滑行路径长度,从而提高升阻比。升力是空气撞击膜产生了向下的偏转而产生的反推力的结果,定义为:
智能优化算法:松鼠优化算法 - 附代码_算法_16
其中( 智能优化算法:松鼠优化算法 - 附代码_python_17 )为空气密度,智能优化算法:松鼠优化算法 - 附代码_python_18 称为升力系数,智能优化算法:松鼠优化算法 - 附代码_机器学习_19为速度,智能优化算法:松鼠优化算法 - 附代码_人工智能_20 )为松鼠膜表面积。
智能优化算法:松鼠优化算法 - 附代码_优化算法_21
智能优化算法:松鼠优化算法 - 附代码_人工智能_22 是摩擦阻力系数,低速移动时松鼠增加阻力,高速移动时松鼠减小阻力。
智能优化算法:松鼠优化算法 - 附代码_优化算法_23

智能优化算法:松鼠优化算法 - 附代码_算法_24

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

1.5 季节变化条件

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

①计算季节常量智能优化算法:松鼠优化算法 - 附代码_算法_37
智能优化算法:松鼠优化算法 - 附代码_python_38
②计算季节变化条件智能优化算法:松鼠优化算法 - 附代码_机器学习_39
智能优化算法:松鼠优化算法 - 附代码_机器学习_40
其中智能优化算法:松鼠优化算法 - 附代码_算法_07智能优化算法:松鼠优化算法 - 附代码_python_42分别是当前和最大迭代值,智能优化算法:松鼠优化算法 - 附代码_python_43 值影响算法的全局和局部搜索能力。智能优化算法:松鼠优化算法 - 附代码_python_43 的值较大会有利于全局搜索,而智能优化算法:松鼠优化算法 - 附代码_python_43 的较小值有利于算法的局部搜索。对于任何启发式算法,全局和局部搜索过程需要进行有效的平衡。这种平衡可以通过滑动常数智能优化算法:松鼠优化算法 - 附代码_python_08 来维持也可以通过在迭代过程中自适应地
改变智能优化算法:松鼠优化算法 - 附代码_机器学习_47

③如果季节变化条件得到满足(冬天结束),则随机改变普通树上松鼠的位置。
智能优化算法:松鼠优化算法 - 附代码_人工智能_48
列维分布(Levy distribution)能够帮助算法以更好和更有效的方式进行全局搜索,列维飞行(Levy flight)帮助算法寻找远离当前最佳位置的新位置。列维飞行是一种随机改变步长的方法,其中步长是从列维分布中得出的。
智能优化算法:松鼠优化算法 - 附代码_算法_49
其中智能优化算法:松鼠优化算法 - 附代码_人工智能_50智能优化算法:松鼠优化算法 - 附代码_机器学习_51是[0,1]区间上的两个正态分布随机数, β =1.5,σ 计算如下:
智能优化算法:松鼠优化算法 - 附代码_人工智能_52
算法步骤

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)更新智能优化算法:松鼠优化算法 - 附代码_python_43 的值
17)计算松鼠适应值,升序排列位置,将飞行松鼠分配到
山核桃树、橡子树和普通树
18)程序While循环结束,输出山核桃树上松鼠的位置和
适应值。

2.实验结果

智能优化算法:松鼠优化算法 - 附代码_算法_54

3.参考文献

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

4.Matlab代码

个人资料介绍