粒子群算法介绍
- 格式:pdf
- 大小:125.17 KB
- 文档页数:3
粒子群算法原理粒子群算法(ParticleSwarmOptimization,简称PSO)是一种基于群体智能的启发式算法,它由Ken Kennedy和James Kennedy在1995年发明,其目的是模拟物种在搜寻食物路线的过程。
PSO的思路同于生物群体中存在的社会行为,它根据所有参与计算的粒子(即搜索者)以及它们的历史经验进行搜索,以寻找最优解。
在这里,最优解是指可以满足我们的要求的最佳结果(给定的目标函数的最小值)。
PSO把一个群体看成一组搜索者,每个搜索者搜索有一个动态位置,每一步采用一个较优位置取代先前的位置,称之为粒子。
每个粒子都具有一个当前位置,一个速度,一个粒子最佳位置(全局最佳位置)和一个全局最佳位置(群体最佳位置)。
粒子群算法是一种迭代优化算法,它由以下4个步骤组成:1.始化粒子群:在此步骤中,使用随机算法给每个粒子分配初始位置和速度,通常使用均匀分布。
2.解目标函数:计算每个粒子的位置对应的目标函数值,并记录每个粒子的最佳位置以及群体最佳位置。
3.新粒子位置:根据群体最佳位置和每个粒子的最佳位置,更新每个粒子的位置以及速度,它们的新的位置和速度可以使用如下公式来计算:V(t+1)=V(t)+C1*rand(1)*(Pbest(t)-X(t))+C2*rand(2)*(Gbest(t) -X(t))X(t+1)=X(t)+V(t+1)其中,C1和C2是可调的引力系数,rand(1)和rand(2)是随机数,Pbest(t)和Gbest(t)分别表示每个粒子和群体中最佳位置。
4.复步骤2和3,直到收敛或者达到最大迭代次数。
由于粒子群算法有效而且简单,它已经在许多领域应用,比如多目标优化、复杂系统建模、神经网络训练等。
尽管PSO有许多优点,但它也有一些不足,比如,它可能不能收敛到全局最优解,可能会被局部最优解所困扰。
另外,由于其简单的搜索过程,它的计算速度很快,但是它的搜索效率可能不太高。
【主题】matlab粒子裙算法默认种裙规模【内容】一、介绍matlab粒子裙算法matlab粒子裙算法(Particle Swarm Optimization,简称PSO)是一种启发式优化算法,源自于鸟裙觅食的行为。
PSO算法通过迭代搜索空间中的潜在解,寻找最优解。
其基本思想是模拟鸟裙觅食的行为,在搜索空间中不断调整潜在解的位置,直至找到最优解。
二、 PSO算法的种裙规模在matlab中,PSO算法的种裙规模即为裙体中粒子的数量,它决定了搜索空间的范围和算法的性能。
PSO算法的默认种裙规模为50。
种裙规模的设定直接影响算法的搜索速度和全局最优解的找寻能力。
三、种裙规模的设置原则1. 确定问题的复杂度:种裙规模应根据待解决问题的复杂度来设定。
对于复杂、高维度的问题,适当增加种裙规模有助于提高搜索效率。
2. 计算资源的限制:种裙规模的增加会带来更高的计算开销,因此在资源有限的情况下,需要平衡种裙规模和计算性能。
3. 经验设定:在实际应用中,也可根据经验和实验结果来调整种裙规模,找到最适合问题的设置。
四、调整种裙规模的方法1. 网格搜索法:通过在一定范围内以一定步长遍历种裙规模,评估不同规模下算法的性能和收敛速度,找到最佳的种裙规模。
2. 实验验证法:在实际问题中,通过对不同种裙规模下算法的性能进行实验验证,找到最适合问题的种裙规模。
3. 算法迭代法:根据算法的迭代次数和搜索效果来动态调整种裙规模,逐步优化算法的性能。
五、结语种裙规模是PSO算法中一个重要的参数,它直接关系到算法的搜索效率和性能。
在使用matlab的PSO算法时,合理设置种裙规模对于解决实际问题非常重要。
需要根据问题本身的特点、计算资源的限制以及实际应用情况来进行合理的选择和调整。
希望本文对于matlab粒子裙算法默认种裙规模的设置能够提供一些参考和帮助。
六、种裙规模与算法性能的关系种裙规模是PSO算法中最为关键的参数之一,其大小直接影响算法的搜索效率和全局最优解的寻找能力。
粒子群算法简介粒子群算法是一种常见的优化算法,它以鸟群捕食的过程为模型,通过模拟每个个体在搜索空间中的位置和速度变化,来寻找最优解。
本文将从算法流程、算法优势、应用领域等方面给出详细介绍。
一、算法流程1. 随机初始化群体中每个粒子的位置和速度;2. 评估每个粒子的适应度;3. 根据粒子历史最优位置和全局最优位置,更新粒子速度和位置;4. 重复步骤2、3直到满足停止条件。
粒子群算法的核心在于更新粒子速度和位置,其中位置表示搜索空间中的一个解,速度表示搜索方向和距离。
每个粒子具有自己的历史最优位置,同时全局最优位置则是所有粒子中适应度最优的解。
通过粒子之间的信息共享,使得整个群体能够从多个方向进行搜索,并最终收敛于全局最优解。
二、算法优势粒子群算法具有以下几个优势:1. 算法简单易于实现。
算法设计简单,无需求导和约束,易于编程实现。
2. 全局搜索能力强。
由于粒子之间的信息共享,整个群体具有多种搜索方向,可以有效避免局部最优解问题。
3. 收敛速度较快。
粒子搜索过程中,速度会受历史最优位置和全局最优位置的引导,使得整个群体能够较快向最优解方向靠近。
三、应用领域粒子群算法是一种通用的优化算法,广泛应用于各个领域,包括机器学习、智能控制、模式识别等。
具体应用场景如下:1. 遗传算法的优化问题,例如TSP问题等。
2. 数据挖掘中的聚类分析、神经网络训练等问题。
3. 工业控制、无人机路径规划等实际应用问题。
总之,粒子群算法是一种搜索优化方法,可以为我们解决各种实际应用问题提供帮助。
粒子群算法详解粒子群算法(Particle Swarm Optimization,PSO)是一种模拟鸟群觅食行为的优化算法,通过模拟个体之间的协作和信息共享来寻找最优解。
它是一种全局优化算法,可以应用于各种问题的求解。
粒子群算法的基本思想是通过模拟鸟群的行为来寻找最优解。
在算法中,将待优化问题看作一个多维空间中的搜索问题,将问题的解看作空间中的一个点。
每个解被称为一个粒子,粒子的位置代表当前解的状态,速度代表解的更新方向和速度。
粒子之间通过互相交流信息,以共同寻找最优解。
在粒子群算法中,每个粒子都有自己的位置和速度。
每个粒子根据自身的经验和邻域中最优解的经验来更新自己的速度和位置。
速度的更新由三个因素决定:当前速度、个体最优解和全局最优解。
粒子根据这些因素调整速度和位置,以期望找到更优的解。
通过不断迭代更新,粒子群逐渐收敛于最优解。
粒子群算法的核心是更新速度和位置。
速度的更新公式如下:v(t+1) = w * v(t) + c1 * rand() * (pbest - x(t)) + c2 * rand() * (gbest - x(t))其中,v(t+1)为下一时刻的速度,v(t)为当前速度,w为惯性权重,c1和c2为学习因子,rand()为[0,1]之间的随机数,pbest为个体最优解,gbest为全局最优解,x(t)为当前位置。
位置的更新公式如下:x(t+1) = x(t) + v(t+1)通过调整学习因子和惯性权重,可以影响粒子的搜索能力和收敛速度。
较大的学习因子和较小的惯性权重可以增强粒子的探索能力,但可能导致算法陷入局部最优解;较小的学习因子和较大的惯性权重可以加快算法的收敛速度,但可能导致算法过早收敛。
粒子群算法的优点是简单易实现,收敛速度较快,对于大多数问题都能得到较好的结果。
然而,粒子群算法也存在一些缺点。
首先,算法对于问题的初始解和参数设置较为敏感,不同的初始解和参数可能导致不同的结果。
粒子群算法基本原理粒子群算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化算法,模拟了鸟群或鱼群等生物群体在自然界中求解问题的行为。
粒子群算法是一种无约束优化算法,可以用于求解各种优化问题。
粒子群算法的基本原理是通过模拟粒子在解空间中的过程来寻找最优解。
每个粒子表示了一个潜在的解,其位置和速度表示了解的状态和速度。
整个粒子群可以看作是一个多维解空间中的群体,每个粒子都具有一个解向量和速度向量,通过不断调整速度和位置来寻找最优解。
1.初始化粒子群:根据问题的维度和约束条件,随机初始化粒子的位置和速度。
其中位置表示解向量,速度表示方向和速度。
2.计算粒子适应度:根据问题的定义,计算每个粒子的适应度。
适应度函数根据问题的不同而变化,可以是目标函数的取值或其他综合评价指标。
3.更新粒子速度和位置:通过利用粒子当前的位置、速度和历史最优解来更新粒子的速度和位置。
速度的更新过程包括两部分,第一部分是加速度项,其大小与粒子所处位置与个体最优解、群体最优解的距离有关;第二部分是惯性项,保持原有的速度方向并控制的范围。
位置的更新通过当前位置和速度得到新的位置。
4.更新个体最优解和群体最优解:将每个粒子的适应度与其历史最优解进行比较并更新。
个体最优解是粒子自身到的最优解,群体最优解是所有粒子中的最优解。
5.判断停止条件:根据预定的停止条件判断是否终止算法。
停止条件可以是达到最大迭代次数、适应度值达到一定阈值或范围满足一定条件等。
6.返回最优解:将群体最优解或个体最优解作为最终结果返回。
粒子群算法通过不断地更新粒子的速度和位置,通过粒子之间的信息交流和协作来找到最优解。
在算法的早期阶段,粒子的范围较大,有较高的探索性;随着的进行,粒子逐渐聚集在最优解周围,并逐渐减小范围,增强了局部的能力。
这种全局和局部的结合使得粒子群算法能够更好地求解多峰优化问题。
粒子群算法的优点是简单易实现、全局能力强,对于非线性、非凸性、多峰性问题有很好的适应性。
粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,用于解决优化问题。
下面是粒子群算法的一般步骤:1. 初始化参数:- 定义问题的适应度函数。
- 设置群体规模(粒子数量)和迭代次数。
- 随机初始化每个粒子的位置和速度。
- 设置每个粒子的个体最佳位置和整个群体的全局最佳位置。
2. 迭代优化:- 对于每个粒子:- 根据当前位置和速度更新粒子的新速度。
- 根据新速度更新粒子的新位置。
- 根据新位置计算适应度函数值。
- 更新粒子的个体最佳位置和整个群体的全局最佳位置。
- 结束条件判断:达到预设的迭代次数或满足特定的停止条件。
3. 输出结果:- 输出全局最佳位置对应的解作为优化问题的最优解。
在更新粒子的速度和位置时,通常使用以下公式:速度更新:v(t+1) = w * v(t) + c1 * r1 * (pbest - x(t)) + c2 * r2 * (gbest - x(t))位置更新:x(t+1) = x(t) + v(t+1)其中:- v(t) 是粒子在时间t 的速度。
- x(t) 是粒子在时间t 的位置。
- w 是惯性权重,用于平衡粒子的历史速度和当前速度的影响。
- c1 和c2 是加速因子,控制个体和全局最佳位置对粒子速度的影响。
- r1 和r2 是随机数,用于引入随机性。
- pbest 是粒子的个体最佳位置。
- gbest 是整个群体的全局最佳位置。
以上是粒子群算法的基本步骤,您可以根据具体的优化问题进行调整和扩展。
粒子群算法(1)----粒子群算法简介二、粒子群算法的具体表述上面罗嗦了半天,那些都是科研工作者写论文的语气,不过,PSO的历史就像上面说的那样。
下面通俗的解释PSO算法。
PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO中的粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。
大家也可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。
这个过程我们转化为一个数学问题。
寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。
该函数的图形如下:当x=0.9350-0.9450,达到最大值y=1.3706。
为了得到该函数的最大值,我们在[0,4]之间随机的洒一些点,为了演示,我们放置两个点,并且计算这两个点的函数值,同时给这两个点设置在[0,4]之间的一个速度。
下面这些点就会按照一定的公式更改自己的位置,到达新位置后,再计算这两个点的值,然后再按照一定的公式更新自己的位置。
直到最后在y=1.3706这个点停止自己的更新。
这个过程与粒子群算法作为对照如下:这两个点就是粒子群算法中的粒子。
该函数的最大值就是鸟群中的食物计算两个点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的适应度函数。
更新自己位置的一定公式就是粒子群算法中的位置速度更新公式。
下面演示一下这个算法运行一次的大概过程:第一次初始化第一次更新位置第二次更新位置第21次更新最后的结果(30次迭代)最后所有的点都集中在最大值的地方。
粒子群算法(2)----标准的粒子群算法在上一节的叙述中,唯一没有给大家介绍的就是函数的这些随机的点(粒子)是如何运动的,只是说按照一定的公式更新。
这个公式就是粒子群算法中的位置速度更新公式。
下面就介绍这个公式是什么。
在上一节中我们求取函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。
粒子群算法多维度应用实例全文共四篇示例,供读者参考第一篇示例:粒子群算法(Particle Swarm Optimization,PSO)是一种启发式优化算法,模拟了鸟群、鱼群等群体协作的行为,通过不断调整粒子的位置和速度来搜索最优解。
近年来,粒子群算法在多个领域中得到了广泛应用,特别是在多维度应用方面,展现出了强大的优化性能和较好的收敛速度。
本文将介绍粒子群算法在多维度应用中的实例,并探讨其优势和局限性。
一、多维度优化问题概述二、粒子群算法原理及优化过程粒子群算法是由Kennedy和Eberhart于1995年提出的,其基本思想是模拟鸟群或鱼群等群体在搜索空间中寻找目标的行为。
在粒子群算法中,每个粒子表示一个潜在的解,其位置和速度都会根据其个体最优解和全局最优解而不断更新。
粒子群算法的优化过程如下:(1)初始化粒子群:随机生成一定数量的粒子,并为每个粒子设定初始位置和速度。
(2)评估粒子适应度:计算每个粒子的适应度值,即目标函数的值。
(3)更新粒子速度和位置:根据粒子历史最优解和全局最优解来更新粒子的速度和位置。
(4)重复步骤(2)和(3)直到满足停止条件:当满足一定停止条件时,算法停止,并输出全局最优解。
三、粒子群算法在多维度应用中的实例1. 工程设计优化在工程设计中,往往需要优化多个设计参数以满足多个性能指标。
飞机机翼的设计中需要考虑多个参数,如翼展、翼型、翼厚等。
通过粒子群算法可以有效地搜索这些参数的最优组合,从而使飞机性能达到最佳。
2. 机器学习参数优化在机器学习中,通常需要调整多个超参数(如学习率、正则化系数等)以优化模型的性能。
粒子群算法可以应用于优化这些超参数,从而提高机器学习模型的泛化能力和准确度。
3. 经济模型参数拟合在经济模型中,经常需要通过拟合参数来分析经济现象和预测未来走势。
粒子群算法可以用来调整模型参数,从而使模型更好地拟合实际数据,提高预测准确度。
1. 全局搜索能力强:粒子群算法具有很强的全局搜索能力,能够在高维度空间中搜索到全局最优解。
粒子群算法重要参数粒子群算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化算法,通过模拟鸟群或鱼群等集体行为,寻找最优解。
在使用粒子群算法时,需要设置一些重要的参数,这些参数会影响算法的收敛速度和搜索性能。
本文将介绍粒子群算法的重要参数及其作用。
1. 粒子数量(Number of Particles)粒子数量是指参与搜索的粒子个数。
粒子数量的选择直接影响算法的搜索范围和搜索速度。
一般来说,粒子数量越多,搜索范围越广,但同时也会增加算法的计算复杂度。
因此,选择合适的粒子数量是很重要的。
2. 迭代次数(Number of Iterations)迭代次数是指算法执行的次数。
每一次迭代中,粒子根据自身的速度和经验进行位置更新。
迭代次数的选择会影响算法的搜索精度和计算时间。
一般来说,迭代次数越多,算法收敛的可能性越大,但同时也会增加计算时间。
3. 速度权重参数(Inertia Weight)速度权重参数控制粒子速度的更新。
它的作用是平衡粒子的历史速度和当前速度对位置更新的影响。
较大的权重值能够增加粒子的探索能力,但可能导致粒子在搜索空间中震荡;较小的权重值能够增加粒子的局部搜索能力,但可能导致陷入局部最优解。
因此,选择合适的速度权重参数是很重要的。
4. 个体学习因子(Cognitive Learning Factor)个体学习因子用于调整粒子根据个体经验更新速度的权重。
它决定了粒子在搜索过程中对个体最优解的关注程度。
较大的个体学习因子能够增加粒子的全局搜索能力,但可能导致粒子在搜索空间中震荡;较小的个体学习因子能够增加粒子的局部搜索能力,但可能导致陷入局部最优解。
因此,选择合适的个体学习因子是很重要的。
5. 社会学习因子(Social Learning Factor)社会学习因子用于调整粒子根据群体经验更新速度的权重。
它决定了粒子在搜索过程中对群体最优解的关注程度。
粒子群算法基本流程粒子群算法(Particle Swarm Optimization, PSO)是一种基于自然界群体智能现象的优化算法,常用于解决各种优化问题,如函数优化、组合优化、机器学习等。
本文将详细介绍粒子群算法的基本流程,包括初始化、适应度评价、移动、更新等环节,希望能对读者理解该算法提供一定的帮助。
一、算法介绍粒子群算法最初由Kennedy和Eberhart于1995年提出 [1],其基本思想来源于鸟群觅食行为。
在野外觅食时,鸟群中的鸟会根据所找到的食物数量来确定自己下一步的移动方向。
PSO算法中的“粒子”类似于鸟群中的鸟,它们以个体和群体为导向,通过速度和位置的调整来进行优化搜索。
PSO算法的目标是寻找最优解,通常是最小化或最大化一个函数的值,可表示为:f(x)=\sum_{i=1}^n{f_i(x)}x 是 n 维实数向量,f_i(x) 表示第 i 个函数。
寻找最优解的目标就是在 x 的搜索空间中寻找函数 f(x) 的全局最优解或局部最优解。
二、基本流程粒子群算法的基本流程如下:1. 初始化:随机生成一群粒子,每个粒子的位置和速度都是随机的。
2. 适应度评价:计算每个粒子的适应度值,也就是函数 f(x) 所对应的值,用来表示该粒子所处的位置的优劣程度。
3. 移动:根据当前位置和速度,移动粒子到新的位置。
4. 更新:根据历史上最好的粒子位置和当前最好的粒子位置,更新每个粒子的历史最好位置和当前最好位置,并更新全局最优位置。
5. 终止:当满足一定的终止条件时,停止迭代,并输出最终的粒子位置和最优解。
下文将分别对各环节进行详细介绍。
三、初始化在PSO算法中,粒子的位置和速度都是随机的。
对于每个粒子,需要随机生成一个 n 维实数向量表示其位置,一个同维度的实数向量表示其速度。
可以采用如下方法进行初始化:1. 对于每一个维度,随机生成一个实数范围内的数值,表示该维度上的位置和速度。
2. 在满足约束条件的前提下,生成一个可行解,作为初始化的位置。
粒子群算法原文及解释粒子群优化算法(Particle Swarm Optimization,PSO)是一种模拟鸟群、鱼群等动物社会行为的优化算法。
通过模拟鸟群、鱼群等动物群体中的个体行为,粒子群优化算法能够有效地求解各种优化问题。
本文将从算法原理、算法流程、参数设置、优化问题、实现方式、改进策略、应用领域和性能评价等方面对粒子群优化算法进行详细的介绍。
一、算法原理粒子群优化算法基于群体智能理论,通过模拟鸟群、鱼群等动物群体中的个体行为来寻找最优解。
每个个体被称为一个粒子,它通过跟踪其自身的最优位置和群体的最优位置来更新自己的速度和位置。
粒子的速度和位置更新公式如下:v[i][j] = w * v[i][j] + c1 * rand() * (pbest[i][j] - x[i][j]) + c2 * rand() * (gbest - x[i][j])x[i][j] = x[i][j] + v[i][j]其中,v[i][j]表示粒子i在第j维上的速度,x[i][j]表示粒子i 在第j维上的位置,pbest[i][j]表示粒子i的个体最优位置,gbest 表示全局最优位置,w表示惯性权重,c1和c2表示加速因子,rand()表示随机函数。
二、算法流程粒子群优化算法的基本流程如下:1. 初始化粒子群,随机生成粒子的初始位置和初始速度。
2. 计算每个粒子的适应度值,记录粒子的个体最优位置和全局最优位置。
3. 根据粒子的适应度值更新粒子的速度和位置。
4. 重复步骤2和步骤3,直到满足终止条件(如达到预设的最大迭代次数或全局最优解的变化小于预设阈值)。
三、参数设置粒子群优化算法的参数包括惯性权重w、加速因子c1和c2等。
这些参数对算法的性能和收敛速度有着重要的影响,需要根据具体问题进行调整和优化。
通常需要通过实验来找到合适的参数设置。
四、优化问题粒子群优化算法适用于求解连续的、离散的优化问题。
对于不同的优化问题,需要根据问题的特性和要求来设计合适的粒子和适应度函数。
粒子群算法粒子群算法(Particle Swarm Optimization,PSO)是一种群体智能优化算法,它模拟了鸟群觅食行为中个体在信息交流、合作与竞争中寻找最优解的过程。
粒子群算法在解决优化问题中具有较好的效果,尤其适用于连续优化问题。
粒子群算法的基本思想是模拟粒子在解空间中的移动过程,每个粒子代表一个候选解,粒子的位置表示解的一组参数。
每个粒子都有一个速度向量,表示粒子在解空间中的移动方向和速率。
算法的核心是通过更新粒子的位置和速度来搜索目标函数的最优解。
具体来说,粒子的位置和速度更新通过以下公式计算:$$v_i^{t+1} = w\cdot v_i^{t} + c_1 \cdot rand() \cdot (p_i^{best}-x_i^{t}) + c_2 \cdot rand() \cdot (p_g^{best}-x_i^{t})$$$$x_i^{t+1} = x_i^{t} + v_i^{t+1}$$其中,$v_i^{t}$是粒子$i$在时间$t$的速度,$x_i^{t}$是粒子$i$在时间$t$的位置,$p_i^{best}$是粒子$i$自身经历过的最好位置,$p_g^{best}$是整个种群中经历过的最好位置,$w$是惯性权重,$c_1$和$c_2$是加速度因子,$rand()$是一个0到1的随机数。
粒子群算法的优点在于简单、易于理解和实现,同时具有较好的全局搜索能力。
其收敛速度较快,可以处理多维、非线性和非光滑的优化问题。
另外,粒子群算法有较少的参数需要调节,因此适用于许多实际应用中的优化问题。
粒子群算法的应用领域非常广泛,包括机器学习、数据挖掘、图像处理、模式识别、人工智能等。
例如,在机器学习中,粒子群算法可以应用于神经网络的训练和参数优化;在数据挖掘中,粒子群算法可以用于聚类、分类和关联规则挖掘等任务;在图像处理中,粒子群算法可以用于图像分割、边缘检测和特征提取等;在模式识别中,粒子群算法可以用于目标检测和模式匹配等。
1.介绍:
粒子群算法(Particle Swarm Optimization, PSO)最早是由Eberhart 和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。
设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。
那么找到食物的最优策略是什么呢?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
经过实践证明:全局版本的粒子群算法收敛速度快,但是容易陷入局部最优。
局部版本的粒子群算法收敛速度慢,但是很难陷入局部最优。
现在的粒子群算法大都在收敛速度与摆脱局部最优这两个方面下功夫。
其实这两个方面是矛盾的。
看如何更好的折中了。
粒子群算法主要分为4个大的分支:
(1)标准粒子群算法的变形
在这个分支中,主要是对标准粒子群算法的惯性因子、收敛因子(约束因子)、“认知”部分的c1,“社会”部分的c2进行变化与调节,希望获得好的效果。
惯性因子的原始版本是保持不变的,后来有人提出随着算法迭代的进行,惯性因子需要逐渐减小的思想。
算法开始阶段,大的惯性因子可以是算法不容易陷入局部最优,到算法的后期,小的惯性因子可以使收敛速度加快,使收敛更加平稳,不至于出现振荡现象。
经过本人测试,动态的减小惯性因子w,的确可以使算法更加稳定,效果比较好。
但是递减惯性因子采用什么样的方法呢?人们首先想到的是线型递减,这种策略的确很好,但是是不是最优的呢?于是有人对递减的策略作了研究,研究结果指出:线型函数的递减优于凸函数的递减策略,但是凹函数的递减策略又优于线型的递减,经过本人测试,实验结果基本符合这个结论,但是效果不是很明显。
对于收敛因子,经过证明如果收敛因子取0.729,可以确保算法的收敛,但是不能保证算法收敛到全局最优,经过本人测试,取收敛因子为0.729效果较好。
对于社会与认知的系数c2,c1也有人提出:c1先大后小,而c2先小后大的思想,因为在算法运行初期,每个鸟要有大的自己的认知部分而又比较小的社会部分,这个与我们自己一群人找东西的情形比较接近,因为在我们找东西的初期,我们基本依靠自己的知识取寻
找,而后来,我们积累的经验越来越丰富,于是大家开始逐渐达成共识(社会知识),这样我们就开始依靠社会知识来寻找东西了。
2007年希腊的两位学者提出将收敛速度比较快的全局版本的粒子群算法与不容易陷入局部最优的局部版本的粒子群算法相结合的办法,利用的公式是
v=n*v(全局版本)+(1-n)*v(局部版本) 速度更新公式,v代表速度
w(k+1)=w(k)+v 位置更新公式
该算法在文献中讨论了系数n取各种不同情况的情况,并且运行来了20000次来分析各种系数的结果。
(2)粒子群算法的混合
这个分支主要是将粒子群算法与各种算法相混合,有人将它与模拟退火算法相混合,有些人将它与单纯形方法相混合。
但是最多的是将它与遗传算法的混合。
根据遗传算法的三种不同算子可以生成3中不同的混合算法。
粒子群算法与选择算子的结合,这里相混合的思想是:在原来的粒子群算法中,我们选择粒子群群体的最优值作为pg,但是相结合的版本是根据所有粒子的适应度的大小给每个粒子赋予一个被选中的概率,然后依据概率对这些粒子进行选择,被选中的粒子作为pg,其它的情况都不变。
这样的算法可以在算法运行过程中保持粒子群的多样性,但是致命的缺点是收敛速度缓慢。
粒子群算法与杂交算子的结合,结合的思想与遗传算法的基本一样,在算法运行过程中根据适应度的大小,粒子之间可以两两杂交,比如用一个很简单的公式
w(新)=n×w1+(1-n)×w2;
w1与w2就是这个新粒子的父辈粒子。
这种算法可以在算法的运行过程中引入新的粒子,但是算法一旦陷入局部最优,那么粒子群算法将很难摆脱局部最优。
粒子群算法与变异算子的结合,结合的思想:测试所有粒子与当前最优的距离,当距离小于一定的数值的时候,可以拿出所有粒子的一个百分比(如10%)的粒子进行随机初始化,让这些粒子重新寻找最优值。
(3)二进制粒子群算法
最初的PSO是从解决连续优化问题发展起来的.Eberhart等又提出了PSO的离散二进制版.用来解决工程实际中的组合优化问题。
他们在提出的模型中将粒子的每一维及粒子本身的历史最优、全局最优限制为1
或0,而速度不作这种限制。
用速度更新位置时,设定一个阈值,当速度高于该阈值时,粒子的位置取1,否则取0。
二进制PSO与遗传算法在形式上很相似,但实验结果显示,在大多数测试函数中,二进制PSO比遗传算法速度快,尤其在问题的维数增加时
(4)协同粒子群算法
协同PSO,该方法将粒子的D维分到D个粒子群中,每个粒子群优化一维向量,评价适应度时将这些分量合并为一个完整的向量。
例如第i个粒子群,除第i个分量外,其他D-1个分量都设为最优值,不断用第i个粒子群中的粒子替换第i个分量,直到得到第i维的最优值,其他维相同。
为将有联系的分量划分在一个群,可将D维向量分配到m个粒子群优化,则前D mod m个粒子群的维数是D/m的向上取整。
后m-(D mod m)个粒子群的维数是D/m的向下取整。
协同PSO在某些问题上有更快的收敛速度,但该算法容易被欺骗。
基本的粒子群算法的分支就着4个,大部分的粒子群算法都围绕着这4个分支在变化,其中粒子群算法的变形居多,从根本上来说,几乎没有什么新的思想的提出。