I leave no trace of wings in the air but I am glad I have had my flight.
——Rabindranath Tagore,Stray Birds
粒子群优化算法(PSO)
Point 1 粒子群优化算法的自然界原型
鸟群在食物存在的空间内飞行觅食,食物在空间内的分布是不均匀的。每只鸟可能会凭借着自己的经验或是直觉,飞往它所觉得比较好的地方寻找食物。当一些鸟发现了更好的觅食地点时,鸟群间会有某种类似广播的沟通行为,渐渐地将整个鸟群引领至较佳的地点。
鸟类的这种通过群体协作而进行的觅食行为,是利用了社会中存在的相互影响的概念,来引领所有个体朝向最佳位置。还有其他生物群体(鱼群)都有这种社会性的行为,这种行为被抽象成了粒子群优化算法。
Point 2 粒子群优化算法的基本原理
粒子群中的每一个粒子(可以直接当成鸟)都是n维解空间中的一个点
每个粒子有自己的位置、速度
每个粒子在不同的位置都具有对应于目标函数的个体适应度(个体适应度相当于一个评价标准,对于鸟来说就是这个地方食物的多少,对于函数极值问题就是函数值的大小)。
对于每个粒子来说,在其所经历过的所有位置中,会有一个位置为最佳位置(个体最优解),记为
对于粒子群体来说,所有粒子所处的位置中,会有一个位置为最佳位置(全局最优解),记为
一开始先给定各粒子的初始位置和速度,并计算出个体最优解
不断更新按照以下公式更新粒子的速度和位置:
![6a2b4caf5b132203b4ea0d51acd84702.png](https://i-blog.csdnimg.cn/blog_migrate/f541074aa8b00eb046900396dcc63c1f.jpeg)
每次更新完位置之后,再次确定每个粒子的适应度,更新各粒子的个体最优解
每个粒子根据不断更新的个体最优解和全局最优解来更新自己的位置。
Point 3 粒子群优化算法的实现
![4f7dd8bc80ece0b78a5dadfa98ec49c9.png](https://i-blog.csdnimg.cn/blog_migrate/8678c44f2632c1ce0781ce293532e1c8.jpeg)
Point 4 粒子群优化解决函数优化问题代表性栗子——Rastrigin测试函数
Rastrigin测试函数
其函数图像如下:
![4baf0486d649db959f82563aacbad120.png](https://i-blog.csdnimg.cn/blog_migrate/d906f039e96c84f27c085bb87cecf650.jpeg)
使用PSO求解其极值,过程如下:
![a573e7a80accdd911381fdcb782f071a.gif](https://i-blog.csdnimg.cn/blog_migrate/69d2fc4fa08cb1797d495ae0bab1b6a1.gif)
在1~80次迭代中,由上图可以看出收敛速度较快,但是在80次之后收敛速度就比较缓慢。这是因为PSO算法的趋同性,导致后期粒子之间距离接近,越往后速度越慢。
Rastrigin函数定义如下:
function
作二维Rastrigin图像程序如下:
n
Point 5 粒子群优化解决函数优化问题栗子
利用粒子群优化算法求:
目标函数定义如下:
function
主程序:
clc
计算结果如下:
![638ff86de1cb250f01f27aa5d9d7bb6c.png](https://i-blog.csdnimg.cn/blog_migrate/4e28639c3143cc9fcc7118552c6e8d81.jpeg)
![8afdacf7b477c1087036a942548177ff.gif](https://i-blog.csdnimg.cn/blog_migrate/a8151cdfab5251fdd21eacf8a929bd92.gif)
![23c1ea954102ced65064d6986fe146c1.png](https://i-blog.csdnimg.cn/blog_migrate/b071a6da117ddf45d7d9dd2a623464d5.jpeg)