来源于文献[1],对其进行整理
起源与背景
PSO算法最简单的模型是于1987年提出的名为Boid(Bird-oid)的模型,此模型被设计用于模拟鸟的行为,也是PSO算法的雏形。Boid(Bird-oid)模型的描述如下:
- 鸟类的每个个体都由笛卡尔坐标系中的一个点表示,该点随机分配了初始速度和位置。
- 根据“最接近的速度匹配规则”运行程序,以使一个个体的速度与其最接近的邻居的速度相同。
- 以相同的方式进行迭代,所有点将快速地具有相同的速度。
由于这个初代模型过于简单并偏离实际,引入了一个随机变量将其添加至速度项,使整个模拟接近实际情况。Heppner设计了一个“cornfield model”来模拟一群鸟类的觅食行为。假设平面上有一个“cornfield model”,即食物的位置,开始时鸟类随机散布在平面上。 为了找到食物的位置,它们按照以下规则移动。
- 假设食物(cornfield)的位置坐标为 ( x 0 , y 0 ) (x_0, y_0) (x0,y0),单个鸟类个体的位置坐标和速度坐标分别为 ( x , y ) (x,y) (x,y)和 ( v x , v y ) (v_x,v_y) (vx,vy);当前个体的位置与食物之间的距离用于衡量当前个体的性能(距食物的距离越近,性能越好,相反,性能更差。)。
- 假设每个个体都有记忆能力,并可以记住它曾经到达的最佳位置,记为 p b e s t p_{best} pbest。 a a a是速度调节常数。 r a n d rand rand表示 U [ 0 , 1 ] U[0,1] U[0,1]中的随机数,可以根据以下规则设置速度项的变化:
如果 x > p b e s t x x> p_{best}^x x>pbestx,则 v x = v x − r a n d × a v_x = v_x-rand×a vx=vx−rand×a,否则, v x = v x + r a n d × a v_x = v_x +rand×a vx=vx+rand×a。
如果 y > p b e s t y y> p_{best}^y y>pbesty,则 v y = v y − r a n d × a v_y = v_y − rand×a vy=vy−rand×a,否则, v y = v y + r a n d × a v_y = v_y + rand×a vy=vy+rand×a。
p b e s t x p_{best}^x pbestx表示的是个体在 x x x维度上曾经到达的最佳位置。 - 然后假设鸟群模型可以以某种方式进行通信,并且每个个体都能够知道并记住迄今为止整个群体的最佳位置,记为 g b e s t g_{best} gbest。 b b b是速度调节常数,速度更新与上述类似:
如果 x > g b e s t x x> g_{best}^x x>gbestx,则 v x = v x − r a n d × b v_x = v_x-rand×b vx=vx−rand×b,否则, v x = v x + r a n d × b v_x = v_x +rand×b vx=vx+rand×b。
如果 y > g b e s t y y> g_{best}^y y>gbesty,则 v y = v y − r a n d × b v_y = v_y − rand×b vy=vy−rand×b,否则, v y = v y + r a n d × b v_y = v_y + rand×b vy=vy+rand×