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

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

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

1.算法原理

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

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

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

1.1 种群初始化

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

1.2 适应度值评价

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

1.3 生成新位置

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

①第一种情况,在橡树上的松鼠会向山核桃树移动
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}
其中 d_g 是随机滑行距离,R_1是[0,1]范围内的随机数, FS_{ht}^t是山核桃树的位置,t表示当前迭代。滑动常数G_c 实现全局与局部搜索之间的平衡,经过大量分析论证,G_c 的值设为1.9。

②第二种情况,在普通树上的松鼠会向橡树移动
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}
R_2是[0,1]范围内的随机数。

③第三种情况,一些在普通树上的松鼠已经吃了橡果,它们可能会向山核桃树移动以便储存山核桃来应对食物短缺。
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}
R_3是[0,1]范围内的随机数。

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

1.4 滑翔的空气动力学

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

d_g=\frac{h_g}{tan\phi}\tag{9}

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

1.5 季节变化条件

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

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

③如果季节变化条件得到满足(冬天结束),则随机改变普通树上松鼠的位置。
FS_{nt,i}^{t+1}=FS_{i,L}+Levy(FS_{i,U}-FS_{i,L})\tag{12}
列维分布(Levy distribution)能够帮助算法以更好和更有效的方式进行全局搜索,列维飞行(Levy flight)帮助算法寻找远离当前最佳位置的新位置。列维飞行是一种随机改变步长的方法,其中步长是从列维分布中得出的。
Levy = 0.01\frac{r_a*\sigma}{|r_b|^{1/\beta}} \tag{13}
其中r_ar_b是[0,1]区间上的两个正态分布随机数, β =1.5,σ 计算如下:
\sigma = (\frac{\Gamma(1+\beta)*sin(\pi\beta/2)}{\Gamma(\frac{1+\beta}{2})*\beta*2^{((\beta-1)/2)}})^{1/\beta} \tag{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)更新S_min 的值
17)计算松鼠适应值,升序排列位置,将飞行松鼠分配到
山核桃树、橡子树和普通树
18)程序While循环结束,输出山核桃树上松鼠的位置和
适应值。

2.实验结果

实验结果

3.参考文献

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

4.Matlab代码

https://mianbaoduo.com/o/bread/YZmUlp9x

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,548评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,497评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,990评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,618评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,618评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,246评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,819评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,725评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,268评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,356评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,488评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,181评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,862评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,331评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,445评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,897评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,500评论 2 359

推荐阅读更多精彩内容

  • 那年秋天,因为有段时日没登山了,再加上感冒初愈。累,便像只讨厌的蚊子,死缠烂打地甩不掉。翻过了一座不大的山岭,我家...
    萍一简阅读 557评论 8 20
  • 很多家长,对于如何帮助孩子提高写作水平,一直有很多的苦恼。 少年口才界在7月的“小小编剧王”主题月活动中,通过“改...
    Leah82阅读 186评论 0 0
  • 正是深秋。周五下午,永喜回家对爸爸妈妈说,明天和同学约好了进山采山货。弟弟首先高兴地蹦了起来,说他也要去。永喜眼睛...
    学生党AT梦栗树阅读 470评论 0 2
  • 当我们局限在书本里,虽然那是最精选的,古典的作品,而且只限于读一种特殊的语文,它们本身只是口语和方言,那时我们就有...
    简书茶馆叶老板阅读 1,795评论 2 21
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 125,305评论 2 7