粒子群算法思想
粒子群算法是一种模仿鸟类捕食行为的仿生优化算法。那啥是仿生优化算法呢?其实咱也不太知道。
假设有一群鸟在森林中捕食,若其中一只鸟发现了食物,则它会通知其他的鸟类这个地方有食物。从而其他的鸟也就有了更大的概率找到食物。
算法原理
在解空间
R
n
R^n
Rn中随机生成
k
k
k个粒子,这些粒子的位置为
n
n
n维的向量,则第
i
i
i个粒子的位置表示为:
x
i
=
(
x
i
1
,
x
i
2
,
.
.
.
,
x
i
n
)
x_i=(x_{i1},x_{i2},...,x_{in})
xi=(xi1,xi2,...,xin)
粒子的速度初始化为
n
n
n为向量,则第
i
i
i个粒子的速度表示为:
v
i
=
(
v
i
1
,
v
i
2
,
.
.
.
,
v
i
n
)
v_i=(v_{i1},v_{i2},...,v_{in})
vi=(vi1,vi2,...,vin)每个维度的速度的取值为
−
v
m
a
x
-v_{max}
−vmax至
v
m
a
x
v_{max}
vmax之间的随机数。
粒子的适应度函数为
f
(
x
)
f(x)
f(x),个体最优位置为
p
i
p_i
pi,全局最优位置为
g
g
g.
粒子的速度与位置更新公式为:
v
t
+
1
=
v
t
+
r
a
n
d
o
m
(
0
,
1
)
∗
c
1
∗
(
p
i
−
x
i
)
+
r
a
n
d
o
m
(
0
,
1
)
∗
c
2
∗
(
g
−
x
i
)
v_{t+1}=v_{t}+random(0,1)*c_1*(p_{i}-x_{i})+random(0,1)*c_2*(g-x_{i})
vt+1=vt+random(0,1)∗c1∗(pi−xi)+random(0,1)∗c2∗(g−xi)
x
t
+
1
=
x
t
+
v
t
+
1
x_{t+1}=x_{t}+v_{t+1}
xt+1=xt+vt+1
算法的具体步骤为:
- 初始化粒子的速度与位置。
- 计算粒子适应度值 f ( x ) f(x) f(x)
- 根据适应度计算个体最优位置 p i p_i pi与全局最有位置 g g g.
- 更新粒子的速度与位置,返回步骤2.