翻译自D.Karaboga, B.Basturk,On the performanceof artificial bee colony(ABC)algorithm, Applied Soft Computing 8(2008) 687-697
人工蜂群算法的性能(performance)
摘要:人工蜂群算法是基于蜜蜂群体的特定智能行为的最优化算法。比较了人工蜂群算法、差分进化算法(differential evolution)、粒子群算法(PSO)和进化算法(EA)来解决多维数值问题。ABC算法的模拟结果比上述几个算法更好,并且能够高效地用于解决多维工程问题。
1、介绍
进化算法是工人的最优化算法,能够找到数值问题的近似解路径。但是并不能在合理计算时间内找到最佳解路径。一种最近新发表的进化算法就是差分进化算法。差分进化算法已经计划用来克服遗传算法在局部搜索能力方面的不足。遗传算法和差分进化算法最大的不同就是他们实施的算子选择selection operation不同。
遗传算法中,一个解被选择的机会主要依赖于解的适应度函数。在差分进化算法中,所有的解都有相同的机会被选为下一代,也就是它的概率和适应度无关。在使用自适应变异和交叉变异之后,新的解和他们的父代一起竞争为下一代的算子。换句话说,一个贪心的计划被应用于选择他们的下一代上。有自适应能力的变异操作、交叉和贪心的使用,是的差分进化算法具有更好的收敛速度。除了他的简介和灵活性,差分进化算法也并不像二分遗传算法那样,面临任何Hamming Cliff 问题。因此差分进化算法受到了广泛的关注,并且已经被应用于解决实际问题中。
近年来,群体智能已经成为了很多相关领域科研人员的研究方向。群体智能被定义为:“被社会性的昆虫群体或者是其他社会性动物的聚集性行为所启发的,尝试去设计算法或分布式的问题解决策略”——Bonabeau。Bonabeau关注了他们在只在社会性昆虫的上观点,例如白蚁、蜜蜂、黄蜂和一切其他的蚁类物种。但是,群体这个名词被更普遍用来值得是“受限制的互相之间有影响作用的个体(agents and individuals)聚集行为”。经典的群体例子是:围绕蜂巢的蜜蜂群体,然而这个类比(metaphor)可以使用一个相似的构架扩展其他系统中去。例如,一个蚁群可以认为是一种成员是蚂蚁的群体,鸟群、人群(就是一堆举例)。
粒子群优化算法最近比较热门,对鸟群或鱼群进行建模。基于群体(population-based)的、概率性的(stochastic)最优化技术,应用于多维最优化非线性函数问题。粒子群体在搜索空间中飞行,寻找问题的解。每一个粒子具有一个位置向量,代表问题的候选解。每个粒子都有一个小的存储他们自己最有位置的存储空间,和通过他相邻的粒子获得的一个全局最好位置。
一些蜜蜂群体智能行为的模型已经被用来解决组合问题(combinatorial)。文献中只有一种基于蜜蜂群体智能行为的数字化最优算法,Yang 发现了一种虚拟蜜蜂算法VBA去解决数值最优化问题。VBA被引入去解决2个参数的最优化问题。在VBA总,一个虚拟蜜蜂群体被生成(generate),并且在空间中随机移动。当他们找到一些目标花蜜的时候,这些蜜蜂互相交流。目标花蜜对应着一些已经编码的函数值(encoded values of function)。最优化问题的解可以通过蜜蜂反应的强弱(intensity)来获得,为了解决多变量数值函数最优化问题,Karaboga已经将“bee swarm algorithm”成为“artificial bee colony algorithm”,和虚拟蜜蜂算法不同,Basturk和Karaboga比较了ABC和遗传算法的性能在他们的论文中。
我的工作中比较了ACB和DE、PSO算法,EA,通过一个著名的测试函数(testfunctions)。当然,ABC算法的性能已经在改变控制参数的值的情况下被分析。第二部分,是真实蜜蜂的行为买欧式,第三部分是人工蜂群算法介绍。第四部分是经验学习(experimental)第五部分是获得的模拟结果的展示。
2、真实蜂群的行为
最小觅食选择模型导致了模型导致了蜜蜂集体智慧的出现。蜂群包括三个重要组成部分:食物源、雇佣蜂、和非雇佣蜂。定义了两个引领模式:招募和放弃蜜源。
(1)食物源:蜜源的价值取决于许多因素,比如他的和蜂巢的距离proximity、丰富程度、能量浓度(concentration浓度,集中),和采蜜(extracting,提取)减少的能量。简单起见,适应度可以用一个数量来藐视
(2)雇佣蜂:被一个特定的、正在开采的食物源关联。他们带着这个特定蜜源的信息——距离、方向、适应度,并且以一种特定的概率来分享这些信息
(3)非雇佣蜂:找蜜源去开采。他们有两种模式:侦查员搜索附近蜜源,旁观者(onlookers)在蜂巢等待,并且从雇佣蜂的信息获得蜜源信息。侦查蜂的平均数量大约是5-10%。
蜜蜂间的信息交换是最重要的集体知识。当检测整个蜂巢,可能区别到一些部分是在整个蜂巢中都是普遍存在的。最重要的部分是跳舞区。食物源质量信息交换发生在跳舞区。八字舞(waggle dance),因为现在所有的丰富眠的信息对于旁观者(onlooker)是可见的,他可以观看所有舞蹈并且选择一个最合适的蜜源。更高质量的蜜源有着更高的被选择的可能性。雇佣蜂有一定概率分享信息,和食物适应度成正比,并且waggle dance持续的时间会更长。因此,招募是和蜜源适应度成正比的。
为了去明白基础的觅食模式Fig1:A、B两个是已发现的食物源,一开始,一个可能的觅食者将会作为一个未雇佣蜂出发。蜜蜂对于蜂巢周围的食物源知之甚少,那现在就有两种可能的选择:
(1)由于内在动力或者外在线索,能够搜索附近的食物
(2)通过观看别的蜜蜂的八字舞被公用
在找到食物源之后,蜜蜂利用自己的能力去记忆位置并且立刻前往开采。因此,蜜蜂将会变成一个“雇佣蜂”。雇佣蜂将会从蜜源处背负花蜜返回蜂巢,并且卸货。在卸下蜂蜜之后,蜜蜂将会有一下选择
(1)放弃蜜源,成为不受约束的蜜蜂
(2)继续采蜜,在离开前,跳招募舞蹈
(3)继续采蜜,不跳招募舞蹈。
很重要的一点是,不是所有蜜蜂会同事开始觅食。实验表明,新的蜜蜂去觅食的几率是和,最终的总的蜜蜂和现在觅食的成比例的。
3、人工蜂群算法
人工蜂群算法中,一共有三种蜜蜂,雇佣蜂(employed bee)、观察蜂(onlooker)、搜索蜂(scouts)。群体中一半是雇佣蜂,另一半是观察蜂。对于每一个食物源,只有一个雇佣蜂,也就是说,雇佣蜂数量和食物源数量相等。在放弃蜜源的蜂会变成搜索蜂。蜜蜂的搜索行为被概括为以下几点:
(1)雇佣蜂在他们记忆中的附近的食物源决定一个食物源
(2)雇佣蜂和观察蜂在蜂巢分享他们的信息,然后观察蜂决定一个食物源
(3)观察蜂选择一个他们自己选择的食物源附近选择一个食物源
(4)放弃蜜源成为搜索蜂的雇佣蜂开始随机搜索一个新的蜜源
主要步骤如下:
初始化
REPEAT
(1)将雇佣蜂移动到食物源,并且决定他们的蜂蜜数量
(2)将观察蜂移动到食物源,并且决定他们的蜂蜜数量
(3)移动搜索蜂去搜索新的蜜源
(4)记忆迄今为止找到的最好的食物源
UNTIL(找到满足需求的解)
每一次的搜索过程都包含三个步骤:
(1)移动雇佣蜂和观察蜂到食物源
(2)计算他们的蜂蜜数量
(3)移动搜索蜂,并且把他们随机放到可能的蜜源(使用轮盘赌法roulette wheel selection)
食物源的蜂蜜数量代表解的质量。
每个群体都有搜索蜂,搜索蜂在搜寻食物的时候,没有任何的导向性。他们首先忙于找到任何种类的食物源。这种搜索是以低的搜索成本和低的平均蜜源质量为特征的,偶然情况下,搜索蜂可以找到丰富的、完全未知的食物源。在人工蜜蜂的例子中,搜索蜂以发现最快可行解作为目标。算法中,雇佣蜂会被选择并且分类为搜索蜂。分类会被“limit”参数控制。如果解在预定义的一个尝试次数中,没有得到提高,食物源将会被放弃,雇佣蜂将会成为搜索蜂。放弃蜜源的实验次数等于limit参数。
在一个强壮的搜索过程中,探索和开采行为必须同时进行。当观察蜂和雇佣蜂在解空间中实施开采行为,搜索蜂控制探索行为。在真是蜜蜂行为中,招募率代表一个多快蜜蜂群体能搞找到并开采新发现蜜源的的估计值。虚拟招募将会使用类似的速度值,用不同优化问题中的可行解或者是优质解代替。蜜蜂群体的生存和进化依赖于快速发现和有效使用食物源。相似的工程问题的成功解,也会被类似地用相对快速发现于食物源。尤其是需要实时解决的问题。
作为其他的社会性觅食者,蜜蜂搜索食物是按照最大化E/F的比例进行的。E是获得的能量,T是觅食花费的时间。在蜜蜂群体中,E是和蜜源蜂蜜数量成比例的。蜜蜂群体最大化蜂蜜总量。
θi是蜜源位置,F(θi)是位于θi的蜂蜜数量,F(θi)决定了观察蜂选取蜜源的概率,且成正比。观察蜂选择蜜源的概率为:Pi= ,在观看舞蹈后,观察蜂根据这个概率和一些视觉信息,前往 附近的位置采蜜。这个位置将会被如此计算:
是一个随机函数,用于找到一个位于θi位置附近的更好的蜜源。代表搜寻步长,如果在步长内的F(θi)值大于原来的值,那么 将会作为新的位置,否则 将会保持不变。随着搜索的进行,步长将会越来越小,越来越逼近解。
如果 在limit次搜索内始终没有被提高,那么 将会被放弃。雇佣蜂也会随之变成搜索蜂。在找到新的蜜源的时候,他的位置也会变成 。
E(θi)和F(θi)成正比
P(c) = {θi (c)|i = 1…S} c代表循环次数,S代表蜜源数量,P(c)代表蜜源被蜜蜂访问的数量。
4、实验
为了去评价ABC算法,一些基准函数差分进化算法(DE)、粒子群优化算法(PSO)、进化算法(EA)……就是用一些基准函数去测量这些算法的好坏。