优化算法——人工蜂群算法(ABC).doc

优化算法——人工蜂群算法(ABC).doc

ID:52614413

大小:245.76 KB

页数:12页

时间:2020-03-29

优化算法——人工蜂群算法(ABC).doc_第1页
优化算法——人工蜂群算法(ABC).doc_第2页
优化算法——人工蜂群算法(ABC).doc_第3页
优化算法——人工蜂群算法(ABC).doc_第4页
优化算法——人工蜂群算法(ABC).doc_第5页
资源描述:

《优化算法——人工蜂群算法(ABC).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、优化算法——人工蜂群算法(ABC)一、人工蜂群算法的介绍  手机微信关注公众号ID:datadw学习数据挖掘,研究大数据,关注你想了解的,分享你需要的。人工蜂群算法(ArtificialBeeColony,ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜行为,蜜蜂根据各自的分工进行不同的活动,并实现蜂群信息的共享和交流,从而找到问题的最优解。人工蜂群算法属于群智能算法的一种。二、人工蜂群算法的原理  1、原理    标准的ABC算法通过模拟实际蜜蜂的采蜜机制将

2、人工蜂群分为3类:采蜜蜂、观察蜂和侦察蜂。整个蜂群的目标是寻找花蜜量最大的蜜源。在标准的ABC算法中,采蜜蜂利用先前的蜜源信息寻找新的蜜源并与观察蜂分享蜜源信息;观察蜂在蜂房中等待并依据采蜜蜂分享的信息寻找新的蜜源;侦查蜂的任务是寻找一个新的有价值的蜜源,它们在蜂房附近随机地寻找蜜源。    假设问题的解空间是维的,采蜜蜂与观察蜂的个数都是,采蜜蜂的个数或观察蜂的个数与蜜源的数量相等。则标准的ABC算法将优化问题的求解过程看成是在维搜索空间中进行搜索。每个蜜源的位置代表问题的一个可能解,蜜源的花蜜量对应于相应的解的适应

3、度。一个采蜜蜂与一个蜜源是相对应的。与第个蜜源相对应的采蜜蜂依据如下公式寻找新的蜜源:其中,,,是区间上的随机数,。标准的ABC算法将新生成的可能解与原来的解作比较,并采用贪婪选择策略保留较好的解。每一个观察蜂依据概率选择一个蜜源,概率公式为其中,是可能解的适应值。对于被选择的蜜源,观察蜂根据上面概率公式搜寻新的可能解。当所有的采蜜蜂和观察蜂都搜索完整个搜索空间时,如果一个蜜源的适应值在给定的步骤内(定义为控制参数“limit”)没有被提高,则丢弃该蜜源,而与该蜜源相对应的采蜜蜂变成侦查蜂,侦查蜂通过已下公式搜索新的可

4、能解。其中,是区间上的随机数,和是第维的下界和上界。  2、流程·初始化;·重复以下过程:o将采蜜蜂与蜜源一一对应,根据上面第一个公式更新蜜源信息,同时确定蜜源的花蜜量;o观察蜂根据采蜜蜂所提供的信息采用一定的选择策略选择蜜源,根据第一个公式更新蜜源信息,同时确定蜜源的花蜜量;o确定侦查蜂,并根据第三个公式寻找新的蜜源;o记忆迄今为止最好的蜜源;·判断终止条件是否成立;三、人工蜂群算法用于求解函数优化问题  对于函数其中。代码:[cpp] viewplaincopy1.#include  2.#in

5、clude  3.#include  4.#include  5.#include  6.#include  7.using namespace std;  8.  9.const int NP=40;//种群的规模,采蜜蜂+观察蜂  10.const int FoodNumber=NP/2;//食物的数量,为采蜜蜂的数量  11.const int limit=20;//限度,超过这个限度没有更新采蜜蜂变成侦查蜂  12.const

6、 int maxCycle=10000;//停止条件  13.  14./*****函数的特定参数*****/  15.const int D=2;//函数的参数个数  16.const double lb=-100;//函数的下界   17.const double ub=100;//函数的上界  18.  1.double result[maxCycle]={0};  2.  3./*****种群的定义****/  4.struct BeeGroup  5.{  6.    double code[D];//函数的

7、维数  7.    double trueFit;//记录真实的最小值  8.    double fitness;  9.    double rfitness;//相对适应值比例  10.    int trail;//表示实验的次数,用于与limit作比较  11.}Bee[FoodNumber];  12.  13.BeeGroup NectarSource[FoodNumber];//蜜源,注意:一切的修改都是针对蜜源而言的  14.BeeGroup EmployedBee[FoodNumber];//采蜜蜂

8、  15.BeeGroup OnLooker[FoodNumber];//观察蜂  16.BeeGroup BestSource;//记录最好蜜源  17.  18./*****函数的声明*****/  19.double random(double, double);//产生区间上的随机数  20.void initilize(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。