蜂群算法

这是我在百度空间里面写的文章,很久了,现在搬家搬到这边来。

蜂群算法

Bee colony algorithms
蜂群算法的分类(基于繁殖行为的算法、蜜蜂交配优化算法、蜜蜂进化型遗传算法、蜂王算法)

基于采蜜行为的算法(人工蜂群算法(ABC)、虚拟蜜蜂算法、蜂群优化算法)


生物学机理
1、不同角色之间的交流、转换及协作来实现

2、采蜜行为包括蜜源、采蜜蜂与待采蜜蜂

蜂群算法存在的问题
1、参数设置对算法性能影响很大
2、容易陷入局部最优,早熟
3、无理论支持,数学证明
4、并行计算,分布式

5、仅应用在组合优化问题

参数:

蜜源:可能的最优解

角色 (role): 引领蜂 (leader), 侦察蜂 (scouter), 跟随蜂 (follower)
蜜蜂行为 : 搜索 (search) 蜜源 , 为蜜源招募 (recruit), 放弃 (abandon) 蜜源
蜂群参数 : SN( 种群规模 ),maxcycle( 迭代次数 ),limit( 全局和局部搜索能 力 ),n( 邻域规模 ),cycle( 迭代次数变量 )

参数说明:

引领蜂,跟随蜂:加快算法收敛

侦察蜂: 增强算法跳出局部最优的能力
Limit 控制了算法的收敛性,对算法跳出局部最优解有这重要 影响;前期比较小,增强全局搜索能力,后期较小,加快收敛 速度
N 邻域规模 :前期比较大,增强局部搜索能力,后期较小,加 快收敛

算法步骤:

l 初始化
  种群规模 SN 包含引领蜂和观察蜂 , 各取种群数量的一半,初始解数量 FN=SN/2 。
 trail[i] 第 i 个解的实验次数 初始化为 0
 
 


  排序:函数优劣,前 50% 作为引领蜂,后 50% 作为跟随蜂
  适应度:
 


引领蜂阶段
邻域搜索


如果新解优于原先解,则替换,否则不变;

更新 trail[i] ,若大于 limit 值,则抛弃该解 ( 可以用队列进行存储该局部最优解 ) ,同 时,引领蜂角色转化侦察蜂 ,trail[i]=0;
跟随蜂阶段
计算蜜源 Xi 被选择概率 P


选择蜜源后,进行邻域搜索,搜索规则:


贪婪原则,如果该解优于原引领蜂的解,则完成角色互换,跟随蜂转变为

引领蜂,否则不变。

直到所有跟随蜂被分配到蜜源

侦查蜂阶段
随机产生新的解,若优于原先的解,则替代原先局部最优解,侦察蜂转变为 引领蜂,   trail[i]   清零;若不优于原先解,原先解不变;


初始化生成解的方法,随机化方法
一轮算法结束后,最优解被记录,迭代次数 cycle++
若 cycle=maxcycle ,算法结束;否则跳到引领 蜂的阶段


  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值