数学建模算法学习--粒子群算法PSO

PSO同遗传算法类似,是一种基于迭代的优化算法。系统初始化为一组随机解,通过迭代搜寻最优值。但是它没有遗传算法用的交叉(crossover)以及变异(mutation),而是粒子在解空间追随最优的粒子进行搜索。

场景:一群鸟在随机搜索食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是他们知道当前的位置离食物还有多远,那么找到食物的最优策略就是搜寻目前离食物最近的鸟的周围区域。

算法介绍:PSO中,每个优化问题的解都是搜索空间中的一只鸟,称为粒子。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索。PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己。

课堂老师讲的很有意思,现分享在此

对于一个例子,它的方向应该如何确定呢?取决于3个方面

(1)是它原来的方向,下一个时刻的方向,肯定依赖当前时刻的方向

(2)该粒子本身历史运动过程中的最优方向

(3)全局所有粒子历史运动过程中的最优方向

所以对于下一时刻的方向,应该为上述3个方向的合方向。

这样对为什么会存在两个极值就更好理解啦!

注:

(1)PSO对于种群大小不十分敏感,所以初始种群设置为500-1000,对最终结果影响不大

(2)PSO适用于连续函数极值问题,对于非线性,多峰问题均有较强的全局搜索能力

算法步骤:

(1)初始化位置和速度

(2)每次搜寻的结果为粒子适应度,记录每个粒子的个体最优和全局最优

(3)更新粒子的位置和速度

参数设置:种群数量,迭代次数,惯性权重(随机数),学习因子, 空间维数,位置限制,速度限制。


 

 

 

 

 

你可能感兴趣的:(数学建模)