粒子群优化算法简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多目标粒子群算法
粒子群算法,也粒子群优化算法(Particle Swarm Optimization),缩写为 PSO,是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究。
PSO算法从随机解出发,通过迭代寻找最优解,通过适应度来评价解的品质。但是,PSO比遗传算法规则更为简单,它没有遗传算法的“交叉” 和“变异”操作,它通过追随当前搜索到的最优值来寻找全局最优。这种算法以其实现容易、精度高、收敛快等优点,并且在解决实际问题中展示了其优越性。
1.引言
优化问题是工业设计中经常遇到的问题,许多问题最后都可以归结为优化问题. 为了解决各种各样的优化问题,人们提出了许多优化算法,比较著名的有爬山法、遗传算法等.
优化问题有两个主要问题
一是要求寻找全局最优点,
二是要求有较高的收敛速度.
遗传算法
属于进化算法( Evolutionary Algorithms) 的一种,它通过模仿自然界的选择与遗传的机理来寻找最优解. 遗传算法有三个基本算子:选择、交叉和变异. 但是遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验。
PSO 算法
PSO同遗传算法类似,是一种基于迭代的优化算法。系统初始化为一组随机解,通过迭代搜寻最优值。但是它没有遗传算法用的交叉(crossover)以及变异(mutation),而是粒子在解空间追随最优的粒子进行搜索。同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域。
2.算法介绍
简介
如前所述,PSO模拟鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。
PSO 初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个"极值"来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。
描述
在基本粒子群算法中, 粒子群由n个粒子组成, 每个粒子的位置x
i
代表优化问题在D维搜索空间中潜在的解。粒子在搜索空间中以一定的速度飞行, 这个速度根据它本身的飞行经验和同伴的飞行经验来动态调整下一步飞行方向和距离。所有的粒子都有一个被目标函数决定的适应值, 并且
知道自己到目前为止发现的最好位置(个体极值p
i )和当前的位置(x
i
)。除此
之外, 每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(全局极值p
g
)。
粒子群算法的数学描述如下: 每个粒子i包含为一个D维的位置向量
x
i =( x
i1
, x
i2
, ……, x
iD
) 和速度向量v
i
= ( v
i1
, v
i2
,……, v
iD
), 粒子i
搜索解空间时, 保存其搜索到的最优经历位置p i = ( p
i1, p
i2
, ……, p
iD
)
。
在每次迭代开始时, 粒子根据自身惯性和经验及群体最优经历位置p
g
=
( p
g1, p
g2
, ……, p
gD
)来调整自己的速度向量以调整自身位置。c
1
、c
2
是
正常数,称之为加速因子; r
1、r
2
为[ 0, 1]中均匀分布的随机数, d为D维
中的维数;ω是惯性权重因子。其中, 每个粒子的位置和速度更新按下式v id t+1=w∗v id t+c1r1(p id t−x id t)+c2r2(p gd t−x id t) (1)
x id t+1=x id t+v id t+1 (2)
式(1)由三部分组成, 第一部分是粒子原来的速度, 其值越大, 越利于全局搜索, 其值小则利于局部搜索能力, 具有平衡全局和局部搜索的能力; 第二部分是粒子本身的思考, 表明粒子自身经验对当前搜索倾向的吸
引程度, 受到c
1 r
1
的随机调整, 是对粒子所积累经验的利用, 使粒子有了
足够强的全局搜索能力, 避免局部极小; 第三部分是粒子学习其他粒子经
验的过程, 表明粒子间信息的共享和社会协作, 受到c
2r
2
的随机调整, 并
与p
g
的位置和种群的领域拓扑结构直接相关。在这三部分的共同作用下, 粒子根据自己的经验并利用信息共享机制不断调整自己的速度与位置, 从而有效地到达最好位置。
粒子位置在每一代的上述更新方式可用下图来描述
由于粒子群算法具有高效的搜索能力, 有利于得到多目标意义下的最优解; 通过代表整个解集种群, 按并行方式同时搜索多个非劣解, 也即搜索到多个Pareto 最优解; 同时, 粒子群算法的通用性比较好, 适合处理多种类型的目标函数和约束,并且容易与传统的优化方法结合, 从而改进自身的局限性, 更高效地解决问题。因此, 将粒子群算法应用于解决多目标优化问题上具有很大的优势。
粒子群算法思想描述如下: 初始化种群后,种群的大小记为N。基于适应度支配的思想,将种群划分成两个子群,一个称为非支配子集A, 另一个
称为支配子集B, 两个子集的基数分别为n
1、n
2
, 满足两个子群基数之和为
N。外部精英集用来存放每代产生的非劣解子集A, 每次迭代过程只对B中的粒子进行速度和位置的更新, 并对更新后的B中的粒子基于适应度支配
思想与A中的粒子进行比较, 若x
i ∈B,任意x
j
∈A, 使得x
i
支配x
j
, 则删
除x
j ,使x
i
加入A更新外部精英集; 且精英集的规模要利用一些技术维持
在一个上限范围内, 如密度评估技术、分散度技术等。最后, 算法终止的准则可以是最大迭代次
数T
max
、计算精度ε或最优解的最大凝滞步数△t等。具体步骤如下图所示: