粒子群优化算法

粒子群优化算法

(一)          应用背景

svm(支持向量机)模型训练过程中,往往存在多个变量影响模型的准确度,如惩罚因子c和径向基函数的γ参数。为了寻找最佳的模型,我们需要对这两个变量进行寻优。常用的算法有网格搜索算法、遗传算法、粒子群算法。这里简单介绍下粒子群算法。

粒子群算法是一种进化算法,源于对鸟群捕食的研究。假设鸟群在一个空间中捕食,那么对于每一只鸟,它具有两个属性:位置和速度。假设它可以感知与食物之间的距离(称为适应度),同时鸟群之间可以互相通信分享自己的位置。每一只鸟都可以记录自己的飞行轨迹,通过学习自身的经验和同伴的经验来动态的调整飞行速度和方向,通过不断的迭代调整,不断的逼近食物。

(二)          标准粒子群算法

标准的粒子群算法的一般步骤是:

1.  初始化飞行空间,并在空间内初始化一定数量的粒子,粒子随机分布在飞行空间内,并具有随机的速度。

粒子位置表示为(D为空间维度,即需要寻优的变量个数)

粒子速度表示为:

2.  计算每个粒子的适应度。

3.  每个粒子学习自身经验,在自身飞行过程中寻找适应度最好的个体最优位置,记为pBest

4.  每个粒子学习群体的经验,寻找整个群体飞行历史中适应度最佳的全局最优位置,记为gBest  

5.  粒子根据经验更新自身的飞行速度和位置。

速度更新公式为:

其中,w为惯性权重, 分别为个体最优和全局最优位置,rand()Rand()[0,1]范围内的随机数, 为学习因子

位置更新公式:

6.  如过没有达到预定的结束条件,则回到第2步,继续迭代至满足结束条件。

粒子优化过程中运动轨迹如下:
          粒子群优化算法_第1张图片

(三)          参数选择

1.     粒子群算法中的参数对于算法的性能有重要影响,可以根据问题来调整参数。
群体规模m,根据需要求解的问题复杂性来确定,一般可取20-40个。

2.         速度更新公式中的w,称为惯性权重,使粒子飞行过程中保持惯性,粒子因此可以保持对一部分空间的持续探索。若w0,则粒子速度没有记忆性,总是飞向个体最优位置和全局最优位置的加权中心,这种条件下算法容易陷入局部最优解。w增大时粒子具备全局搜索的能力,应此可以针对具体问题,通过调整w来调整全局搜索能力和局部搜索能力的平衡。通常,让w在每次迭代过程中从1.40逐步减小可以得到很好的效果。

3.         c1c2分别为个体和全局学习因子,又称为加速因子,代表粒子飞向个体最优和全局最优的加速权重,根据经验通常设置为2。当 c1 0时,粒子不具备个体认知能力,侧重于对群体的学习,可以更快的收敛,但是容易陷入局部最优解。当c2 0时,粒子仅依靠个体的经验进行探索,没有对于群体的学习,往往无法得到最优解。

(四)          应用实例

以对函数 求其最小值为例,粒子空间对应的维度即为n

假设初始化3个粒子,维度为n=2,求解空间为[0,100]

首先随机的对3个粒子位置和速度进行初始化:

比较每个粒子的适应度,可知全局最佳的适应度为F3 ,其对应的最佳位置(gBest)为[0, 89]

最后,粒子根据速度更新公式和位置更新公式更新自身的位置和速度。如位置更新为:

X_1=[29.4, 100] X_2=[38.01, 97.4] X_3=[52.6, 93.6]


在这个过程中粒子将向全局最佳位置(gBest)靠近,重复这个步骤,粒子即会趋向于这个函数的最小值。在实验中,当这3个粒子飞行100次以后最佳的适应度达到:1.11956156554e-06,已经非常趋近0

 

 

 

你可能感兴趣的:(粒子群优化算法)