本发明涉及粒子群算法设计领域,特别是一种基于讨论机制的混沌粒子群算法。
背景技术
1995年,j.kennedy和r.c.eberhart在ieee国际会议上首次提出粒子群优化算法(pso)。粒子群算法是一种仿生物的群智能算法,通过模拟鸟群寻找食物时的一些特性,从而提出了一种全局随机搜索算法。
粒子群算法收敛速度快,参数变量设置简单且便捷。一度成为许许多多研究者们研究应用的热门,用于解决参数优化,神经网络,模式识别等理论问题和设备监测,电力系统,工业控制等工程问题。粒子群算法也有不足之处:虽然收敛速度快,但是收敛精度却下降了。并且容易陷入局部最优,出现早熟。因此,研究者们往往会改进这些缺陷后,再应用于实际背景中。yang等人提出了一种结合数据挖掘方法的混沌粒子群算法(cpso),用于暂态稳定预防控制。lig等人提出了一个由粒子群优化的bp神经网络(bpnn-pso),用来预测试压缩灰分凝聚流化床气化炉中的气体组成,产气量,合成气的低热值和煤气化的气化温度。lilj等人提出了粒子群优化技术的混合输入输出方案(pshio)来检索全局最优相位信息,可以应用于基于傅立叶光谱的图像恢复技术。yangg等人将粒子群算法(pso)与powell算法相结合生成新算法ppso,用来确定雷电通道基电流函数的参数。
技术实现要素:
有鉴于此,本发明的目的是提出一种基于讨论机制的混沌粒子群算法,能够跳出局部最优,并且提高收敛精度。
本发明采用以下方案实现:一种基于讨论机制的混沌粒子群算法,包括以下步骤:
步骤s1:初始化种群,采用双种群,对一半种群进行随机生成,另一半种群进行混沌logistic产生;
步骤s2:根据设定的目标函数,计算每个粒子的适应度值,并随机生成粒子的速度;
步骤s3:保存每个粒子的个体最优值,并更新粒子群的全局最优值;
步骤s4:更新粒子的速度与位置:
步骤s5:扩大种群的规模,并对每个达到预设条件的粒子进行讨论,在扩大种群规模的每一步中都更新每个粒子的个体最优值与粒子群的全局最优值;
步骤s6:判断是否达到最大迭代次数或者预设的精度范围,若是,则结束算法,否则,返回步骤s2。
进一步地,步骤s1中,采用混沌logistic产生的种群采用下式产生混沌序列:
xk+1=μxk(1-xk);
式中,k表示产生混沌序列的迭代次数,μ表示控制混沌的参数;当μ确定时,初始值x0的取值范围在0-1之间,并可以得到一组序列x1,x2,...,xk。
进一步地,μ的取值为4,此时序列处于完全混沌状态。
进一步地,步骤s4中,分别采用以下两个公式来更新粒子的速度与位置:
vid=w·vid+c1·rand()·(pid-xid)+c2·rand()·(pgd-xid);
xid=xid+vid;
式中,vid为粒子速度,xid为粒子位置,c1与c2为影响因子,pid为个体最优值,pgd为全局最优值,rand()是0-1之间的随机数。
进一步地,所述步骤s5具体包括以下步骤:
步骤s51:对每个粒子,判断个体最优值pid为重复值的次数是否达到预设的上限,若达到,则将具有pid重复值的个体与其他个体比较,替换且保留较优粒子;
步骤s52:判断随机初始化种群的最优个体最优值pid、全局最优值pgd与混沌初始化种群的个体最优值pid、全局最优值pgd分别为重复值的次数是否达到预设的上限,若达到,则采用步骤s1的方式初始化新的种群,扩大种群规模;
步骤s53:随机从两个种群中各自随机选取一个粒子出来,并采用下式讨论产生新的粒子:
inew=νi1+(1-ν)i2;
式中,inew为新的粒子,i1与i2分别为从两个种群中选取出的接受讨论的粒子,v为0-1之间的随机数;重复步骤s53,直至更新次数达到预设值,或者当前inew为重复值的次数达到预设的上限;
步骤s54:对于两个种群的个体最优值pid与全局最优值pgd分别采用以下两个式子进行讨论:
pid=apid1+(1-a)pid2;
pgd=bpgd1+(1-b)pgd2;
其中,pid1、pid2分别为从两个种群中选出的个体最优值,pgd1、pgd2分别为从两个种群中选出的全局最优值,a、b为0-1的随机数;重复步骤s54,直至讨论次数达到预设值或者pid、pgd为重复值的次数达到预设的上限。
与现有技术相比,本发明有以下有益效果:
1、本发明采用混沌初始化与随机初始化的双种群:对一半种群进行随机生成,另一半种群采用混沌logistic映射初始化产生均匀的粒子。利用混沌的遍历性进行搜索使算法跳出局部最优,避免算法早熟。
2、本发明为结合讨论机制的粒子群算法,可以增强算法收敛精度,提高解的质量。
附图说明
图1为本发明实施例的流程示意图。
图2为本发明实施例中采用函数f1在30维度下的粒子收敛曲线示意图。
图3为本发明实施例中采用函数f2在30维度下的粒子收敛曲线示意图。
图4为本发明实施例中采用函数f3在10维度下的粒子收敛曲线示意图。
图5为本发明实施例中采用函数f4在10维度下的粒子收敛曲线示意图。
图6为本发明实施例中采用函数f5在10维度下的粒子收敛曲线示意图。
图7为本发明实施例中采用函数f5在30维度下的粒子收敛曲线示意图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
如图1所示,本实施例提供了一种基于讨论机制的混沌粒子群算法,包括以下步骤:
步骤s1:初始化种群,采用双种群,对一半种群进行随机生成,另一半种群进行混沌logistic产生;
步骤s2:根据设定的目标函数,计算每个粒子的适应度值,并随机生成粒子的速度;
步骤s3:保存每个粒子的个体最优值,并更新粒子群的全局最优值;
步骤s4:更新粒子的速度与位置:
步骤s5:扩大种群的规模,并对每个达到预设条件的粒子进行讨论,在扩大种群规模的每一步中都更新每个粒子的个体最优值与粒子群的全局最优值;
步骤s6:判断是否达到最大迭代次数或者预设的精度范围,若是,则结束算法,否则,返回步骤s2。
在本实施例中,步骤s1中,采用混沌logistic产生的种群采用下式产生混沌序列:
xk+1=μxk(1-xk);
式中,k表示产生混沌序列的迭代次数,μ表示控制混沌的参数;当μ确定时,初始值x0的取值范围在0-1之间,并可以得到一组序列x1,x2,...,xk。
在本实施例中,μ的取值为4,此时序列处于完全混沌状态。
在本实施例中,步骤s4中,分别采用以下两个公式来更新粒子的速度与位置:
vid=w·vid+c1·rand()·(pid-xid)+c2·rand()·(pgd-xid);
xid=xid+vid;
式中,vid为粒子速度,xid为粒子位置,c1与c2为影响因子,pid为个体最优值,pgd为全局最优值,rand()是0-1之间的随机数。
在本实施例中,所述步骤s5具体包括以下步骤:
步骤s51:对每个粒子,判断个体最优值pid为重复值的次数是否达到预设的上限,若达到,则将具有pid重复值的个体与其他个体比较,替换且保留较优粒子;
步骤s52:判断随机初始化种群的最优个体最优值pid、全局最优值pgd与混沌初始化种群的个体最优值pid、全局最优值pgd分别为重复值的次数是否达到预设的上限,若达到,则采用步骤s1的方式初始化新的种群,扩大种群规模;
步骤s53:随机从两个种群中各自随机选取一个粒子出来,并采用下式讨论产生新的粒子:
inew=νi1+(1-ν)i2;
式中,inew为新的粒子,i1与i2分别为从两个种群中选取出的接受讨论的粒子,v为0-1之间的随机数;重复步骤s53,直至更新次数达到预设值,或者当前inew为重复值的次数达到预设的上限;
步骤s54:对于两个种群的个体最优值pid与全局最优值pgd分别采用以下两个式子进行讨论:
pid=apid1+(1-a)pid2;
pgd=bpgd1+(1-b)pgd2;
其中,pid1、pid2分别为从两个种群中选出的个体最优值,pgd1、pgd2分别为从两个种群中选出的全局最优值,a、b为0-1的随机数;重复步骤s54,直至讨论次数达到预设值或者pid、pgd为重复值的次数达到预设的上限。
表1为本实施例所采用的测试函数列表。
表1
本实施例分别对上述5种函数进行了测试,并分别采用3种算法来来进行对比,具体如表2所示。
表2
其中,dmc-pso为本发明实施例所采用的算法,由上表可以看出,本发明实施例所采用的算法收敛精度高,其中多个函数的结果都收敛到了全局最优解0。
图2至图7分别为在不同维度下的粒子收敛曲线,由图2至图7可以看出,本发明实施例所采用的算法收敛速度快,其中图4和图6达到重复次数上限有进行种群扩大。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。