收藏 分享(赏)

粒子群算法实例.doc

上传人:tangtianxu1 文档编号:2891497 上传时间:2018-09-29 格式:DOC 页数:9 大小:150KB
下载 相关 举报
粒子群算法实例.doc_第1页
第1页 / 共9页
粒子群算法实例.doc_第2页
第2页 / 共9页
粒子群算法实例.doc_第3页
第3页 / 共9页
粒子群算法实例.doc_第4页
第4页 / 共9页
粒子群算法实例.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、粒子群算法解决函数优化问题学院:信息科学与工程学院目 录引言 1一、问题描述 21.1 连续函数求最优值问题 .21.2 粒子群算法 .2二、算法设计 32.1 流程框图32.2 算法实现32.3 参数选择4三、程序设计 53.1 编写程序 .5四、 结果与分析 64.1 实验结果: .64.2 分析: .7五、 总结 71引言本文主要利用粒子群算法解决连续函数的最小值问题,粒子群优化是一种新兴的基于群体智能的启发式全局搜索算法,粒子群优化算法通过粒子间的竞争和协作以实现在复杂搜索空间中寻找全局最优点。它具有易理解、易实现、全局搜索能力强等特点,倍受科学与工程领域的广泛关注,已经成为发展最快的

2、智能优化算法之一。本文介绍了粒子群优化算法的基本原理,分析了其特点,并将其应用于函数优化问题求解。求函数最优值问题,对此问题,传统的优化技术很容易陷入局部最优解,求得全局优化解的概率不高,可靠性低;为此,建立尽可能大概率的求解全局优化解算法是求解函数优化的一个重要问题。本文采用粒子群算法来解决这类问题。2一、问题描述1.1 连续函数求最大值问题本文主要选取一个三维函数,利用matlab 编写粒子群算法程序来求解它们以验证遗传算法在解决函数优化问题中的有效性。本文选取的函数为:f=x(1).2+x(2).2+x(3).2,求它的最小值。1.2 粒子群算法PSO 从这种模型中得到启示并用于解决优化

3、问题。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。PSO 初始化为一群随机粒子( 随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。假设在一个 D维的目标搜索空间中,有

4、N个粒子组成一个群落,其中第i个粒子表示为一个 维的向量 ),(21iDii xX, ,21。第 i个粒子的“飞行 ”速度也是一个 维的向量,记为 ),21i iDivV,(, 3, 。第 i个粒子迄今为止搜索到的最优位置称为个体极值,记为 ),(21iDibest pp, N,21。整个粒子群迄今为止搜索到的最优位置为全局极值,记为 ),(21gDgbestg在找到这两个最优值时,粒子根据如下的公式(1.1)和( 1.2)来更新自己的速度和位置:3)(21 idgidiidid xprcxprcvw (1.1)iiix(1. 2)其中: 1c和 2为学习因子,也称加速常数(accelerat

5、ion constant), 1r和 2为0,1范围内的均匀随机数。式(1.1) 右边由三部分组成,第一部分为“惯性(inertia)”或“ 动量(momentum)”部分,反映了粒子的运动“ 习惯(habit)” ,代表粒子有维持自己先前速度的趋势;第二部分为“认知(cognition)” 部分,反映了粒子对自身历史经验的记忆(memory)或回忆(remembrance) ,代表粒子有向自身历史最佳位置逼近的趋势;第三部分为“社会(social)” 部分,反映了粒子间协同合作与知识共享的群体历史经验。 二、算法设计这部分内容主要是针对本文主要研究问题的类型确定粒子群算法具体实现过程和一些参

6、数的选择。2.1 算法流程框图图 1 粒子群算法流程图2.2 算法实现算法的流程如下:4 初始化粒子群,包括群体规模 ,每个粒子的位置 和速度NixiV 计算每个粒子的适应度值 ;iFt 对每个粒子,用它的适应度值 和个体极值 比较,如果it )( ipbest,则用 替换掉 ;)(ipiFbesttit)(bestp 对每个粒子,用它的适应度值 和全局极值 比较,如果iFtbestg则用 替 ;)(iibestt iFtbestg 根据公式(1.1),(1.2)更新粒子的速度 和位置 ;ivix 如果满足结束条件(误差足够好或到达最大循环次数)退出,否则返回。2.3 参数选择本算法中主要的参

7、数变量为 (惯性权值) , , (加速因子) ,N w1c2c(种群数) ,M (迭代次数) ,D (粒子维数) 。(1)种群规模通常,种群太小则不能提供足够的采样点,以致算法性能很差;种群太大尽管可以增加优化信息,阻止早熟收敛的发生,但无疑会增加计算量,造成收敛时间太长,表现为收敛速度缓慢。种群规模一般设为1001000。本文选择种群规模为100。(2)最大迭代次数迭代次数越多能保证解的收敛性,但是影响运算速度,本文选1000次。(3)惯性权值惯性权重 w表示在多大程度上保留原来的速度。 w较大,全局收敛能力强,局部收敛能力弱; 较小,局部收敛能力强,全局收敛能力弱。本文选0.6。(4)加速

8、因子加速常数 2c和 分别用于控制粒子指向自身或邻域最佳位置的运动。文献20建议 0.41,并通常取 21c。本文也取 21c。(5)粒子维数5本文中粒子维数取决于待优化函数的维数,例如本文取3。需要说明的是,本文的程序允许改变这些参数,因为本文编写的程序参照matlab工具箱,留给用户解决这类问题一个接口函数,上述的各个参数正是接口函数的参数,因此允许改变。另外对于 w和c也可采用变参数法,即随迭代次数增加,利用经验公式使它们动态调整,本文采用固定值。三、程序设计3.1 编写程序程序主要有两个m文件组成,pso.m是遗传算法接口文件,fitness.m是待求解的问题函数,只需要修改fitne

9、ss.m里的目标函数就可实现不同问题的解。(1)pso.m 文件function xm,fv = PSO(fitness,N,c1,c2,w,M,D)%fitness-是要优化的目标函数, N-种群数,c1,c2- 学习因子, w-惯性权重,M-迭代次数,D- 粒子维数。format long;%初始化种群for i=1:Nfor j=1:Dx(i,j)=randn; %随机初始化位子v(i,j)=randn; %随机初始化速度endend%先计算各个粒子的适应度,并初始化pi-粒子个体极值和pg-全局极值for i=1:Np(i)=fitness(x(i,:);y(i,:)=x(i,:);e

10、ndpg = x(N,:); %pg为全局极值for i=1:(N-1)if fitness(x(i,:)fitness(pg)pg=x(i,:);6endend%进入粒子群算法主要循环for t=1:Mfor i=1:Nv(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:)+c2*rand*(pg-x(i,:);x(i,:)=x(i,:)+v(i,:);if fitness(x(i,:)p(i)p(i)=fitness(x(i,:);y(i,:)=x(i,:);endif p(i)fitness(pg)pg=y(i,:);endendPbest(t)=fitness(p

11、g);endxm = pg;fv = fitness(pg);(2)目标函数fitness.m文件function f=fitness(x)f=x(1).2+x(2).2+x(3).2 ;end需要说明的是,针对不同的函数优化,只需要改变目标函数就可以。(3)在命令行输入或建立调用m文件在命令行先后输入xm,fv = PSO(fitness,100,2,2,0.6,1000,3),或建立包涵该语句的m文件,运行即可得到结果。四、 结果与分析4.1 实验结果7(1)对于目标函数f=x(1).2+x(2).2+x(3).2 优化结果如下:xm =1.0e-162 *0.5561630774546230.9372920235923590.146573921409127fv =0 , fv是最优值, xm为最优值对应的自变量值。4.2 分析通过对实验结果和已知最小值比较可知,该算法能有效解决这类问题,需要特别指出的是xm的取值只是近似值,另外,本文的粒子群算法程序只是实现粒子群算法的基本功能,该算法还有待进一步改进。五、总结本文利用粒子群算法思想,通过编写 matlab 程序,对一个三维连续函数进行优化得到了较好的仿真结果,证明粒子群算法在解决这类问题的可行性。另外,在编写本文的工作过程中,提高了自己对粒子群算法的理解和应用能力。为今后利用智能算法撰写论文或进行科学研究打下了很好地基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报