优化算法——人工蜂群算法ABC
优化算法——人工蜂群算法ABC
优化算法——人工蜂群算法ABC
优化算法-—人工蜂群算法(ABC)
一、人工蜂群算法的介绍
手机微信关注公众号ID:datadw 学习数据挖掘,研究大数据,关注你想了解的,(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜行为,蜜蜂根据各自的分工进行不同的活动,并实现蜂群信息的共享和交流,.
二、人工蜂群算法的原理
1、原理
标准的ABC算法通过模拟实际蜜蜂的采蜜机制将人工蜂群分为3类: 采蜜蜂、观察蜂和侦察蜂。整个蜂群的目标是寻找花蜜量最大的蜜源。在标准的ABC算法中,采蜜蜂利用先前的蜜源信息寻找新的蜜源并与观察蜂分享蜜源信息;观察蜂在蜂房中等待并依据采蜜蜂分享的信息寻找新的蜜源;侦查蜂的任务是寻找一个新的有价值的蜜源,它们在蜂房附近随机地寻找蜜源.
假设问题的解空间是维的,采蜜蜂与观察蜂的个数都是,采蜜蜂的个数或观察蜂的个数与蜜源的数量相等.,蜜源的花蜜量对应于相应的解的适应度。一个采蜜蜂与一个蜜源是相对应的。与第个蜜源相对应的采蜜蜂依据如下公式寻找新的蜜源:
优化算法——人工蜂群算法ABC
优化算法——人工蜂群算法ABC
优化算法——人工蜂群算法ABC
其中,,,是区间上的随机数,.标准的ABC算法将新生成的可能解与原来的解作比较,并采用贪婪选择策略保留较好的解。每一个观察蜂依据概率选择一个蜜源,概率公式为
其中,,,如果一个蜜源的适应值在给定的步骤内(定义为控制参数“limit”) 没有被提高, 则丢弃该蜜源,而与该蜜源相对应的采蜜蜂变成侦查蜂,侦查蜂通过已下公式搜索新的可能解。
其中,是区间上的随机数,和是第维的下界和上界。
2、流程
初始化;
重复以下过程:
将采蜜蜂与蜜源一一对应,根据上面第一个公式更新蜜源信息,同时确定蜜源的花蜜量;
观察蜂根据采蜜蜂所提供的信息采用一定的选择策略选择蜜源,根据第一个公式更新蜜源信息,同时确定蜜源的花蜜量;
确定侦查蜂,并根据第三个公式寻找新的蜜源;
记忆迄今为止最好的蜜源;
判断终止条件是否成立;
优化算法——人工蜂群算法ABC
优化算法——人工蜂群算法ABC
优化算法——人工蜂群算法ABC
三、人工蜂群算法用于求解函数优化问题
对于函数
其中。
代码:
[cpp] view plaincopy
#include〈iostream>
#include<〉
#include<stdlib。h>
#include<cmath>
#include〈fstream〉
#include<iomanip>
using namespace std;
const int NP=40;//种群的规模,采蜜蜂+观察蜂
const int FoodNumber=NP/2;//食物的数量,为采蜜蜂的数量
const int limit=20;//限度,超过这个限度没有更新采蜜蜂变成侦查蜂
const int maxCycle=10000;//停止条件
/*****函数的特定参数*****/
const int D=2;//函数的参数个数
const double lb=—100;//函数的下界
const double ub=100;//函数的上界
double result[maxCycle]={0};
/*****种群的定义****/
struct BeeGroup
{
double code[D];//函数的维数
double trueFit;//记录真实的最小值
优化算法——人工蜂群算法ABC
优化算法——人工蜂群算法ABC
优化算法——人工蜂群算法ABC
double fitness;
double rfitness;//相对适应值比例
int trail;//表示实验的次数,用于与limit作比较
}Bee[FoodNumber];
优化算法——人工蜂群算法ABC 来自淘豆网m.daumloan.com转载请标明出处.