粒子群算法

粒子群算法(PSO)受鸟类捕食行为启发,通过模拟群体协作优化问题。算法涉及惯性、社会和邻域影响,广泛应用于连续函数优化、神经网络训练等领域。其基本模型包括粒子位置和速度更新,通过适应度函数评价解的质量。全局和局部版本以及同步与异步模式影响算法性能。PSO在多领域已取得显著成果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

粒子群算法(1.初步了解)

​ 1995年,受鸟类捕食行为的启发,Kennedy和Eberhart正式提出了粒子群优化算法的概念。研究中发现,在鸟类捕食过程中,个体并不知道如何找到食物以及自身离食物到底有多远,为了找到食物,最有效的搜索方式是搜索离食物源最近的个体的周围区域,这种搜索方式为粒子群算法中信息共享机制提供了生物行为基础。同时,在认知过程中,每个个体都会建立自身的信念,同时观察其他个体的信念,当发现其他个体的信念更加优秀时,个体会进行相应的调整以提高自身的搜索能力,粒子群算法中的学习机制即是受这种行为的启发而产生的。

​ 简单例子说明大致思想:一只位于A处的小鸟在寻找食物的过程中它发现的最好的食物是位于B处的几粒小麦,而它的伙伴们们发现的最好的食物是位于C处的100只虫子,但这只小鸟既不想错过小麦,也不想错过虫子,应次它就选择网AB与AC矢量和的方向飞,而在这个方向飞的过程中它可能会找到比100只虫子更好的食物,它就会告诉其他伙伴,并调整自己的方向。

​ 一群群个体合作不仅能改进它们在某件任务上的集合性能而且还能提高每一个个体的性能,这正是粒子群优化(Particle swarm optimization)的基础.我们不仅在动物的行为中清楚看到粒子群优化的原理,在人类的行为中也能看到.当我们试图改进在某个任务上的性能时,会根据一些基本观点调整我们的方法.

  • 惯性.我们往往会保留在过去已证明是成功的那些旧的方式。“我总是这样做,所以还会继续这样做”

  • 受社会的影响.我们听到他人的成功后会试图仿照他人的方法.我们可能从书籍,或者互联网,或者报纸读到他人成功的事迹.“如果那样做对他们管用,对我可能也管用.”

  • 受邻居的影响.我们从与自己亲近的人那里学到的最多、受朋友的影响会比受社会的影响更多.我们会与他人分享成功和失败的故事,并因为这些交往修正我们的行为.与互联网上亿万富翁的遥远的故事相比,百万富翁邻居或侄儿的投资建议对我们的影响更大.

​ 粒子群算法最初主要应用于连续函数的优化以及神经网络的训练,实践证明,多数情况下使用粒子群算法进行神经网络训练能够获得比BP算法更好的结果。已成功将粒子群算法应用于车间调度﹑旅行商(TSP)、整数规划等问题中。粒子群算法在同步发电机辨识、多目标优化、动态优化、聚类分析、游戏学习训练、生物信号检测与识别、新产品投人、目标检测以及广告优化等领域的应用均取得了一成果。

目前主要研究方向:理论研究、拓扑结构、参数选取与优化、其他算法的融合、算法的应用

1.算法框架

​ 使用粒子群算法求解实际优化问题时,一般首先要将待求解的问题空间映射为算法空间;然后进行初始化,通常的做法是随机生成一组均匀分布在搜索空间内的初始解;接着,根据搜索策略在算法参数的控制下在搜索区域内进行个体搜索,并产生一组待选解;以一定的接受准则(如确定性、概率性、混沌方式等)为依据对当前状态进行更新,如此反复迭代直到某种收敛标准得到满足;最后通过空间反变换,即将算法空间映射回问题空间,输出所求解问题的最优解。以上描述可以大致由下图来描述。

在这里插入图片描述

2.算法设计步骤

(1)表示方案的确定

​ 也可以成为编码方案或粒子的表示方法,目前粒子群优化算法采用的编码方案大多为实数向量的形式,一般将解表示为粒子的位置向量。对于非数值优化问题而言,如生产调度问题等,如何通过合适的粒子表示方法来映射调度问题的解空间,是问题求解的关键环节。

(2)适应度值函数的确定

​ 适应度值函数用于评价待选解的质量,是唯一能够反映优化进程并引导其不断进行下去的参量。因此,对于特定的优化问题,根据问题的具体特征来选择合适的目标函数或代价函数来计算适应度值对于算法的求解质量有着重要的影响。

(3)控制参数的选取

​ 对于不同的算法模型,参数的选取直接关系到算法的求解性能。粒子群优化算法的主要控制参数包括:粒子种群规模、算法的最大迭代代数、惯性权重、学习因子以及其他一些辅助控制参数,如粒子的速度与位置的范围等。

(4)优化模型的选择

比较常见的模型包括带有惯性权重的粒子群算法模型、带有收缩因子的粒子群算法模型、采用拉伸技术的粒子群算法模型、二进制粒子群算法模型等。目前,在大多数优化问题中,带有线性递减惯性权重的粒子群算法模型得到了较多的应用,这主要归因于该模型可以有效地平衡全局寻优和局部寻优,从而提高优化效率。

(5)算法终止条件的确定

​ 与其他进化算法类似,粒子群优化算法通常采用最大迭代代数或凝滞代数作为算法的终止准则,即算法在迭代代数达到预先设定的最大值或者在搜索过程中全局最优适应度值持续一定的迭代代数不再发生明显改变时,迭代终止,算法寻优过程结束。

3.算法描述与分析

3.1算法基本模型

​ 在粒子群优化算法中,粒子的行为是一种共生合作的行为,每个粒子的搜索行为受到群体中其他粒子搜索行为的影响。同时,记忆了粒子过去的最好位置,具备对过去经验的简单学习能力。PSO先生成初始种群,即在可行解空间中随机初始化一群粒子,每个粒子都为优化问题的一个可行解,并由目标函数为之确定一个适应度值(fitness value)。每个粒子将在解空间中运动,并由速度决定其下一时刻的运动方向和距离。通常粒子将追随当前的最优粒子而动,并经逐代搜索最后得到最优解。在每一代中,粒子将跟踪两个极值,一个为粒子本身迄今找到的最优解 p b e s t p_{best} pbest,另一个为全种群迄今找到的最优解 p g b e s t p_{gbest} pgbest

​ 粒子的维度与解空间的维度一致,根据个体适应度来判断粒子的优劣,粒子根据自己的飞行经验(单个粒子自己找到的局部最优解 p b e s t pbest pbest)和群体的飞行经验(全部粒子的全局最优解 g b e s t gbest gbest)来确定自身的飞行速度﹐调整自己的飞行轨迹,向最优点靠拢。粒子根据以下公式更新自己的速度和位置:

粒子i的第d维速度更新公式:
V i d k = w V i d k − 1 + c 1 r 1 ( p b e s t i d − x i d k − 1 ) + c 2 r 2 ( g b e s t d − x i d k − 1 ) V_{id}^k=wV_{id}^{k-1}+c_1r_1(pbest_{id}-x_{id}^{k-1})+c_2r_2(gbest_{d}-x_{id}^{k-1}) Vidk=wVidk1+c1r1(pbestidxidk1)+c2r2(gbestdxidk1)
由以上公式可见,粒子的飞行轨迹由三部分组成:第一部分为粒子的运动惯性,包含粒子本身原有的速度 V i d k − 1 V_{id}^{k-1} Vidk1信息;其第二部分为“认知部分”,因为这部分考虑粒子自身的经验,通过与自己经历最佳位置 p b e s t pbest pbest的距离反映出来;第三部分是“社会部分”,表示粒子间的社会信息共享,通过与群体最好位置 g b e s t gbest gbest的距离来反映。 r 1 r_1 r1 r 2 r_2 r2是在[0,1]的随机数; w , c 1 , c 2 w,c_1,c_2 w,c1,c2是控制这三部分的权重,其中 w w w称为惯性权重, c 1 c_1 c1 c 2 c_2 c2为加速因子,它们的含义如下:

​ (1)惯性权值 w w w:控制粒子飞行速度变化。当w取值较大时,粒子飞行速度变化幅度较大,全局寻优能力强,局部寻优能力弱;反之当w取值较小时局部寻优能力强,全局寻优能力弱。选择一个合适的w可以平衡全局和局部搜索能力,这样可以以最少的迭代次数找到最优解。实验发现PSO的惯性权重在[0.9,1.2]具有较好的性能,还发现惯性权重从1.4减少到0要比用固定的好。这是因为开始较大的惯性权重可以遍历比较大的范围,后来小的权重有较好的局部搜索能力。

​ 线性递减权值:
w = w m a x − ( w m a x − w m i n ) ∗ r u n r u n m a x w=w_{max}-(w_{max}-w_{min})*\frac{run}{run_{max}} w=wmax(wmaxwmin)runmaxrun
r u n m a x 最大惯性权重 , r u n m i n 最小惯性权重, r u n 当前迭代次数, r u n m a x 为算法迭代总次数 run_{max}最大惯性权重,run_{min}最小惯性权重,run当前迭代次数,run_{max}为算法迭代总次数 runmax最大惯性权重,runmin最小惯性权重,run当前迭代次数,runmax为算法迭代总次数,可以使得粒子群算法在初期具有较强的全局收敛能力,而晚期其有较强的局部收敛能力。

​ (2)加速常数 c 1 c_1 c1,和 c 2 c_2 c2:代表了粒子向自身极值和全局极值推进的随机加速权值,当 c 1 c_1 c1为0时,表示每个粒子都过于“奉献”,不相信自己的发现,只相信群体的发现,这样虽然有能力达到新的搜索空间,收敛速度比标准算法快,但碰到复杂问题比标准算法更容易陷入局部极值。当 c 2 c_2 c2为0时,这表示,每个粒子都只相信自己,一点也不相信群体,此时得到最优解的概率很小。如果 c 1 = c 2 = 0 c_1=c_2=0 c1=c2=0说明粒子以当前速度飞行直到边界

粒子i的第d维位置更新公式:
x i d k = x i d k − 1 + V i d k x_{id}^k=x_{id}^{k-1}+V_{id}^k xidk=xidk1+Vidk
其中 V i d k V_{id}^k Vidk为第k次迭代粒子i飞行速度矢量的第d维分量; x i d k x_{id}^k xidk为第k次迭代粒子i位置矢量的第d维分量。

​ 为了降低搜索过程中粒子离开搜索空间的可能性,通常第d维的位置变化限定在 [ X m i n , X m a x ] [X_{min},X_{max}] [Xmin,Xmax]内;速度变化范围也限定在 [ − v m i n , v m a x ] [-v_{min},v_{max}] [vmin,vmax]内,其中最大速度 v m a x v_{max} vmax的选择不应超过的粒子宽度范围,如果 v m a x v_{max} vmax太大,可能飞过最优解的位置;如果太小,可能降低粒子的全局搜索能力。群体规模一般来说不用取的太大,一般几十个粒子就足够用了。如针对多目标优化等比较难的问题或者某些特定的问题,粒子数可以取到100~200个。粒子的维度由优化问题所决定,也就是解空间的维度。

3.2算法流程

​ (1)设定相关参数 c 1 , c 2 , w c_1 ,c_2 ,w c1,c2,w和粒子个数,并初始化种群,随机生成群体中的粒子候选解的位置和速度。
​ (2)逐一评价种群中的个体,即计算每个粒子对应的适应度值( fitness value),用以衡量此粒子的“优秀程度”。
​ (3)对于每个个体的适应度值,将其与自身所经历过的最好位置 p b e s t pbest pbest值进行比较,若较好,则将其作为当前的最好位置;将其适应度值与群体所经历的历史最优值 g b e s t gbest gbest的适应度值进行比较,若较好,则将其作为全局最好位置。
​ (4)按照上述速度及位置更新公式计算每个粒子新的时刻的速度和位置。
​ (5)检查结束条件是否满足。如果满足就结束计算,否则转至步骤(2)。

流程图如下:

在这里插入图片描述

3.3全局模型和局部模型

​ 以上算法描述中,粒子跟踪两个极值,自身极值 p b e s t pbest pbest和种群全局极值 g b e s t gbest gbest,称为全局版本(global version)PSO。另一种为局部版本(local version)PSO,指粒子除了追随自身极值 p b e s t pbest pbest 外,不跟踪全局极值 g b e s t gbest gbest,而是追随拓扑近邻粒子当中的局部极值 l b e s t lbest lbest。在该版本中,每个粒子需记录自己和它邻居的最优值,而不需要记录整个群体的最优值。例如,邻居大小为,则第i个粒子只须比较自己适应度值和第i—1和第i+1粒子的适应度值大小。因此,局部版本的粒子群优化算法粒子的速度更新公式如下:
V i d k = w V i d k − 1 + c 1 r 1 ( p b e s t i d − x i d k − 1 ) + c 2 r 2 ( l b e s t d − x i d k − 1 ) V_{id}^k=wV_{id}^{k-1}+c_1r_1(pbest_{id}-x_{id}^{k-1})+c_2r_2(lbest_d-x_{id}^{k-1}) Vidk=wVidk1+c1r1(pbestidxidk1)+c2r2(lbestdxidk1)
其中 l b e s t d lbest_d lbestd为局部最优点

​ 比较全局和局部版本两种算法,可以注意到,它们收敛速度和跳出局部最优的能力有所差异。由于全局拓扑结构中所有粒子都信息共享,粒子向当前最优解收敛的趋势非常显著,因而全局模型通常收敛到最优点的速度较局部结构快,但更易陷入局部极小,表现为整个种群一致收敛到当前第一个较好的解。对此更好的理解,可以考虑模拟退火的成功之处,在其中较差的一些解有时也被保留。局部拓扑结构模型则允许粒子与其邻居比较当前搜索到的最优位置,从而相互之间施加影响,即便其值比种群最好值要差,该影响可以使较差个体进化为较好的个体。

3.4同步模式与异步模式

​ 粒子群优化算法在求解优化问题时,全局最优值的更新分为两种模式——同步模式与异步模式。下面对两种模式进行介绍。
​ 同步模型(synchronization)中,每代所有粒子都并行移动后,再选择种群最优粒子。而在异步(asynchronization)模型中,当粒子的任何一个邻居更新后,都与最优粒子进行比较,以便及时更新最优粒子。
​ 研究发现,在多数情况下,异步模型比同步模型能更快地找到问题的最优解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值