粒子群算法介绍

粒子群算法(Particle Swarm Optimization,PSO)是一种受自然界鸟类飞行时集群的策略启发而得到的算法,其主要思想是利用种群中的每个个体进行探索,再将个体得到的最优解进行汇总比较,从而使得种群整体往全局最优解或者近似的方向去靠拢。

通俗来讲,可以将粒子看作是鸟,全局最优解代表栖息地或者食物,每个鸟抽象为质点,且都具有两个属性:速度和位置

注意:这里的速度是带有方向的,不是标量的速度

在最初的状态下,假设所有的鸟的速度和位置都是随机的,每个鸟都会向着自己的方向去进行探索。在下一轮更新中,每一只鸟都会向种群提交自己的位置信息,以及和栖息地或者食物的距离。种群的鸟类经过比对后,会根据栖息地或者食物最可能存在的位置(种群最优解)去修正一下自己的方向,但是不会完全改变自己的方向。同时,每一只鸟也会记录每一次自己离最优解的距离,并选取出最好的那次来修改自己的方向(个体最优解)

简单来说,就是鸟以最开始的方向为基础,根据个体最优解+种群最优解来不断修改自己的方向,并迭代自己的位置和速度参数,最后所有的鸟即整个种群会收敛到最优解的位置

算法理论部分

根据以上的流程,可以总结为下图

MATLAB代码实现