人工蜂群算法的性能(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)……就是用一些基准函数去测量这些算法的好坏。

人工蜂群算法性能比较相关推荐

  1. 论文阅读三:基于改进人工蜂群算法的SDN负载均衡策略研究

    名词解释: Artificial Bee Colony Algorithm, ABC:人工蜂群算法 Load balancing algorithm based on improved artific ...

  2. ​【优化求解】基于人工蜂群算法求解无刷直流电机PID控制matlab代码

    1 简介 高精度的精密微位移系统在近代尖端工业生产和科学研究领域内占有极其重要的地位.它广泛应用于航空航天.微型机械制造.超精密加工.医学.生物工程等领域.纳米级位移定位技术已经成为推动科技发展的前进 ...

  3. matlab基于人工蜂群算法的函数优化分析【matlab优化算法十一】

    基于人工蜂群算法的函数优化分析 自然界中的群居昆虫,它们虽然个体结构简单,但是通过个体间的合作却能够表现出极其复杂的行为能力.受这些社会性昆虫群体行为的启发,研宄者通过模拟这些群体的行为提出了群集智能 ...

  4. 【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  5. 文献汇报 基于差分进化的混合人工蜂群算法

    1.研究内容 人工蜂群算法(ABC)和差分进化算法(DE)是两种非常流行和有效的元启发式算法. 存在问题:收敛过早.探索开发不平衡.收敛速度慢. 混合的ABC和DE算法,是一种比以ABC和DE更高效, ...

  6. 【ABC三维路径规划】基于matlab人工蜂群算法无人机三维路径规划【含Matlab源码 021期】

    ⛄一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水 ...

  7. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  8. 人工蜂群算法(Artificial Bee Colony Algorithm,ABC)

    1.人工蜂群算法介绍 人工蜂群算法是模仿蜜蜂群体觅食行为提出的一种优化方法,是集群智能思想的一个具体应用,它的主要特点是不需要了解问题的特殊信息,只需要对问题进行优劣的比较,通过各人工蜂个体的局部寻优 ...

  9. java轮盘赌_java人工蜂群算法求解TSP问题

    初始化: 重复以下过程: 将采蜜蜂与蜜源一一对应,根据上面第一个公式更新蜜源信息,同时确定蜜源的花蜜量: 观察蜂根据采蜜蜂所提供的信息采用一定的选择策略选择蜜源,根据第一个公式更新蜜源信息,同时确定蜜 ...

最新文章

  1. 是否注意过isEmpty 和 isBlank 区别?
  2. [转贴]年薪一万/十万/百万的各样生活
  3. android自定义dialog开源库,android-dialog: 此框架提供五种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。...
  4. centos7每天定时删除备份mysql文件
  5. FastMaskRCNN算法TensorFlow配置,训练
  6. Git之深入解析如何选择修订的版本
  7. 格局打开,带你解锁 prompt 的花式用法
  8. 通过CDN引用jQuery库+jQuery的使用+网页实现计算器的功能
  9. FreeModbus离散量输入
  10. windows下linux下socket编程区别
  11. 503 service unavailable php,503service unavailable错误提示解决方法
  12. QT做的成三棋、打三棋、九连棋、莫里斯九子棋应用程序及其源码
  13. 项目管理软件-禅道-内网部署
  14. sublime html代码自动排版,sublime Text3 如何自动排版代码
  15. 项目管理理论中关于软件项目外包采购管理的探讨
  16. 【1024程序员节】创作创富-对话议题-直播笔记
  17. 2021免费大容量OneDrive + office 365桌面版 (a1 a1p)
  18. 系统非功能需求(质量属性)
  19. 任建新照常去办公室领取工资
  20. c语言学生信息结构体录入文件,C语言—学生信息管理系统

热门文章

  1. 听说你想手机玩扫雷?原生JS扫雷游戏
  2. Redis基本概念和作用
  3. HIVE日期函数大全
  4. Android入门第1天-Android Studio的安装
  5. docker拉取RabbitMq镜像并安装
  6. http://www.baidu.com/cb.php?c=,解析百度搜索结果link?url=参数分析 (全)
  7. python基于PHP+mysql母婴用品销售购物平台
  8. oracle 定期更新状态,Oracle存储过程(定时更新短信状态报告)
  9. [UE4]游戏中服务器切换地图,控制台命令Execute console Command
  10. 物价上涨对普通百姓的影响