粒子群算法的寻优算法-非线性函数极值寻优

一、简介  

    粒子群算法又被称为粒子群优化算法(PSO)。粒子群算法是源于对鸟群捕食的行为研究;是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。

二、粒子群算法分析

1、基本思想

    粒子群算法通过设计一种粒子来模拟鸟群中的鸟类个体,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,不断迭代,更新速度和位置,粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。最终得到满足终止条件的最优解。主要是通过群体中个体之间的协作和信息共享来寻找最优解。

2、初始化

  对所有参数进行初始化,当然后期还可以更改。设置最大迭代次数、加速因子c1和c2、惯性权重w、种群规模sizepop、限制速度围、变量取值范围、适应度函数维数dim、选择待优化的函数、目标函数的自变量个数、位置信息为整个搜索空间、初始种群、初始化速度等。

3、个体极值与全局最优解

定义适应度函数,个体极值为每个粒子找到的最优解,从这些最优解中找到一个全局最佳值,叫做本次的全局最优解。以方便与历史的全局最优解比较,进行更新。

4、 更新速度和位置的公式

  速度更新:

粒子群算法的寻优算法-非线性函数极值寻优

其中,w为惯性权重,其值不能为负数。c1和c2为加速因子,其值也不能为负数。rand为随机产生[0,1]之间的随机数。pbest(j,:)为粒子最优的位置;pop(j,:)为粒子当前的位置;V(j,:)为粒子当前的速度。

   位置更新:

 粒子群算法的寻优算法-非线性函数极值寻优

 注:粒子群算法是通过初始化一群随机粒子。然后通过不断迭代来找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过上面的公式来更新自己的速度和位置。

5、算法流程

粒子群算法的寻优算法-非线性函数极值寻优

 三、MATLAB测试结果及分析

 各参数初始值如下表:

加速因子c1加速因子c2惯性权重w最大迭代次数 种群规模速度范围变量取值范围适应度函数维数
1.494451.494450.81000200[-1,1][-5,5]10

1.1当加速因子c1、c2和惯性权重w组合变化时(其他参数不变), 待优化的函数:Rastrigin函数,MATLAB实现如下:

c1c2w
1.494451.494450.8

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

 部分可视化图如下:

粒子群算法的寻优算法-非线性函数极值寻优

 粒子群算法的寻优算法-非线性函数极值寻优

 粒子群算法的寻优算法-非线性函数极值寻优

 1.2当加速因子c1、c2和惯性权重w组合变化时(其他参数不变), 待优化的函数:Rastrigin函数,MATLAB实现如下:

c1c2w
1.494451.494450.5

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

 部分可视化图如下:

粒子群算法的寻优算法-非线性函数极值寻优

 粒子群算法的寻优算法-非线性函数极值寻优

 1.3当加速因子c1、c2和惯性权重w组合变化时(其他参数不变), 待优化的函数:Rastrigin函数,MATLAB实现如下:

c1c2w
1.494451.494450.3

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

 部分可视化图如下:

粒子群算法的寻优算法-非线性函数极值寻优

 粒子群算法的寻优算法-非线性函数极值寻优

1.4 当加速因子c1、c2和惯性权重w组合变化时(其他参数不变), 待优化的函数:Rastrigin函数,MATLAB实现如下:

c1c2w
1.494451.494450.1

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

 部分可视化图如下:

 粒子群算法的寻优算法-非线性函数极值寻优

 分析:综上可得,当其他参数的值不变时,惯性权重w的值与全局寻优能力呈线性正相关的关系。惯性权重w的值越大,全局寻优能力越强,局部寻优能力越弱;其值越小,全局寻优能力越弱,局部寻优能力越强。另外,动态w 能获得比固定值更好的寻优结果。动态w可以在PSO搜索过程中进行线性变化。

2.1当加速因子c1、c2和惯性权重w组合变化时(其他参数不变), 待优化的函数:Rastrigin函数,MATLAB实现如下:

c1c2w
0.50.50.8

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

 部分可视化图如下:

粒子群算法的寻优算法-非线性函数极值寻优

 粒子群算法的寻优算法-非线性函数极值寻优

2.2当加速因子c1、c2和惯性权重w组合变化时(其他参数不变), 待优化的函数:Rastrigin函数,MATLAB实现如下:

c1c2w
110.8

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

 部分可视化图如下:

粒子群算法的寻优算法-非线性函数极值寻优

2.3当加速因子c1、c2和惯性权重w组合变化时(其他参数不变), 待优化的函数:Rastrigin函数,MATLAB实现如下:

c1c2w
1.51.50.8

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

 部分可视化图如下:

粒子群算法的寻优算法-非线性函数极值寻优

 分析:当惯性权重w不变时,通过测试以上3组不同的加速因子的值,并且对每一个加速因子分别随机测试10组数据,分别记录最优适应度和达到最优适应度时的最多迭代次数,便算出最优适应度的平均值,对比其平均值可得:加速因子c1、c2的值越大,最优适应度平均值也越大,因此全局寻优能力也逐渐增强强。当调整幅度过大时,荣誉陷入局部最优中。

3.1当种群规模数(sizepop)和适应度函数维数(dim)组合变化时(其他参数不变),待优化的函数:Rastrigin函数,MATLAB实现如下:

种群规模数(sizepop)适应度函数维数(dim)
2005

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

部分可视化图如下:

粒子群算法的寻优算法-非线性函数极值寻优

 粒子群算法的寻优算法-非线性函数极值寻优

3.2当种群规模数(sizepop)和适应度函数维数(dim)组合变化时(其他参数不变),待优化的函数:Rastrigin函数,MATLAB实现如下:

种群规模数(sizepop)适应度函数维数(dim)
20015

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

部分可视化图如下:

粒子群算法的寻优算法-非线性函数极值寻优

 粒子群算法的寻优算法-非线性函数极值寻优

3.3当种群规模数(sizepop)和适应度函数维数(dim)组合变化时(其他参数不变),待优化的函数:Rastrigin函数,MATLAB实现如下:

种群规模数(sizepop)适应度函数维数(dim)
20025

测试结果如下表:

粒子群算法的寻优算法-非线性函数极值寻优

部分可视化图如下:

 粒子群算法的寻优算法-非线性函数极值寻优

 粒子群算法的寻优算法-非线性函数极值寻优

 分析:当其他参数不变时,通过测试以上3组不同的适应度函数维数为5、15和25,并且对每一个适应度函数维数分别随机测试10组数据,分别记录最优适应度和达到最优适应度时的最多迭代次数,便算出最优适应度的平均值,对比其平均值可得:适应度函数维数(dim)越大,寻优能力越强。

相关推荐