算法原理

蝙蝠能够在夜间或十分昏暗的环境中自由飞翔和准确无误地捕捉食物,是因为他们能够从喉头发出地超声脉冲回声来定位。受这一启发,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)学习笔记的更多相关文章

  1. 串的应用与kmp算法讲解--学习笔记

    串的应用与kmp算法讲解 1. 写作目的 平时学习总结的学习笔记,方便自己理解加深印象.同时希望可以帮到正在学习这方面知识的同学,可以相互学习.新手上路请多关照,如果问题还请不吝赐教. 2. 串的逻辑 ...

  2. BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MBSubmit: 3665  Solved: 1422[Submit][Status][Discuss] ...

  3. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  4. C4.5算法的学习笔记

    有日子没写博客了,这些天忙着一些杂七杂八的事情,直到某天,老师喊我好好把数据挖掘的算法搞一搞!于是便由再次埋头看起算法来!说起数据挖掘的算法,我想首先不得的不提起的就是大名鼎鼎的由决策树算法演化而来的 ...

  5. PAT算法题学习笔记

    1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...

  6. 「Manacher算法」学习笔记

    觉得这篇文章写得特别劲,插图非常便于理解. 目的:求字符串中的最长回文子串. 算法思想 考虑维护一个数组$r[i]$代表回文半径.回文半径的定义为:对于一个以$i$为回文中心的奇数回文子串,设其为闭区 ...

  7. 算法图解学习笔记01:二分查找&大O表示法

    二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...

  8. vector刘汝佳算法入门学习笔记

    //*****-*-----vector***/////// 常用操作封装,a.size();可以读取大小               a.resize();可以改变大小:               ...

  9. 算法导论学习笔记1---排序算法(平台:gcc 4.6.7)

    平台:Ubuntu 12.04/gcc 4.6.7 插入排序 #include<vector> #include <algorithm> #include<iostrea ...

随机推荐

  1. Ratel源码-C/S事件梳理

    一.Ratel介绍 Ratel 是一个可以在命令行中玩斗地主的项目,可以使用小巧的jar包在拥有JVM环境的终端中进行游戏,同时支持人人对战和人机对战两种模式,丰富你的空闲时间! 二.玩法Demo 三 ...

  2. 学习scrapy框架爬小说

    一.背景:近期学习python爬虫技术,感觉挺有趣.由于手动自制爬虫感觉效率低,了解到爬虫界有先进的工具可用,尝试学学scrapy爬虫框架的使用. 二.环境:centos7,python3.7,scr ...

  3. Rocket - devices - DevNullDevice

    https://mp.weixin.qq.com/s/rAmXl-0gDAJqWmy1R3KrlA 简单介绍DevNullDevice的实现. 1. DevNullParams DevNullPara ...

  4. Java实现 蓝桥杯 传纸条

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运 ...

  5. Java实现蓝桥杯VIP 算法训练 sign函数

    问题描述 给定实数x,输出sign(x)的值. sign(x)是符号函数,如果x>0,则返回1:如果x=0,则返回0:如果x<0,则返回-1. 输入格式 一行一个实数x. 输出格式 一行一 ...

  6. Java实现 LeetCode 343 整数拆分(动态规划入门经典)

    343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × ...

  7. Java实现 LeetCode 80 删除排序数组中的重复项 II(二)

    80. 删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O ...

  8. Java中Iterator类的详细介绍

    迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 概述 Java集合框架的集合类,我们有时候称之为容器.容器的种类有很多种,比如ArrayList.Li ...

  9. Android中如何使用多选对话框

    final String [] ss={"A","B","C","D","E"}; boolean ...

  10. Java实现选择问题

    选择问题是求一个n个数列表的第k个最小元素的问题. 那么如何寻找n个元素中第k个最小元素呢? package com.liuzhen.chapter4; public class SelectProb ...