文档库 最新最全的文档下载
当前位置:文档库 › 基于PSO智能优化的SFS三维重构算法研究

基于PSO智能优化的SFS三维重构算法研究

基于PSO智能优化的SFS三维重构算法研究
基于PSO智能优化的SFS三维重构算法研究

CN43 1258/T P ISSN1007 130X 计算机工程与科学

COM P U T ER EN GIN EERIN G&SCIEN CE

2008年第30卷第11期

Vo l 30,N o 11,2008

文章编号:1007 130X(2008)11 0021 04

基于PSO智能优化的SFS三维重构算法研究* Research on the SFS3D Reconstruction Algorithm Based on the PSO Intelligent Optimization

班晓娟,李 欣,宁淑荣,景俊杰

BAN Xiao juan,LI X in,NING Shu rong,JING jun jie

(北京科技大学信息工程学院,北京100083)

(School of Information Engineering,Beijing University of Science and Technology,Beijing100083,C hina)

摘 要:智能优化算法在优化计算、搜索和人工智能方面有着广泛的应用潜力。为了提高三维重构模型的逼真度,本文把智能优化算法中的P SO算法应用在SF S算法改进中,并应用基准测试函数对算法进行仿真比较,最后分析了算法的性能效率与收敛性。可以看出,优化后的SF S算法性能有了显著提高。

Abstract:Par ticle sw arm o pt imization(PSO)is a new heurist ic g lo bal optimizatio n technique based on sw arm intelli g ence.T o impr ove the fidelity o f3D r eco nstr uction,this paper uses a P SO algo rithm to o pt imize the SFS algo rithm and a dopts the basic test function to perfo rm emulatio n and compar isons.In t he end,we analyse the per formance and co nv erg ence speed o f the improv ed SFS algo rithm.Obviously,the metho d has been pro ved r emarkably.

关键词:智能优化算法;PSO算法;SF S算法;算法性能

Key words:intelligent o ptimized alg or ithm;PSO;SFS;algo rithm perfo rmance

中图分类号:T P18;T P391.9文献标识码:A

1 引言

SF S(Shape F ro m Shading,简称SFS)是计算机视觉领域中三维形貌恢复的热门问题,是进行图像理解和三维目标识别的关键技术之一。

通常采用的三维表面重构手段主要有两种:一种是采用多目或多目视觉方法,即立体视觉方法;另一种是试图仅利用一幅图像上的灰度明暗变化,在单一的光源条件为已知的情况下,来恢复三维物体表面的形状及表面方向,即本文所讲的SFS算法。

自从1975年由H o rn提出的SFS思想以来,早期的SF S方法主要基于变分法思想,考虑图像的辐射度和反射图之间的整体误差,将问题转化为求解目标函数的极小值,得到一组Euler方程,该方程主要用迭代方法求解。然而, SF S中使用变分法有内在困难,如PDE求解唯一性问题、非线性PDE的线性化误差等。经过几十年的发展,其他学者在H orn的基础上提出了多种SFS方法:频域方法、三角面元方法、启发式方法等,还有近几年提出的神经网络方法。但是,由于这些方法都利用了物体的局部或整体形状的各种约束条件来获取其表面各点的相对高度或表面法方向等参数值,这些条件使得SFS算法产生一系列问题,如不确定性、算法的不稳定性及局限性、SF S还不适用于复杂的情况并且不能直接用于真实的应用环境,最重要的是得出的结果都不令人满意。

2 PSO算法和S FS算法

2.1 PSO算法 智能群体优化算法

智能优化算法是模仿自然界规律而设计的求解问题的算法。而群智能[1,2](Swar m Intellig ence)是由众多无智能的简单个体组成的群体,通过相互间的简单合作表现出智能行为的特性。自然界中的动物常以集体的力量觅食生存,这些群落中单个个体的行为是相同的且缺乏智能,而由个体组成的群体则表现了一种有效的复杂智能行为。群智能可以在适当的进化机制引导下通过个体交互以某种突现

*收稿日期:2008 02 26;修订日期:2008 05 20

基金项目:国家自然科学基金资助项目(60503024)

作者简介:班晓娟(1970 ),女,天津人,博士,副教授,CCF会员(E20 0006262S),研究方向为人工智能、数据挖掘等;李欣,硕士,研究方向为人工智能和图像处理;宁淑荣,博士,讲师,研究方向为人工智能和图像处理。

通讯地址:100083北京市北京科技大学信息工程学院;T el:(010)62334980;E mail:H TU ban xj@https://www.wendangku.net/doc/1f10370626.html,

Address:School of In formation Engineering,Beijing University of Science and Techn ology,Beijing100083,P.R.China

形式起作用。典型的方法有Do rigo M提出的蚁群算法和Kennedy J与Ebert har t R提出的微粒群算法PSO[3]。

微粒群优化算法(P SO)是一种基于群体智能的计算模型[4]。PSO算法是基于个体的协作与竞争来完成复杂搜索空间中最优解的搜索,是一种基于群体智能方法的进化计算技术。这种算法不但可用于科学研究也可用于工程应用。目前,PSO算法已经引起了进化计算、优化及其它领域的广泛关注。

2.2 SFS算法

SF S算法由图像重建物体表面的三维形状,即利用单幅图像灰度明暗变化来恢复物体表面三维形状,在一定的约束条件下从平滑变化的灰度图像恢复出表面的取向信息,即根据一个确定的反射模型建立物体表面形状与图像亮度之间的关系,然后对这些约束关系联立求解可得到物体表面的三维形状。

SF S算法的任务是利用单幅图像中物体表面的明暗变化来恢复其表面各点的相对高度或表面法方向等参数值,为进一步对物体进行三维重构奠定基础。

SF S算法可以归纳为四个方面:最小值方法、演化方法、局部分析法和线性化方法。这些算法在可靠性、稳定性、局限性以及实用性方面都存在一定的问题。传统的四种SFS方法都是以如下亮度方程为基础来求解的:

E(x,y)=R(p(x,y),q(x,y))=

cos -p cos sin -q sin sin

1+p2+q2

=

(co s( - )sin sin +co s cos )(1)其中,E为二维图像中像素点(x,y)的灰度值;表面方向p = z/ x,q= z/ y是物体表面点高度z关于图像坐标的偏导数。 是曲面反射率, 是光源偏角(光源方向L与x z平面的夹角), 是光源倾角(光源方向L与z轴正方向的夹角)。

完整的SFS算法首先是对控制参数的估计,随后进行算法的推导和实现。其中控制参数的估计包括对 、 、 的估计。

一般的SFS算法是通过对亮度方程的变形和转变再加上限制条件进而求出极值得到结果的。

通过上面对两种算法的简单分析我们可以看出,PSO 算法的主要优点在于群体搜索和个体相互作用寻优机制,它对于目标函数的形态没有特殊的要求,在求解时不依赖于梯度信息。鉴于以上特点以及PSO本身收敛速度快、参数设置少等优势,本文从智能优化算法入手,应用PSO算法将亮度方程转化为适应度方程,并且应用PSO方法对 、 、 这三个参数进行调节,从而对SF S算法进行优化使得结果更为逼真。

3 PSO改进SFS算法

3.1 转化亮度方程

我们遇到的很多问题本质上都是函数优化问题或者可以转换为函数优化问题进行求解的,对于函数优化已有一些成熟的解决方法,如遗传算法等。但是,对于超高维、多局部极值的复杂函数而言,遗传算法往往在优化的收敛速度和精度上难以达到期望的要求。

粒子群优化算法(PSO)源于鸟类捕食行为的模拟[5,6]。Shi与Eberhart的实验证明,对大多数的非线性Benchmark 函数,PSO在优化速度和精度上均较遗传算法有一定的改善。因此,本文选择PSO算法来优化SF S算法。

针对SF S算法中亮度方程(见式(1))的求解,粒子可以直接编码为(x,y),而将适应度函数定义为待优化函数本身,即直接用待优化的目标函数(亮度方程)转化为适应度函数,然后按照P SO算法的步骤进行求解。

应用PSO算法解决优化问题有两个重要步骤:问题解的编码和适应性函数的选择。P SO算法首先初始化一群随机粒子(Par ticle),每一个粒子都代表着优化问题的一个可能解,它有自己的位置和速度,粒子位置坐标对应的目标函数值作为该粒子的适应度[7]。在每次迭代中,各个粒子记忆、追随当前最优粒子,通过跟踪两个 极值 来更新自己:一个是粒子本身所找到的最优解,即个体极值p best;另一个是整个种群目前找到的最优解,称为全局极值gbes t。在找到这两个最优值后,粒子按照如下公式(2)和(3)进行迭代,更新自己的速度和位置。

设在D维搜索空间中,种群粒子数为n,x j=(x j1,x j2, ,x j p)、v j=(v j1,v j2, ,v jp)分别表示为第j个粒子的位置和速度,则每个粒子的速度和位置分别更新为: V j,d(t+1)=wv j,d(t)+c1*rand()*(p best j,d(t)-x j,d(t))+

c2*rand()*(pbest d(t)-x j,d(t))(2) X j,d(t+1)=x j,d t+v j,d(t+1),j=1,2, ,D(3)其中,上标t、t+1表示当前代和下一代;p bes tB j,d为粒子j 达到最佳位置时第d维对应的位置坐标;gbes tB dB为种群目前达到最佳位置时在第d维对应的位置坐标;w为惯性权系数;c1、c2为加速因子,通常设c1=c2=2;r and()为[0, 1]之间的随机数。为减少粒子飞离搜索空间的可能性,将速度v j,d(t)限制在[-v d max,v d max]之间,v d max决定了粒子飞行的最大距离。其中:

v d max=k*x d max,0.1 k 0.5(4)其中,x d max为搜索空间第d维位置的上界。

惯性权系数w用于控制算法的收敛特性。文献[5,6]的实验表明,惯性权系数w如果随算法迭代进行而线性减少,就能改善算法的收敛性能。通常w按下式进行调节:

w=w m ax-

w max-w min

iter max

*iter(5)其中,iter max为最大进化代数,iter为当前进化代数。

3.2 估计控制参数 、 、

一组好的(x,y)像素组合能使图像生成更逼真,同时其优化算法定义的适应度函数值也越小。基于PSO算法的参数选择方法是:首先依据经验给出一组参数值,进行SF S算法训练;然后根据目标值的大小选择另一组参数再训练,直到得到满意的训练模型。利用P SO算法在参数 、 、 所有可能取值组合的可行解中寻找最优解,使适应度函数值最小,这就是本文参数估值的思想。

利用PSO算法参数 、 、 估值,首先将参数编码成如下形式的粒子编码串:[ ],通过一系列寻优迭代,获得最佳参数。以此来获得SFS算法适应度函数的较小值。

算法流程如下图1

所示。

图1 用PSO 算法优化SFS 算法的流程图

图1中,第二步中适应度值是用给定的适应度函数(式(1))计算粒子中每一个粒子的适应度值;第三步中所有p bes t 中最佳的适应度值对应的位置设置为gbes t;并不断迭代,直到到达最大迭代进化代数。

4 仿真实验与分析

传统SFS 算法的缺陷主要在于算法性能与收敛性,针对这几方面本文做了如下仿真分析。

对半球体的三维形状恢复效果图如图2所示。对形状复杂的花瓶三维形状恢复的效果图如图3所示。经典图片测试结果如图4

所示。

图4 人脸的三维形状恢复

实验表明,本文的优化方法是一种有效的重构算法。克服了传统SF S 算法解的唯一性差的问题。

由于PSO 算法存在早熟和局部收敛的问题,为了分析本文改进后SF S 算法的性能,以PSO 算法和传统的SFS

算法作为参照。针对收敛性能,本文用一个典型的Rasti g rin 复杂函数(式(6))对新算法进行测试。这一函数应用于测试静态和动态变量,针对算法的问题性质进行统计比较。

f (x)=

10

i=1

(x

i

2

-10cos (2 x i )+10),x i [-100,100](6)

测试函数存在全局最小值min f (0)=0。分别用P SO 算法、传统的SFS 算法以及本文算法求解。三种算法收敛趋势如图5

所示。

图5 三种算法的收敛趋势曲线图

结果表明,改进的算法较之P SO 算法和SF S 算法不但提高了全局寻优能力,而且有效避免了早熟收敛问题。

5 结束语

SF S 算法作为计算机视觉领域重要的研究方向,在工业、农业、国防、医学、空间技术等领域具有广泛的应用前景,如单幅人脸图片、解剖模型图片以及内窥镜图片等。本文提出了利用智能优化算法改进SF S 三维重构算法的一种新的设计方法,所采用的PSO 算法具有简单、计算效率高、收敛效果好并且鲁棒性强的优点。从结果可以看出,相

比于其他优化算法,本文优化后的SF S 算法求解的精度获得了显著的提高。这种新的SFS 算法新颖、有效、简单且适用性广泛。新方法还将应用于863项目中,为工程建设提供了有效的途径。

参考文献:

[1] Parisi D.Artificial Life and Hig her Level Cognition[J].Brain

and Cognition,1997,34:160 184.

[2] Adami C.Introdu ction to Artificial Life[M ].TE LOS ,1998:1

15.

[3] E berh art R C,Sh i Y H.Particle S w arm Optim ization:Devel

opments,Applications and Resources [C] Proc of Congress on Evolutionary C om putation,2001:81 86.

[4] Kennedy J,Eb erh a R C.Particle sw arm optim ization [C ]

Proc of th e IEEE In t l Conf on Neural Netw orks ,1995:1942 1948.

[5] Kennedy J,Eb erhart R.Particle S warm Optimization [C ]

Proc of th e IEEE In t l Conf on Neural Netw orks ,1995:1942 1948.

[6] Shi Y H,Eberhart R C.A M odified Particle Sw arm Optimi

zer[C] Proc of the IEE E Int l Conf on Evolutionary Com putation ,1998:69 73.

[7] Ch en Jie,Pan Feng,Cai T ao.Acceleration Factor H armoni

ous Particle Sw arm Optimiz er [J ].In ternation al J ou rnal of Automation and Computing,2006,3(1):41 46.

(上接第20页)

12802条,其余为攻击数据。由于该数据集特征较多,我们首先对其进行约简,采用粗糙集[6]约简为如下14个特征。Ser vice 、flag 、dst_by tes 、co unt 、sr v _count 、rerr or _rate 、sr v _rer ror _r ate 、srv _diff _host _rate 、dst _host _count 、dst _host _same_sr v_rate 、dst_ho st_diff_sr v_rat e 、dst _ho st_same _sr c_po rt_rate 、dst_ho st_srv _diff_ho st_rate 、dst_host_srv _ser ro r _r ate 。

由此确定遗传BP 的输入层神经元个数为14。由于该数据集附加的标志位表示正常或者异常,因此遗传BP 的输出层的神经元个数为1。我们设定隐藏层的神经元个数为4。其他参数设定如下:种群规模n =40,变异率P m =0.1,交叉率P c =0.6,染色体大小为40*65,迭代代数为100,权值和阀值的初始化范围为-25~25。

4.2 实验结果及分析

设定好各种参数,我们使用BP 遗传网络算法对实验

数据进行测试,得到的标准BP 算法实验结果如图1所示,遗传BP 网络算法实验结果如图2所示。

对比图1和图2可知,BP 算法迭代到第75代时才达到了遗传算法第一代的全局误差水平,遗传神经网络算法在14代时收敛,而BP 算法在100代时收敛。而且,在同一误差限下(0.635到0.6226范围)遗传BP 算法曲线下降明显比BP 算法快。这说明本文所提出算法的性能优于BP 算法。对于异常检测而言,意味着遗传BP 算法能够快速地学习到网络权值,从而建立检测模型,实现对异常的快速

检测。

5 结束语

利用GA 全局搜索能力,本文对BP 神经网络的权值进行优化,详细讨论了遗传BP 神经网络参数设定、染色体与种群的产生、适应度的计算、遗传算子的设定,给出了遗传BP 神经网络的算法,并将提出的算法用于异常检测之中。在K DDCU P 99入侵数据上进行了实验,结果表明,提出的遗传BP 神经网络算法权值优化速度远远快于一般的BP 算法,意味着利用遗传BP 神经网络算法能够快速地建立异常检测模型,为快速检测攻击提供支撑。本文是基于离线攻击数据进行实验的,下一步的工作是研究如何将该优化算法用于在线异常检测之中。

参考文献:

[1] M cClelland R.Parallel Distributed Proces sing:Ex ploration s

in th e M icrostru cture of Cognition.Vol 1[M ].Cambridge,M A:M IT Press ,1986.

[2] Davis L.H andb ook of Gen etic Algorithms [M ].New York:

Van Nostrand Reinhold,1991.

[3] M ichalew icz Z.Genetic Algorithm +Data Structure=E volu

tion Program s [M ].2nd ed.New York:Springer Verlag,1994.

[4] 李建珍.基于遗传算法的人工神经网络学习算法[J].西北师

范大学学报,2002,38(2):33 37.

[5] [2007 11 15].https://www.wendangku.net/doc/1f10370626.html,/databases/kddcup99/

task.htm.

[6] Paw lak Z.Rough S ets [J ].Intern ational Journ al of Informa

tion and Com puter Sciences,1982,11(5):341 356.

(完整word版)用MATLAB编写PSO算法及实例

用MATLAB 编写PSO 算法及实例 1.1 粒子群算法 PSO 从这种模型中得到启示并用于解决优化问题。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。 PSO 初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。 假设在一个维的目标搜索空间中,有个粒子组成一个群落,其中第个粒子表示为一个维的向量 ,。 第个粒子的“飞行 ”速度也是一个维的向量,记为 ,。 第个粒子迄今为止搜索到的最优位置称为个体极值,记为 ,。 整个粒子群迄今为止搜索到的最优位置为全局极值,记为 在找到这两个最优值时,粒子根据如下的公式(1.1)和( 1.2)来更新自己的速度和位置: (1.1) (1. 2) 其中:和为学习因子,也称加速常数(acceleration constant),和为[0,1]范围内的均匀随机数。式(1.1)右边由三部分组成,第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己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 ) (2211id gd id id id id x p r c x p r c v w v id id id v x x 1c 2c 1r 2r

标准粒子群算法(PSO)及其Matlab程序和常见改进算法

一、粒子群算法概述 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy博士提出,源于对鸟群捕食的行为研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。 PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。 PSO 初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个”极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。 二、算法原理 粒子群算法采用常数学习因子,及惯性权重,粒子根据如下的公式更新自己的速度和位置。 V ki=ωk V i?1i+c1r1(Q bi?Q k?1i)+c2r2(Q bg?Q k?1i)Q ki=Q k?1i+V ki 三、算法步骤 1、随机初始化种群中各微粒的位置和速度; 2、评价个粒子的适应度,将各粒子的位置和适应度储存在各微粒的pbest(Q bi)中,将所有pbest中适应度最优的个体的位置和适应度存储在gbest(Q bg)中。 3、更新粒子的速度和位移。 V ki=ωk V i?1i+c1r1(Q bi?Q k?1i)+c2r2(Q bg?Q k?1i)Q ki=Q k?1i+V ki 4、对每个微粒,与其前一个最优位置比较,如果较好,则将其作为当前的最优位置。 5、比较当前所有的pbest和上一迭代周期的gbest,更新gbest。 6、若满足停止条件(达到要求精度或迭代次数),搜索停止,输出结果,否则,返回2。

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

粒子群算法解决函数优化问题 1、群智能算法研究背景 粒子群优化算法(Particle Swarm Optimization,PSO)是由Kennedy 和Eberhart 在研究鸟类和鱼类的群体行为基础上于1995 年提出的一种群智能算法,其思想来源于人工生命和演化计算理论,模仿鸟群飞行觅食行为,通过鸟集体协作使群体达到优。 PSO算法作为一种新的群智能算法,可用于解决大量非线性、不可微和多峰值的复杂函数优化问题,并已广泛应用于科学和工程领域,如函数优化、神经网络训练、经济调度、模式识别与分类、结构设计、电磁场和任务调度等工程优化问题等。 PSO算法从提出到进一步发展,仅仅经历了十几年的时间,算法的理论基础还很薄弱,自身也存在着收敛速度慢和早熟的缺陷。如何加快粒子群算法的收敛速度和避免出现早熟收敛,一直是大多数研究者关注的重点。因此,对粒子群算法的分析改进不仅具有理论意义,而且具有一定的实际应用价值。 2、国内外研究现状 对PSO算法中惯性权重的改进:Poli等人在速度更新公式中引入惯性权重来更好的控制收敛和探索,形成了当前的标准PSO算法。 研究人员进行了大量的研究工作,先后提出了线性递减权值( LDIW)策略、模糊惯性权值( FIW) 策略和随机惯性权值( RIW) 策略。其中,FIW 策略需要专家知识建立模糊规则,实现难度较大,RIW 策略被用于求解动态系统,LDIW策略相对简单且收敛速度快, 任子晖,王坚于2009 年,又提出了基于聚焦距离变化率的自适应惯性权重PSO算法。 郑春颖和郑全弟等人,提出了基于试探的变步长自适应粒子群算

法。这些改进的PSO算法既保持了搜索速度快的特点, 又提高了全局搜索的能力。 对PSO算法的行为和收敛性的分析:1999 年采用代数方法对几种典型PSO算法的运行轨迹进行了分析,给出了保证收敛的参数选择范围。在收敛性方面Fransvan den Bergh引用Solis和Wets关于随机性算法的收敛准则,证明了标准PSO算法不能收敛于全局优解,甚至于局部优解;证明了保证收敛的PSO算法能够收敛于局部优解,而不能保证收敛于全局优解。 国内的学者:2006 年,刘洪波和王秀坤等人对粒子群优化算法的收敛性进行分析,指出它在满足收敛性的前提下种群多样性趋于减小,粒子将会因速度降低而失去继续搜索可行解的能力,提出混沌粒子群优化算法。 2008 年,黄翀鹏和熊伟丽等人分析惯性权值因子大小对PSO算法收敛性所带来的影响,对粒子群算法进行了改进。2009 年,高浩和冷文浩等人,分析了速度因子对微粒群算法影响,提出了一种基于Gaussian 变异全局收敛的粒子群算法。并证明了它能以概率 1 收敛到全局优解。 2010 年,为提高粒子群算法的收敛性,提出了基于动力系统的稳定性理论,对惯性权重粒子群模型的收敛性进行了分析,提出了使得在算法模型群模型收敛条件下的惯性权重和加速系数的参数约束关系,使算法在收敛性方面具有显著优越性。在PSO算法中嵌入别的算法的思想和技术。 1997年,李兵和蒋慰孙提出混沌优化方法; 1998年,Angeline在PSO算法中引入遗传算法中的选择算子,该算法虽然加快了算法的收敛速度,但同时也使算法陷入局部优的概率大增,特别是在优化Griewank 基准函数的优值时得到的结果不理想; 2004 年,高鹰和谢胜利将混沌寻优思想引入到粒子群优化算法中,首先对当前群体中的优粒子进行混沌寻优, 再用混沌寻优的结果随机替换群体中的一个粒子,这样提出另一种混沌粒子群优化算法。

用MATLAB编写PSO算法及实例

用MATLAB编写PSO算法及实例

用MATLAB 编写PSO 算法及实例 1.1 粒子群算法 PSO 从这种模型中得到启示并用于解决优化问题。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。 PSO 初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。 假设在一个维的目标搜索空间中,有个粒子组成一个群落,其中第个粒子表示为一个维的向量 ,。 第个粒子的“飞行 ”速度也是一个维的向量,记为 ,。 第个粒子迄今为止搜索到的最优位置称为个体极值,记为 ,。 整个粒子群迄今为止搜索到的最优位置为全局极值,记为 在找到这两个最优值时,粒子根据如下的公式(1.1)和( 1.2)来更新自己的速度 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) 其中:和为学习因子,也称加速常数(acceleration constant),和为 [0,1]范围内的均匀随机数。式(1.1)右边由三部分组成,第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己先前速度的趋势;第二部分为“认知(cognition)”部分,反映了粒子对自身历史经验的记忆(memory)或回忆(remembrance),代表粒子有向自身历史最佳位置逼近的趋势;第三部分为“社会(social)”部分,反映了粒子间协同合作与知识共享的群体历史经验。 二、算法设计 2.1 算法流程图 2.2 算法实现 算法的流程如下: ()) (2211id gd id id id id x p r c x p r c v w v -+-+*=id id id v x x +=1c 2c 1r 2 r

PSO算法

群体智能方法:是通过模拟自然界生物群体行为来实现人工智能的一种方法。 群体智能这个概念来自对自然界中生物群体的观察,群居性生物通过协作表现出的宏观智能行为特征被称为群体智能。 群体智能具有如下特点: (1) 控制是分布式的,不存在中心控制。因而它更能够适应当前网络环境下的工作状态,并且具有较强的鲁棒性,即不会由于某一个或几个个体出现故障而影响群体对整个问题的求解。 (2) 群体中的每个个体都能够改变环境,这是个体之间间接通信的一种方式,这种方式被称为“激发工作”。由于群体智能可以通过非直接通信的方式进行信息的传输与合作,因而随着个体数目的增加,通信开销的增幅较小,因此,它具有较好的可扩充性。 (3) 群体中每个个体的能力或遵循的行为规则非常简单,因而群体智能的实现比较方便,具有简单性的特点 (4) 群体表现出来的复杂行为是通过简单个体的交互过程突现出来的智能,因此,群体具有自组织性。 PSO基本原理 最初是为了在二维几何空间图形中优化模拟鸟群不可预测的运动。PSO 算法从这种模型中得到启示并用于解决优化问题。PSO算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为“粒子”。所有的粒子都有一个由目标函数决定的适应值(fitness value),每个粒子都由一个两维的速度变量决定各自飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。PSO算法初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己。第一个极值就是粒子本身所经历的最优解,这个解被称为个体极值。另一个极值是整个种群目前所经历的最优解,这个极值被称为全局极值。另外也可以只选取整个种群中的一部分作为粒子的邻居,在所有邻居中的极值被称为局部极值。

PSO算法使用简介

PSO算法使用简介 1 PSO工具箱简介 PSOt为PSO的工具箱,该工具箱将PSO算法的核心部分封装起来,提供给用户的为算法的可调参数,用户只需要定义好自己需要优化的函数(计算最小值或者最大值),并设置好函数自变量的取值范围、每步迭代允许的最大变化量(称为最大速度,Max_V)等,即可自行优化。 与遗传算法相比,PSO仅需要调整少数几个参数即可实现函数的优化。该算法对待优化函数没有任何特别的要求(如可微分、时间连续等),因而其通用性极强,对多变量、高度非线性、不连续及不可微的情况更加具有其优势。 该工具箱的使用主要分为几个步骤: 1) 在Matlab中设置工具箱的路径; 2) 定义待优化函数; 3) 调用PSO算法的核心函数:pso_Trelea_vectorized()。 其中第三步最关键,用户需要根据自己的需要设置好参数,可使算法极快收敛。 下面对各个步骤一一介绍。 2 设置工具箱的路径 2.1 在Matlab的命令窗口点击"File-->Set Path....",如下图: 2.2 在弹出的对话框中点击"Add Folder",然后浏览找到工具箱放置的位置,如下图 2.3 若想用到该工具箱所带的测试函数,还需要用如上同样的方法,设置路径指向工具箱下的"testfunctions"文件夹; 2.4 若想用于训练神经网络的训练,设置路径指向工具箱下的"testfunctions"文件夹"nnet" 3 定义待优化函数(参见文件test_func.m) 用户根据自己的需要,定义需要优化的函数。举个例子,若想计算如下二元函数的最小值 z= 0.5*(x-3)^2+0.2*(y-5)^2-0.1 其中自变量x、y的范围均为[-50, 50]。 可按下面的方法定义该待优化函数: %%----------------------------------------------------------------%% function z=test_func(in) nn=size(in); x=in(:,1); y=in(:,2); nx=nn(1); for i=1:nx temp = 0.5*(x(i)-3)^2+0.2*(y(i)-5)^2-0.1; z(i,:) = temp; end %%----------------------------------------------------------------%% 需要特别指出的是:PSO算法的核心函数pso_Trelea_vectorized()自动初始化一组随机

pso优化算法matlab程序

%------初始格式化------------------------------------------------- clear all; clc; format long; %------给定初始化条件--------------------------------------------- c1=1.4962; %学习因子1 c2=1.4962; %学习因子2 w=0.7298; %惯性权重 MaxDT=1000; %最大迭代次数 D=10; %搜索空间维数(未知数个数) N=40; %初始化群体个体数目 eps=10^(-6); %设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)----------- for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------先计算各个粒子的适应度,并初始化Pi 和Pg--------------------- for i=1:N p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); end pg=x(1,:); for i=2:N if fitness(x(i,:),D) pg=x(i,:); end end %------进入主要循环,按照公式依次迭代,直到满足精度要求----------- for t=1:MaxDT for i=1:N v(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,:),D) p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); %Pg 为全局最优 end if p(i) pg=y(i,:); end end Pbest(t)=fitness(pg,D); end %------最后给出计算结果disp('*************************************************************') disp('函数的全局最优位置为:')

粒子群优化算法参数设置

一.粒子群优化算法综述 1.6粒子群优化算法的参数设置 1.6.1粒子群优化算法的参数设置—种群规模N 种群规模N影响着算法的搜索能力和计算量: PSO对种群规模要求不高,一般取20-40就可以达到很好的求解效果,不过对于比较难的问题或者特定类别的问题,粒子数可以取到100或200。 1.6.2粒子的长度D 粒子的长度D由优化问题本身决定,就是问题解的长度。 粒子的范围R由优化问题本身决定,每一维可以设定不同的范围。 1.6.3最大速度Vmax决定粒子每一次的最大移动距离,制约着算法的探索和开发能力 Vmax的每一维一般可以取相应维搜索空间的10%-20%,甚至100% ,也有研究使用将Vmax按照进化代数从大到小递减的设置方案。 1.6.4惯性权重控制着前一速度对当前速度的影响,用于平衡算法的探索和开发能力 一般设置为从0.9线性递减到0.4,也有非线性递减的设置方案; 可以采用模糊控制的方式设定,或者在[0.5, 1.0]之间随机取值; 设为0.729的同时将c1和c2设1.49445,有利于算法的收敛。 1.6.5压缩因子限制粒子的飞行速度的,保证算法的有效收敛 Clerc0.729,同时c1和c2设为2.05 。 1.6.6加速系数c1和c2 加速系数c1和c2代表了粒子向自身极值pBest和全局极值gBest推进的加速权值。 c1和c2通常都等于2.0,代表着对两个引导方向的同等重视,也存在一些c1和c2不相等的设置,但其范围一般都在0和4之间。研究对c1和c2的自适应调整方案对算法性能的增强有重要意义。 1.6.7终止条件 终止条件决定算法运行的结束,由具体的应用和问题本身确定。将最大循环数设定为500,1000,5000,或者最大的函数评估次数,等等。也可以使用算法

PSO算法简介

粒子群算法简介 一、粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS)。CAS 理论于1994年正式提出,CAS中的成员称为主体。比如研究鸟群系统,每个鸟在这个系统中就称为主体。主体有适应性,它能够与环境及其他的主体进行交流,并且根据交流的过程“学习”或“积累经验”改变自身结构与行为。整个系统的演变或进化包括:新层次的产生(小鸟的出生);分化和多样性的出现(鸟群中的鸟分成许多小的群);新的主题的出现(鸟寻找食物过程中,不断发现新的食物)。 所以CAS系统中的主体具有4个基本特点(这些特点是粒子群算法发展变化的依据): ?首先,主体是主动的、活动的。 ?主体与环境及其他主体是相互影响、相互作用的,这种影响是系统发展变化的主要动力。 ?环境的影响是宏观的,主体之间的影响是微观的,宏观与微观要有机结合。 ?最后,整个系统可能还要受一些随机因素的影响。 粒子群算法就是对一个CAS系统---鸟群社会系统的研究得出的。 粒子群算法(Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。 PSO算法就从这种生物种群行为特性中得到启发并用于求解优化问题。在PSO中,每个优化问题的潜在解都可以想象成d维搜索空间上的一个点,我们称之为“粒子”(Particle),所有的粒子都有一个被目标函数决定的适应值(Fitness Value ),每个粒子还有一个速度决定他们飞翔的方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索。Reynolds对鸟群飞行的研究发现。鸟仅仅是追踪它有限数量的邻居但最终的整体结果是整个鸟群好像在一个中心的控制之下.即复杂的全局行为是由简单规则的相互作用引起的。 二、粒子群算法的具体表述 上面罗嗦了半天,那些都是科研工作者写论文的语气,不过,PSO的历史就像上面说的那样。下面通俗的解释PSO算法。

粒子群优化算法(ParticleSwarmOptimizationPSO)是一种相对较新的

粒子群优化算法(Particle Swarm Optimization PSO )是一种相对较新的进化优化算法,它由Eberhart 博士和Kennedy 博士在1995年首次提出。粒子群优化算法源于对鸟类捕食行为的模拟,与遗传算法(GA )相比,它没有选择、交叉、变异等遗传操作,算法参数少,因此算法实现简单。目前,在一些学者的努力下,粒子群优化算法己经广泛应用于函数优化,并在系统辨识、神经网络训练等问题中取得了可喜的进展。自1998年以来,粒子群优化算法逐渐成为进化计算的领域内在遗传算法之后的又一个研究热点。 算法模拟鸟群飞行觅食的行为,通过鸟之间的集体协作使群体达到最优,与遗传算法类似,它也是基于群体迭代,但没有交叉和变异算子,是一种利用群体在解空间中找寻最优粒子进行搜索的计算智能方法。首先,PSO 中每个优化问题的解都是搜索空间中的一个粒子,所有的粒子都有一个由被优化的函数决定的适应值(fitness value ),每个粒子还有一个速度决定他们运动的方向和距离;然后粒子们就追随当前的最优粒子在解的空间中搜索。PSO 初始化为一群随机粒子(随机解);最后通过迭代找到最优解。该方法能快速地产生很好的效果,这样就可以使整个系统的效率有所提高。PSO 的优点在于收敛速度快、设置参数少,简单易实现,算法本身具有深刻的智能背景,既适合科学研究,又特别适合工程应用。 PSO 算法求解优化问题时,所求问题的解就是搜索空间中的每一只鸟的位置,称这些鸟为基本粒子。所有的粒子都由一个被优化的函数决定的适应值(候选解)和一个决定他们飞翔方向和距离的速度。在优化过程中,每个粒子记忆,追随当前的最优粒子,在解空间中进行搜索。PSO 算法初始化为一群随机粒子(随机候选解),然后通过迭代找到最优的解。在每一次迭代的过程中,粒子通过追逐两个极值来更新自己的位置。一个是粒子自身找到的当前最优解称为个体极值pbest ,另一个是整个群体当前找到的最优解,这个解称为全局极值gbest 。图2介绍了PSO 算法的具体流程[14,15]。 在PSO 算法中,每一个可能的解都会表示成一个粒子。每一个粒子都有一个位置坐标x 和一个速率坐标v ,位置坐标和速率坐标分别有以下表达式表示: ,1,2,(,, ,)i i i i N x x x x = (11) ,1,2,(,,,)i i i i N v v v v = (12)

相关文档
相关文档 最新文档