文档介绍:2005 届优秀毕业论文[设计]集(第六册信息工程学院)
Collection Graduation Theses (Projects) of SZU 2005 (VOLUME Ⅵ College of Information and Engineering)
PSO 算法的 C 语言实现
(信息工程学院电子信息专业潘丹)
(学号:2001132133)
内容摘要:粒子群优化(PSO)算法是一类随机全局优化技术,通过粒子间的相互作用发现
复杂搜索空间中的最优区域。PSO的优势在于简单容易实现而又功能强大。本文重点讲述了如何
用c语言来实现粒子群优化算法的,通过对一个函数的优化试验表明:作者开发的粒子群优化算法
结构简单,运行快,是一个通用有效的优化工具。
关键词:粒子群优化
教师点评:粒子群优化是模拟鸟群觅食的过程完成寻优过程,算法具有简单、控制点参数少
的特点。该文准确理解了该算法并利用 C 语言进行实现,实现方法具有通用性。(点评教师:李
霞,教授)
引言
优化算法很多,粒子群优化(PSO)算法是一类随机全局优化技术,PSO 算法通过粒子间的
相互作用发现复杂搜索空间中的最优区域。PSO 的优势在于简单,容易实现,同时又有深刻的
智能背景,既适合科学研究,又特别适合工程应用 PSO 已成为国际演化计算界研究的热点。
下面着重讨论 PSO 算法的 C 语言实现。
一、算法原理
PSO算法最早是由Eberhart博士和Kennedy博士于1995年提出的,PSO的基本概念源于对鸟
群捕食行为的研究。一群鸟在随机搜寻食物,找到食物的最优策略是什么呢。最简单有效的就是
搜寻目前离食物最近的鸟的周围区域。PSO 中,每个优化问题的潜在解都是搜索空间中的一只
鸟,称之为“粒子”(particle)。每个粒子都有一个速度决定他们飞翔的方向和距离和一个由
被优化的函数决定的适应值,然后粒子们就追随当前的最优粒子在解空间中进行搜索。(图1所示)
1
潘丹:PSO 算法的 C 语言实现
二、算法的 C 语言设计
1. 流程图设计
PSO 初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,
粒子通过跟踪两个极值来更新自己。第一个就是粒子本身所找到的最优解。这个解称为个体极值。
另一个极值是整个种群目前找到的最优解。这个极值是全局极值。粒子在找到上述两个极值后,
就根据下面两个公式来更新自己的速度与位置
= + −+ −( )
v id v id c1 * rand () * ( p id x id ) c 2 * Rand () * ( p gd x id ) 1
= +
x id x id v id (2)
其中,C1C2 是加速度常数,一般取 2; Rand()rand()表示在[0,1]内变化的随机数。
粒子群优化算法的流程如下:
step 1:初始化一群微粒(群体规模为 m),包
括随机位置和速度;
step 2:评价每一个微粒的适应度;
step 3:对每个