10.27学习-粒子群优化概念学习
粒子群优化算法
算法背景:最初是受到飞鸟集群活动的规律性启发,该算法利用群体中的个体对信息的共享使整个群体的运动在求解空间中产生从无序到有序的演化过程,从而获得最优解。
基本思想:通过群体中个体之间的协作和信息共享来寻找最优解。
假设在一个 D 维的目标搜索空间中,有 N 个粒子组成一个群落,其中第 i 个粒子表示为一个D维向量:
X
i
=
(
x
i
1
,
x
i
2
,
.
.
.
,
x
i
D
)
,
i
=
1
,
2
,
.
.
.
,
N
X_i=(x_{i1},x_{i2},...,x_{iD}),i=1,2,...,N
Xi=(xi1,xi2,...,xiD),i=1,2,...,N
第 i 个粒子的“飞行”速度也是一个D维向量:
V
i
=
(
v
i
1
,
v
i
2
,
.
.
.
,
v
i
D
)
,
i
=
1
,
2
,
.
.
.
,
N
V_i = (v_{i1},v_{i2},...,v_{iD}),i=1,2,...,N
Vi=(vi1,vi2,...,viD),i=1,2,...,N
在第 t 代的第 i 个粒子向第 t+1 代进化时,根据下式更新:
v
i
j
(
t
+
1
)
=
w
v
i
j
(
t
)
+
c
1
r
1
(
t
)
[
p
i
j
(
t
)
−
x
i
j
(
t
)
]
+
c
2
r
2
(
t
)
[
p
g
j
−
x
i
j
(
t
)
]
v_{ij}(t+1)=wv_{ij}(t)+c_1r_1(t)[p_{ij}(t)-x_{ij}(t)]+c_2r_2(t)[p_{gj}-x_{ij}(t)]
vij(t+1)=wvij(t)+c1r1(t)[pij(t)−xij(t)]+c2r2(t)[pgj−xij(t)]
x i j ( t + 1 ) = x i j ( t ) + v i j ( t + 1 ) x_{ij}(t+1)=x_{ij}(t)+v_{ij}(t+1) xij(t+1)=xij(t)+vij(t+1)
vij意味着一个向量,同时包含大小和方向,指引该粒子下一代的走向
vij由三部分决定,第一项为惯性量,第二项体现粒子自身的判断:pij为该粒子自己所认为的最优目标点,第三项体现群落的判断,pgj为群落所认为的最优目标点
参数w为惯性权重,r1、r2为0-1的随机数,c1为个体学习系数,c2为全局学习系数
算法流程:
输入:参数w:0.5-0.8;c1, c2:0.1-2;vmax、xmax:取决于优化函数
step1:初始化种群x;
step2:计算个体适应度;
step3:更新粒子速度 → 更新粒子位置;
step4:同时计算新位置的适应度,若新位置的适应度更高,则将该粒子的位置进行更新,否则不更新;
step5:判断是否满足终止条件,是则退出,否则返回step2;
step6:输出最优解。
注:①适应度:一般的,优化目标为找到极小值,故个体计算出的函数值越小,适应度越高。
②更新速度后,先进行速度边界检测,位置同理。
③常见的终止条件为设定迭代进化次数、适应度n代不再变化等。
算法优点:原理简单,实现容易,参数少。
缺点:容易收敛至局部最优,迭代后期收敛速度慢。
迭代经验:进化前期,w应该大一些,保证各个粒子独立飞行充分搜索空间,后期应该小一些,多向其他粒子学习;
前期,c1应该大一些,后期,c2应该大一些,从而平衡粒子的全局搜索能力和局部搜索能力。
通常有如下算法改进:
(1)实现参数的自适应变化。
(2)引入其他机制,如速度、位置的边界变化,后期压缩最大速度,等。
(3)结合其他优化算法,如遗传算法,模拟退火等。