Bat Algorithm in A Nutshell

蝙蝠算法(BA)是由 Xin-She Yang 于 2010 年开发的一种高效生物启发式(bio-inspired)算法。

Echolocation of Bats

Behavior of Microbats

蝙蝠是一种神奇的动物。它们是唯一一种有翅膀的哺乳动物,它们也具有先进的回声定位能力。据估计,大约有 1000 种不同的蝙蝠种类,占所有哺乳动物种类的 20%。它们的大小从微小的凹脸蝠(bumblebee bats)(约 1.5 至 2 克)到翼展约 2 米,重量高达约 1 公斤的巨型蝙蝠。小蝙蝠(microbats)通常具有约 2.2 至 11 厘米的前臂长度。大多数蝙蝠在一定程度上都使用回声定位,在所有的这些蝙蝠中,小蝙蝠因广泛使用回声定位而著名,而狐蝠(megabats)则不[2,4,27]。

大多数小蝙蝠是食虫动物。小蝙蝠使用一种称为回声定位的声纳来检测猎物,避开障碍物,并在黑暗中找到栖息的裂缝。这些蝙蝠发出非常响亮的声波脉冲,并监听从周围物体反射回来的回声。发出脉冲的特性与狩猎战略相关,依据猎物种类不同而改变。大多数蝙蝠使用短调频信号扫过一个八度音阶;其他的则经常使用恒定频信号进行回声定位。它们的信号带宽随着物种而变化,通常通过使用更多的谐波来增加。

研究表明,小蝙蝠使用了回声发射与检测的时延,两耳之间的时间差和回声响度的变化来建立周围环境的三维场景。它们可以侦测到目标的距离和方向,猎物的类型,甚至猎物的移动速度,如小昆虫。事实上,研究表明,蝙蝠似乎能够通过目标昆虫的翅膀颤动率引起的多普勒效应的变化来区分目标[2]。

Acoustics of Echolocation

尽管每个脉冲的持续时间只有千分之几秒(最长可达 8 到 10 ms),但它的频率通常在 25 kHz 到 150 kHz 之间。尽管有些种类的蝙蝠可以发出高达 150 kHz 的高频声波,但大多数蝙蝠的典型频率范围在 25 kHz 到 100 kHz 之间。每个超声波脉冲可以(典型地)持续 5 到 20ms,小蝙蝠每秒可以发出大约 10 到 20 个这样的声波脉冲。当它们捕猎靠近猎物时,脉冲发射速率可以被加速到每秒约 200 个脉冲。这样的短时声音突发意味着蝙蝠具有奇妙的信号处理能力。事实上,研究表明,蝙蝠耳朵的等效积分时间通常约为 300 到 400 微秒。

由于空气中室温下声速的典型值为 $v = 340m / s$,所以以恒定频率 $f$ 发出的超声波,其波长 $\lambda$ 由 $\lambda= v / f$ 给出,其中,典型波长为 2 mm 到 14 mm,典型频率为 25 kHZ 到 150 kHZ。这些波长显然与猎物尺寸在同一数量级[2,27]。

令人惊讶的是,蝙蝠发出的脉冲可能高达 110 分贝(dB),幸运的是,脉冲处于超声波区。响度也随着目的不同而改变,从最响的搜寻猎物到相对安静飞向猎物。这种短脉冲的行程范围通常是几米,其取决于实际的频率。小蝙蝠可以设法避免如人头发丝一样薄的障碍物。

很显然,有些蝙蝠视力好,大多数蝙蝠也有非常敏感的嗅觉。在实际中,他们将所有的感官结合在一起,最大限度地发现猎物,平稳导航。但是,这里我们只关心回声定位以及相关的行为。

小蝙蝠的回声定位行为可以通过与待优化的目标函数相关联的方式来表达,这使得有可能制定新的优化算法。这里我们首先概述 BA 的基本表述,然后讨论它的实现。

Bat Algorithms

如果理想化小蝙蝠回声定位的一些特征,我们就可以开发出各种蝙蝠启发(bat-inspired)或蝙蝠算法了[32]。为了简单起见,我们使用以下近似或理想的规则:

  1. 所有的蝙蝠都用回声定位来感知距离,并且“知道”食物/猎物与背景障碍之间的差异。
  2. 蝙蝠在位置 $x_i$ 以速度 $v_i$ 随机飞行,它们可以自动调整发出脉冲的频率(波长),并依据目标的接近程度调整脉冲发射率$r \in [0,1]$
  3. 虽然响度可以从多个方面改变,但我们假设响度从一个大(正)值 $A_0$ 变化到最小值 $A_{min}$

另一个明显的简化是,估计时延和三维地形时不使用射线追踪(ray tracing)。尽管在计算几何应用中这可能是一个很好的特性,但在这里不使用这种简化,因为在多维时增加了计算量。

除了这些简化以外,我们还使用了以下近似值。通常,频率 $f$ 在范围 $[f_{min}, f_{max}]$ 内,相应的波长在范围 $[\lambda_{min},\lambda_{max}]$ 内。例如,频率在 [20 kHz, 500 kHz] 范围内,则相应的的波长在 [0.7 mm, 17 mm] 范围内。

对于给定的问题,我们可以使用任意波长来实现。在实际应用中,我们可以通过调整频率(波长)来调整范围。选择的范围(或最大波长)应与感兴趣区域的大小相当,然后再逐渐调整至较小的范围。而且,我们不一定必须调节波长本身。相反,可以通过改变频率来实现。这是因为 $\lambda$$f$ 相关,$\lambda f$ 的值是常数。稍后我们给出使用这一方法的实现。

为简单起见,可以假设 $f \in [0, f_{max}]$ 。我们知道较高的频率具有短的波长和较短的距离。蝙蝠的典型范围是几米。冲发射率可以表示为 $[0,1]$ ,其中 0 表示完全没有脉冲,1 表示最大的脉冲发射率。

基于以上近似和理想化规则,BA 的基本步骤可以总结为以下伪代码:

Pseudo code of the bat algorithm

Movement of Virtual Bats

在模拟中,我们使用虚拟蝙蝠。需要定义d-维搜索空间虚拟蝙蝠位置 $x_i$ 速度 $v_i$ 值更新的规则,在时间步长 $t$ 新解 $x_i^t$ 和速度 $v_i^t$ 给出如下

$$f_i = f_{min}+(f_{max}-f_{min})\beta,\tag 1$$
$$v_i^{t+1} = v_i^t+(x_i^t-x_*)f_i,\tag 2$$
$$x_i^{t+1} = x_i^t+v_i^{t+1},\tag 3$$

其中 $\beta \in [0,1]$ 是服从均匀分布的随机向量。这里 $x_*$ 是当前全局最佳位置(解),它是在比较了所有 $n$ 个蝙蝠的所有解后找到的。由于乘积 $\lambda_i f_i$ 是一个常数,我们可以使用 $f_i$(或 $\lambda_i$)来调整速度大小,同时固定另一个因子 $\lambda_i$(或 $f_i$),这取决于具体的问题类型。对于我们的实现,使用 $f_{min} = 0$$f_{max} = \mathcal{O}(1)$,其取决于感兴趣问题域的大小。开始时,每个蝙蝠被随机分配一个服从均匀分布 $[f_{min},f_{max}]$ 的频率。

对于局部搜索部分,一旦从当前最佳解中选择了一个解,则使用随机游走对每个蝙蝠产生一个新解
$$x_{new} = x_{old} + \epsilon A^{(t)}, \tag 4$$
其中 $\epsilon \in [-1,1]$ 是一个随机数,而 $A^{(t)} = \left\langle A_i^t \right\rangle$ 是此时间步长中所有蝙蝠的平均响度。从实现的角度来看,最好能够提供一个缩放参数来控制步长。因此,我们可以将这个方程改写为:
$$x_{new} = x_{old} + \sigma \epsilon_t A^{(t)}, \tag 5$$
其中 $\epsilon_t$ 服从高斯正态分布 $N(0, 1)$$\sigma$ 是缩放因子。在 demo 中,设置为 $\sigma = 0.01$。显然,$\sigma$ 应该与所考虑优化问题的设计变量的尺度相关联。

蝙蝠速度和位置的更新可能与标准粒子群优化(PSO)程序有些相似,因为 $f_i$ 本质上控制了粒子群运动的速度和范围。然而,BA 更有效,因为它使用频率调节和参数控制来影响种群的探索发现。

Loudness and Pulse Emission

此外,响度 $A_i$ 和脉冲发射率 $r_i$ 也随着迭代的进行而相应地更新。因为一旦发现猎物,响度通常会降低,而脉冲发射率会增加。响度可以为了方便而设置成任意值。为简单起见,可以设 $A_0 = 1, A_{min} = 0$ ,假设 $A_{min} = 0$ 意味着一只蝙蝠刚刚了找到猎物,暂时停止发声。那么现在我们有
$$A_i^{t+1} = \alpha A_i^t, \quad r_i^{t+1} = r_i^0[1-exp(-\gamma t)], \tag 6$$
其中 $\alpha$$\gamma$ 是常数。实际上,$\alpha$ 与模拟退火中冷却进度表(cooling
schedule )的冷却因子相似。对于任何 $0< \alpha < 1$$\gamma > 0$,我们有
$$A_i^t \to 0, \quad r_i^t \to r_i^0, \quad \text{as } t \to \infty . \tag 7$$
在最简单的情况下,可以用 $\alpha = \gamma$,在我们的模拟中用了 $\alpha = \gamma = 0.9$。需要指出的是,演示代码中并不包含 $A$$r$ 的变化,这里主要是为了说明蝙蝠算法中频率调节的本质。

参数的选择需要试验。开始时,每只蝙蝠应具有不同的响度和脉冲发射率,这可以通过随机化来实现。例如,初始响度 $A_i^0$ 通常可以取为 1,初始 发射率 $r_i^0$如果使用(6)式,可以是 $0$ 或任何 $r_i^0 \in (0,1]$,只有当新解得到改进时,响度和发射率才会更新,这便意味着这些蝙蝠正朝着最优解努力。

仔细分析 BA,我们可以发现它可以捕捉到许多其他算法的特征。如果我们用随机参数代替频率 $f_i$ 并设 $A_i = 0$$r_i = 1$,BA 基本上成为了标准 PSO。同样,如果不使用速度,而使用固定的响度和发射率:$A_i$$r_i$。例如,$A_i = r_i = 0.7$,该算法则简化为简单和声搜索(harmony search, HS),因为频率/波长的变化本质上是音调的调整,而脉冲发射率则类似于 HS 中的谐波接受率。换句话说,HS 和 PSO 可以被认为是 BA 的特例。因此,BA 高效并不奇怪。

Implementation

从伪代码来看,用编程语言实现 BA 是相对简单的。 为了便于可视化,我们用 Matlab 实现了它。
有许多用于验证新算法的标准测试函数。我们来看看一个简单的基准函数 egg crate 函数

$$f = x^2+y^2+25(\sin{x}^2 + \sin{y}^2, \quad (x,y) \in [-2\pi,2\pi] \times [-2\pi,2\pi])$$

$f$ 在 $(0,0)$ 处有一个全局最小值 $f_{min}=0$。在实现中,用了 $n = $ 25 到 50 个虚拟蝙蝠,$\alpha = 0.9$。对于 multimodal eggcrate function,下图展示了最近 10 次迭代的结果,其中所有的蝙蝠都向全局最佳 $(0,0)$ 移动。

eggcrate function

eggcrate 函数(左)和最近 10 次迭代 40 只蝙蝠的位置

为了演示,我们将 $A$$r$ 设为常数以简化蝙蝠算法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
% -------------------------------------------------------- %
% Bat-inspired algorithm for continuous optimization (demo)%
% Programmed by Xin-She Yang @Cambridge University 2010 %
% -------------------------------------------------------- %
function [best,fmin,N_iter]=bat_algorithm(para)
% Default parameters
if nargin<1, para=[10 0.25 0.5]; end
n=para(1); % Population size, typically 10 to 25
A=para(2); % Loudness (constant or decreasing)
r=para(3); % Pulse rate (constant or decreasing)
% This frequency range determines the scalings
Qmin=0; % Frequency minimum
Qmax=2; % Frequency maximum
% Iteration parameters
tol=10^(-5); % Stop tolerance
N_iter=0; % Total number of function evaluations
% Dimension of the search variables
d=3;
% Initial arrays
Q=zeros(n,1); % Frequency
v=zeros(n,d); % Velocities
% Initialize the population/solutions
for i=1:n
Sol(i,:)=randn(1,d);
Fitness(i)=Fun(Sol(i,:));
end
% Find the current best
[fmin,I]=min(Fitness);
best=Sol(I,:);
% Start the iterations -- Bat Algorithm
while (fmin>tol)
% Loop over all bats/solutions
for i=1:n
Q(i)=Qmin+(Qmin-Qmax)*rand;
v(i,:)=v(i,:)+(Sol(i,:)-best)*Q(i);
S(i,:)=Sol(i,:)+v(i,:);
% Pulse rate
if rand>r
S(i,:)=best+0.01*randn(1,d);
end
% Evaluate new solutions
Fnew=Fun(S(i,:));
% If the solution improves or not too loudness
if (Fnew<=Fitness(i)) & (rand<A)
Sol(i,:)=S(i,:);
Fitness(i)=Fnew;
end
% Update the current best
if Fnew<=fmin
best=S(i,:);
fmin=Fnew;
end
end
N_iter=N_iter+n;
end
% Output/display
disp(['Number of evaluations: ',num2str(N_iter)]);
disp(['Best = ',num2str(best),' fmin = ',num2str(fmin)]);
% Objective function -- Rosenbrock's 3D function
function z=Fun(u)
z=(1-u(1))^2+100*(u(2)-u(1)^2)^2+(1-u(3))^2;

BA 在许多测试函数上的精度和效率远优于其他算法,因为通常它提供了一个更快的收敛速度。

Binary Bat Algorithms

基本的蝙蝠算法只适用于连续问题。若要处理离散问题和组合问题,需要对 BA 进行离散化。Nakamura 等人开发了用于特征选择和图像处理的所谓二进制蝙蝠算法(binary bat algorithm, BBA)[21]。对于特征选择,他们提出将搜索空间建模为蝙蝠穿过超立方体的拐角和节点的 d-维布尔格(Boolean lattice)。[For feature selection, they proposed that the search space is modeled as a d-dimensional Boolean lattice in which bats move across the corners and nodes of a hypercube.]对于二元特征选择,其特征是由蝙蝠位置表示的二元向量。

在 BBA 中,用 sigmoid 函数限制蝙蝠的位置。即,
$$
x_i^j=
\begin{cases}
1 & \text{if $S(v_i^j)$ > $\rho$}, \
0 & \text{otherwise}
\end{cases} , \tag 8
$$

$$S(v_i^j) = \frac{1}{1+\exp [-v_i^j ]}, \tag 9$$

其中速度分量 $v_i^j$ 对应于蝙蝠 i 的第 j 维,$\rho \sim U(0,1)$ 是服从均匀分布随机数。这意味着蝙蝠的位置或坐标是布尔格。

显然,可以预料到,这个 BBA 变体可以扩展到处理其他离散和组合问题。 另外,还有其他方式来离散化蝙蝠算法。 事实上,任何有效的用来离散化群体算法(如 PSO)的方法,也可以用来离散 BA,并产生新的变种。 事实上,这已成为一个活跃的研究课题。

Variants of the Bat Algorithm

标准 BA 具有许多优点,关键的一点在于它可以在迭代的早期提供非常快的收敛速度,如有必要,switching from exploration to exploitation。这使得 BA 成为分类和其他需要快速解的应用的高效算法。然而,如果我们快速地改变 A 和 r 来使算法切换到开发阶段,那么可能会在初始阶段之后导致停滞。为了提高性能,已经有许多方法和策略来增加解的多样性,这产生了一批优秀的 BA 变体。

从一个简洁但不完整的文献综述[38],我们找到了以下 BA 变种:

  • 模糊逻辑蝙蝠算法(Fuzzy logic bat algorithm, FLBA)。Khan 和 Sahai [14] 将模糊逻辑引入到 BA 中。他们称该变种为 FLBA [14]。
  • 多目标蝙蝠算法(Multi-objective bat algorithm, MOBA)。Yang [33] 扩展了 BA 以处理多目标优化问题,已经证明其在工程中解决设计基准(design benchmarks)的有效性 [33]。
  • K-means 蝙蝠算法(K-means bat algorithm , KMBA)。Komarasamy 和 Wahi [16] 提出了使用 K 均值和蝙蝠算法(KMBA)的组合来进行有效的聚类 [16]。
  • 混沌蝙蝠算法(Chaotic bat algorithm, CBA)。Lin 等人 [17] 提出了一个混沌 BA,其使用 Lévy flights 和 chaotic map 技术在动态生物系统中进行参数估计 [17]。Gandomi 和 Yang [10] 提出了另一种 CBA,其使用了各种迭代映射 [10]。
  • 二进制蝙蝠算法(Binary bat algorithm, BBA)。Nakamura 等人 [21] 开发了一个离散版本的 BA 来解决分类和特征选择问题 [21]。
  • 改进的蝙蝠算法(Improved bat algorithm , IBA)。Jamil 等人 [13] 使用 Lévy flights 与响度和脉冲发射率微妙变化的组合扩展了 BA。他们测试了 IBA 在 70 多个不同的测试函数上的表现,而证明 IBA 是非常高效 [13]。
  • 修改的蝙蝠算法(Modified bat algorithm, MBA)。Huang 等人 [11] 使用正交拉丁方阵作为初始种群,并引入自主避险行为,开发了改变种。研究证明,MBA 可以保证全局收敛 [11]。

BA 还有其他的改进和变种。例如,Wang 和 Guo [31] 将 BA 与和声搜索结合在一起,并为基准函数的数值优化生成了混合 BA [30]。他们还将 BA 应用于车辆路径问题 [31]。

另一方面,Fister,Jr. 等人 [8] 使用差分进化作为 BA 局部搜索的部分 [8] 开发了混合 BA。可以预望更多的变种仍在积极的研究。

Convergence Analysis

Huang 等人使用有限马尔科夫过程对 BA 进行了详细的分析 [11]。

… …

Why the Bat Algorithm is Efficient

像许多元启发式算法一样,BA 的优点在于其简单性和灵活性。BA 很容易实现,这样一个简单的算法可以非常灵活地解决各种各样的问题。

随之而来的一个自然的问题是:为什么蝙蝠算法如此高效?蝙蝠算法的成功有很多原因。通过分析其关键特征和更新方程,可以总结出以下三个关键点和特征:

  • 频率调节。BA 使用回声定位和频率调节来解决问题。虽然回声定位不是直接现实中的功能的,但是频率调节是的。这种能力可以提供一些功能,这些功能与 PSO、SA 和 HS 中使用的主要特征类似。因此,BA 具有这些其他基于群体智能的算法的优点。
  • 自动缩放。与其他元启发式算法相比,BA 具有的明显优势就是,BA 具有自动缩放到那些已经找到有前景的解的区域的能力。因此,与其他算法相比,BA 至少在迭代的早期具有更快的收敛速度。
  • 参数控制。许多元启发式算法使用一些预先调整的(pre-tuned)算法相关的固定参数。与之相反的是,BA 使用参数控制。也就是说,随着迭代的进行,可以改变参数(A 和 r)的值。这提供了一种在接近最佳解自动切换到 exploitation 的方法。这是与其他元启发式算法相比 BA 的另一个优点。

此外,前面讨论过的 Huang 等人的初步理论分析表明 BA 在合适的条件下保证了全局收敛性,BA 也可以有效地解决大规模问题。

Applications

标准 BA 及其多种变体意味着其应用的多样化。事实上,自从原始 BA 被开发出来以后,蝙蝠算法几乎被应用于包括优化,分类,图像处理,特征选择,调度,数据挖掘等的各个方面各个领域。我们将简要介绍一些应用 [9,23,32,33,36,37]。 这篇综述基于详细综述 [34,35,38]。

Continuous Optimization

在 BA 的第一类应用中,工程设计优化中的连续优化已被广泛的研究和证明,BA可以有效地处理高度非线性的问题,并且能够准确找到最优解 [32,36]。案例研究包括压力容器设计,汽车侧面设计,弹簧和梁设计,桁架系统,塔楼和高层建筑设计等。Tsai 等人 [29] 使用 BA 解决数值优化问题 [29]。

另外,Bora 等人 [3] 使用 BA 优化无刷直流轮马达,效果出众 [3]。 BA 还可以有效地处理多目标问题 [33]。

Combinatorial Optimization and Scheduling

从计算复杂性的角度来看,连续优化问题尽管可能仍然是非常具有挑战性,但还是可以被认为是容易解决的。组合问题却很难解决,其往往是非确定性多项式时间困难(NP-hard)的。Ramesh 等人 [24] 使用 BA 详细研究了经济负荷和排放调度问题。他们将 BA 与蚁群算法(ant colony algorithms, ABC),混合遗传算法以及其他方法进行了比较,并得出结论,BA 容易实现,并且在精度和效率方面要优于其他算法。

Musikapun 和 Pongcharoen(2012)使用 BA 解决了多阶段,多机器,多产品调度问题,他们通过详细的参数研究解决了一类 NP 难问题。他们还表示,使用一组最佳参数,性能可以进一步提高约 8.4% [20]。

Inverse Problems and Parameter Estimation

Yang 等人使用 BA 研究微电子应用中的拓扑形状优化,以便在严格的约束条件下研究不同热性质的材料放置方式以达到热传递效率最高 [37]。它也可以作为参数估计的一个逆问题。 如果逆问题可以适当地表达出来,BA 可以提供比最小二乘法和正则化方法更好的结果。

Lin 等人 [17] 提出了一个混沌 Lévy flight BA 以估计非线性动态生物系统的参数,并证明了该算法的有效性 [17]。

Classifications, Clustering, and Data Mining

Komarasamy 和 Wahi [16] 研究了使用 BA 的 K 均值聚类,并得出结论:K 均值和 BA 的组合可以实现更高的效率,因此表现比其他算法更好 [16]。

Khan 和 Sahari 在 e-learning 的背景下对 BA 和 PSO、GA 以及其他算法的进行了比较研究,结果表明 BA 显然比其他算法有一些优势 [14]。他们还提出了使用 BA 和其扩展作为 bi-sonar 优化变体的聚类问题的研究,并取得了良好的结果 [15]。

另一方面,Mishra 等人 [19] 用 BA 进行微阵列数据分类 [19],而 Natarajan 等 [22] 就 Bloom 滤波优化方面进行了 cuckoo 搜索和 BA 比较研究[ 22]。 Damodaram 和 Valarmathi [5] 研究了使用改进的 BA 进行网络钓鱼网站检测,取得了很好的结果 [5]。

Marichelvam 和 Prabaharan [18] 使用 BA 来研究混合 flowshop 调度问题,以尽量减少完工时间和平均 flow 时间 [18]。他们的结果表明 BA 是解决混合 flowshop 调度问题的有效方法。Faritha Banu 和 Chandrasekar [7] 使用修改的 BA 记录重复数据消除,并将其视为优化方法和数据压缩技术。他们的研究结果表明,修改的 BA 可以比 genetic programming 更好[7]。

Image Processing

Akhtar 等人 [1] 利用 BA 提出了一个全身人体姿态估计的研究,他们认为 BA 比 PSO、粒子滤波器(PF)和退火粒子滤波器(APF)表现更好。

Du 和 Liu [6] 提出了一种 BA 变种用于突变图像匹配,他们指出基于蝙蝠的模型比其他模型(如差分进化和遗传算法)更有效和可行。

Fuzzy Logic and Other Applications

Reddy 和 Manoj [25] 介绍了配电系统中使用 BA 为减少损耗求解最佳电容器布局的研究。其结合模糊逻辑来寻找最佳的电容器尺寸,从而使总损耗最小化。他们的结果表明,实际功率损失可以显著降低 [25]。此外,Tamiru 和 Hashim [28] 采用基于 BA 的方法来研究模糊系统,并模拟燃气轮机中的(火用)变化 [28]。

BA 的一个有趣的扩展是,使用不同波长或频率的变种方案,而不是当前的线性实现。此外,脉冲发射率和响度也可以用更复杂的方式改变。离散问题的另一个扩展是使用脉冲发射和回波之间的时间延迟。例如,在旅行商问题中,两个相邻节点或城市之间的距离可以很容易地编码为时间延迟。由于小蝙蝠利用两只耳朵之间的时间差来获得三维信息,因此可以识别猎物的类型和速度。因此,当前 BA 自然的延伸是使用定向回声定位和多普勒效应,这可能导致更有趣的变体和新的算法。

References

[1] Akhtar S, Ahmad AR, Abdel-Rahman EM. A metaheuristic bat-inspired algorithm for full body human pose estimation. In: Ninth conference on computer and robot vision (CRV2012) 28–30 May 2012, Toronto, ON. Toronto, ON, Canada: Conference Publishing Service; 2012. p. 369–75.

[2] Altringham JD. Bats: biology and behaviour. Oxford, UK: Oxford University Press; 1996.

[3] Bora TC, Coelho LS, Lebensztajn L. Bat-inspired optimization approach for the brushless DC wheel motor problem. IEEE Trans Magn 2012;48(2):947–50.

[4] Colin T. The varienty of life. Oxford, UK: Oxford University Press; 2000.

[5] Damodaram R, Valarmathi ML. Phishing website detection and optimization using modified bat algorithm. Int J Eng Res Appl 2012;2(1):870–6.

[6] Du ZY, Liu B. Image matching using a bat algorithm with mutation. Appl Mech Mater 2012;203(1):88–93.

[7] Faritha Banu A, Chandrasekar C. An optimized appraoch of modified bat algorithm to record deduplication. Int J Comput Appl 2012;62(1):10–5.

[8] Fister Jr I, Fister D, Yang XS. A hybrid bat algorithm. Elekrotehnivski Vestn 2013;80(1–2):1–7.

[9] Gandomi AH, Yang XS, Alavi AH, Talatahari S. Bat algorithm for constrained optimization tasks. Neural Comput Appl 2013;22(6):1239–55.

[10] Gandomi AH, Yang XS. Chaotici bat algorithm. J Comput Sci 2013. .

[11] Huang GQ, ZhaoWJ, Lu QQ. Bat algorithm with global convergence for solving large-scale optimization problem. Appl Res Comput 2013;30(5):1323–8. [in Chinese].

[12] Iisufescu M. Finite Markov processes and their applications. Chichester, UK: John Wiley; 1980.

[13] Jamil M, Zepernic H-J, Yang XS. Improved bat algorithm for global optimization. Appl Soft Comput [submitted, Sept 2013].

[14] Khan K, Sahai A. A comparison of BA, GA, PSO, BP and LM for training feed forward neural networks in e-learning context. Int J Intell Sys Appl 2012;4(7):23–9.

[15] Khan K, Sahai A. A fuzzy c-means bi-sonar-based metaheuristic optimization algorithm. Int J Interact Multimedia Art Intell 2012;1(7):26–32.

[16] Komarasamy G, Wahi A. An optimized K-means clustering technique using bat algorithm. Euro J Sci Res 2012;84(2):263–73.

[17] Lin JH, Chou CW, Yang CH, Tsai HL. A chaotic Lévy flight bat algorithm for parameter estimation in nonlinear dynamic biological systems. J Comput Inf Tech 2012;2(2):56–63.

[18] Marichelvam MK, Prabaharam T. A bat algorithm for realistic hybrid flowshop scheduling problems to minimize makespan and mean flow time. ICTACT J Soft Comput 2012;3(1):428–33.

[19] Mishra S, Shaw K, Mishra D. A new meta-heuristic bat inspired classification approach for microarray data. Procedia Tech 2012;4(1):802–6.

[20] Musikapun P, Pongcharoen P. Solvingmulti-stagemulti-machinemulti-product scheduling problem using bat aglorithm. Second international conference on management and artificial intelligence (IPEDR), vol. 35. Singapore: IACSIT Press; 2012. p. 98–102.

[21] Nakamura RYM, Pereira LAM, Costa KA, Rodrigues D, Papa JP, Yang XS. BBA: a binary bat algorithm for feature selection. In: 25th SIBGRAPI conference on graphics, patterns and images (SIBGRAPI), August 22–25, 2012. IEEE Publication; 2012. p. 291–7.

[22] Natarajan A, Subramanian S, Premalatha K. A comparative study of cuckoo search and bat algorithm for Bloom filter optimisation in spam filtering. Int J Bio-Inspired Comput 2012;4(2):89–99.

[23] Parpinelli RS, Lopes HS. New inspirations in swarm intelligence: a survey. Int J BioInspired Comput 2011;3(1):1–16.

[24] Ramesh B, Mohan VCJ, Reddy VCV. Application of bat algorithm for combined economic load and emission dispatch. Int J Electr Eng Telecommun 2013;2(1):1–9.

[25] Reddy VU, Manoj A. Optimal capacitor placement for loss reduction in distribution systems using bat algorithm. IOSR J Eng 2012;2(10):23–7.

[26] Ren ZH, Wang J, Gao YL. The global convergence of particle swarm optimization based on Markov chain. Control Theory Appl 2011;28(4):462–6.

[27] Richardson P. Bats. London: Natural History Museum; 2008.

[28] Tamiru AL, Hashim FM. Application of bat algorithm and fuzzy systems to model exergy changes in a gas turbine. In: Yang XS, editor. Artificial intelligence, evolutionary computing and metaheuristics. Studies in computational intelligence, vol. 427. Heidelberg, Germany: Springer; 2013. p. 685–719.

[29] Tsai PW, Pan JS, Liao BY, Tsai MJ, Istanda V. Bat algorithm inspired algorithm for solving numerical optimization problems. Appl Mech Mater 2011;148–149(1):134–7.

[30] Wang GG, Guo LH, Duan H, Liu L, Wang HQ. A bat algorithm with mutation for UCAV path planning. Sci World J 2012. Available from: .

[31] Wang GG, Guo LH. A novel hybrid bat algorithm with harmony search for global numerical optimization. J Appl Math 2013. Available from: .

[32] Yang XS. A new metaheuristic bat-inspired algorithm. In: Cruz C, González JR, Pelta DA, Terrazas G, editors. Nature inspired cooperative strategies for optimization (NISCO 2010). Studies in computational intelligence. Berlin, Germany: Springer; 2010. p. 65–74.

[33] Yang XS. Bat algorithm for multi-objective optimisation. Int J Bio-Inspired Comput 2011;3(5):267–74.

[34] Yang XS. Bat algorithm and cuckoo search: a tutorial. In: Yang XS, editor. Artificial intelligence, evolutionary computing and metaheuristics. Studies in computational intelligence, vol. 427; 2013. p. 421–34.

[35] Yang XS, Cui ZH, Xiao RB, Gandomi AH, Karamanoglu M. Swarm intelligence and bio-inpsired computation: theory and applications. London: Elsevier; 2013.

[36] Yang XS, Gandomi AH. Bat algorithm: a novel approach for global engineering optimization. Eng Comput 2012;29(5):464–83.

[37] Yang XS, Karamanoglu M, Fong S. Bat aglorithm for topology optimization in microelectronic applications. In: IEEE international conference on future generation communication technology (FGCT2012). London, UK: British Computer Society; 2012. p. 150–5. December 12–14.

[38] Yang XS. Bat algorithm: literature review and applications. Int J Bio-Inspired Comput 2013;5(3):141–9

本文翻译自 Yang X S. Nature-inspired optimization algorithms[M]. Elsevier, 2014. 有删节