Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251632
  • 博文数量: 45
  • 博客积分: 170
  • 博客等级: 入伍新兵
  • 技术积分: 488
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-13 14:43
文章分类

全部博文(45)

文章存档

2014年(2)

2013年(35)

2012年(8)

我的朋友

分类:

2012-09-13 19:33:12

粒子群算法( Particle Swarm Optimization, PSO)最早是由EberhartKennedy1995年提出,它的基本概念源于对鸟群觅食行为的研究,它具有很强的全局搜索能力。

PSO算法就是模拟一群鸟寻找食物的过程,每个鸟都是PSO中的一个粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中不断的改变自己的位置与速度。然后记录每个粒子(鸟)的最合适位置,并且从中得到全局的最优位置。通过不断的循环,最后得到的全局位置可能就是食物的位置。

PSO算法步骤如下:

Step1: 初始化粒子群,即随机给定m个粒子的初始位置与初始速度。(通常,粒子群的数目是根据具体问题而定的,一般设置在1050之间。其实对于大部分的问题1020个粒子就可以取得很好的效果。)

Step2: 给定适应度函数,计算每个粒子的适应值。(适应度函数就是如何计算当前鸟与食物的距离。用来判断是否是最佳位置。假设求y=1-cos(3*x)*exp(-x)[0,4]中的最大值,那么y的值就是适应值,而这个函数就是适应度函数。

Step3: 计算惯性权值ww较大促进全局搜索,w较低促进精细的局部搜索。因此动态递减的降低w是比较合适的,来自刘衍民的《粒子群算法的研究及应用》的论文中有如下一个公式:w=w_max-(w_max-w_min)*t/T_max,其中,w_max表示最大惯性权重;w_min表示最小惯性权重;t表示当前迭代次数;T_max表示最大迭代次数,在大多数应用中w_max=0.9,w_min=0.4

Step4: 对每个粒子,比较它的当前的适应值和它之前经历过的最好位置Pi的适应值。如果更好,则更新Pi

Step5: 对每个粒子,比较它当前的适应值和种群中最好的位置Pg的适应值。如果更好,则更新Pg。(Pg只有一个值。)

Step6: 对粒子进行位置与速度的更新。(速度的更新公式:vi=wvi c1r1­(pi-xi) c2r2(pg-xi),其中等式右边的vi表示上一次粒子i的速度,c1为认知常数一般取2r101之间的随机数,c2是社会知识常数一般取2r201之间的随机数,pi是个体i的最优解,pg是群体的最优解,w是惯性权重,xii当前位置。位置更新公式:xi=xi vi,其中等式右边的xii上一次的位置,vii这次的速度。)

Step7: 是否满足停止条件(足够好的位置或最大的迭代次数),若满足停止条件则输出Pg,否则转到Step2继续进行直到满足条件。

阅读(2202) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:和声搜索算法

给主人留下些什么吧!~~