关于蜂群算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于蜂群算法
人工蜂群算法,俗称为ABC算法。其实用的并不算多,而且本身这个算法的感觉就像是AFSA 人工鱼群算法与ACA也就是蚁群算法的混合。
0 引言
人工蜂群算法是基于蜜蜂群体的特定智能行为的最优化算法。比较了人工蜂群算法、差分进化算法(differential evolution)、粒子群算法(PSO)和进化算法(EA)来解决多维数值问题。ABC算法的模拟结果比上述几个算法更好,并且能够高效地用于解决多维工程问题。
不过这个算法也挺吃具体用来训练的数据集的,不能绝对保证一定会比上述的算法效果好
1 扼要介绍
进化算法是工人的最优化算法,能够找到数值问题的近似解路径。进行算法的优化越来越成为常规操作,可能是从算法的根本上进行创新,这个往往难度较大,大部分人都是使用第三方算法对于原本的算法或者是其中的一部分进行某些优化,这其实就算是一个进步了。当然了,如果对于某个算法进行某些方面的升级,可能这个算法也就不能算法原版的算法了,就好像是fate stay night与魔法使之夜的关系,根基相似,作者为同一个人,但是实现的人员就不同,更不必说流程不同,因此这两个根本就不能算一个东西,最多算是同根生。
但是并不能在合理计算时间内找到最佳解路径。一种最近新发表的进化算法就是差分进化算法。差分进化算法已经计划用来克服遗传算法在局部搜索能力方面的不足。遗传算法和差分进化算法最大的不同就是他们实施的算子选择selection operation不同。
遗传算法中,一个解被选择的机会主要依赖于解的适应度函数。这其实也是这类算法的一个顽疾,那就是这个适应度函数到底应该怎么确定,按照王小川老师在他的书中的说法,那些如果最终的需求是进行函数的取值的最终的拟定的,倒可以在较多的场合之下把适应度函数设定为待拟定的函数的取值的倒数,不过如果是具有实际函数的相关问题,那就没有固定说法了,大部分拟定为某个样本的数值与cluster中的总mean的差的平方求和的倒数,不过也有不能满足要求的时候。
在差分进化算法中,所有的解都有相同的机会被选为下一代,也就是它的概率和适应度无关。在使用自适应变异和交叉变异之后,新的解和他们的父代一起竞争为下一代的算子。换句话说,一个贪心的计划被应用于选择他们的下一代上。有自适应能力的变异操作、交叉和贪心的使用,这种情况下排除极小概率之下的突然变异的恶性影响,大部分时候差分进化算法具有更好的收敛速度。除了他的简便和灵活性,差分进化算法也并不像二分遗传算法那样,面临任何Hamming Cliff 问题。因此差分进化算法受到了广泛的关注,并且已经被应用于解决实际问题中。
近年来,群体智能已经成为了很多相关领域科研人员的研究方向。群体智能被定义为:“被社会性的昆虫群体或者是其他社会性动物的聚集性行为所启发的,尝试去设计算法或分布式的问题解决策略”——Bonabeau。感觉这个年代仿生学已经无孔不入了。
Bonabeau关注了他们在只在社会性昆虫的上观点,例如白蚁、蜜蜂、黄蜂和一切其他的蚁
类物种。但是,群体这个名词被更普遍用来值得是“受限制的互相之间有影响作用的个体(agents and individuals)聚集行为”。经典的群体例子是:围绕蜂巢的蜜蜂群体,然而这个类比(metaphor)可以使用一个相似的构架扩展其他系统中去。例如,一个蚁群可以认为是一种成员是蚂蚁的群体,鸟群、人群(就是一堆举例)。ACA蚁群算法如果熟悉它会发现其实它很多的设定与AFSA十分相似。
粒子群算法的出镜率明显要比利用仿生学的原理进行改编的算法的出镜率要高。
粒子群优化算法最近比较热门,对鸟群或鱼群进行建模。基于群体(population-based)的、概率性的(stochastic)最优化技术,应用于多维最优化非线性函数问题。粒子群体在搜索空间中飞行,寻找问题的解。每一个粒子具有一个位置向量,代表问题的候选解。每个粒子都有一个小的存储他们自己最有位置的存储空间,和通过他相邻的粒子获得的一个全局最好位置。其实关于候选解,在不同的模型中也有比较多的不同说法,核心思想大体相似。
生物学中的某些现象应用到机器学习中的例子很多,比较著名的有基于“物竞天择适者生存”的遗传算法,它应用的还算广泛,北京航空航天大学的王小川在他的书中也花了3章的篇幅取说明这个算法的应用。后来也有了蚁群算法以及AFSA或者是其变种的萤火虫算法等。
后来又有机器学习的前辈们突发奇想,他们针对蜜蜂也发现了一些它们的生长规律与生活习性,大受启发。他们发现一些蜜蜂群体智能行为的模型已经被用来解决组合问题(combinatorial)。文献中只有一种基于蜜蜂群体智能行为的数字化最优算法,Yang 发现了一种虚拟蜜蜂算法VBA去解决数值最优化问题。VBA被引入去解决2个参数的最优化问题。在VBA中,一个虚拟蜜蜂群体被生成(generate),并且在空间中随机移动。当他们找到一些目标花蜜的时候,这些蜜蜂互相交流。目标花蜜对应着一些已经编码的函数值(encoded values of function)。最优化问题的解可以通过蜜蜂反应的强弱(intensity)来获得,为了解决多变量数值函数最优化问题,Karaboga已经将“bee swarm algorithm”成为“artificial bee colony algorithm”,和虚拟蜜蜂算法不同,Basturk和Karaboga比较了ABC和遗传算法的性能在他们的论文中。这个反应花蜜的强弱程度的函数其实十分类似ACA中的营养素函数。工作中比较了ACB和DE、PSO算法,EA,通过一个著名的测试函数(testfunctions)。当然,ABC算法的性能已经在改变控制参数的值的情况下被分析。第二部分,是真实蜜蜂的行为买欧式,第三部分是人工蜂群算法介绍。第四部分是经验学习(experimental)第五部分是获得的模拟结果的展示。
2 蜜蜂的真实行为
其实这里说明蜜蜂的真实的行为,侧重点并不在于它们的生物学或者是生态学意义,而是便于快速的仿真与建模。
最小觅食选择模型导致了模型导致了蜜蜂集体智慧的出现。蜂群包括三个重要组成部分:食物源、雇佣蜂、和非雇佣蜂。定义了两个引领模式:招募和放弃蜜源。
(1)食物源:蜜源的价值取决于许多因素,比如他的和蜂巢的距离proximity、丰富程度、能量浓度(concentration浓度,集中),和采蜜(extracting,提取)减少的能量。简单起见,适应度可以用一个数量来藐视。感觉完全可以类比ACA算法中的营养素函数取理解,在ACA 中也是使得样本(或者是物种)最终也是朝着营养素函数搞的区域移动,这样的话cluster 的距离也会逐渐的减小,经过一定次数的迭代之后也会变得更为易于分类。
(2)雇佣蜂:被一个特定的、正在开采的食物源关联。他们带着这个特定蜜源的信息——距离、方向、适应度,并且以一种特定的概率来分享这些信息。用来分享信息的地方在蜂群算法中竟然也叫公告板,这个说法与ACA中的说法完全相同。都是用来表示“探路”“开视野”的这波样本到了什么样的程度,这个具体的程度使用一定的函数或者是中间量的参数表