粒子群算法(PSO)
PSO 通过模拟鸟群的捕食行为来求取最优解。
假设一群鸟在随机搜索食物。在这个区域里只有一块食物(对应着最优解)。所有的鸟都不知道食物的具体位置,但是它们可以判断自身与食物的大致距离,即通过 fit 值判断与最优解的距离。那么找到食物的最优策略就是搜寻目前离食物最近的鸟的周围区域。
PSO 中,问题的每个解都是搜索空间中的一只“鸟”。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值,并且所有的粒子都具有速度和位置两个属性。
在每一次迭代中,粒子通过跟踪两个"极值"来更新自己。第一个极值就是粒子本身所找到的最优解 p_best。另一个极值是整个种群目前找到的最优解,即全局极值 g_best。
粒子群算法的求解伪代码如下:
初始化粒子群
while 未达到最大迭代次数或最小损失:
for 粒子 in 粒子群