粒子群算法PSO

  • 1. 粒子群算法
  • 2. 算法流程
  • 2.1 公式解读
  • 2.2 初始化
  • 2.3 计算流程
  • 2.4 示例


1. 粒子群算法

粒子群算法(Particle Swarm Optimization)是一种优化算法,其主要思想受到自然界鸟群飞行的启发。
对一群鸟群来说,其群体觅食行为呈现一定规律:单只鸟并不知道食物地在哪里,但可以通过飞行中对食物的远离程度来纠正自己的飞行。体现在单只鸟上可能并不明显,但当鸟群数量多起来之后,就可以利用鸟群数量弥补单只鸟搜索能力的不足,逐渐逼近最优值。而在这个过程中,整个系统还需要满足一定的性能指标(称为代价函数)。

2. 算法流程

首先设定一个搜索的范围
粒子群算法bp神经网络 粒子群算法用来干嘛_算法此即为每个粒子(每只鸟)的搜索范围。
还要定义每个粒子搜索的速度
粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_02该量的具体含义在后面给出。
此外还有一些量需要提前初始化:
粒子群算法bp神经网络 粒子群算法用来干嘛_算法_03 – 粒子个数,粒子群算法bp神经网络 粒子群算法用来干嘛_迭代_04 – 每个粒子的维度(包含几个自变量),粒子群算法bp神经网络 粒子群算法用来干嘛_迭代_05

2.1 公式解读

粒子群算法的核心公式为
粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_06该公式含义为:每第k次迭代计算的粒子群粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_07的搜索范围,应当是在上一次搜索范围粒子群算法bp神经网络 粒子群算法用来干嘛_搜索_08基础上加上一个增量粒子群算法bp神经网络 粒子群算法用来干嘛_搜索_09,具象地来说就是每次的搜索域都“挪动”一个小范围,进行地毯式搜索。
而这个“挪动”的范围粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_10,需要考虑三方面内容:上一次挪动范围上一次的局部最优范围粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_11和上一次的搜索范围之差,以及上一次的全局搜索范围粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_12和上一次的搜索范围之差
换言之,粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_13考虑了上一次的粒子群算法bp神经网络 粒子群算法用来干嘛_迭代_14,上一次的局部最优,以及上一次的全局最优。这样,粒子运动时就会综合考虑局部最优、全局最优、历史影响三者,能兼顾到随机性和全局最优性

2.2 初始化

粒子群算法的初始化公式为
粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_15粒子群算法bp神经网络 粒子群算法用来干嘛_搜索_16公式含义为:粒子群粒子群算法bp神经网络 粒子群算法用来干嘛_搜索_17的搜索范围,应当是在粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_18基础上加上一个增量,该增量前的系数为一随机数,保证了算法随机搜索的能力,但同时该随机数应当在粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_19范围内,以便保证搜索域粒子群算法bp神经网络 粒子群算法用来干嘛_搜索_17依然能满足条件(1)。粒子群算法bp神经网络 粒子群算法用来干嘛_搜索_21同理。

2.3 计算流程

将初始搜索域的所有粒子代入代价函数计算代价函数的值:
粒子群算法bp神经网络 粒子群算法用来干嘛_算法_22随后利用公式(3)进行更新,并代入代价函数计算每一次迭代的代价函数值:
粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_23计算后,若该粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_24为目前出现过的最小/大值,则记录下来
粒子群算法bp神经网络 粒子群算法用来干嘛_迭代_25依次循环,每次利用随机数得出新的搜索域,并更新粒子群算法bp神经网络 粒子群算法用来干嘛_迭代_26,以便使得代价函数始终为极值。

值得注意的是,对于粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_07粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_10,每次迭代前都需要进行限幅saturation
粒子群算法bp神经网络 粒子群算法用来干嘛_算法_29

2.4 示例

设二维搜索空间为粒子群算法bp神经网络 粒子群算法用来干嘛_算法_30,代价函数为

粒子群算法bp神经网络 粒子群算法用来干嘛_搜索_31设粒子数粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_32,迭代次数粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_33,惯性系数粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_34,学习系数粒子群算法bp神经网络 粒子群算法用来干嘛_算法_35,搜索范围粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_36,速度增量范围粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法_37

对于此二维问题,可以找到最优解:

粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_38其搜索空间为

粒子群算法bp神经网络 粒子群算法用来干嘛_粒子群算法bp神经网络_39


图中黑点为随机搜索的点,红色三角为最优点。