粒子群算法实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

粒子群算法解决函数优化问题

学院:信息科学与工程学院

目录

引言 (1)

一、问题描述 (2)

1.1 连续函数求最优值问题 (2)

1.2 粒子群算法 (2)

二、算法设计 (3)

2.1 流程框图 (3)

2.2 算法实现 (3)

2.3 参数选择 (4)

三、程序设计 (5)

3.1 编写程序 (5)

四、结果与分析 (6)

4.1 实验结果: (6)

4.2 分析: (7)

五、总结 (7)

引言

本文主要利用粒子群算法解决连续函数的最小值问题,粒子群优化是一种新兴的基于群体智能的启发式全局

搜索算法,粒子群优化算法通过粒子间的竞争和协作以实现在复杂搜索空间中寻找全局最优点。它具有易理解、易实现、全局搜索能力强等特点,倍受科学与工程领域的广泛关注,已经成为发展最快的智能优化算法之一。本文介绍了粒子群优化算法的基本原理,分析了其特点,并将其应用于函数优化问题求解。

求函数最优值问题,对此问题,传统的优化技术很容易陷入局部最优解,求得全局优化解的概率不高,可靠性低;为此,建立尽可能大概率的求解全局优化解算法是求解函数优化的一个重要问题。本文采用粒子群算法来解决这类问题。

一、问题描述

1.1 连续函数求最大值问题

本文主要选取一个三维函数,利用matlab 编写粒子群算法程序来求解它们 以验证遗传算法在解决函数优化问题中的有效性。本文选取的函数为:f=x(1).^2+x(2).^2+x(3).^2,求它的最小值。

1.2 粒子群算法

PSO 从这种模型中得到启示并用于解决优化问题。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。

PSO 初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。

假设在一个D 维的目标搜索空间中,有N 个粒子组成一个群落,其中第i 个粒子表示为一个D 维的向量

),,,(21iD i i i x x x X =,N i ,,2,1 =。

第i 个粒子的“飞行 ”速度也是一个D 维的向量,记为

),,21i iD i i v v v V ,(=,3,2,1 =i 。

第i 个粒子迄今为止搜索到的最优位置称为个体极值,记为

),,,(21iD i i best p p p p =,N i ,,2,1 =。

整个粒子群迄今为止搜索到的最优位置为全局极值,记为

),,,(21gD g g best p p p g =

在找到这两个最优值时,粒子根据如下的公式(1.1)和( 1.2)来更新自己的速度和位置:

())

(2211id gd id id id id x p r c x p r c v w v -+-+*= (1.1)

id id id v x x += (1. 2)

其中:1c 和2c 为学习因子,也称加速常数(acceleration constant),1r 和2r 为[0,1]范围内的均匀随机数。式(1.1)右边由三部分组成,第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己先前速度的趋势;第二部分为“认知(cognition)”部分,反映了粒子对自身历史经验的记忆(memory)或回忆(remembrance),代表粒子有向自身历史最佳位置逼近的趋势;第三部分为“社会(social)”部分,反映了粒子间协同合作与知识共享的群体历史经验。

二、算法设计

这部分内容主要是针对本文主要研究问题的类型确定粒子群算法具体实现过程和一些参数的选择。

2.1算法流程框图

图1 粒子群算法流程图

2.2 算法实现

算法的流程如下:

① 初始化粒子群,包括群体规模N ,每个粒子的位置i x 和速度i V

② 计算每个粒子的适应度值][i F it ;

③ 对每个粒子,用它的适应度值][i F it 和个体极值)(i p best 比较,如果

)(][i p i F best it > ,则用][i Fit 替换掉)(i best p ;

④ 对每个粒子,用它的适应度值][i Fit 和全局极值best g 比较,如果)(][i p i F best it >则用][i F it 替best g ;

⑤ 根据公式(1.1),(1.2)更新粒子的速度i v 和位置i x ;

⑥ 如果满足结束条件(误差足够好或到达最大循环次数)退出,否则返回②。

2.3 参数选择

本算法中主要的参数变量为w (惯性权值),1c ,2c (加速因子),N (种

群数),M (迭代次数),D (粒子维数)。

(1)种群规模

通常,种群太小则不能提供足够的采样点,以致算法性能很差;种群太大尽管可以增加优化信息,阻止早熟收敛的发生,但无疑会增加计算量,造成收敛时间太长,表现为收敛速度缓慢。种群规模一般设为100~1000。本文选择种群规模为100。

(2)最大迭代次数

迭代次数越多能保证解的收敛性,但是影响运算速度,本文选1000次。

(3)惯性权值

惯性权重w 表示在多大程度上保留原来的速度。w 较大,全局收敛能力强,局部收敛能力弱;w 较小,局部收敛能力强,全局收敛能力弱。本文选0.6。

(4)加速因子

加速常数2c 和2c 分别用于控制粒子指向自身或邻域最佳位置的运动。文献

[20]建议0.421≤+=c c φ,并通常取221==c c 。本文也取221==c c 。

(5)粒子维数

本文中粒子维数取决于待优化函数的维数,例如本文取3。

需要说明的是,本文的程序允许改变这些参数,因为本文编写的程序参照matlab 工具箱,留给用户解决这类问题一个接口函数,上述的各个参数正是接口

相关文档
最新文档