任务描述
本关任务:使用 python 实现粒子群算法,并求解目标函数最优解。
相关知识
为了完成本关任务,你需要掌握:1.编码与适应度函数,2.粒子群算法原理,3.粒子群算法流程,4.使用 python 实现粒子群算法。
编码与适应度函数
在粒子群算法中也需要进行编码,不过相对于遗传算法粒子群算法编码非常简单。例如,函数:
f(x1,x2)=x12+x22
可直接将函数解(x1,x2)作为编码。而函数的值f(x1,x2)即可作为适应度,若求解函数最小值则适应度越小越好,若求解函数最大值则适应度越大越好。
粒子群算法原理
粒子群函数是根据鸟群寻找食物实现的优化算法,每一只鸟被称为粒子,即函数的一个解。我们已经知道,每一只鸟寻找食物是根据离食物最近的鸟的位置,与自己曾经离食物最近的位置来决定改变自己现在的位置。根据这个原理,粒子群算法核心公式如下:
v=wv+c1r1(p−x)+c2r2(pg−x)...(1)
x=v+x...(2)
其中,x=(x1,x2,..,xn)为鸟群的位置,v=(v1,v2,..,vn)为鸟飞行的速度,即鸟群更新位置的因素。而公式2
就是决定速度的因素:
p:个体最佳位置
pg:全局最佳位置
w:惯性权重因子,用来控制速度的更新
c1,c2:加速度常数,通常设为2