PSO(Particle Swarm Optimization)算法学习笔记

1.情景设置:
  我们不妨设想这样一个情景:
  一群“随便”的人在微信群里决定出去搓一顿。
  但是呢,到了约定地点见面时,问去哪里?大家都说随便。
  所以去哪呢?
  只能一边走一边找了。
  大家约定:分散去找,在约定时间,再在群里通知自己的结果,商讨去哪家。
  而大家各自散开后,总会找到饭馆,回想起来之前吃没吃过,味道怎么样。
  有些是大家公认的味道好的,有些是自己觉得味道还不错的。
  这时候就会有权衡了,大家一边走着一边想,是去大家都喜欢的呢,还是自己最喜欢的呢?
  想着想着,腿也会不知不觉往那几家走。
  然后,逛着逛着就到时间了,大家在群里讨论哪家好,再去哪一家。
  这大概就是PSO了,如上所述的这些步骤可以和实际算法一一对应。
  可能笔者说的更加复杂了些,可能是出去吃时,大家老是把时间浪费在去哪吃上的怨念所致吧……
2.实际实现:
  PSO:Particle Swarm Optimization,粒子群优化算法。
  是一种从鸟群捕食行为学习来的启发式算法。
  可以将每一只鸟视为一个粒子,鸟类想找到食物最多的地方,粒子想找到函数值最优的地方。
  注:有一个函数来计算这个位置的优劣,是否适合粒子
  每一只鸟都是独立自主的寻找、判断,几乎互不干扰。
  那么怎么确定鸟的行动路线呢?即确定鸟的瞬时位置。
  image
  那怎么确定\(v_{i}\)呢?
  image
  \(pbest\)为自己在此次寻找食物的过程中找到的最好位置,\(gbest\)为整个种群(所有鸟/所有粒子)在此次寻找食物的过程中找到的最好位置。
  image
image
3.PSO算法的一般流程:
  1)初始化一群微粒(群体规模为N),包括随机位置和速度;
  2)计算每个微粒的适应度(函数值);
  3)对每个微粒,将其函数值与其经过的最好位置\(pbest\)作比较,如果较好,则将其作为当前这个微粒的最好位置\(pbest\)
  4)对每个微粒,将其函数值与其经过的最好位置\(gbest\)作比较,如果较好,则将其作为当前种群的最好位置\(gbest\)
  注:所有微粒的\(gbest\)一致
  5)调整微粒速度和位置;
  6)未达到结束条件则转第2)步。
  迭代终止条件根据具体问题不同
  一般选为最大迭代次数\(G_{k}\)或(和)微粒群迄今为止搜索到的最优位置满足预定最小适应阈值。

posted @ 2025-02-14 21:52  lsoi_ljk123  阅读(12)  评论(0)    收藏  举报