智能算法-粒子群算法

1,264 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

1 粒子群算法

首先讲个小故事,说一说通俗理解:

一群分散的鸟儿在随机地飞行觅食,它们不知道食物所在的具体位置,在觅食过程中,每只小鸟都会记录自己飞行位置。突然,其中某一只小鸟A发现好多玉米,于是就喊:“快来,我这里有好多食物!”,然而,其他小鸟都只发现了零零星星的几个玉米粒。于是,每个小鸟在飞行的时候就有了一个指导的方向(往小鸟A的位置飞),但是,每个小鸟都有不忍心放弃当前努力搜寻过的位置(小鸟们心想:我这里刚才也找到点玉米粒,再继续找找说不定比你还要多)。因此,它们最终决定结合自身的经验整个群体的经验,调整自己的飞行速度和所在位置,不断地寻找更加接近食物的位置,最终使得群体聚集到食物位置。

image.png

2 粒子群特征:

  • 不与同伴相撞
  • 与同伴保持特定距离
  • 协同:遇到障碍物自动分开,过了障碍物后又自动聚合 其思想结合了群体最优、历史最优、随机扰动因子。

3 更新公式

粒子群速度更新公式和位移更新公式如下:

  • 其中c1和c2为加速系数,代表了粒子向自身极值pbest和全局极值gbest推进的加速权值,通常都等于2.0。
  • χ为压缩因子,限制粒子的飞行速度,保证算法有效收敛。

image.png

image.png

4 应用举例:

对于函数: image.png

请使用粒子群优化算法解决该问题。

步骤1:产生初始种群,计算适应度

假设粒子群大小为3,在搜索空间中(即保证10x1,x21010≤x1,x2≤10)随机初始化每个解的速度和位置,计算适应函数值,并且得到每个粒子的历史最优位置和群体的全局最优位置。

因为f1=89f1=89为三个粒子中最优的,因此当前全局最优粒子(gbestgbest)选为p1p1,那接下来其他粒子就要往这个方向移动啦!

image.png

步骤2:更新速度和位移

根据历史自身的最优位置(pbestpbest)和全局的最优位置(gbestgbest),更新每个粒子的速度和位置。

计算x1,x2,x3v1,v2,v3x1,x2,x3;v1,v2,v3,对于x2=(1.1,10.8)x2=(1.1,10.8)这样的非法解(因为10.8>1010.8>10)超过了解空间范围,进行合法性调整。

image.png

步骤3:评估粒子的适应度函数值。

计算每个新粒子的适应度,更新历史最优位置和全局最优位置。

若某个粒子优于该粒子的历史最优解,则更新;若差于该粒子的历史最优解,则不改变。

然后选出当前全局最优解(gbestgbest

image.png

步骤4:判断是否满足结束条件

如果满足结束条件,则输出全局最优结果并结束程序,否则,转向步骤2继续。