摘要:介绍了利用量子行为粒子群算法解决非线性方程组的问题。求方程组的解归结为一个最优化问题,当方程组有多个解时,它的适应值函数就是具有多个最优解的多峰函数。为此,引进一种物种形成原理算法,该算法根据群体微粒的相似度并行地分成子群体。每个子群体是围绕一个群体种子而建立的。对每个子群体进行qpso最优搜索,从而保证方程组中每个可能的解都能被搜索到,具有良好的局部寻优特性。对几个重要的测试函数进行仿真实验,结果证明了所用算法可以保证找到方程组所有的解,并且具有很好的精确度。
关键词:粒子群算法; 量子行为粒子群算法; 非线性方程组; 物种形成原理
0引言
方程组的求解是数值代数的基本问题之一,许多自然生活和工程科学的计算问题最后都可归结为求解方程组;因此,对方程组的解法的研究具有重要的意义。方程组可以分为线性方程组和非线性方程组。传统求解方程组的数值解法分为直接法和迭代法。如果考虑时间约束条件,在实时系统中现存的数值解法都可能无法对方程组进行精确求解。为此利用进化算法使用计算机模拟大自然的进化过程,可以求解许多传统数值计算方法难以解决的复杂问题。由于求方程组的解归结为一个最优化问题,当方程组有多个解时,它的适应值函数就是具有多个最优解的多峰函数。求具有多个解的方程组问题就可以转换为对多峰函数寻优的问题。
粒子群(particle swarm optimization,pso)算法和量子行为粒子群(quantum-behaved particle swarm optimization, qpso)算法都属于进化算法,它们都具有群体智能、迭代过程相对简单和收敛速度较快等优点。WWw.133229.CoM其中qpso是全局收敛的而pso却不能保证收敛到全局最优解[1]。本文在qpso算法的基础上引进物种形成原理算法(speciation algorithm),提出了改进的基于物种形成的qpso算法,即sqpso(species-based qpso)算法。在算法中将粒子群动态并行划分为不同的子群。这种物种形成原理算法与li j.等人研究的利用遗传算法实现多峰优化问题[2]相似。它将粒子群系统中的粒子根据相似度进行划分,并将每个子群中拥有局部最优值的粒子作为该子群的种子,而种子的局部最优值被设为该子群的全局最优值。这样就使得每个子群中的粒子都收敛于该子群的局部最优值,而不是全部收敛于粒子系统中的一个全局最优值。因此这样就可以并行地产生子群,从而有效地进行多峰寻优。
1pso算法及带惯性权重的pso算法
pso算法最早是在1995年由美国社会心理学家james kennedy和电气工程师russell eberhart共同提出的[3],源于对鸟群捕食的行为研究。pso中,每个优化问题的解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定它们飞翔的方向和距离。粒子们就追随当前的最优粒子在解空间中搜索。pso初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己。第一个就是粒子本身所找到的最优解。这个解叫做个体极值pbest;另一个极值是整个种群目前找到的最优解,这个极值是全局极值gbest。另外也可以不用整个种群而只是用其中一部分最好粒子的邻居,那么在所有邻居中的极值就是局部极值lbest[4,5]。在找到这两个最优值时, 粒子根据如下的公式来更新自己的速度和新的位置。
2qpso算法
pso是基于种群的进化搜索技术,但是所有基本的和改进的pso算法不能保证算法的全局收敛[1],因为pso的进化方程式使所有粒子在一个有限的样本空间中搜索。根据粒子群的基本收敛性质,受量子物理基本理论的启发,本文提出了一种新的能保证全局收敛的粒子群算法——qpso算法[7,8]是对整个pso算法进化搜索策略的改变,并且进化方程中不需要速度向量,进化方程的形式更简单、参数更少且更容易控制。qpso算法在搜索能力上优于所有已开发的pso算法。
在qpso算法中,粒子的状态只需用位置向量来描述,并且算法中只有一个收缩扩张系数β,对这个参数的选择和控制是非常重要的,它关系到整个算法的收敛性能。
3方程组的适应值函数
为了求方程组,通常可以将求解的适应值函数定义为
4物种形成原理算法
方程组具有多个解时,适应值函数就是具有多个最优值的多峰函数。为了实现对多峰函数寻优,引进一种物种形成原理算法。这个算法将粒子群系统中相似的微粒并行地划分成子群体,一个子群就是一类具有相似特点的粒子集合。每个子群体中的粒子都围绕在本群体中具有最优适应值的粒子周围,该粒子称为种子(seed)。利用两个微粒间的欧氏距离来判断它们之间的相似程度,距离越远,则两个微粒间的相似度越低。
采用li j.等人介绍的方法[2]确定一个子群种子的算法。每次迭代都使用这种算法后,就可以为不同的子群确立各自的种子,然后分别将种子的局部最优值设为该子群的全局最优值。确定种子的算法流程如下:
5sqpso和species-based pso(spso)算法
一旦确定好每个子群的种子后,在每个子群中,种子的最优值就是同一子群中其他粒子的全局最优值,这样sqpso算法可以表示为:
(1)初始化种群的每个粒子的位置向量;