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,算法结束;否则跳到引领蜂的阶段