基于levy飞行改进的麻雀搜索算法-附代码

基于levy飞行改进的麻雀搜索算法

1.Levy飞行

自然界中很多动物想要在不确定的环境中找到食物,最理想的方式就是采用“Levy 飞行”搜索策略,在这种形式的搜索中,短距离的探索性蹦蹦跳跳与偶尔的较长距离行走相间。短距离的蹦蹦跳跳可以保证动物在觅食过程中能够对自身周围的小范围进行仔细的搜寻,而偶尔较长距离的行走又可以保证自身能够进入另一个区域,在更广阔的范围进行搜索。鉴于 Levy 飞行的优点,许多学者受其启发,在进化策略中引入 Levy 飞行策略,改进算法的性能并取得了较好的效果Levy 飞行的连续跳跃路径与时间 t 服从 Levy 分布,通过对其简化和进行傅里叶变换后,可以得到其幂次形式的概率密度函数:
L e v y ∼ u = t − λ ; 1 < λ < 3 (1) Levy\sim u = t^{-\lambda};1<\lambda<3 \tag{1} Levyu=tλ;1<λ<3(1)
式中 λ 是幂次数。式(1)是一个带有重尾的概率分布,但通过较为简单的程序语言实现比较困难,因此在计算 Levy 飞行的搜索路径 L(λ) 时,通常采用 Mantegna 提出的模拟 Levy 飞行路径的计算公式:
s = u / ∣ v ∣ 1 / β (2) s = u/|v|^{1/\beta} \tag{2} s=u/v1/β(2)
式中: s 即为 Levy 飞行路径 L(λ);参数 β 的取值范围为 0 <β <2,一般取 β = 1. 5;参数 μ、v 为正态分布随机数,服从式(3)所示的正态分布;式(3)所对应的正态分布的标准差 σ μ 、σ v 的取值满足式(4):
{ u ∼ N ( 0 , σ u 2 ) v ∼ N ( 0 , σ v 2 ) (3) \begin{cases} u \sim N(0,\sigma_{u}^2)\\ v \sim N(0,\sigma_{v}^2)\end{cases} \tag{3} {uN(0,σu2)vN(0,σv2)(3)

{ σ u = { Γ ( 1 + β ) s i n ( π β / 2 ) } Γ [ ( 1 + β ) / 2 ] 2 ( β − 1 ) / 2 β σ v = 1 (4) \begin{cases} \sigma_{u} = \{\frac{\Gamma(1+\beta)sin(\pi \beta/2)\}}{\Gamma[(1+\beta)/2]2^{(\beta-1)/2}\beta}\\ \sigma_v = 1\end{cases} \tag{4} {σu={Γ[(1+β)/2]2(β1)/2βΓ(1+β)sin(πβ/2)}σv=1(4)

2.基于Levy飞行映射的麻雀搜索算法

基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958

该改进主要是在麻雀算法位置更新后,利用levy飞行对种群进行更新提高搜索能力。见Step7

算法流程

Step1: 初始化种群,迭代次数,初始化捕食者和加入者比列。

Step2:计算适应度值,并排序。

Step3:麻雀更新捕食者位置。

Step4:麻雀更新加入者位置。

Step5:麻雀更新警戒者位置。

Step6:计算适应度值并更新麻雀位置。

Step7:计算惯性权重因子 f = 1 − i t e r / M a x I t e r f = 1- iter/MaxIter f=1iter/MaxIter,利用轮盘选择, i f   r a n d > f if\, rand>f ifrand>f对选择的麻雀个体进行levy飞行变异

Step8:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-7;

3.算法结果:

请添加图片描述

4.Matlab

5.Python

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值