粒子群算法
1. 题目介绍
粒子群算法,其全称为粒子群优化算法 (Particle Swarm Optimization, PSO) 。它是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的搜索算法。粒子群算法属于启发式算法也叫智能优化算法,其基本思想在于通过群体中个体之间的协作和信息共享来寻找最优解。
我们的目标是寻找一个函数的全局最小值或最大值,这个函数可以是二维或三维的,也可以是多维的。为了方便理解,下面通过一张图来直观地理解这个算法(也是本实验的结果):

可以看到,一开始图中有很多点,它们随机地分布在三维图像中,随着算法的进行,这些点会逐渐往全局最小值的方向靠拢,这个过程就像鸟类觅食一样,找到食物的鸟会带着其它鸟往食物靠拢。有的点移动得快,到达全局最小值后就不怎么动了;有些点移动得慢,会在局部来回震荡,始终也无法到达目标位置。但是不管怎样,只要有一个点到达了最优位置,就可以认为算法已经成功找到了最优解。
上图中这个三维函数的定义为:
f(x,y)={
30x−y;x<m,y<m30y−x;x<m,y≥mx2−y/2;x≥m,y≤m20y2−500x;x≥m,y≥m f(x, y) =\begin{cases} 30x-y; & x<m, y<m \\ 30y-x; & x<m,y≥m \\ x^2-y/2; & x≥m,y≤m \\ 20y^2-500x; & x≥m, y≥m \end{cases} f(x,y)=⎩
⎨
⎧30x−y;30y−x;x2−y/2;20y2−500x;x<m,y<mx<m,y≥mx≥m,y≤mx≥m,y≥m
在本实验中,设置参数为 m=30,0<x,y<60m=30,0<x,y<60m=30,0<x,y<60,参数也可以选择其它的值。
在三维空间中随机选取 sss 个粒子,每个粒子的坐标满足: x,y∈(0,60),z=f(x,y)x, y ∈ (0, 60), z=f(x,y)x,y∈(0,60),z=f(x,y) 。假设随机选取 303030 个粒子,在初始状态下,这些粒子的位置分布如下图所示:

在后续的迭代过程中,每个粒子会不断向更优的位置靠拢。对于第 iii 个粒子,这个过程可以很容易地表示成:xik+1=xik+offsetx_{i}^{k+1}=x_i^k+offsetxik+1=xik+offset。其中,k+1k+1k+1 表示当前轮次,kkk表示上一轮。
从上述表达式可以看出,要不断优化迭代方向,最重要的操作就是在每一轮中都找一个最合适的 offsetoffsetoffset 值。聪明的计算机科学家们在穷举了无数条件后,最终想到了offsetoffsetoffset 主要受三个值的影响:粒子上一轮移动所产生的惯性 vikv_i^{k}vi

本文介绍了粒子群优化算法的基本原理及其实现过程,通过模拟鸟群觅食行为,在多维空间中寻找函数的全局最优解。
1934

被折叠的 条评论
为什么被折叠?



