![c115059feebe1db8d71432a4c7000ce3.png](https://i-blog.csdnimg.cn/blog_migrate/303b498fa90e9f4065fded43b0ba46a5.jpeg)
粒子群算法以广泛应用于函数优化,神经网络训练,模式分类,模糊控制等领域。
一,粒子群算法简介
在自然环境中,有时我们会看到大群的鸟在天空盘旋,很多人肯定会有疑问,为什么这么多鸟几乎保持相同的速度飞行,并且不会混乱呢?对于这一问题,生物学家Craig Reynolds在1987年给了我们答案,他认为鸟群中每一个个体都遵循:避免与邻域个体相冲撞;匹配邻域个体的速度;飞向鸟群中心,且整个群体飞向目标。正是根据Craig Reynolds的启发,美国社会心理学家James Kennedy和电气工程师Russell Eberhart于1995年共同提出了粒子群算法( Particle SwarmOptimization, PSO) ,粒子群优化算法模拟鸟类的觅食行为,将求解问题的搜索空间比作鸟类的飞行空间,将每只鸟抽象成一个没有质量和体积的粒子,用它来表征问题的一个可能解,将寻找问题最优解的过程看成鸟类寻找食物的过程,进而求解复杂的优化问题。
![1727351c51565752f06681b02c4ed13a.png](https://i-blog.csdnimg.cn/blog_migrate/f8f5cff71b80fed83af2f896268d3b67.jpeg)
二,粒子群算法理论
在粒子群算法中,将被优化问题的每个解当作一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适应度值(解的好坏程度),每个粒子还有一个速度(通俗点说就是调整位置的系数)决定它们飞翔的方向。然后,粒子们就追随当前的最优粒子在解空间中搜索。粒子群算法首先在给定的解空间中随机初始化粒子群,每个粒子有了初始位置与初始速度,然后通过迭代寻优。在每一次迭代中,每个粒子通过跟踪个体极值,和全局极值来更新自己在解空间中的空间位置与飞行速度,最终找到全局最优。
粒子群算法较为简单,不涉及很多的参数很公式,主要的就是位置(也就是适应度值)和速度两个参数。
三,粒子群算法种类
3.1 基本粒子群算法
假设在一个D维的目标搜索空间中,有N个粒子组成群落,其中第i个粒子表示为一个D维向量:
![equation?tex=X_%7Bi%7D%3D%28x_%7Bi1%7D%2Cx_%7Bi2%7D%2C...%2Cx_%7BiD%7D%29%2Ci%3D1%2C2%2C...%2CN](https://i-blog.csdnimg.cn/blog_migrate/d8cc355ff65ba5362a135ad89c6566dd.png)
第i个粒子飞行速度也是一个D维向量:
![equation?tex=V_%7Bi%7D%3D%28v_%7Bi1%7D%2Cv_%7Bi2%7D%2C...%2Cv_%7BiD%7D%29%2Ci%3D1%2C2%2C...%2CN](https://i-blog.csdnimg.cn/blog_migrate/173846fb30525acd602ea38c98dd3127.png)
第i个粒子迄今为止搜索到最优位置称为个体极值:
![equation?tex=P_%7Bbest%7D%3D%28p_%7Bi1%7D%2Cp_%7Bi2%7D%2C...%2Cp_%7BiD%7D%29%2Ci%3D1%2C2%2C...%2CN](https://i-blog.csdnimg.cn/blog_migrate/d26fec3facd21957e76f26d5822b1841.png)
整个粒子群迄今为止搜索到的最优位置为全局极值:
![equation?tex=g_%7Bbest%7D%3D%28g_%7B1%7D%2Cg_%7B2%7D%2C...%2Cg_%7BD%7D%29](https://i-blog.csdnimg.cn/blog_migrate/8108276bedae12c349faf5cc3e6cd2b1.png)
在找到这两个最优值后,粒子群更新自己的速度和位置:
![equation?tex=v_%7Bij%7D%28t%2B1%29%3Dv_%7Bij%7D%28t%29%2Bc_%7B1%7Dr_%7B1%7D%5Bp_%7Bij%7D%28t%29-x_%7Bij%7D%28t%29%5D%2Bc_%7B2%7Dr_%7B2%7D%5Bp_%7Bgi%7D%28t%29-x_%7Bij%7D%28t%29%5D+](https://i-blog.csdnimg.cn/blog_migrate/7aa71acac3f654ca7c6d3c8d668144dd.png)
![equation?tex=x_%7Bij%7D%28t%2B1%29%3Dx_%7Bij%7D%2Bv_%7Bij%7D%28t%2B1%29](https://i-blog.csdnimg.cn/blog_migrate/2f3862c32e645016436da6bc1d04333a.png)
其中,
![equation?tex=c_%7B1%7D%2Cc_%7B2%7D](https://i-blog.csdnimg.cn/blog_migrate/1cd1c0d10893d333c71fb250a598cbf7.png)