发明内容
本发明所要解决的技术问题是:提供一种基于改进ABC算法与DE变异策略的自适应聚类方法,通过改进ABC的变异策略,并增加了自适应机制,在一定程度上解决了容易陷入局部最优的缺点。
本发明为解决上述技术问题采用以下技术方案:
一种基于改进ABC算法与DE变异策略的自适应聚类方法,包括如下步骤:
步骤1,初始化自适应聚类的各参数,包括:聚类数目、蜜蜂种群数目、开采极限以及最大迭代次数;根据聚类数目随机对待聚类样本进行聚类划分,且聚类划分次数等于蜜蜂种群数目,得到蜜蜂种群数目的聚类划分;计算各聚类划分的适应度,并找出最优适应度及其对应的聚类划分;
步骤2,对于步骤1得到的聚类划分,从第一个聚类划分开始,采用变异和交叉两个过程产生新的聚类划分,计算新的聚类划分的适应度,并与当前最优适应度比较,若新的适应度优于当前最优适应度,则用新的聚类划分替换第一个聚类划分,且新的聚类划分的开采次数置为0,否则,第一个聚类划分的开采次数加1;重复上述过程,直至最后一个聚类划分结束;
步骤3,对于步骤2迭代之后的聚类划分,计算各聚类划分的概率值,计算公式为prob=(0.9*Fitness/max(Fitness))+0.1,其中,prob表示各聚类划分的概率值,Fitness表示当前计算的聚类划分的适应度,max(Fitness)表示迭代之后的聚类划分适应度的最大值;
步骤4,随机产生一0-1之间的随机数,并与步骤3得到的概率值比较,对概率值大于随机数的聚类划分重复步骤2的迭代过程;重复上述过程,且产生随机数的次数等于蜜蜂种群数目;
步骤5,对于步骤4迭代之后的聚类划分,判断各聚类划分的开采次数是否大于开采极限,若大于开采极限,则随机生成一新的聚类划分替换开采次数大于开采极限的聚类划分,且将新的聚类划分的开采次数置为0;
步骤6,重复步骤2-步骤5,直至达到步骤1的最大迭代次数,输出最优的聚类划分。
作为本发明的优选方案,步骤1所述适应度的计算公式为:其中,FV表示适应度,k表示聚类数目,Xi表示待聚类样本,Cj表示第j个聚类的聚类中心,d(Xi,Cj)表示待聚类样本Xi到对应聚类中心Cj的距离。
作为本发明的优选方案,步骤2所述变异的计算公式为: 其中,F为随机数,VG+1表示新的聚类划分,表示当前最优适应度对应的聚类划分,分别表示当前聚类划分中除最优适应度对应的聚类划分之外的随机聚类划分。
作为本发明的优选方案,步骤2所述交叉的计算公式为: 其中,F为随机数,VG+1表示新的聚类划分, 分别表示当前聚类划分中的随机聚类划分。
作为本发明的优选方案,所述F的计算公式为:其中,G表示当前迭代次数,maxCycle表示最大迭代次数。
一种指纹自适应聚类方法,包括如下步骤:
步骤1,获取指纹样本集,并对指纹样本集中的各指纹样本编号;
步骤2,利用如上所述基于改进ABC算法与DE变异策略的自适应聚类方法对指纹样本集进行聚类,得到指纹聚类结果。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1、本发明基于改进ABC算法与DE变异策略的自适应聚类方法,将改进ABC算法与DE结合,重新定义人工蜂位置更新公式,使算法尽可能的跳出局部最优,从而找到全局最优解。
2、本发明基于改进ABC算法与DE变异策略的自适应聚类方法,增加了自适应概率选择机制,扩大了蜂群的搜索范围,从而提高了算法的搜索效率。
3、本发明基于改进ABC算法与DE变异策略的自适应聚类方法,能够增快收敛速度,提高其局部搜索能力,提高后期搜索速度。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
人工蜂群算法受启发于蜜蜂的觅食行为,这种算法主要基于蜜蜂群的觅食行为模型。这个模型包含了三种核心元素:雇佣蜂、非雇佣蜂和食物源,前两者负责搜寻蜂巢附近的富源。这种模型也定义了两种指引模式:富源会反馈积极信号,从而引导更多的蜜蜂来采蜜;贫源会反馈消极信号,会导致放弃这个食物源。这两种行为是自组织的和群智能的。
如图1所示,本发明聚类方法的工作流程如下:
步骤1,初始化各个参数
1.1初始化聚类数目CN,聚类划分种群P,聚类样品开采极限limit,迭代次数maxCycle;
1.2设定最初的聚类划分,这里每个类中的样品都是随机指定的,处于假设情况,并不是最优解;
1.3按照公式(1)计算聚类划分种群P的适应度FV,并找出最优适应度及其对应的聚类划分。
步骤2,雇佣蜂阶段
2.1对于选择的聚类划分,雇佣蜂采用变异和交叉两个过程产生一个新的划分,具体公式如(2)、(3)所示;
2.2计算新的聚类划分的适应度,然后使用贪婪选择比较雇佣蜂的新聚类划分与原聚类划分的适应度比较,如果计算得到的新的适应度得到改善,则雇佣蜂替换为在新位置开采,并将聚类样品开采极限limit置为0。否则,继续在原来的蜜源开采,并将limit的次数加1。
步骤3,采用方法prob=(0.9*Fitness/max(Fitness))+0.1计算选择概率值。原算法使用轮盘赌产生概率,而我们改进后用当前适应度与最大适应度的比值作为参考计算,这样做的好处是可以让选择更加全面,避免过早陷入局部最优。人工蜂会根据概率选择,即概率越优的聚类划分优化的次数也越多,反之,概率最差的聚类划分在一些情况下则考虑舍弃。
步骤4,观察蜂阶段
4.1选择适应度相对较高的聚类划分作为观察蜂开采的位置,适应度越高的聚类划分选择的次数也会越多;
4.2使用公式(2)、(3)产生一个新解,此处也是先变异,后交叉;
4.3计算新的聚类划分的适应度,然后使用贪婪选择比较观察蜂的新聚类划分与原聚类划分的适应度比较,如果计算得到的新的适应度得到改善,则雇佣蜂替换为在新位置开采,并将聚类样品开采极限limit置为0。否则,继续在原来的蜜源开采,并将limit的次数加1。
步骤5,侦察蜂阶段
对于每一个聚类划分,判断其中的样品开采次数是否大于limit,如果大于limit,侦察蜂则会随机生成一个新的划分,并且计算适应度值,将开采次数置为0。否则,继续向下执行。
步骤6,如果满足最大迭代次数,输出最优分类情况,即最优的聚类划分;否则,跳到步骤2。
如图2所示,在ABC中,把待求解的问题的解看作是人工食物,食物越充足,表示解的质量越好,然后一群人工蜜蜂会去搜寻富源,从而找到一个相关问题的比较好的解。为了应用ABC,待求解的问题首先要转化为最优化问题,也就是找到一组参数向量,使得目标函数最小化。人工蜂群就会随机初始化一些解,然后通过迭代,使用邻居搜索的策略来向更好的解靠近,并放弃差的解,逐步提高解的质量。
如图3所示,为本发明实施例中待聚类指纹及其对应编号,图中有8种指纹,现要将其分成4类,基于改进ABC算法与DE变异策略的自适应聚类方法找到的最优解如图4所示。本方法采用欧氏距离,可以发现纹理类似的指纹被归为一类,分到相同的聚类号,且聚类结果全部正确,具体执行过程如下:
步骤1,根据实际问题测试函数初始化各个参数
1.1初始解时各个指纹的聚类编码为(2,1,4,3,1,2,4,3),每个类中的指纹都是随机指定的,这是假设的解,并不是最优解;
1.2采用公式(1)计算初始解的适应度值。
步骤2,雇佣蜂阶段
2.1对于每一个初始解来说,使用公式(2)、(3)产生一个新解,即原单一的搜索操作变成变异和交叉两个过程;
2.2对于每一个指纹,根据人工蜂的聚类中心编码,按照最邻近法则确定该指纹的聚类划分,计算新解的适应度值;
2.3使用贪婪选择比较雇佣蜂的新位置与原来位置的适应度比较,如果该位置的适应度得到改善,则替换为在新位置开采,并将指纹开采次数limit次数置为0。否则,继续在原来的位置开采,并将limit的次数加1。
步骤3,计算选择概率值
采用方法prob=(0.9*Fitness/max(Fitness))+0.1计算选择概率值。
步骤4,观察蜂阶段
4.1使用公式(2),(3)产生一个新解,此处也是先变异,后交叉;
4.2对于每一个指纹,根据人工蜂的聚类中心编码,按照最邻近法则确定该样品的聚类划分,计算新解的适应度值;
4.3使用贪婪选择比较新聚类划分和原聚类划分的适应度值,如果新的聚类划分的值比原聚类划分的值好,则替换;否则继续在原位置开采,并将limit加1。
步骤5,侦察蜂阶段
如果划分的样品limit的次数超出预先设定的开采极限,则放弃该指纹的聚类号,重新产生一个新的聚类号;否则,继续在原位置开采。
步骤6,如果满足最大迭代次数,输出最优的聚类划分;否则,跳到步骤2。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。