智能优化算法——蝙蝠算法(Python&Matlab实现)(1)

本文介绍了蝙蝠算法的基本原理,包括随机初始化、声波反馈驱动的搜索过程、变速度权重防止局部极值以及Python和Matlab的实现示例。着重讨论了算法如何利用蝙蝠特性寻找目标函数的最优解并避免陷入局部最优。
摘要由CSDN通过智能技术生成

1 前言


蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。该算法基于迭代优化,初始化为一组随机解,然后迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强局部搜索速度。该算法具有实现简单、参数少等特点

该算法主要用于目标函数寻优,基于蝙蝠种群利用产生的声波搜索猎物和控制飞行方向的特征来实现函数的寻优。以一只蝙蝠作为基本单元,且每只蝙蝠都有一个适应值来对函数解空间进行优化。每只蝙蝠可以调整自身发射声波的响度、频率等对空间进行搜索,使整个种群的活动逐步由无序变为有序。但蝙蝠算法在寻优末段容易陷入局部的极值,本文引入变速度权重因子修正系数(和粒子群参数调整的自适应过程相似),尽可能避免局部极值的困境,从而达到全局寻优的效果。

蝙蝠算法原理细讲


首先在自变量范围内产生蝙蝠的随机位置;

然后每个蝙蝠向周围某处移动,飞行靠声波反馈来更变方向,又向周围移动是随机的,蝙蝠下一时刻移动到某一位置有一定的出现频率,所以本文在运动公式中加了声波和频率两个因素。每一时刻的位移看作是一次飞行,每次飞行的距离很短(距离长短反映出搜素精度)。

每只蝙蝠初始位置是随机的,在初始位置时刻其中一只蝙蝠对应的函数最值,算法开始会记录该位置,然后所有蝙蝠逐渐向该位置靠近,飞行方向大致向当前最值方向(即该方向的位置该蝙蝠的出现频率更高),但是在飞行方向也是随机飞行的,相当于逐步搜索过去。蝙蝠飞行过程中不会因为当前飞行出现的最大值位置而改变种群的飞行趋势,这样可以尽量避免算法陷入局部极值。

算法每飞行一次就记录一次种群所处位置的最值,最后找出记录中的最值。

算法有两个参数可以影响最终的结果:种群数量和飞行次数。其中种群数量的影响是最大的。

详细步骤


3.1 初始化相关参数

蝙蝠的位置为Xi,飞行速度Vi,声音响度为Ai,频率yi范围,设有目标函数为 :

3.2 更改脉冲频率产生的解并更变蝙蝠位置与飞行速度

蝙蝠i在t-1时的位置和飞行速度分别表示为X_{i}^{t-1})和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值