范文一:粒子群优化算法实例 oracle实例优化内容
导读:就爱阅读网友为您分享以下“oracle实例优化内容”的资讯,希望对您有所帮助,感谢您对92to.com的支持!
实例优化内容
一个好的优化方法应该包括以下过程:
1. 基准知识(数据);
2. 建立性能目标;
3. 所作修改的组织和跟踪技术,更改控制机制;
4. 这些修改的效果评估;
1
5. 性能目标和目前性能状况的比较;
6. 重复上述工作直到到达目标;
上述的优化方法可以用来评价一种优化方法的好坏;
二叉优化方法
有一种优化方法,名为二叉优化方法。这种方法分别从OS和Oracle两个分叉来进行优化工作,这种方法明显体现的是事件驱动的优化思想而不是高速缓存命中率驱动思想。
具体步骤如下:
1. 设立合理的性能优化目标;
2. 测量并且记录现在的性能状况;
3. 确认现在oracle的性能瓶颈(oracle在等待什么,哪些sql语句是这个等待事件的部分
4. 确定当前的OS瓶颈;
2
5. 优化需要优化的成分(应用程序,数据库,I/O系统,争用,OS等)
6. 跟踪并实施更改控制过程;
7. 测量和记录现在的性能状况;
8. 重复3到7的步骤直到达到性能调优的目标;
这个方法围绕着等待事件来进行优化,二叉方法的调优能够比较好的帮助我们完成调优, 二叉调优方法不只是专注于高速缓存命中率的性能调优上,而是更多的关注等待事件,事实上,我们一般应该是会这样考虑,在数据库进行移植以后,经常会产生性能上的问题,在高速缓
存命中率十分高的情况下,我们还是可能需要等待很长的执行时间。所以我们应该从与等待事件相关的视图上来考虑解决问题的方法。
等待事件是Oracle核心代码的一个命名的部分。等待事件的概念是在Oracle7.0.12中引入的,大致有100多个等待事
3
件。在Oracle8.0中这个数目增加到了大约150个, Oracle8i中大约有200个事件,在Oracle9.2中有263个。
有两类等待事件:即空闲(idle)等待事件和非空闲(non-idle)等待事件。空闲等待事件指Oracle正等待某种工作。某些常见的空闲等待事件有客户机消息(Client Message)、NULL事件(NULL event)、来自客户机的SQL*Net消息等。
非空闲等待事件专门正对Oracle的活动。一下常见的非空闲等待事件如缓冲区忙等待(buffer busy waits)、数据库文件离限读取(db file scattered read)、排队等。
有几个主要的v$统计表显示系统的各个方面的等待事件:
v$waitstat 显示系统的主要的等待时间的
v$system_event 系统各个事件的等待情况, 我一般从这个表入手查看系统的等待
v$session_event 某个具体session的等待事件的统计信息
4
v$event_name 与v$session_event连接显示每个事件的
具体名称.
v$session_wait 当前的系统session具体在等待什么
在知道某个session有很严重的等待事件的时候,可以通过设
置10046的事件跟踪那个session内的具体的等待信息.
dbms_support.start_trace_in_session(sid,serial#,waits=>t
rue,binds=>true);
dbms_support.stop_trace_in_session(sid,serial#);
二叉调优优化方法的基本步骤:
1 ) 设置一个合理的性能优化目标
必须和用户或客户达成一个可描述并且合理的性能优化目
标,这个目标必须是可度量和可获得的。
5
2 ) 测量和备案当前的性能参数
我们必须在出现影响性能的时候收集那些有用的信息。不要在实例一启动就忙着收集那些统计数据,而且收集数据必须要经过一段合适的时间。
推荐的方法是在数据库高峰时期,对数据库进行长度为15分钟左右的数据采集,需要采集若干个。
可以通过执行Running utlbstat.sql and utlestat.sql这两个脚本来得到数据库的快照。
在oracle8.1.6以上的版本,提供了一个STATSPARK工具包,可以用来收集一些相关信息,并可以把他们存储起来。
3) 找出当前oracle执行的瓶颈
我们除了可以从report.txt和STATSPARK得到数据,我们还可以从以下三个表中得到oracle的信息:V$SYSTEM_EVENT, V$SESSION_EVENT, 和V$SESSION_WAIT.
6
视图V$SYSTEM_EVENT提供了整个oracle系统的事件视图。
视图V$SESSION_EVENT在会话级上提供和V$SYSTEM_EVENT一样的功能,但是它提供会话的信息,包括SID等。
视图V$SESSION_WAIT则在更低的层次上提供每个事件的信息,而且是那些会话级别上的等待事件。
4) 找出当前操作系统的瓶颈
windows NT提供了一个系统性能监视器,我们可以通过它监视系统的CPU利用率,内存占用率等性能参数。
对于UNIX操作系统的用户而言,同样有几个命令可以查看系统的性能:sar, vmstat, iostat, cpustat, mpstat, netstat, top,
osview,这些命令可以查看CPU利用率,设备利用率,虚拟内存利用率,以及网络状况等。
常用的数据库性能优化工具有:
7
----1. Oracle数据库在线数据字典 Oracle在线数据字典能够反映出Oracle的动态运行情况,对于调整数据库性能是很有帮助的。
----2. 操作系统工具 例如使用Unix操作系统的Vmstat、 Iostat等命令可以查看到系统级内存和硬盘I/O的使用情况,这些工具能够帮助管理员弄清楚系统瓶颈出现在什么地方。
----3. SQL语言跟踪工具(SQL Trace Facility)
----SQL语言跟踪工具可以记录SQL语句的执行情况,管理员可以使用虚拟表来调整实例,并使用SQL语句跟踪文件调整应用程序性能。SQL语言跟踪工具将结果输出成一个操作系统的文件,管理员可以使用TKPROF工具查看这些文件。
8
范文二:粒子群算法实例
粒子群算法解决函数优化问题
学院:信息科学与工程学院
目录
引言................................................................................................................................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.1连续函数求最大值问题
本文主要选取一个三维函数,利用matlab编写粒子群算法程序来求解它们以验证遗传算法在解决函数优化问题中的有效性。本文选取的函数为:f=x(1).^2+x(2).^2+x(3).^2,求它的最小值。
1.2粒子群算法
PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值(fitnessvalue),每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。
PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。
假设在一个D维的目标搜索空间中,有N个粒子组成一个群落,其中第i个粒子表示为一个D维的向量
Xi?(xi1,xi2,?,xiD),i?1,2,?,N。
第i个粒子的“飞行”速度也是一个D维的向量,记为
Vi?(vi1,vi2,?,viD),i?1,2,?3。
第i个粒子迄今为止搜索到的最优位置称为个体极值,记为
pbest?(pi1,pi2,?,piD),i?1,2,?,N。
整个粒子群迄今为止搜索到的最优位置为全局极值,记为
gbest?(pg1,pg2,?,pgD)
在找到这两个最优值时,粒子根据如下的公式(1.1)和(1.2)来更新自己的速度和位置:
vid?w?vid?c1r1?pid?xid??c2r2(pgd?xid)
2(1.1)
xid?xid?vid(1.2)
其中:c1和c2为学习因子,也称加速常数(accelerationconstant),r1和r2为[0,1]范围内的均匀随机数。式(1.1)右边由三部分组成,第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己先前速度的趋势;第二部分为“认知(cognition)”部分,反映了粒子对自身历史经验的记忆(memory)或回忆(remembrance),代表粒子有向自身历史最佳位置逼近的趋势;第三部分为“社会(social)”部分,反映了粒子间协同合作与知识共享的群体历史经验。
二、算法设计
这部分内容主要是针对本文主要研究问题的类型确定粒子群算法具体实现过程和一些参数的选择。
2.1
算法流程框图
图1粒子群算法流程图
2.2算法实现
算法的流程如下:
①初始化粒子群,包括群体规模N,每个粒子的位置xi和速度Vi
3
xid?xid?vid(1.2)
其中:c1和c2为学习因子,也称加速常数(accelerationconstant),r1和r2为[0,1]范围内的均匀随机数。式(1.1)右边由三部分组成,第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己先前速度的趋势;第二部分为“认知(cognition)”部分,反映了粒子对自身历史经验的记忆(memory)或回忆(remembrance),代表粒子有向自身历史最佳位置逼近的趋势;第三部分为“社会(social)”部分,反映了粒子间协同合作与知识共享的群体历史经验。
二、算法设计
这部分内容主要是针对本文主要研究问题的类型确定粒子群算法具体实现过程和一些参数的选择。
2.1
算法流程框图
图1粒子群算法流程图
2.2算法实现
算法的流程如下:
①初始化粒子群,包括群体规模N,每个粒子的位置xi和速度Vi
②计算每个粒子的适应度值Fit[i];
(i)③对每个粒子,用它的适应度值Fit[i]和个体极值pbest比较,如果
Fit[i]?pbest(i),则用Fit[i]替换掉pbest(i);
④对每个粒子,用它的适应度值Fit[i]和全局极值gbest比较,如果Fit[i]?pbest(i)则用Fit[i]替gbest;
⑤根据公式(1.1),(1.2)更新粒子的速度vi和位置xi;
⑥如果满足结束条件(误差足够好或到达最大循环次数)退出,否则返回②。
2.3参数选择
本算法中主要的参数变量为w(惯性权值),c1,c2(加速因子),N(种群数),M(迭代次数),D(粒子维数)。
(1)种群规模
通常,种群太小则不能提供足够的采样点,以致算法性能很差;种群太大尽管可以增加优化信息,阻止早熟收敛的发生,但无疑会增加计算量,造成收敛时间太长,表现为收敛速度缓慢。种群规模一般设为100~1000。本文选择种群规模为100。
(2)最大迭代次数
迭代次数越多能保证解的收敛性,但是影响运算速度,本文选1000次。(3)惯性权值
惯性权重w表示在多大程度上保留原来的速度。w较大,全局收敛能力强,局部收敛能力弱;w较小,局部收敛能力强,全局收敛能力弱。本文选0.6。(4)加速因子
加速常数c2和c2分别用于控制粒子指向自身或邻域最佳位置的运动。文献
[20]建议??c1?c2?4.0,并通常取c1?c2?2。本文也取c1?c2?2。(5)粒子维数
本文中粒子维数取决于待优化函数的维数,例如本文取3。
需要说明的是,本文的程序允许改变这些参数,因为本文编写的程序参照matlab工具箱,留给用户解决这类问题一个接口函数,上述的各个参数正是接口
函数的参数,因此允许改变。另外对于w和c也可采用变参数法,即随迭代次数增加,利用经验公式使它们动态调整,本文采用固定值。
三、程序设计
3.1编写程序
程序主要有两个m文件组成,pso.m是遗传算法接口文件,fitness.m是待求解的问题函数,只需要修改fitness.m里的目标函数就可实现不同问题的解。
(1)pso.m文件
function[xm,fv]=PSO(fitness,N,c1,c2,w,M,D)
%fitness-是要优化的目标函数,N-种群数,c1,c2-学习因子,w-惯性权重,M-迭代次数,D-粒子维数。
formatlong;
%初始化种群
fori=1:N
forj=1:D
x(i,j)=randn;
v(i,j)=randn;
end
end
%先计算各个粒子的适应度,并初始化pi-粒子个体极值和pg-全局极值fori=1:N
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
pg=x(N,:);
fori=1:(N-1)
iffitness(x(i,:))<>
pg=x(i,:);
end
end%pg为全局极值%随机初始化位子%随机初始化速度
%进入粒子群算法主要循环
fort=1:M
fori=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
iffitness(x(i,:))<>
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
ifp(i)<>
pg=y(i,:);
end
end
Pbest(t)=fitness(pg);
end
xm=pg';
fv=fitness(pg);
(2)目标函数fitness.m文件
functionf=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实验结果
(1)对于目标函数f=x(1).^2+x(2).^2+x(3).^2优化结果如下:
xm=1.0e-162*
0.556163077454623
0.937292023592359
0.146573921409127
fv=0,fv是最优值,xm为最优值对应的自变量值。
4.2分析
通过对实验结果和已知最小值比较可知,该算法能有效解决这类问题,需要特别指出的是xm的取值只是近似值,另外,本文的粒子群算法程序只是实现粒子群算法的基本功能,该算法还有待进一步改进。
五、总结
本文利用粒子群算法思想,通过编写matlab程序,对一个三维连续函数进行优化得到了较好的仿真结果,证明粒子群算法在解决这类问题的可行性。另外,在编写本文的工作过程中,提高了自己对粒子群算法的理解和应用能力。为今后利用智能算法撰写论文或进行科学研究打下了很好地基础。
范文三:粒子群优化算法
作者简介
李丽,吉林长春人,博士、教授,硕士生导师,深圳大学管理学院副院长。2001年广东省“千百十”人才,2004年度深圳市优秀教师。出版著作9部,主持国家、省、市级项目10余项及10多项横向课题。其中国家社科基金项目“宏观税收负担数量分析模型”荣获吉林省教委科技进步一等奖;吉林省科委项目“数据包络分析在经济管理中的应用”荣获吉林省教委科技进步一等奖。目前研究方向为运筹与优化、智能决策与管理、智能计算,发表相关论文40余篇。
本书简介
本书研究了群体智能典型实现的算法之一——粒子群优化算法。其针对传统粒子群优化算法存在的缺点,给出其改进方法或提出新模型,使之更为有效可靠;另外,介绍了所提出的新模型、新算法在实际工程领域中的应用,拓展了粒子群算法的应用领域。
本书在介绍了粒子群优化算法基本原理、基本粒子群算法的基础上,阐述了粒子群算法的实现技
术,基于参数改进的粒子群算法、混合粒子群算法、生物启发式粒子群算法,重点研究了粒子群算法在各类现实工程问题中的应用情况。
本书适合运筹与管理、人工智能、计算数学、计算机科学、系统科学、自动化等专业的师生参阅,亦可供从事计算智能研究与应用的工作者参考。
目录
1 1绪论
1.1 相关背景
1.2 生物启发式计算
1.2.1 遗传算法
1.2.2 神经计算
1.2.3 模糊系统
1.2.4 其他生物启发式计算方法
1.3 群体智能
1.3.1 群体智能简介
1.3.2 群体智能的基本特性
1.4 群体智能算法及其研究现状
1.4.1 蚂蚁算法
1.4.2 粒子群优化算法
1.4.3 群体智能算法应用研究现状
1.5 展望
参考文献
2 粒子群算法
2.1 引言
2.2 粒子群算法概述
2.2.1 粒子群算法的起源
2.2.2 原始粒子群算法
2.2.3 标准粒子群算法
2.3 标准测试函数
2.4 粒子群算法的实现
参考文献
3 粒子群算法参数分析
3.1 引言
3.2 惯性权重分析
3.2.1 线性惯性权重策略
3.2.2 非线性惯性权重策略
3.2.3 其他策略
3.3 学习因子分析
3.4 其他参数分析
参考文献
4 改进粒子群算法
4.1 粒子群算法改进研究综述
4.1.1 参数改进
4.1.2 拓扑结构的改进
4.1.3 混合策略
4.1.4 基于生物行为的改进
4.2 基于差分进化的一种新型混合粒子群算法
4.2.1 差分进化算法
4.2.2 基于差分进化的混合粒子群算法
4.2.3 试验设置与测试函数
4.2.4 试验结果-
4.3 基于模拟退火思想的粒子群算法
4.3.1 概述
4.3.2 模拟退火算法
4.3.3 基于模拟退化思想的粒子群混合算法
4.3.4 实验设置与测试函数
4.3.5 实验结果
4.4 基于细菌趋化的改进粒子群算法
4.4.1 PSOBC算法
……
5 粒子群算法的应用
下载后 点击此处查看更多内容
范文四:粒子群优化算法
粒子群优化算法
1. 引言
粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),有Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究
PSO同遗传算法类似,是一种基于叠代的优化工具。系统初始化为一组随机解,通过叠代搜寻最优值。但是并没有遗传算法用的交*(crossover)以及变异(mutation)。而是粒子在解空间追随最优的粒子进行搜索。详细的步骤以后的章节介绍
同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域
2. 背景: 人工生命
"人工生命"是来研究具有某些生命基本特征的人工系统. 人工生命包括两方面的内容
1. 研究如何利用计算技术研究生物现象
2. 研究如何利用生物技术研究计算问题
我们现在关注的是第二部分的内容. 现在已经有很多源于生物现象的计算技巧. 例如, 人工神经网络是简化的大脑模型. 遗传算法是模拟基因进化过程的.
现在我们讨论另一种生物系统- 社会系统. 更确切的是, 在由简单个体组成的群落与环境以及个体之间的互动行为. 也可称做"群智能"(swarm intelligence). 这些模拟系统利用局部信息从而可能产生不可预测的群体行为
例如floys 和 boids, 他们都用来模拟鱼群和鸟群的运动规律, 主要用于计算机视觉和计算机辅助设计.
在计算智能(computational intelligence)领域有两种基于群智能的算法. 蚁群算法(ant colony optimization)和粒子群算法(particle swarm optimization). 前者是对蚂蚁群落食物采集过程的模拟. 已经成功运用在很多离散优化问题上.
粒子群优化算法(PSO) 也是起源对简单社会系统的模拟. 最初设想是模拟鸟群觅食的过程. 但后来发现PSO是一种很好的优化工具.
3. 算法介绍
如前所述,PSO模拟鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。 Science E-information http://www.sciei.com
PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的例子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索
PSO 初始化为一群随机粒子(随机解)。然后通过叠代找到最优解。在每一次叠代中,粒子通过跟踪两个"极值"来更
新自己。第一个就是粒子本身所找到的最优解。这个解叫做个体极值pBest. 另一个极值是整个种群目前找到的最优解。这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分最为粒子的邻居,那么在所有邻居中的极值就是局部极值。
在找到这两个最优值时, 粒子根据如下的公式来更新自己的速度和新的位置
v[] = v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) (a)
present[] = persent[] + v[] (b)
v[] 是粒子的速度, persent[] 是当前粒子的位置. pbest[] and gbest[] 如前定义 rand () 是介于(0, 1)之间的随机数. c1, c2 是学习因子. 通常 c1 = c2 = 2.
程序的伪代码如下
For each particle
____Initialize particle
END
Do
____For each particle
________Calculate fitness value
________If the fitness value is better than the best fitness value (pBest) in history
____________set current value as the new pBest
____End
____Choose the particle with the best fitness value of all the particles as the gBest
____For each particle
________Calculate particle velocity according equation (a)
________Update particle position according equation (b)
____End
While maximum iterations or minimum error criteria is not attained
在每一维粒子的速度都会被限制在一个最大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax
4. 遗传算法和 PSO 的比较
大多数演化计算技术都是用同样的过程
1. 种群随机初始化 Science E-information http://www.sciei.com
2. 对种群内的每一个个体计算适应值(fitness value).适应值与最优解的距离直接有关
3. 种群根据适应值进行复制
4. 如果终止条件满足的话,就停止,否则转步骤2
从以上步骤,我们可以看到PSO和GA有很多共同之处。两者都随机初始化种群,而且都使用适应值来评价系统,而且都根据适应值来进行一定的随机搜索。两个系统都不是保证一定找到最优解
但是,PSO 没有遗传操作如交*(crossover)和变异(mutation). 而是根据自己的速度来决定搜索。粒子还有一个重要的特点,就是有记忆。
与遗传算法比较, PSO 的信息共享机制是很不同的. 在遗传算法中,染色体(chromosomes) 互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动. 在PSO中, 只有gBest (or lBest) 给出信息给其他的粒子,这是单向的信息流动. 整个搜索更新过程是跟随当前最优解的过程. 与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解
5. 人工神经网络 和 PSO
人工神经网络(ANN)是模拟大脑分析过程的简单数学模型,反向转播算法是最流行的神经网络训练算法。进来也有很多研究开始利用演化计算(evolutionary comp
utation)技术来研究人工神经网络的各个方面。
演化计算可以用来研究神经网络的三个方面:网络连接权重,网络结构(网络拓扑结构,传递函数),网络学习算法。
不过大多数这方面的工作都集中在网络连接权重,和网络拓扑结构上。在GA中,网络权重和/或拓扑结构一般编码为染色体(Chromosome),适应函数 (fitness function)的选择一般根据研究目的确定。例如在分类问题中,错误分类的比率可以用来作为适应值
演化计算的优势在于可以处理一些传统方法不能处理的例子例如不可导的节点传递函数或者没有梯度信息存在。但是缺点在于:在某些问题上性能并不是特别好。2. 网络权重的编码而且遗传算子的选择有时比较麻烦
最近已经有一些利用PSO来代替反向传播算法来训练神经网络的论文。研究表明PSO 是一种很有潜力的神经网络算法。PSO速度比较快而且可以得到比较好的结果。而且还没有遗传算法碰到的问题
这里用一个简单的例子说明PSO训练神经网络的过程。这个例子使用分类问题的基准函数(Benchmark function)IRIS数据集。(Iris 是一种鸢尾属植物) 在数据记录中,每组数据包含Iris花的四种属性:萼片长度,萼片宽度,花瓣长度,和花瓣宽度,三种不同的花各有50组数据. 这样总共有150组数据或模式。
我们用3层的神经网络来做分类。现在有四个输入和三个输出。所以神经网络的输入层有4个节点,输出层有 3个节点我们也可以动态调节隐含层节点的数目,不过这里我们假定隐含层有6个节点。我们也可以训练神经网络中其他的参数。不过这里我们只是来确定网络权重。粒子就表示神经网络的一组权重,应该是4*6+6*3=42个参数。权重的范围设定为[-100,100] (这只是一个例子,在实际情况中可能需要试验调整).在完成编码以后,我们需要确定适应函数。对于分类问题,我们把所有的数据送入神经网络,网络的权重有粒子的参数决定。然后记录所有的错误分类的数目作为那个粒子的适应值。现在我们就利用PSO来训练神经网络来获得尽可能低的错误分类数目。PSO本身并没有很多的参数需要调整。所以在实验中只需要调整隐含层的节点数目和权重的范围以取得较好的分类效果。
6. PSO的参数设置
从上面的例子我们可以看到应用PSO解决优化问题的过程中有两个重要的步骤: 问题解的编码和适应度函数
PSO 的一个优势就是采用实数编码, 不需要像遗传算法一样是二进制编码(或者采用针对实数的遗传操作.例如对于问题 f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接编码为 (x1, x2, x3), 而适应度函数就是f(x). 接着我们就可以利用前面的过程去寻优.这个寻优过程是一
个叠代过程, 中止条件一般为设置为达到最大循环数或者最小错误
PSO中并没有许多需要调节的参数,下面列出了这些参数以及经验设置
粒子数: 一般取 20 – 40. 其实对于大部分的问题10个粒子已经足够可以取得好的结果, 不过对于比较难的问题或者特定类别的问题, 粒子数可以取到100 或 200
粒子的长度: 这是由优化问题决定, 就是问题解的长度
粒子的范围: 由优化问题决定,每一维可是设定不同的范围
Vmax: 最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如上面的例子里,粒子 (x1, x2, x3) x1 属于 [-10, 10], 那么 Vmax 的大小就是 20
学习因子: c1 和 c2 通常等于 2. 不过在文献中也有其他的取值. 但是一般 c1 等于 c2 并且范围在0和4之间
中止条件: 最大循环数以及最小错误要求. 例如, 在上面的神经网络训练例子中, 最小错误可以设定为1个错误分类, 最大循环设定为2000, 这个中止条件由具体的问题确定.
全局PSO和局部PS 我们介绍了两种版本的粒子群优化算法: 全局版和局部版. 前者速度快不过有时会陷入局部最优. 后者收敛速度慢一点不过很难陷入局部最优. 在实际应用中, 可以先用全局PSO找到大致的结果,再有局部PSO进行搜索.
另外的一个参数是惯性权重, 由Shi 和Eberhart提出, 有兴趣的可以参考他们1998年的论文(题目: A modified particle swarm optimizer)
范文五:粒子群优化算法
1 群体智能概述
1.1 群体智能的概念与特点
群体智能的概念源于对蜜蜂、蚂蚁、大雁等这类群居生物群体行为的观察和 研究, 是一种在自然界生物群体所表现出的智能现象启发下提出的人工智能实现 模式,是对简单生物群体的智能涌现现象的具体模式研究。群体智能指的是“简 单智能的主体通过合作表现出复杂智能行为的特性”。该种智能模式需要以相当 数目的智能体来实现对某类问题的求解功能。作为智能个体本身,在没有得到智 能群体的总体信息反馈时,它在解空间中的行进方式是没有规律的。只有受到整 个智能群体在解空间中行进效果的影响之后, 智能个体在解空间中才能表现出具 有合理寻优特征的行进模式。 自然界中动物、 昆虫常以集体的力量进行觅食生存, 在这些群落中单个个体所表现的行为是简单缺乏智能的, 且各个个体之间的行为 是遵循相同规则的,但由个体组成的群体则表现出了一种有效的复杂的智能行 为。 群体智能可以在适当的进化机制引导下通过个体交互以某种突现形式发挥作 用,这是个体的智能难以做到的。 通常,群体智能是指一种人工智能模式,体现的是一种总体的智能特性。人 工智能主要有两种研究范式,即符号主义和联接主义。符号主义采用知识表达和 逻辑符号系统来模拟人类的智能。 联接主义则从大脑和神经系统的生理背景出发 来模拟它们的工作机理和学习方式。符号主义试图对智能进行宏观研究,而联接 主义则是一种微观意义上的探索。20 世纪 90 年代后,计算智能的研究逐渐成为 了联接主义人工智能的一个代表性流派。 计算智能系统是在神经网络、 模糊系统、 进化计算三个分支发展相对成熟的基础上, 通过相互之间的有机融合而形成的新 的科学方法,也是智能理论和技术发展的崭新阶段。神经网络反映大脑思维的高 层次结构;模糊系统模仿低层次的大脑结构;进化系统则是从生物种群的群体角 度研究智能产生和进化过程。 对群居性生物群体行为涌现的群体智能的研究是进 化系统的一个新兴研究领域。 群体智能中, 最小智能但自治的个体利用个体与个体和个体与环境的交互作 用实现完全分布式控制,其具有以下特点: (1)自组织。自组织是一种动态机制,由底层单元(部件)的交互而呈现出 系统的全局性的结构。交互的规则仅依赖于局部信息,而不依赖于全局的模式。 自组织并不是外部的影响施加给系统而体现的一种性质, 而是系统自身涌现出的 一种性质。系统中没有一个中心控制模块,也不存在一个部分控制另一部分。正 反馈(positive feedback)群体中的每个具有简
单能力的个体表现出某种行为,会 遵循已有的结构或者信息指引自己的行动,并且释放自身的信息素,这种不断的 反馈能够使得某种行为加强。尽管一开始都是一些随机的行为,大量个体遵循正
反馈的结果是呈现出一种结构。自然界通过系统的自组织来解决问题。理解了大 自然中如何使生物系统自组织,就可以模仿这种策略使系统自组织。 (2)自恢复。群体是由很多的个体组成的,不存在中央控制,几乎每一个 个体都在群体中享有同样重要的地位。群体中单个个体的状态,不会直接影响到 整个群体。这个特点在自然界生物原型中体现得非常明显:在蚂蚁群体中,单个 蚂蚁意外死亡不会影响整个群体的觅食; 在鸟群的飞行过程中, 一只鸟出现意外, 整个鸟群在经过短暂的惊慌之后, 仍然会恢复整齐有序的飞行; 人体皮肤受创后, 表皮细胞能“记忆”受创前的皮肤特征,并生成新的表皮细胞,重构出原来的形 状和颜色。由此可见,群体在此过程中具有自我恢复的能力。当然,群体的恢复 也是有限度的,当其数量减少到一定的程度,就会失去恢复能力。群体的这种特 性,在网络、军事、医学等领域都有广阔的应用前景。 (3)间接通信。群体系统中个体之间如何进行交互是个关键问题。个体之 间有直接的交流,如触角的碰触、食物的交换、视觉接触等,但个体之间的间接 接触更为微妙,群体中个体传递信息,通常都是通过改变局部环境来实现,其他 个体通过感知环境变化,也就获得了相应的信息。已有研究者用 Stigmergy 来描 述这种间接通信机制:也就是个体感知环境,对此作出反应,又作用于环境。 Grasse 首先引入 Stigmergy 来解释白蚁筑巢中的任务协调。 Stigmergy 在宏观上提 供了一种将个体行为和群体行为联系起来的机制。个体行为影响着环境,又因此 而影响着其他个体的行为。 个体之间通过作用于环境并对环境的变化作出反应来 进行合作。这在蚂蚁觅食的过程中表现得非常明显:先行的蚂蚁在路上留下一种 信息素, 后面的蚂蚁选择信息素浓度更高的路径, 由此形成一种信息正反馈机制, 通过不断重复,最终绝大多数蚂蚁走的都是最短的路线。对于习惯了直接通信的 人类来说,生物种群的这种行为特点,不能不说是一种启发。从蚂蚁寻食到蚂蚁 聚集尸体到蚂蚁搬运、筑巢,个体之间的通信机制总是离不开 Stigmergy 机制, 对于作为个体之间交流、交互的媒介—环境的作用,通常由各种各样的信息素来 体现。 (4)学习。学习的目的在于适应和优化。适应是为了生存,优化是为了更 好地发展。对于自然生命或者是自然
智能而言,学习都是其最重要的特征。自组 织、自适应是群体生物的重要特点,群体智能中的学习又有其独特之处。群体生 物的独特学习方法就是进化。它们总是先以其数量占据优势,然后随着环境的变 化,淘汰不能适应环境的个体。在这个过程中,对每一个个体而言,并没有发生 任何学习行为。但是,从整体来看,环境变化后的群体具有更强的适应能力。进 化的目的也是为了适应和优化,这与学习完全一致。当然,进化的实现有其前提 条件,最重要的两个是多样性和正反馈。只有不断保持种群自身的多样性,生物
有了多种选择,才有实现进化的可能;同样,只有实现了对有利条件的正反馈, 形成一个吸引子,进化才能够总是向着有利于群体生存的方向,进化的成果才能 得以巩固和发展。
1.2 群体智能中的知识涌现
群体智能中的智能就是大量个体在无中心控制的情况下体现出来的宏观有 序的行为。这种大量个体表现出来的宏观有序行为称为涌现现象。没有涌现 (Emergence)现象,就无法体现出智能。因此,涌现是群体智能系统的本质特 征。只知道孤立的个体行为并不能了解整个系统(如蚁群)的情况,仅仅研究孤 立的部分无法有效地研究整体性质,因此,对涌现现象的研究必须既研究各个部 分,又研究各个部分之间的相互作用。 涌现最早是作为系统科学的重要概念被提出来的。 系统科学的创始人贝塔郎 菲(Bertlanfy)从一开始就把一般系统论界定为关于整体性的科学,把整体性界 定为一种“涌现”的性质。全部系统研究的任务集中到一点,就是阐明整体为何 大于部分之和, 然后制定描述大于部分之和的整体性质 (即涌现性) 的方法。 “遗 传算法之父”约翰·霍兰对涌现现象进行了较为深入的探索。他认为涌现现象的 本质是“由小生大,由简入繁”,并且把细胞组成生命体,简单的走棋规则衍生 出复杂的棋局等现象都视为涌现现象。他认为神经网络、元胞自动机等可算作涌 现现象的模型。 对于涌现现象的研究,一直都是和复杂系统联系在一起的。涌现不仅是复杂 系统中的现象,同时也是群体智能的重要特征。群体智能的涌现现象与系统论和 复杂系统中阐述的涌现本质上是相同的,它是基于主体的涌现。群体中的个体结 构和功能都非常简单,通过相互通讯和协调组成群体系统,同时涌现出一些整体 的性质和新的功能。这种智能本身也正是群体系统中涌现的结果。研究群体智能 系统,要弄清涌现现象的普遍原理,建立由简单规则控制的模型来描述涌现现象 的规律。 在群体智能中,涌现现象具有如下的性质: (1)
涌现现象的出现是很多个体相互关联的结果,这些个体规则简单,相 互影响; (2)这种现象是从底部向上的,从低层次向高层次的,是总体的或者说是 宏观层次的; (3)某一层次涌现的集成可以产生更上一层次的涌现,例如原子构成分子, 分子构成细胞,后者都是在前者涌现性质的基础上产生新的整体性质; (4)涌现作为一种整体现象,不因为部分个体的改变而改变; (5)涌现是显示性的;
(6)涌现是一种组织效应、结构效应,它在一定程度上可以预测; (7)涌现有层次水平的高低,水平越高的涌现越复杂。
1.3 群体智能研究方法
群体智能是目前智能领域非常活跃的新兴研究领域, 作为智能计算和群体智 能领域的关键技术,同时作为仿生智能计算领域的重要分支,群体智能计算在获 得更大的发展的同时, 也必将推动群体智能与计算智能以及相关学科和研究领域 的壮大与发展。 从方法上看,国内外对群体智能的研究,主要体现在:群体行为模拟、群体 智能计算和分布式问题解决装置研究等方面。群体智能研究框图如图 1.1 所示。
行为模拟研究
群 体 智 能 研 究
具体模型实现仿真
算法设计及改进 群体智能计算研究 算法应用
分布式装置研究
分布式装置实现
图 1.1 群体智能研究框图 Table 1.1 Research frame of swarm intelligence
(1)群体行为模拟研究 群体行为模拟研究包括: 蚁群觅食行为研究, 群体分工和任务分配行为研究, 巢穴组织和自组织行为研究,筑巢行为和群体合作搬运行为研究,鸟类聚集飞行 行为研究等。群体行为研究和计算机仿真为群体智能算法研究提供了思路。 (2)算法设计及改进研究 在算法研究方面,作为群体智能算法的两种典型实现,蚁群算法(ACO)和粒 子群算法(PSO)得到了广泛关注。在基本蚁群算法提出之后,在前面所提到的群 体行为模拟研究的基础上,被多个领域的研究工作者进行了改进,提出了很多新 的算法并成功用于实际工程中。 对粒子群算法的研究与改进主要从参数选择与设计、种群拓扑结构、群体组 织与进化以及混合粒子群算法进行。 (3)算法应用研究 群体智能自提出以来, 由于其在解决复杂的组合优化类问题方面所具有的优 越性能, 在诸如工程设计与优化、 电力系统领域、 机器人设计与控制、 交通规划、
工业生产优化以及计算机网络等领域取得了较为成功的应用。此外,群体智能算 法还用于交通导航与路径规划的动态规划问题、任务分配问题、数据挖掘和数据 高层综合问题以及系统辨识与状态估计等。 (4)分布式装置实现 根据群体智能的特点, 很多研究者在分布式
问题解决装置研制方面也进行了 尝试。美国五角大楼资助了群体智能系统的研究—虫群战略。群体智能为设计智 能系统提供了另一种选择途径, 这种方法用自治、 涌现和分布式运行代替了控制、 预先编制程序和集总式运行。 其中群体智能计算是最为活跃的一个研究分支。群体智能计算包括:群体智 能算法设计与改进、群体智能算法在优化问题求解和工程领域中的应用。群体智 能计算是在群体智能领域中计算智能研究的逐步深入而产生的一种新兴的计算 智能模式,它是群体智能研究中的一个重要分支,在对某些群体行为模拟研究的 基础上,运用一定的数学工具和计算机工具,提出相应的群体智能算法,并用来 解决那些因为难以建立有效的形式化模型而用传统优化方法又难以有效解决甚 至无法解决的问题。
2 粒子群优化算法
粒子群优化(Particle Swarm Optimization,PSO)算法最初是由 Kennedy 和 Eberhart 于 1995 年受人工生命研究结果启发,在模拟鸟群觅食过程中的迁徙和 群集行为时提出的一种基于群体智能的进化计算技术。 鸟群中的每只鸟在初始状 态下是处于随机位置向各个随机方向飞行的,但是随着时间的推移,这些初始处 于随机状态的鸟通过自组织(self-organization)逐步聚集成一个个小的群落,并且 以相同速度朝着相同方向飞行,然后几个小的群落又聚集成大的群落,大的群落 可能又分散为一个个小的群落。这些行为和现实中的鸟类飞行的特性是一致的。 可以看出鸟群的同步飞行这个整体的行为只是建立在每只鸟对周围的局部感知 上面,而且并不存在一个集中的控制者。也就是说整个群体组织起来但却没有一 个组织者, 群体之间相互协调却没有一个协调者(organized without an organizer, coordinated without a coordinator)。Kennedy 和 Eberhart 从诸如鸟类这样的群居性 动物的觅食行为中得到启示,发现鸟类在觅食等搜寻活动中,通过群体成员之间 分享关于食物位置的信息,可以大大的加快找到食物的速度,也即是通过合作可 以加快发现目标的速度, 通常群体搜寻所获得利益要大于群体成员之间争夺资源 而产生的损失。这些简单的经验事实如果加以提炼,可以用如下规则来说明:当 整个群体在搜寻某个目标时,对于其中的某个个体,它往往是参照群体中目前处 Kennedy 和 于最优位置的个体和自身曾经达到的最优位置来调整下一步的搜寻。
Eberhart 把这个模拟群体相互作用的模型经过修改并设计成了一种解决优化问题 的通用方法,称之为粒子群优化算法。 PSO 算法不像遗传算法那样对个体进行选择、 交叉和变异操作, 而是将群体 中的每个个体视
为多维搜索空间中一个没有质量和体积的粒子(点),这些粒子 在搜索空间中以一定的速度飞行, 并根据粒子本身的飞行经验以及同伴的飞行经 验对自己的飞行速度进行动态调整, 即每个粒子通过统计迭代过程中自身的最优 值和群体的最优值来不断地修正自己的前进方向和速度大小, 从而形成群体寻优 的正反馈机制。PSO 算法就是这样依据每个粒子对环境的适应度将个体逐步移 到较优的区域,并最终搜索、寻找到问题的最优解。粒子群优化研究人员对粒子 群体组织和协作模式以及算法参数等进行了研究, 提出了如模糊 PSO、 带选择的 PSO、具有高斯变异的 PSO、具有繁殖和子种群的混合 PSO、簇分析 PSO、协同 PSO 以及多阶段 PSO 等。 虽然这些算法基于对不同物理系统的模拟,然而它们有相通的共性,如:在 这些方法中,没有一个作为核心的个体,每个个体只拥有简单的智能,通过大量 这样个体的信息交互(Interaction),群体表现强大的智能。在优化领域,这些 方法已经被成功的应用于常规算法难以求解的非凸、非线性,离散优化问题,积 累了丰富的实际经验和理论成果。
2.1 粒子群优化算法的研究现状
群体智能已成为分布式人工智能研究的一个重要领域。 在美国成立有专门的 组织研究群体的仿真。由欧洲联盟资助的群体智能相关研究项目也于 2001 年在 欧洲多个研究机构启动。在国内,国家自然科学基金“十五”期间学科交叉类优 先资助领域中认知科学及其信息处理的研究内容就明确列出了群体智能的进化、 自适应与现场认知。相关项目还有复杂系统与复杂性。它的主要研究方向及内容 是复杂系统与复杂性的理论与方法研究;物质层次复杂系统的研究;生命层次复 杂系统的研究:社会层次复杂系统的研究。2001 年 3 月 8 日在北京召开的第六 届全国人工智能联合会议暨“863”计划智能计算机主题学术会议戴汝为院士特 邀报告的主要内容就是群体智能的研究进展。 到现在, 国家自然科学基金委员会基本每年资助数项粒子群优化算法相关理 论和应用的研究。IEEE 计算智能协会(IEEE Computational Intelligence Society) 自 2003 年起每年举行一次群体智能会议 (IEEE Swarm Intelligence Symposium) , 而粒子群优化算法是会议的重要主题。
2.1.1 粒子群优化算法的研究方向
PSO 自 1995 年提出以来,由于其简单和明确的实际背景,以及前述的诸多
优点,使得很多研究者加入到对这种算法的研究中,目前粒子群优化算法的理论 研究与应用研究都取得了很大的进展,对于算法的原理已经有了初步的了解,算 法的应用也已经在不同学科中得以实现。这些研
究主要集中在如下几个方面: (1)粒子群优化算法的理论分析 具体来说,这个问题的研究分为三个方面:一是单个粒子的运动轨迹,现有 的研究发现,单个粒子不断的在各种正弦波上“跳跃”,即其轨迹是各种正弦波 的随机的叠加组合,这里所用的主要工具是微分方程和差分方程;二是收敛性问 题,关于粒子群算法的收敛性研究比较多的集中在一些简化条件下的结果,采用 的主要工具是动态系统理论。其它还有采用集合论的方法来研究此问题,得出的 结论是:在没有任何改进的情况下,原始的粒子群优化算法既不能收敛到全局极 值点,也不能收敛到局部极值点,但是这种证明是非构造性证明,对于理解算法 的工作原理没有太大帮助。三是整个粒子系统随时间的演化和分布,这方面的研 究目前还少有人涉及。 (2)粒子群优化算法的改进 这方面的内容非常庞杂,从改进的策略来说,可以分为如下几种类型,一是 从算法本身的改进,例如对算法迭代式的改进,或对算法参数的优化。二是和进 化计算的结合,例如采用杂交的算子来优选粒子。三是拓扑结构的研究,通过数 值实验来寻找最合适的邻域结构,或者随着计算的进行,动态的改变邻域结构。 四是基于函数变换的方法, 在算法运行的过程中, 不断的改变被优化函数的形状。 以上这些方法,从根本上说,主要是为了克服粒子群优化算法在优化多峰复杂函 数时,会出现早熟,粒子的多样性减低,以致于不能收敛到全局极值点的现象。 (3)粒子群优化算法的应用 粒子群优化算法的应用已经扩展到很多领域, 从最初的复杂多峰非线性函数 的优化、多目标优化等传统问题,到电力系统的分析,动态系统的跟踪与优化、 神经网络的权值训练并将其用于复杂系统的建模, 非线性系统的优化控制问题等 等。算法研究的目的是应用,如何将粒子群算法应用于更多领域,同时研究应用 中存在的问题也非常值得关注。
2.2.2 粒子群优化算法的应用现状
实际应用方面,粒子群优化算法已经在优化问题求解、电力系统、计算机、 控制等诸多领域得到了成功应用。 (1)经典优化问题求解 ①组合优化。旅行商问题(TSP)是一类经典的组合优化问题,继蚁群算法之 后,粒子群算法通过一定的改进或变形也已经成功用于 TSP 问题的求解。 ②约束优化。目前,粒子群优化算法已被有效应用于约束优化问题求解。例
如,可对约束优化问题引入半可行域的概念,提出竞争选择的新规则,并改进基 于竞争选择和惩罚函数的进化算法适应度函数,可求解约束优化问题。 ③多目标优化。粒子群优化算法在多
目标优化问题求解中有成功的应用。通 过对粒子群算法全局极值和个体极值选取方式的改进, 可实现对多目标优化问题 非劣最优解集的搜索。 (2)电力系统的应用 粒子群优化算法在电力系统优化中有着广泛的应用,例如在配电网扩展规 划、检修计划、机组组合、负荷经济分配、最优潮流计算与无功优化控制、谐波 分析与电容器配置、配电网状态估计、参数辨识、优化设计等方面。 此外,在电力系统机组组合优化问题求解、多机器功率系统稳定器的最优设 计等方面,粒子群算法具有突出的求解性能。 日本的 Fuji 电力公司的研究人员将电力企业著名的 RPVC(Reactive Power and Voltage Control)问题简化为函数的最小值问题, 并使用改进的 PSO 算法进行 优化求解。与传统方法如专家系统、敏感性分析相比,实验结果证明了 PSO 算 法在解决该问题上的优势。 (3)计算机领域中的应用 ①任务分配。 任务分配问题的解决是有效利用分布或并行式计算机系统能力 的核心步骤之一,是将一程序任务在分布计算机系统的不同处理器之间进行分 配, 以减少程序的运行时间, 增加系统解决问题的能力。 它是一个 NP 完全问题, 其目标通常是,在最大化和平衡资源利用的同时最小化处理器之间的通信。用粒 子群算法求解任务分配问题,可用相互作用图的形式描述任务分配问题,寻找问 题解和算法中粒子间的恰当映射,使得所有处理器的最大处理时间为最小。 ②神经网络训练。研究表明,PSO 是一种很有潜力的神经网络训练算法,粒 子群优化算法保留了基于种群的、并行的全局搜索策略,其采用的速度—位移模 型操作简单,避免了复杂的遗传操作。 通过训练神经网络,粒子群优化算法已成功应用到对医学中震颤行为的分 析。震颤行为(包括帕金森症和人的本能颤抖)的诊断仍是医学研究的挑战性领域 之一,经 PSO 训练的人工神经网络已经能够区分人的本能震颤和病理性震颤。 将 PSO 算法与 BP 算法相结合训练神经网络已用于对电动汽车燃料电池组实 时充电情况的模拟。 对电动汽车燃料电池带电状况的模拟是电动汽车以及混合动 力汽车技术发展过程中的重大课题。 此外,粒子群优化算法还在数据挖掘、图像处理以及计算机图形学领域都有 着成功的应用。 (4)控制领域中的应用
①模糊控制系统。利用 PSO 算法优化模糊控制系统,设计模糊控制器。目 前, 从模糊神经网络系统自动提取模糊规则的研究在一些典型的问题上已经取得 进展, 这对于自动生成模糊系统控制规则的模糊控制器在应用领域的推广有很大 的启示。 ②冶金自动化。例如,在对粗轧宽展
控制模型进行优化方面,采用粒子群算 法对粗轧宽展控制模型进行优化。另外,粒子群算法还被用于计算机数字控制的 研磨。 (5)其他实际应用 除了上述应用领域外,粒子群优化算法在化工领域,生物医学以及电磁学等 领域都有一定的应用。 粒子群算法已被美国一家公司用于将各种生物化学成分进 行优化组合,进而人工合成微生物。与传统的工业优化方法比较,PSO 产生合成 结果的适应度是传统方法的两倍。
2.3 粒子群优化算法面临的难题
虽然粒子群优化算法已在多个领域被有效应用,但其发展历史尚短,还存在 很多问题。 (1)粒子群优化算法是一种概率算法,缺乏系统化、规范化的理论基础, 从数学上对于它们的正确性与可靠性的证明还比较困难,所做的工作也比较少, 特别是全局收敛性研究方面。将 PSO 算法的粒子轨迹分析基于随机事件理论作 出定量分析就是一个艰巨的课题,这关系到 PSO 算法收敛性、参数选取等关键 问题。 (2)系统的高层次的行为是需要通过低层次的昆虫之间的简单行为交互突 现产生的。单个个体控制的简单并不意味着整个系统设计的简单,必须能够将高 层次的复杂行为也就是系统所要执行的功能映射到低层次的简单个体的简单行 为上面,而这二者之间是存在较大差别的。在系统设计时还要保证多个个体简单 行为的交互能够涌现出希望看到的高层次的复杂行为。这是一个极为困难的问 题。 (3)对于具体的实际问题而言,设计算法时,对算法搜索的效率和收敛的 全局性之间要作某种平衡, 这种平衡很大程度上是根据经验以算法参数的形式给 出的,如何在理论上给出准则,需要对算法进一步进行研究。 (4)粒子群优化算法应用于高维复杂问题优化时,往往会遇到早熟收敛的 问题,也就是种群在还没有找到全局最优点时已经聚集到一点停滞不动。这些早 熟收敛点,有可能是局部极小点,也有可能是局部极小点邻域的一个点。换句话 说,早熟收敛并不能保证算法收敛到局部极小点。因而,对算法早熟收敛行为的
研究可为算法的进一步改进奠定基础。 (5)粒子群优化算法在接近或进入最优点区域时的收敛速度也比较缓慢。 实际上对粒子群优化算法的研究发现, 粒子群优化算法早期收敛速度较快,但 到寻优的后期,其结果改进则不甚理想。这主要归因于算法收敛到局部极小,缺 乏有效的机制使算法逃离极小点。
2.4 粒子群优化算法的统一框架
对应于不同实际问题,构造算法主要依赖经验和大量实验。为了更好地使用 这些算法求解相关实际问题, 有必要研究使用粒子群优化算法求解问题的
统一框 架。然后,在这个统一的框架下,研究各种具体算法。依据行为主义人工智能框 架的一般描述,同时比较多种群体智能算法的个案,如粒子群算法、蚁群算法以 及遗传算法等,可以看到:这些算法虽然有不同的物理背景和优化机制,但是从 优化流程上看,却具有很大的一致性。这些算法都采用“生成+检测”的框架, 通过“邻域搜索+全局搜索”的策略寻优。 首先,将原问题空间映射为算法空间;接着初始化一组初始解(在通常意义 下,使初始解均匀分布于可行域中);然后,在算法参数控制下根据搜索策略对 个体进行搜索从而产生若干待选解;进而按照接受准则(确定性、概率性或混沌 方式)更新当前状态,如此反复迭代直到满足某种收敛准则;最后通过空间的反 变换,输出原问题的解。算法大致可用框图 1 表示:
将问题空 间映射为 算法空间 初始化解 与相关参 数 根据搜索 策略产生 代选解 迭代直到 满足终止 准则 空间反变 换并输出 原问题解
图 1 粒子群优化算法框架
算法的核心包括:算法空间变换和反变换;初始个体的产生准则;邻域搜索 策略;全局搜索策略;接受准则以及收敛准则。
2.5 粒子群优化算法的设计步骤
根据上述的粒子群优化算法求解问题的统一框架, 可得到粒子群优化算法的 设计步骤如下: (1)确定问题的表示方案(编码方案或者称为粒子表示方法) 与其他的进化算法相同,粒子群算法在求解问题时,其关键步骤是将问题的 解从解空间映射到具有某种结构的表示空间,即用特定的码串表示问题的解。根 据问题的特征选择适当的编码方法, 将会对算法的性能以及求解结果产生直接的
影响。粒子群算法的大部分研究均集中在数值优化领域中,其位置一速度计算模 型使用于具有连续特征的问题函数,因此,目前算法大多采用实数向量的编码方 式,以粒子的位置向量来表示问题的解。比如,对于生产调度这类属于离散空间 的非数值优化问题,如何用粒子群算法的粒子表示方法来映射调度问题的解空 间,是求解问题的最关键环节。 (2)确定优化问题的适应度函数 在求解过程中,借助于适应值来评价解的质量。因此,在求解问题时,必须 根据问题的具体特征,选取适当的目标函数来计算适应值,适应值是唯一能够反 映并引导优化过程不断进行的参量。 (3)选择控制参数 粒子群算法的控制参数通常包括粒子种群数量、算法执行的最大代数、惯性 权重系数、学习因子系数及其他一些辅助控制参数,如粒子位置和速度的控制范 围等。针对不同的算法模型,选择适当的控制参数,直接影响算
法的优化性能。 (4)选择粒子群优化模型 目前,粒子群算法己经发展了多种位置—速度计算模型,如惯性权重 PSO 模型、收敛因子 PSO 模型、采用拉伸技术的 PSO 模型、二进制 PSO 模型等等, 在求解不同类型优化问题时,不同 PSO 模型的优化性能也有差异。由于惯性权 重线性递减 PSO 模型能够有效地在全局搜索和局部搜索之间进行平衡,因此, 目前这一 PSO 模型得到的较多的应用。 (5)确定算法的终止准则 与其他进化算法一样, PSO 算法中最常用的终止准则是预先设定一个最大的 迭代次数,或者当搜索过程中解的适应值在连续多少代后不再发生明显改变时, 终止算法。
2.6 粒子群优化算法描述
2.6.1 算法原理
在 1995 年的 IEEE 国际神经网络学术会议上 Kennedy 和 Eberhart 发表了题 为“Particle Swarm Optimization”的文章,在文章中提出了一种新的智能优化算法 —粒子群算法。PSO 算法和其他进化算法类似,也采用“群体”和“进化”的概 念,通过个体间的协作与竞争,实现复杂空间中最优解的搜索。PSO 先生成初始 种群,即在可行解空间中随机初始化一群粒子,每个粒子都为优化问题的一个可 行解,并由目标函数为之确定一个适应值(fitness value)。PSO 不像其他进化算法 那样对于个体使用进化算子, 而是将每个个体看作是在 n 维搜索空间中的一个没 有体积和重量的粒子,每个粒子将在解空间中运动,并由一个速度决定其方向和
距离。通常粒子将追随当前的最优粒子而动,并经逐代搜索最后得到最优解。在 每一代中,粒子将跟踪两个极值,一为粒子本身迄今找到的最优解 pbest ,另一 为全种群迄今找到的最优解 gbest 。 假设在 D 维搜索空间中,有 m 个粒子组成一群体,第 i 个粒子在 D 维空间中 的位置表示为 xi = ( xi1 , xi 2 ,L , xiD ) , i 个粒子经历过的最好位置 第 (有最好适应度) 记为 Pi = ( pi1 , pi 2 ,L , piD ) ,每个粒子的飞行速度为 Vi = (vi1 , vi 2 ,L , viD ), i = 1, 2,L m 。 在整个群体中,所有粒子经历过的最好位置为 Pg = ( p g1 , p g 2 ,L , p gD ) ,每一代粒 子根据下面公式更新自己的速度和位置:
vid = wvid + c1r1 ( pid ? xid ) + c2 r2 ( pgd ? xid ) xid = xid + vid .
(2.1) (2.2)
其中, w 为惯性权重; c1 和 c2 为学习因子; r1 和 r2 是 [ 0,1] 之间的随机数。公 式由三部分组成,第一部分是粒子先前的速度,说明了粒子目前的状态;第二部 分是认知部分(Cognition Modal), 是从当前点指向此粒子自身最好点的一个矢量, 表示粒子的动作来源于自身经验的部分; 第三部分为社会部分(Social Modal), 是 一个从当前点指向种群最好点的一个矢量, 反映了粒子间的协同合作和知识的
共 享。三个部分共同决定了粒子的空间搜索能力。第一部分起到了平衡全局和局部 搜索的能力。第二部分使粒子有了足够强的全局搜索能力,避免局部极小。第三 部分体现了粒子间的信息共享。 在这三部分的共同作用下粒子才能有效的到达最 好位置。 更新过程中,粒子每一维的位置、速度都被限制在允许范围之内。如果当前 对粒子的加速导致它在某维的速度 Vi 超过该维的最大速度 Vd max ,则该维的速度 被限制为该维最大速度上限 Vd max 。一般来说, Vd max 的选择不应超过的粒子宽度 范围,如果 Vd max 太大,粒子可能飞过最优解的位置;如果太小,可能降低粒子 的全局收索能力。
2.6.2 算法流程
每个粒子的优劣程度根据已定义好的适应度函数来评价, 这和被解决的问题 相关。下面为 PSO 算法的算法流程:
Step 1:初始化粒子群,包括群体规模,每个粒子的位置和速度; Step 2:计算每个粒子的适应度值; Step 3:对每个粒子,用它的适应度值和个体极值 pbest 比较,如果较好,
则替换 pbest ;
Step 4:对每个粒子,用它的适应度值和全局极值 gbest 比较,如果较好,则
替换 gbest ;
Step 5:根据公式(2.1)、(2.2)更新粒子的速度和位置; Step 6:如果满足结束条件(误差足够好或到达最大循环次数)退出,否则 回到 Step 2。 算法的伪代码如下:
For each particle{ Do{ Initialize particle; } Do{ For each particle{ Calculate fitness value; If the fitness value is better than the best fitness value(pBest) in history; Set current value as the new pBest; } Choose the particle with the best fitness value of all the particles as the gBest; For each particle{ Calculate particle velocity according equation(2.1); Update particle position according equation(2.2); } }While maximum iterations or minimum criteria is not attained;
2.7 粒子群优化算法与其他进化算法比较
粒子群算法与其他进化算法,如遗传算法、进化策略、进化规划等具有很多 共同之处:(1)粒子群算法和其它进化算法相同,都使用“种群”概念,用于 表示一组解空间中的个体集合。两者都随机初始化种群,而且都使用适应值来评 价系统,而且都根据适应值来进行一定的随机搜索。两个系统都不是保证一定找 到最优解。(2)如果将粒子所持有的最好位置也看作种群的组成部分,则粒子 群的每一步迭代都可以看作是一种弱化的选择机制。在进化策略算法中,子代与 父代竞争,若子代具有更好的适应值,则子代将替换父代,而 PSO 算法的进化 方程式也具有与次类似的机制,其唯一的差别在于,粒子群算法只有当粒子的当 前位置与所经历的最好位置相比具有更好的适应值时, 其粒子所经历的最好位置 才
会唯一地被该粒子当前的位置所替代。 可见, PSO 算法中也隐藏着一定形式的 “选择”机制。(3)在遗传算法中存在着交叉(crossover)和变异(mutation)操作, 粒子群算法中虽然在表面上不具备这样的操作,但在本质上却有相通之处。粒子 群算法的速度更新公式(2.1)与实数编码的遗传算法的算术交叉算子很类似。 通常,算术交叉算子由两个父代个体的线性组合产生两个子代个体,而在 PSO 算法的速度更新公式(2.1)中,如果不考虑第一项,也就是带惯性权重的速度
项,就可以将公式理解成由两个父代个体产生一个子代个体的算术交叉运算。从 另一个角度上看, 同样不考虑第一项, 速度更新方程也可以看作是一个变异算子, 其变异的强度大小取决于个体最好位置和全局最好位置之间的距离, 可以把个体 最好位置和全局最好位置看作父代,变异就可以看作是由两个父代到子代的变 异。至于前面略去的惯性速度项,也可以理解为一种变异的形式,其变异的大小 与速度相乘的惯性因子相关,惯性因子越接近 1,则变异强度越小;越远离 1, 则变异强度越大。 粒子群算法与其他进化算法的区别在于:(1)通常在进化算法的分析中, 人们习惯将每一步迭代计算理解为用新个体(即子代)替换旧个体(即父代)的 过程,而粒子群算法的进化迭代过程则是一个自适应过程,粒子的位置不是被新 的粒子所代替,而是根据粒子的速度进行自适应变化。因此,粒子群算法与其他 进化算法的一个不同点在于: 粒子群算法在进化过程中同时保留和利用位置和速 度的信息,而其他进化算法仅仅保留和利用位置的信息。(2)如果将粒子群算 法中的位置计算公式(2.2)看作为一个变异算子,那么粒子群算法就与进化规 划很相似,而不同之处在于,在每一代,粒子群算法中的每个粒子只朝着一些根 据群体的经验认为是好的方向飞行, 而进化规划是通过一个随机函数变异到任何 方向。也就是说,粒子群算法在优化计算过程中执行着一种有“意识”的变异。 (3)粒子群算法与其他进化算法的最显著区别在于,粒子群算法将粒子的位置 和速度模型化,从而给出了一组显式的进化计算方程。(4)在收敛性方面,GA 已经有了较成熟的收敛性分析方法,并且可对收敛速度进行估计;而 PSO 这方 面的研究还比较薄弱。尽管已经有简化确定性版本的收敛性分析,但将确定性向 随机性的转化尚需进一步研究。(5)在应用方面,PSO 算法主要应用于连续问 题,包括神经网络训练和函数优化等,而 GA 除了连续问题之外,还可应用于离 散问题,比如 TSP 问题、货郎担问题、
工作车间调度等。 从以上分析中看,基本 PSO 算法与其他进化算法有相似之处,但同时也具 备其它算法不具备的特性, 特别的是, PSO 算法同时将粒子的位置与速度模型化, 并给出了它们的进化方程。
2.8 粒子群优化算法的改进策略
粒子群优化算法的改进可谓层出不穷,这方面的研究非常庞杂,这些改进基 于各种不同的策略和方法。但从根本目的来说,都是为了改进粒子群优化算法的 两个缺点,其一是粒子群优化算法容易陷入到局部极值点中,导致得不到全局最 优解,造成这种现象的原因有两方面,一是待优化函数的性质,有许多测试函数 是多峰函数、形状复杂,而粒子群优化算法并不是从理论上严格证明收敛于任何
类型函数的全局极值点, 因此对于复杂的测试函数, 很可能难以得到满意的结果。 二是粒子群优化算法在运行时,由于算法的参数设计、或者是粒子数的选择不恰 当等原因,导致在计算的过程中,粒子的多样性迅速的消失,造成算法“早熟” 现象,从而导致算法不能收敛到全局极值点。这两个因素通常密不可分的纠缠在 一起,很难说在一个具体的问题中,到底是那一个因素在起作用,使得算法不能 收敛到全局极值点。有比较多的改进是基于这两个方面的因素,对于第一个方面 的缺点,有些研究者试图在函数优化的过程中,动态的改变函数的某些全局或局 部的形态,使得函数的形状逐渐的变得简单,但同时又不改变函数的全局极值点 的性质。比如可以设计一个变换,随着优化过程的进行,使得函数最终由多峰函 数变为单峰函数,从而克服此问题。第二个方面的问题通常可以采用如下方法解 决,对粒子群的多样性设置某些指标,比如粒子群的熵,随着计算的进行,实时 监测这些指标,一旦这些指标超过某个事先设定的临界值,则对整个群体实施某 种操作,比如按指定的概率重新初始化,从而改善群体的多样性,克服早熟的问 题。其二是粒子群优化算法的收敛速度比较慢。在解决实际问题时,通常需要在 一定的时间内达到相应的精度,如果耗费很长的计算时间来得到一个可行解,有 时是不值得的。 造成这种问题的原因是粒子群优化算法并没有很充分的利用计算 过程中得到的信息,在每一步迭代中,仅仅利用了全局最优和个体最优的信息, 此外,算法本身没有比较充分的优选机制,以淘汰比较差的待选解,从而导致算 法收敛速度较慢。要解决这方面的问题,需要充分的吸收进化算法的优点,在粒 子的操作中,加入繁殖、变异和优选算子,以加快算法的收敛速度。另外一个思 路就是把粒子群优化算法较强
的全局搜索能力与基于梯度算法的较好局部搜索 能力相结合,设计一种混合算法,以克服二者的缺点,发挥二者的优点。 基于前面的理论分析,本节重点讨论以下几个方面 PSO 算法的改进策略及 其效果:调整惯性权重;引入收缩因子;依据一定的标准调整群体或某些粒子的 状态; 引入邻域算子、 使用新的组织结构、 结合进化算法利用选择和杂交机制等。
2.8.1 调整惯性权重
惯性权重 w 描述了粒子上一代速度对当前代速度的影响。 控制其取值大小可 调节 PSO 算法的全局与局部寻优能力。惯性权重类似模拟退火中的温度, w 值 较大,全局寻优能力强,局部寻优能力弱,反之,则局部寻优能力增强,而全局 寻优能力减弱。由于不同问题对算法的全局或局部搜索能力会有不同要求,所以 算法的全局搜索能力和局部搜索能力之间的平衡关系最好可以调整, 也就是说惯 性权重可以根据不通问题进行自动调整。文献提出自适应调整的线性递减权重 (linearly decreasing weight)策略,随迭代进行,线性减少 w 的值,即:
w(t ) =
( wini ? wend ) *(Tmax ? t ) + wend Tmax
其中, Tmax 为最大迭代次数, wini 为初始惯性权重, wend 为进化到最大迭代 次数时的惯性权重,通常取 wini = 0.9 ,wend = 0.4 。这使得算法在迭代初期探索能 力较强,可以不断搜索新的区域,然后开发能力逐渐增强,使算法在可能最优解 周围精细搜索。这是目前使用最广泛的算法形式。然而搜索过程是一个复杂的非 线性过程,让 w 线性过渡的方法并不能正确地反映真实的搜索过程。因而,文献 提出了一种用模糊规则动态调整 w 的方法, 通过对当前最好性能评价和当前惯性 权重制定相应的隶属度函数和模糊推理规则,确定惯性权重 w 的增量。实验结果 表明,与 w 线性减小的算法相比,模糊自适应方法有类似的或更好的结果。
2.8.2 引入收缩因子
Clerc 提出了收缩因子的概念,描述了一种带收缩因子的粒子群优化算法, 其位置和速度更新如下式所描述:
vid = χ [vid + c1r1 ( pid ? xid ) + c2 r2 ( pgd ? xid )]
其中,收缩因子
χ=
2 2 ? ? ? ? ? 4?
2
, ? = c1 + c2 , ? > 4
实验结果表明,与使用惯性权重的粒子群优化算法相比,使用收缩因子的粒 子群优化算法有更快的收敛速度。其实只要恰当地选取因子,带收缩因子的粒子 群优化算法可被看作是 PSO 算法的一个特例。
2.8.3 调整粒子状态量
粒子的状态量包括粒子的位置和速度。为了刺激群体持续进化,避免群体的 早熟收敛和停滞现象, 很多研究者指出可依据一定的标准为整个群体或某些粒子 的状态量重新赋值,以维持群体的多样性,使算法可持续
进化。 文献将自然进化过程中的群体灭绝现象引入粒子群优化算法。 该混合算法在 粒子的位置和速度更新之后, 按照一个预先定义的灭绝间隔重新初始化所有粒子 的速度。文献描述了个体层次上的自适应粒子群优化算法,它用一个新的粒子替 换不活泼的粒子,来保持群体的多样性。如果非全局最优粒子与全局最优粒子之 间适应度差值的绝对值连续小于事先定义的临界常数的次数达到一定值, 则该非 全局最优粒子就被视为不活泼的粒子,被一个新的粒子替换,替换操作在更新粒 子位置和速度之前进行的。文献根据耗散结构的自组织性,提出一种耗散粒子群 优化算法。该算法通过附加噪声持续为粒子群引入负熵,使得系统处于远离平衡 态的状态, 又由于群体中存在内在的非线性相互作用, 从而形成自组织耗散结构,
使粒子群能够“持续进化”。文献将进化规划中使用的联赛选择方法引入 PSO 算法。该混合算法根据个体当前位置的适应度,将每一个个体与其它若干个个体 相比较,然后依据比较结果对整个群体进行排序,用粒子群中最好一半的当前位 置和速度替换最差一半的位置和速度,同时保留每个个体所记忆的个体最好位 置。虽然混合 PSO 算法与基本 PSO 算法的差异很小,但是选择方法的引入使得 混合算法成为一种更具开发力的搜索机制。
2.8.4 引入邻域算子
尽管 PSO 算法能比其他进化算法更快地得到质量相当的解,但当迭代次数 增加时,由于不能进行更精确的细部搜索,从而无法提高解的质量。 为此,可引入一个变化的邻域算子:在优化的初始阶段,一个粒子的邻域就 是它本身;优化代数增加后,邻域逐渐增大,最后将包括所有粒子。此时,PSO 算法将采用局部模型,而不是全局模型,并且局部模型的邻域是不断增加的。为 定义粒子的邻域,需计算候选粒子与其他所有粒子的距离,其中第 i 个粒子的距 离为 dist[i ] ,而最大距离为 max_ dist ,并定义一个与当前进化代数 t 有关的分数 frac = 0.6 + 3.0t / T 。如果 frac dist[i ] max_ dist ,则采用局部模 型 lbest 进行搜索;否则使用全局模型 gbest 。 对 Sphere,Rosenbrock,Rastrigrin 和 Griewank 函数的试验结果显示,该方 法平均结果好于标准 PSO。 惯性权重可对算法探测和开发能力进行调节。实际上,邻域算子的改进也是 为了更好地完成此任务。首先,粒子邻域的不断增加可以增加算法探测能力;其 次,通过域值的设定,使得全局模型和局部模型得以切换,也使探测和开发能力 得以有效调节。
2.8.5 使用新的组织结构
文献使用簇分析改进 PSO 算法的性能。其具体实现为:首先
将整个粒子群 划分为几个簇,确定每个簇的中心,然后用个体 i 的簇中心 CLUSI 代替 X i ,或 用目前找到的最优个体的簇中心 CLUSG 代替 pg 来进行粒子速度和位置的更新。 该文采用带收缩因子的粒子群优化算法进行实验。结果表明,用 CLUSI 代替 X i 可显著改善 PSO 算法的性能,而用 CLUSG 代替 pg 则会降低算法的性能。该文 指出上述现象的产生原因在于, 簇中心的性能一定优于组成簇的所有个体的平均 性能,而比簇中最好个体的性能差。
2.8.6 结合进化计算
①利用选择机制的方法
PSO 算法的搜索过程很大程度上依赖 pbest 和 gbest, 它的搜索区域受到 pbest
和 gbest 的限制。在通常的进化算法中,选择机制用来选择相对较好的区域和淘
汰较差的区域,可以更合理地分配有限的资源。而在一般的粒子群算法中,每个 粒子的最优位置的确定相当于隐含了选择机制, 因此文献引入了具有明显选择机 制的改进粒子群算法,仿真结果表明算法对某些测试函数具有优越性。改进算法 将每个个体的适应度,基于当前位置,与 k 个其它个体进行比较,并记下最差的 一个点。群体在用这个记录排序,最高的得分出现在群体头部。算法流程为: (1) 群体选择一个个体。将该个体的适应度与种群中的其它个体的适应度逐 一进行比较,如果当前的个体的适应度优于某个个体的适应度,则每次授予该个 体一分。对每一个个体重复这一过程。 (2) 根据前一步所计算的分数对种群中的个体进行由大到小的排列。 (3) 选择种群顶部的一半个体,并对它们进行复制,取代种群底部的一半个 体,在此过程中最佳个体的适应度并未改变。 对测试函数的实验仿真结果表明,除了个别测试函数外,上述算法的性能超 过基本粒子群算法。 ②利用杂交操作的方法 Angeline 提出了杂交的粒子群算法,粒子群中的粒子被赋予一个杂交概率, 这个杂交概率是随机确定的,与粒子的适应值无关。在每次迭代中,依据杂交概 率选取指定数量的粒子放入一个池中。池中的粒子随机地两两杂交,产生相同数 目的子代粒子,并用子代粒子取代父代粒子,以保持种群的粒子数目不变。经过 杂交操作,由亲代个体随机产生了两个新的位置。速率的交叉将两个亲代个体的 速率之和的长度规格化,因此只有方向受到影响,数量却没有受到影响。 Lovbjerg 等人的研究结果表明,繁殖操作降低了单峰值函数的收敛率,因此 应用了繁殖算子的 PSO 比一般的 PSO 效率更低。但是在拥有多个局部最小值的 函数中情况刚好相反。所以应用了繁殖算子的 PSO 比较先进。 实验结果显示,结合进化计算改进的粒子群优化算法
的收敛速度比较快,搜 索精度也相对比较高,对一类非线性优化问题可以得到满意的结果。不过引入了 较多的待调整参数,对使用者的经验有一定要求。
2.8.7 其他改进策略
其他的一些改进的方法主要是提高粒子群算法收敛性能的, 其中包括 J.Riget 提 出 的 一 种 保 证 种 群 多 样 性 的 粒 子 群 算 法 (Attractive and Repulsive Particle Swarm Optimizer,简称 ARPSO)。该算法引入“吸引”(Attractive)和“扩散” (Repulsive)两个算子,动态地进行调整,以避免粒子群算法所存在的过早收敛问 题,从而能更好地提高算法效率。另一个改进算法是有 F.van den Bergh 提出的 具有局部收敛性能的改进粒子群算法 GCPSO(Guaranteed Convergence Particle Swarm Optimizer)。
文献提出了一种协同 PSO 算法,其基本思想是用 K 个相互独立的粒子群分 别在 D 维的目标搜索空间中的不同维度方向上进行搜索。具体做法是:选定划分 因子(split factor) K 和粒子群的粒子数 M,将输入的 D 维向量(粒子的位置及速 度向量)划分到 K 个粒子群。前(D mod K)个粒子群,其粒子的位置及速度向量 都是 D/K 维的;而后 K ? ( D mod K ) 个粒子群,其粒子的位置及速度向量也是
D/K 维的。在每一步迭代中,这 K 个的粒子群相互独立地进行状态更新,粒子群
之间不共享信息。 计算适应值时, 将每个粒子群中最优粒子的位置向量拼接起来, 组成 D 维向量并代入适应函数计算适应值。例如,考虑有 24 个自变量的优化问 题,即 D=24。如果选取 M = 10 ,K=5,那么每个粒子的位置及速度向量的维数 就是 D / K =5。这种协同 PSO 算法有明显的“启动延迟”(start up delay)现象, 在迭代初期,适应值下降缓慢,换言之,收敛速度慢。不过这种协同 PSO 算法 因为实际上采用的是局部学习策略, 因此比基本 PSO 算法更易跳出局部极小点, 达到较高的收敛精度。 对于具体的优化问题,往往存在这样的情况,一些普适性算法,比如遗传算 法、模拟退火,它们的全局收敛性己经在理论上得到严格证明,然而在实际应用 中,对某些函数效果不是太好,或者速度太慢。但是一些专门为某类特定问题设 计的特定算法,比如专门为优化连续、可微的单峰函数设计的梯度算法,可能收 敛速度很快,但是这类算法对于不符合上述前提条件的待优化函数,效果通常不 好。 所以, 算法的通用性和专用性之间通常存在着矛盾。 现实世界是复杂多变的, 在解决实际问题时,通常很少只依赖一种手段。必须根据问题的特点,对不同的 问题、在不同的阶段,灵活的采用适合于问题的不同算法。理论研究的问题通常 是去掉了实际问题中很多复杂因素后的简化模型
,因此,所用的方法和所得的结 果也仅能看成是一种理想情形。 有许多实际的优化问题常常是通过经验知识或理 论分析得到一个可行范围,然后采用算法搜寻得到更精细的结果,这样作的目的 一是为了提高收敛速度,而是为了节约计算的成本。因此,除了算法本身的性能 之外,如何在应用算法时与实际问题的特点紧密结合,适当的选择某种专用性或 通用性算法,或者是二者的结合,是一问题的另一方面。
3 离散粒子群优化算法
由于标准粒子群算法只能用于连续空间, 然而许多实际问题都是描述为组合 优化问题,所以 Kennedy 和 Eberhart 提出了一种二进制离散粒子群算法(DPSO)。 离散二进制 PSO 算法的提出有效地解决了离散空间的优化问题。
DPSO 算法中,粒子的位置每一维只有 0 或 1 两种状态,速度更新的方法与
连续 PSO 类似,位置的更新则取决于由粒子速度决定的状态转移概率,速度大 于一定的数值,粒子取 1 的可能性越大,反之越小。而且这个阈值要位于[0,1]
范围之内。 sigmoid 函数能够满足这个要求,所以速度转换采用 sigmoid 函数。 其中 vid 要设定一个上下变化幅值,保证 sigmoid (vid ) 值不能太靠近 0.0 或 1.0,这 样就增大改变比特位置的机会,不会陷入局部极值。 离散粒子群算法调整公式如下:
vid = ω vid + c1r1 ( pid ? xid ) + c2 r2 ( pgd ? xid ),
(5.1)
?1,当ρid sigmoid (vid ).
(5.2)
其中 ρid 是一个[0.0,1.0]之间的随机数, sigmoid (vid ) = 1 [1 + exp(?vid )] ,其它 参数类似基本 PSO。 (1)函数 f1 (Rastrigrin Function):
f ( x) = ∑ [ xi 2 ? 10 cos(2π xi ) + 10], xi ≤ 5.12
i =1 n
min f ( x* ) = f (0, 0, … , 0) = 0 Rastrigrin 函 数 为 多 峰 函 数 , 当 xi = 0 时 达 到 全 局 极 小 点 , 在 S = {xi ∈ [?5.12, 5.12], i = 1, 2, … , n} 范围内大约存在 10n 个局部极小点。几种算法
的计算结果见表 3.1。
表 3.1 Rastrigrin 函数的平均适应值与最优值 Table 3.1 The mean fitness value and optimal value for Rastrigrin function 算法 变量维数 平均最优值 最优值 n=10 1.2e-2 8.1e-4 PSO n=30 0.21 5.2e-3 n=10 0.56 8.3e-2 GA n=30 1.14 0.22 n=10 2.8e-6 3.2e-8 CPSO n=30 3.5e-5 6.7e-7
(3) 函数
f3 (Griewank Function):
f ( x) = x 1 n 2 n ∑ xi ? ∏ cos( ii ) + 1, xi ≤ 300 4000 i =1 i =1
min f ( x* ) = f (0, 0, … , 0) = 0 Griewank 函数,当 xi = 0 时达到全局极小点,当 xi ≈ ± kπ i , i = 1, 2, … , n , k = 1, 2, … , n 时,达到局部极小点。几种算法的计算结果见表 3.3。
表 3.3 Griewank 函数的平均适应值及最优值 Table 3.3 The mean fitness value and optimal value for Griewank function 算法 变量维数 平均最优值 最优值 n=10 0.18 0.09 PSO n=30 0.41 0.23 n=10 0.52 0.22 GA n=3
0 0.87 0.35 n=10 5.2e-3 1.3e-3 CPSO n=30 1.6e-2 8.2e-3
转载请注明出处范文大全网 » 粒子群优化算法实例oracl