当前位置:文档之家› 基于克服过早收敛的自适应并行遗传算法

基于克服过早收敛的自适应并行遗传算法

基于克服过早收敛的自适应并行遗传算法
基于克服过早收敛的自适应并行遗传算法

清华大学学报(自然科学版)

22 27 

 1998年第38卷

Journal of T singhua U niversity (Sci &T ech )第3期第93~95页 

基于克服过早收敛的自适应并行遗传算法3

周远晖, 陆玉昌, 石纯一

清华大学计算机科学与技术系,国家智能技术与系统实验室,北京100084

收稿日期:1997204207

第一作者:男,1970年生,博士研究生 3国防科技预研基金

文 摘 为了克服遗传算法中存在的主要问题即过早收敛

(过早收敛使得一些优秀个体或基因过早地被排除掉,从而

导致搜索范围缩小及局部最优,影响了进一步搜索),从控制参数的改进着手,提出了多种群并行进化及自适应调整控制参数相结合的思想。克服了以往定常参数单种群进化的不足,综合了不同特性种群进化的长处,使得过早收敛问题得以缓解,同时又提高了搜索的范围和效率。

关键词 过早收敛;多种群进化;自适应参数调整;遗传算

分类号 T P 18

遗传算法在搜索和机器学习[1]领域已得到了广泛的应用,理论和实践证明,遗传算法具有很强的鲁棒性,而且所需的领域知识少,应用范围广泛,但它具有一个根本的缺点——过早收敛。由于遗传算法中选择及交叉等算子的作用,使得一些优秀的基因片段过早丢失,从而限制了搜索范围,使得搜索只能在局部范围内找到最优值,而不能得到满意的全局最优值。过早收敛在传统的遗传算法中很普遍,而且比较难克服。

许多研究都集中于遗传算子的改进上,通过对选择、交叉和变异等基本算子的改进,来克服过早收敛问题,但实际上过早收敛并不是仅仅由这些算子造成的,控制参数[2,3]选择不当同样也会造成过早收敛。控制参数主要包括种群规模、交叉概率p c ,变异概率p m 等。控制参数对系统性能有重要影响。如,种群规模过小将影响搜索范围,从而得不到最优解,规模过大则使搜索效率降低;变异和交叉的概率p m ,p c 越大,则算法的探测能力越强,越容易探测到

新的超平面,而个体平均拟合度波动较大;相反,

p m ,p c 越小,则算法的开发能力越强,使得较优个体不易被破坏,个体的平均拟合度平稳。本文主要结合了上述两类方法的优缺点,提出了多种群并行进化和自适应参数调整[2,4]相结合的思想,从一定程度上克服了过早收敛问题。

1 自适应参数调整

可以从种群的平均拟合度与最优个体的拟合度的关系上近似看出平均拟合度的稳定性,令f m ax 代表某一代种群中最优个体的拟合度,令F 代表此代种群的平均拟合度,则?=f m ax -F ,若?越小,表示种群个体之间的拟合度差别较小,说明此种群达到局部最优的可能性越大,过早收敛的可能性也越大;相反,?越大,表示个体特性分散,拟合度差别较大,因此可以近似地用平均拟合度与最优拟合度之间的差异来反映种群的收敛性程度。这样p c 与p m 参数也就由f m ax -F 来决定。为了尽量克服过早收敛,当f m ax -F 较小时,调整p m ,p c ,使其增大;而当f m ax -F 较大时,调整p m ,p c 值,使其减小,这样实际上p m ,p c 值应与f m ax -F 成反比,表示如下:

p c =k 1 (f m ax -F )(1)p m =k 2

(f m ax -F )

(2)

通过上述推导,使得p m ,p c 在进化中根据种群的实际情况,随时调整其值大小,当种群趋于收敛时,提高p c 和p m ,增加交叉和变异的频率,破坏当前的稳定性,使遗传算法(GA )具有更强的探测(ex 2p lo rati on )能力,从而探测出新的超平面,克服过早收敛;当种群个体发散时,则降低交叉和变异频率,增加开发(exp lo itati on )能力,以使个体趋于收敛。但此时又出现一个问题,即当种群已收敛到全局最优时,由于此时无判别函数,从而使得p m ,p c 增大,最优个体遭到破坏的概率也增大,这样虽然克服了过早收敛,但却破坏了最优个体,使GA 性能下降。

为了克服以上缺点,不但要防止早收敛,同时也要保护优良个体,因此在同一代中,对不同的个体,其p m,p c也相应不同。对拟合度高的个体应加以保护,其p m,p c应减小,而对拟合度低的个体,其p m,p c也相应增加,这样在克服过早收敛和避免优秀个体破坏之间选择了折衷的方案,因此p m,p c不仅与f m ax -F有关,而且也应与f m ax-f和f m ax-f′有关系,其中f为变异个体的拟合度,f′为两个交叉个体中拟合度大的一个,因此有如下关系:

p c=k1(f m ax-f′) (f m ax-F),f′≥F(3)

p c=k3,f′

p m=k2(f m ax-f) (f m ax-F),f≥F(5)

p m=k4,f

2 多种群进化

在GA进化过程中,发现最优个体之前,种群中个体的某位或某几位的值已固定,这时就会导致过早收敛,从而丢失一些信息。关键信息丢失的原因在于在选择过程中,某个带有关键信息的个体没有被选中复制。经过一代或几代进化后,这些关键信息就有可能永远消失,造成过早收敛。除了操作算子的不足之外,还有参数设置的问题。本文主要从这方面来解决过早收敛问题。以前对参数设置的研究主要考虑单种群定常参数的情况,虽然在一定程度上克服了过早收敛问题,但一般不具备普遍性,同时又使一些优秀个体被破坏。本文提出多种群并行进化与自适应调整相结合的思想,将原种群按其特性划分为几个子种群,每个子种群有其各自的特点,例如具有不同的p c和p m,具有不同的种群规模,具有不同的进化策略和算子,个体的特性分布也不同。这样通过不同子种群之间的进化,可以选取和保留每个种群的优秀个体,避免了单种群进化产生的过早收敛现象,同时又可以保持优秀个体的进化稳定性。另外为了使每个种群进化的灵活性,在p c和p m的设置时,不再像以前那样将它们设为定常值,而是根据种属的实际情况,使其能自动调整参数值。

如表1所示,将某种群划分为四类种群同时进化。种群 的特点是其变异概率和交叉概率均比较大,其初始化个体中1的数目多于0的数目,种群规模为N1,N1在20~40之间。由于此种群的p c,p m 相应较大,故此种群称为“探测”子种群。高的p c,p m 使GA更易探测到新的超平面,从而增大探测最优个体的可能性,此种群的进化作用在于不断提供新的超平面,克服过早收敛。

种群 的特点是其交叉概率和变异概率比较小,因此称其为“开发”子种群。由于p c,p m相对比较小,因此使GA更易保持个体的稳定性,更易在局部范围内(某一超平面内)寻找到优秀个体,并可将优秀个体保存下来,其作用在于尽可能保护优秀个体,其初始化个体中1的数目少于0的数目,规模大小为N3。

种群 则称为探测开发子种群,因为其交叉概率p c和变异概率p m位于上述两种群之间,其0,1分布相等,种群规模为N2。

种群 则称为保留子种群,它开始并没有个体,它是由前三类种群进化过程中选取的优秀个体组成的,其作用在于保存前三类种群进化的优秀个体,使不遭受破坏,又使个体分布多样性,同时其自身也在进化,其p c、p m均比较小,目的在于保持个体的稳定性和多样性。

前三类种群的p c,p m均不是定常值,而是随着个体和种群的不同在不断变化。表中k1,k2,k3,k4分别为p c,p m函数的定常系数,通过控制它们的大小,

表1 种群参数特征

情 况种群 种群 种群 种群 变 异0.05≤k2≤0.5,k4=0.050.005≤k2≤0,k4=0.0050.001≤k2≤0,k4=0.003p m=0.002交 叉0.75≤k1≤1.0,k3=1.00.5≤k1≤0.75,k3=0.750.3≤k1≤0.5,k3=0.5p c=0.2种群规模N1N2N3N4

49清华大学学报(自然科学版)1998,38(3)

即可控制p c ,p m 的变化范围,同时每个种群也在不断克服收敛与发散的矛盾。第四类种群是吸收了前三类种群的优秀个体,使其不易被破坏,其p c ,p m 选择为定常值,且比较小。

前三类种群按照各自的进化策略并行进化,同时为了保持个体分布的多样性(见图1)。这三类种群之间也要进行个体移植,这样可以吸取其它种群的优点,克服个体趋向,同时还要定期从前三类种群中选择最优秀的个体,划入第四类种群中,这样可以保护优秀个体免遭破坏,同时又吸取了前三类种群的优点,保持了个体的多样性。第四类种群的个体平均拟合度最高且最稳定,此类种群在进化中,也将内部的某些个体移植到前三类种群中进行进化同时进化到一定程度,再将前三类种群重新初始化,而保留第四类种群。这样做的目的在于给其更多的机会开发出新的超平面,使其寻找到最优个体的机会增加。

图1多种群进化结构

判别器

保留块

子种群

种群代(0..n )

选择个体

子种群

子种群

子种群

探测块探测开发块开发块种群代(0..n )种群代

(0..n )种群代(0..n )子种群间个体移植

3 总 结

本文从控制参数调整出发,提出了多子种群并行进化及自适应参数调整相结合的思想,既保持了进化过程的稳定性,同时又保持了个体的分布多样性,使得GA 能开发出更多新的超平面,从而克服了

过早收敛现象,初步实验表明,多种群进化及参数自调整的增强型遗传算法无论从鲁棒性和有效性方面都超过传统的遗传算法。

今后的主要工作是不断完善此算法,并通过实验来进一步证实其有效性,另外将算子改进方法和参数调整方法结合起来考虑,充分发挥二者各自的长处,克服其短处,这样就更能有效地克服过早收敛问题。

参 考 文 献

1Jong K D e .

A dap tive system design:A genetic app roatch.IEEE T rans on Syst,M an and Cybern,1980,10(9):566~5742

Go ldberg D

E.

Genetic A lgo rithm s in

search,

op ti m izati on &m ach ine learn ing .R eading,M A :

A ddison -W esley,1989

3Q i X iaofeng .theo ry A nalysis of evo luti on algo rithm s w ith an infin ite populati on size in continues space Part 2:A nalysis of the diversificati on ro le of cro ssover .IEEE T rans N eu ral N etw o rk,1994,5(1):120~129

4Srin ivas M.A dap tive p robability of cro ssover and m utati on in genetic algo rithm s .IEEE T rans SystM an Cybern,1994,24(4):655~667

Adaptive and para llel genetic a lgor ithm ba sed on solv i ng prema ture convergence

ZHOU Yua nhui ,LU Yucha ng ,S HI C huny i

State Key L abo rato ry of In telligent T echno logy and System ;

D epartm en t of Compu ter Science and T echno logy,

T singhua U n iversity,Beijing 100084,Ch ina

Abstract P rem atu re convergence is still the p reem inen t p rob lem in genetic algo rithm s (GA s ).Som e excellen t individuals o r genes are lo st due to p rem ature convergence,w h ich causes local op ti m um.T h is paper p resen ts an i m p roved genetic algo rithm based on m ulti p le populati on s evo lu ti on and adap tive param eter adju sting .Experi m en tal results show that th is m ethod alleviates the p rob lem of p rem ature convergence and i m p roves the efficiency of search ing .

Key words p rem atu re convergence;m ulti populati on

evo luti on;adap tive param eter adju sting;genetic algo rithm s (GA s )

5

9周远晖,等: 基于克服过早收敛的自适应并行遗传算法

自适应遗传算法讲解学习

自适应遗传算法

自适应遗传算法 一.主要流程: 1. 参数的初始化。设定遗传种群规模N ,阵元数M ,信源数P 等。 2. 编码。采用十进制编码方法。 3. 初始种群的产生。随机数生成。 4. 适应度函数的评价。选取 ()() R P ΘA )tr f = (1) 其中, H 1H )(A A A A P A -= (2) P A 是A 的投影矩阵,A 是阵列流型。 ∑==L i L 1 H 1XX R ) (3) R )是数据协方差矩阵的最大似然估计。 5. 选择。比例选择方法与精英选择方法结合使用,在当代种群中选择优良个体遗传到下一代。既保证了种群的多样性,也使最优个体得以保留。 1)比例选择方法(赌轮盘法):每个个体被选中的概率与它的适应度函数值大小成正比,即适应度函数越高的个体被选中的概率也就越高。 2)精英选择方法:让种群中适应度函数值最高的个体不进行配对交叉,直接复制到下一代中。但是容易陷入局部最优解,全局搜索能力差。 6. 交叉。按照概率P c 对种群中个体两两配对,进行交叉操作。本文中选取算数交叉的方式。 算数交叉:是由两个个体的线性组合来产生新的个体,假设第t 代的两个个体为A (t)、B (t),则算数交叉后产生的新个体是

()()()()t t t A B A αα-+=+11 (4) ()()()()t t t B A B αα-+=+11 (5) 其中,α选取(0,1)之间的随机数。 交叉概率:使交叉概率随着遗传代数的增长,逐渐减小,目的是进化前期注重交叉运算,全局搜索能力强。 2.02cos *4.0+?? ? ??*=πK T P c (6) 其中,T 是进化代数,K 是总进化次数。 7. 变异。按照概率P m 对种群个体进行变异。本文中选取均匀变异的方式。 均匀变异:如某基因座上的基因值为X k ,其取值范围为[Umin,Umax],对其进行变异后的值为 )U -r(U +U =X min max min k (7) 其中,r 选取[0,1]之间的随机数。 变异概率:使变异概率随着遗传代数的增长,逐渐增加,目的是进化后期注重变异运算,局部搜索能力强。 005.02sin *045.0+?? ? ??*=πK T P m (8) 其中,T 是进化代数,K 是总进化次数。 8. 终止条件判断。若已达到设定的最大遗传代数,则迭代终止,输出最优解;若不满足终止条件,则返回第4步,进行迭代寻优过程。

遗传算法并行化的研究.doc

遗传算法并行化的研究 学号:SC02011036 姓名:黄鑫 摘要 本文是针对遗传算法并行化进行了研究,首先简要给出了基本遗传算法的形式化描述,然后做了并行性的分析,详细介绍了遗传算法的结构化并行模型:步进模型,岛屿模型,邻接模型,最后指出了进一步要研究的课题。 关键词:遗传算法,并行计算,结构化GA 1引言 遗传算法(GA)是根据达尔文进化论“优胜劣汰,适者生存”的一种启发式搜索算法。采用选择,交叉,变异等基本变化算子在解空间同时进行多点搜索,本身固有并行性。随着大规模并行机的迅速发展,将并行机的高速性与遗传算法并行性结合起来,从而促进遗传算法的发展。然而,仅仅将基本遗传算法硬件并行化伴随着大量通讯开销等问题,从而必须对标准GA的进行改进,使得并行遗传算法不单单是遗传算法硬件并行实现,更重要的是结构化的遗传算法。本文首先给出了GA形式化描述,对基本GA的可并行性做出分析,然后给出了并行GA的模型,最后指出了并行遗传算法还需要解决的问题。 2 基本遗传算法 在这里我们不对遗传算法做过多的介绍,只是给出基本遗传算法的形式化描述:begin (1)initialization (1.1)产生一个初始群体 (1.2)评估第一代整个群体的适应度值 (2)while running do (2.1)选择父代 (2.2)交叉操作 (2.3)子代变异 (2.4)评估子代的适应度 (2.5)子代取代父代,形成新的一带个体 endwhile end 3 遗传算法的并行性分析 从第一节对遗传算法的描述,我们可以看出基本遗传算法模型是一个反复迭代的进化计算过程,通过对一组表示候选解的个体进行评价、选择、交叉、变异等操作,来产生新一代的个体(候选解),这个迭代过程直到满足某种结束条件为止。对应于基本遗传算法的运行过程,为实现其并行化要求,可以从下面四种并行性方面着手对其进行改进和发展。 并行性Ⅰ:个体适应度评价的并行性。 个体适应度的评价在遗传算法中占用的运行时间比较大。通过对适应度并行计算方法的研究,可提高个体适应度评价的计算效率。 并行性Ⅱ:整个群体各个个体适应度评价的并行性。

基于遗传算法的OFDM自适应资源分配算法MATLAB源码

基于遗传算法的OFDM自适应资源分配算法MATLAB源码 OFDM自适应资源分配问题(载波、功率等),是一个既含有离散决策变量,又含有连续决策变量的非线性优化模型,且含有较为复杂的非线性约束,因此适合采用智能优化算法进行求解。 function [BESTX1,BESTX2,BESTY,ALLX1,ALLX2,ALL Y]=GA2(K,N,Pm,H,BBB,P,N0) %% 本源码实现遗传算法,用于RA准则下的多用户OFDM自适应资源分配 %% 输入参数列表 % K 迭代次数 % N 种群规模,要求是偶数 % Pm 变异概率 % H 信道增益矩阵,K*N的矩阵,表示用户k在子信道n上的信道增益,无单位,取值范围0~1 % BBB 总带宽(Hz) % P 总功率(W) % N0 加性高斯白噪声功率谱密度(W/Hz) %% 输出参数列表 % BESTX1 K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体的第一分量 % BESTX2 K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体的第二分量 % BESTY K×1矩阵,记录每一代的最优个体的评价函数值 % ALLX1 K×1细胞结构,每一个元素是M×N矩阵,记录全部个体的第一分量 % ALLX2 K×1细胞结构,每一个元素是M×N矩阵,记录全部个体的第二分量 % ALL Y K×N矩阵,记录全部个体的评价函数值 %% 第一步 [KK,NN]=size(H); M=NN;%决策变量个数,子载波个数 farm1=zeros(M,N);%每一列是一个样本 for i=1:N farm1(:,i)=unidrnd(KK,M,1); end farm2=zeros(M,N);%每一列是一个样本 for i=1:N farm2(:,i)=RandSeq(M); end %输出变量初始化 ALLX1=cell(K,1); ALLX2=cell(K,1); ALL Y=zeros(K,N); BESTX1=cell(K,1);

遗传算法与优化问题

实验十遗传算法与优化问题 一、问题背景与实验目的 遗传算法(Genetic Algorithm —GA),就是模拟达尔文的遗传选择与自然淘汰的生物进化过程的计算模型,它就是由美国Michigan大学的J、Holla nd教授于1975 年首先提出的?遗传算法作为一种新的全局优化搜索算法,以其简单通用、鲁棒性强、适于并行处理及应用范围广等显著特点,奠定了它作为21世纪关键智能计算之一的地位. 本实验将首先介绍一下遗传算法的基本理论,然后用其解决几个简单的函数最值问题,使读者能够学会利用遗传算法进行初步的优化计算? 1. 遗传算法的基本原理 遗传算法的基本思想正就是基于模仿生物界遗传学的遗传过程?它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体?这个群体在问题特定的环境里生存 竞争,适者有最好的机会生存与产生后代?后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程.群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解?值得注意的一点就是,现在的遗传算法就是受生物进化论学说的启发提出的,这种学说对我们用计算机解决复杂问题很有用,而它本身就是否完全正确并不重要(目前生物界对此学说尚有争议). (1)遗传算法中的生物遗传学概念 由于遗传算法就是由进化论与遗传学机理而产生的直接搜索优化方法;故而 在这个算法中要用到各种进化与遗传学的概念? 首先给出遗传学概念、遗传算法概念与相应的数学概念三者之间的对应关系这些概念

(2)遗传算法的步骤 遗传算法计算优化的操作过程就如同生物学上生物遗传进化的过程,主要有三个基本操作(或称为算子):选择(Selection)、交叉(Crossover)、变异(Mutation). 遗传算法基本步骤主要就是:先把问题的解表示成“染色体”,在算法中也就就是以二进制编码的串,在执行遗传算法之前,给出一群“染色体”,也就就是假设的可行解.然后,把这些假设的可行解置于问题的“环境”中,并按适者生存的原则从中选 择出较适应环境的“染色体”进行复制 ,再通过交叉、变异过程产生更适 应环境的新一代“染色体”群.经过这样的一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就就是问题的最优解. 下面给出遗传算法的具体步骤,流程图参见图1: 第一步:选择编码策略,把参数集合(可行解集合)转换染色体结构空间; 第二步:定义适应函数,便于计算适应值; 第三步:确定遗传策略,包括选择群体大小,选择、交叉、变异方法以及确定交叉概率、变异概率等遗传参数; 第四步:随机产生初始化群体; 第五步:计算群体中的个体或染色体解码后的适应值; 第六步:按照遗传策略,运用选择、交叉与变异算子作用于群体,形成下一代群体; 第七步:判断群体性能就是否满足某一指标、或者就是否已完成预定的迭代次数,不满足则返回第五步、或者修改遗传策略再返回第六步. 图1 一个遗传算法的具体步骤

自适应Simpson积分算法MATLAB及C实现代码.docx

自适应Simpson积分算法(MATLAB及C++实现代码) (计算数学课用) 在CSDN论坛中找到了却要金币,无奈之下自己写了一份。 对于类似问题,改一下积分函数和区间即可。 针对问题:数学上已经证明了 ∫ 4 1+x2 dx=π 1 成立,所以可以通过数值积分来求π的近似值。 试利用自适应Simpson算法计算积分近似值。 C++版:(直接复制粘贴在VC++6.0即可运行) /*用自适应Simpson积分方法计算积分值*/ #include #include int n=0; //设置全局变量n,用来记录最高迭代次数,避免递归一直进行下去。double pi=3.141592653589793238462643 ; //设置近似精确值,用以比较 double e1=0.00001 ; //设置误差容限为10^-5 double f(double); //要积分的函数 double Simpson (double,double,double,double); // 迭代函数 using namespace std; //主函数 int main() { double a=0,b=1,t,h,S;//积分区间 h=(b-a)/2; S=h/3*(f(a)+f(b)+4*f((a+b)/2)); //第一次Simpson公式积分值 t=Simpson(a,b,e1,S); cout<<"积分值为:"<

matlab自适应遗传算法

function [xv,fv]=AdapGA(fitness,a,b,NP,NG,Pc1,Pc2,Pm1,Pm2,eps) %×?êêó|ò?′???·¨ L = ceil(log2((b-a)/eps+1)); x = zeros(NP,L); for i=1:NP x(i,:) = Initial(L); fx(i) = fitness(Dec(a,b,x(i,:),L)); end for k=1:NG sumfx = sum(fx); Px = fx/sumfx; PPx = 0; PPx(1) = Px(1); for i=2:NP PPx(i) = PPx(i-1) + Px(i); end for i=1:NP sita = rand(); for n=1:NP if sita <= PPx(n) SelFather = n; break; end

end Selmother = round(rand()*(NP-1))+1; posCut = round(rand()*(L-2)) + 1; favg = sumfx/NP; fmax = max(fx); Fitness_f = fx(SelFather); Fitness_m = fx(Selmother); Fm = max(Fitness_f,Fitness_m); if Fm>=favg Pc = Pc1*(fmax - Fm)/(fmax - favg); else Pc = Pc2; end r1 = rand(); if r1<=Pc nx(i,1:posCut) = x(SelFather,1:posCut); nx(i,(posCut+1):L) = x(Selmother,(posCut+1):L); fmu = fitness(Dec(a,b,nx(i,:),L)); if fmu>=favg Pm = Pm1*(fmax - fmu)/(fmax - favg); else Pm = Pm2;

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

matlab遗传算法工具箱函数及实例讲解(转引) 核心函数:? (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数?【输出参数】? ?pop--生成的初始种群?【输入参数】? ?num--种群中的个体数目? ?bounds--代表变量的上下界的矩阵? ?eevalFN--适应度函数? ?eevalOps--传递给适应度函数的参数? ?options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B],如? precision--变量进行二进制编码时指定的精度? F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度)? (2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts.? ?termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs ,mutOps)--遗传算法函数?【输出参数】? x--求得的最优解? endPop--最终得到的种群?

bPop--最优种群的一个搜索轨迹?【输入参数】? bounds--代表变量上下界的矩阵? evalFN--适应度函数? evalOps--传递给适应度函数的参数? startPop-初始种群? opts[epsilon prob_ops display]--opts(1:2)等同于initializega 的options参数,第三个参数控制是否输出,一般为0。如[1e-6 termFN--终止函数的名称,如['maxGenTerm']? termOps--传递个终止函数的参数,如[100]? selectFN--选择函数的名称,如['normGeomSelect']? selectOps--传递个选择函数的参数,如[0.08]? xOverFNs--交叉函数名称表,以空格分开,如['arithXover heuristicXover simpleXover']? xOverOps--传递给交叉函数的参数表,如[2 0;2 3;2 0]? mutFNs--变异函数表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']? mutOps--传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]?注意】matlab工具箱函数必须放在工作目录下?【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0=x=9?【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为0.95,变异概率为0.08?【程序清单】?

遗传算法概述

第1期作者简介:李红梅(1978-),女,湖南湘潭人,硕士,广东白云学院讲师,研究方向为演化计算。 1遗传算法的发展史 遗传算法(Genetic Algorithms )研究的历史比较短,20世纪 60年代末期到70年代初期,主要由美国家Michigan 大学的John Holland 与其同事、学生们研究形成了一个较完整的理论 和方法,遗传算法作为具有系统优化、适应和学习的高性能计算和建模方法的研究渐趋成熟。我国对于GA 的研究起步较晚,不过从20世纪90年代以来一直处于不断上升中。 2遗传算法的基本思想 遗传算法是从代表问题可能潜在解集的一个种群(popu- lation )开始的,而一个种群则由经过基因(gene )编码(coding ) 的一定数目的个体(individual )组成。每个个体实际上是染色体(chromosome )带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现是某种基因组合,它决定了个体的形状的外部表现。初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation )演化产生出越来越好的近似解。在每一代中,根据问题域中个体的适应度(fitness )、大小挑选(selection )个体,借助于自然遗传学的遗传算子(genetic operators )进行组合交叉(crossover )和变异(mutation ),产生出代 表新的解集的种群。这个过程将导致后生代种群比前代更加适应环境,末代种群中的最优个体经过解码(decoding ),可以作为问题近似最优解。 3遗传算法的一般流程 (1)随机产生一定数目的初始种群,每个个体表示为染色 体的基因编码; (2)计算每个个体的适应度,并判断是否符合优化准则。若符合,输出最佳个体及其代表的最优解并结束计算,否则转向第3步; (3)依据适应度选择再生个体,适应度高的个体被选中的概率高,适应度低的个体可能被淘汰; (4)执行交叉和变异操作,生成新的个体;(5)得到新一代的种群,返回到第2步。 4遗传算法的特点 传统的优化方法主要有三种:枚举法、启发式算法和搜索 算法: (1)枚举法 可行解集合内的所有可行解,以求出精确最 优解。对于连续函数,该方法要求先对其进行离散化处理,这样就可能因离散处理而永远达不到最优解。此外,当枚举空间比较大时,该方法的求解效率比较低,有时甚至在目前先进计算机工具上无法求解。 (2)启发式算法 寻求一种能产生可行解的启发式规则, 以找到一个最优解或近似最优解。该方法的求解效率比较高,但对每一个需求解的问题必须找出其特有的启发式规则。这个启发式规则一般无通用性,不适合于其它问题。 (3)搜索算法 寻求一种搜索算法,该算法在可行解集合 的一个子集内进行搜索操作,以找到问题的最优解或者近似最优解。该方法虽然保证不了一定能够得到问题的最优解,但若适当地利用一些启发知识,就可在近似解的质量和效率上达到一种较好的平衡。 遗传算法不同于传统的搜索和优化方法。主要区别在于: ①遗传算法直接处理问题参数的适当编码而不是处理参数集 本身。②遗传算法按并行方式搜索一个种群数目的点,而不是 遗传算法概述 李红梅 (广东白云学院计算机系,广东广州510450) 摘要:遗传算法是一种全局优化的随机搜索算法。它是解决复杂优化问题的有力工具。在工程设计、演化硬件电路 设计以及人工智能等方面应用前景广阔。系统地介绍了遗传算法的发展史、基本思想、特点、主要应用领域等相关方 面。 关键词:遗传算法;搜索;进化;最优解;种群中图分类号:TP312 文献标识码:A 文章编号:1672-7800(2009)01-0067-02 第8卷第1期2009年1月 Vol.8No.1Jan.2009 软件导刊 Software Guide

自适应小生境遗传算法的性能分析

自适应小生境遗传算法的性能分析1 李明林 (福州大学机械工程及自动化学院 福建福州 350002) E-mail:lml_006@https://www.doczj.com/doc/f913065176.html, 摘 要:本文提出一种改进的维持物种多样性的小生境实现技术——自适应小生境遗传算法。该算法以Mahfoud提出的确定性排挤策略为基础,采用数值编码,并结合算术交叉、非均匀变异和高斯变异、自适应变异概率。经过实验分析,验证了该算法能有效地、自适应地形成小生境进化环境,并具备相当的收敛速度和相当的求解精度。 关键词:小生境,自适应,遗传算法,多态优化,排挤 1 引言 作为一种模拟生物在自然环境中遗传和进化过程的自适应全局优化搜索算法,遗传算法以其明显优于传统优化算法的鲁棒性、自适应性、全局优化性和隐含并行性广泛地用于求解各种工程优化问题。近年来,人们特别关注发展用于多目标优化、多峰值函数优化与组合优化问题的小生境遗传算法[1]。 观察各种小生境的实现方法,可看出其共同点都是为了有效地维持群体的多样性。而其差别可归纳为两种基本类型:一种是将连续的、无限的搜索空间划分为离散的、有限的小生境区域;另一种则是对种群的适应度作适当的修整以抑制超级个体的复制概率来维持进化过程中的群体多样性。前一种类型以De Jong 提出的基于排挤机制(Crowding)的小生境实现方法为代表(1975),后一种类型以Goldberg等提出的基于共享机制(Sharing)的小生境技术为代表(1987)。在此基础上,各种各样的小生境技术不断出现。我们项目的研究主要是对一些有代表性的技术进行性能分析,为小生境遗传算法的实际工程应用提供有用的设计依据。 本文首先在深入理解Mahfoud提出的基于确定性排挤机制(Deterministic Crowding)的小生境思想的基础上,以实验的手段论证其思想的有效性和正确性。在实验过程中,不断修改程序的各个组成部分,并用于函数优化测试。最后发现一种程序组合具有较明显的特点。它可维持种群的多样性,而且可自适应形成大小、形状各异的小生境。因此将它称为自适应小生境遗传算法(简称SNGA)。 本文首先介绍确定性排挤机制的基本思想和算法结构,结合文献[2]的遗传算子编写了SNGA类库函数。其次结合三种较为典型的数值优化测试函数,对SNGA进行实验分析。最后对SNGA进行总结讨论。 2 确定性排挤机制和SNGA 1970年,Cavicchio提出了基于预选择机制(Preselection)的小生境技术,其基本思想是父代个体经过遗传操作后生成子代个体,父子个体相互竞争,适应度高的进入下一代群体中。DeJong于1975年一般化了Cavicchio的预选择机,在其博士论文提出了基于排挤机制(Crowding)的小生境技术。即:在父代群体中选取部分个体作为小生境主体,在新生子代群体中与小生境主体相似的个体不得进入下一代群体。他们声称这两种方法都可在群体中形成小生境的进化环境,并维持了群体的多样性。 1本课题得到福建省教育厅(JB04025)项目资助。

多方式进化遗传算法Matlab源代码

多方式进化遗传算法Matlab源代码 对于单种群进化,多方式进化是提高全局搜索能力和收敛速度的一种有效策略 该程序采用: 编码:二进制编码、实数编码(默认) 选择:非线性排名选择(主要表现在前期),锦标赛选择(主要表现在后期,含精英保留),由于单纯的转轮盘选择存在诸多弊端,这里没有采用 交叉:二进制编码采用多点交叉和均匀交叉,并逐步增大均匀交叉概率 实数编码采用离散交叉(前期)、算术交叉(中期)、AEA重组(后期) 变异:二进制编码采用随机变异 实数编码采用两种自适应变异和两种随机变异,且尽量采用前者 到位:适当的到位可以提高种群的多样性 function [X,MaxFval,BestPop,Trace]=fga(FUN,bounds,MaxEranum,PopSize,options,pCross,pMutation,pInversion) % [X,MaxFval,BestPop,Trace]=fga(FUN,bounds,MaxEranum,PopSize,options,pCross,pMutation,pInversion) % Finds a maximum of a function of several variables. % fga solves problem s of the form: % max F(X) subject to: LB <= X <= UB % BestPop - 最优的群体即为最优的染色体群 % Trace - 每代最佳个体所对应的目标函数值 % FUN - 目标函数 % LB - 自变量下限 % UB - 自变量上限 % eranum - 种群的代数,取50--500(默认200) % popsize - 每一代种群的规模;此可取50--200(默认100) % pcross - 交叉概率,一般取0.5--0.85之间较好(默认0.8) % pmutation - 初始变异概率,一般取0.05-0.2之间较好(默认0.1) % pInversion - 倒位概率,一般取0.05-0.3之间较好(默认0.2) % options - 1*2矩阵,options(1)=0二进制编码(默认0),option(1)~=0十进制编码,option(2)设定求解精度(默认1e-4) T1=clock; %检验初始参数 if nargin<2, error('FMAXGA requires at least three input arguments'); end if nargin==2, MaxEranum=100;PopSize=100;options=[1 1e-4];pCross=0.85;pMutation=0.1;pInversion=0.25;end if nargin==3, PopSize=100;options=[1 1e-4];pCross=0.85;pMutation=0.1;pInversion=0.25;end if nargin==4, options=[1 1e-4];pCross=0.85;pMutation=0.1;pInversion=0.25;end if nargin==5, pCross=0.85;pMutation=0.1;pInversion=0.25;end if nargin==6, pMutation=0.1;pInversion=0.25;end if nargin==7, pInversion=0.25;end if (options(1)==0|options(1)==1)&find((bounds(:,1)-bounds(:,2))>0) error('数据输入错误,请重新输入:'); end %s=sprintf('程序运行需要约%.4f 秒钟时间,请稍等......',(eranum*popsize/1000)); %disp(s); % 定义全局变量 global m n NewPop children1 children2 VarNum % 初始化种群和变量

并行遗传算法

并行遗传算法及其应用 1、遗传算法(GA)概述 GA是一类基于自然选择和遗传学原理的有效搜索方法,它从一个种群开始,利用选择、交叉、变异等遗传算子对种群进行不断进化,最后得到全局最优解。生物遗传物质的主要载体是染色体,在GA中同样将问题的求解表示成“染色体Chromosome”,通常是二进制字符串表示,其本身不一定是解。首先,随机产生一定数据的初始染色体,这些随机产生的染色体组成一个种群(Population),种群中染色体的数目称为种群的大小或者种群规模。第二:用适值度函数来评价每一个染色体的优劣,即染色体对环境的适应程度,用来作为以后遗传操作的依据。第三:进行选择(Selection),选择过程的目的是为了从当前种群中选出优良的染色体,通过选择过程,产生一个新的种群。第四:对这个新的种群进行交叉操作,变异操作。交叉、变异操作的目的是挖掘种群中个体的多样性,避免有可能陷入局部解。经过上述运算产生的染色体称为后代。最后,对新的种群(即后代)重复进行选择、交叉和变异操作,经过给定次数的迭代处理以后,把最好的染色体作为优化问题的最优解。 GA通常包含5个基本要素:1、参数编码:GA是采用问题参数的编码集进行工作的,而不是采用问题参数本身,通常选择二进制编码。2、初始种群设定:GA随机产生一个由N个染色体组成的初始种群(Population),也可根据一定的限制条件来产生。种群规模是指种群中所含染色体的数目。3、适值度函数的设定:适值度函数是用来区分种群中个体好坏的标准,是进行选择的唯一依据。目前主要通过目标函数映射成适值度函数。4、遗传操作设计:遗传算子是模拟生物基因遗传的操作,遗传操作的任务是对种群的个体按照它们对环境的适应的程度施加一定的算子,从而实现优胜劣汰的进化过程。遗传基本算子包括:选择算子,交叉算子,变异算子和其他高级遗传算子。5、控制参数设定:在GA的应用中,要首先给定一组控制参数:种群规模,杂交率,变异率,进化代数等。 GA的优点是擅长全局搜索,一般来说,对于中小规模的应用问题,能够在许可的范围内获得满意解,对于大规模或超大规模的多变量求解任务则性能较差。另外,GA本身不要求对优化问题的性质做一些深入的数学分析,从而对那些不

遗传算法的并行实现

遗 传 算 法 (基于遗传算法求函数最大值) 指导老师:刘建丽 学号:S201007156 姓名:杨平 班级:研10级1班

遗传算法 一、 遗传算法的基本描述 遗传算法(Genetic Algorithm ,GA )是通过模拟自然界生物进化过程来求解优化问题的一类自组织、自适应的人工智能技术。它主要基于达尔文的自然进化论和孟德尔的遗传变异理论。多数遗传算法的应用是处理一个由许多个体组成的群体,其中每个个体表示问题的一个潜在解。对个体存在一个评估函数来评判其对环境的适应度。为反映适者生存的思想,算法中设计一个选择机制,使得:适应度好的个体有更多的机会生存。在种群的进化过程中,主要存在两种类型的遗传算子:杂交和变异。这些算子作用于个体对应的染色体,产生新的染色体,从而构成下一代种群中的个体。该过程不断进行,直到找到满足精度要求的解,或者达到设定的进化代数。显然,这样的思想适合于现实世界中的一大类问题,因而具有广泛的应用价值。遗传算法的每一次进化过程中的,各个体之间的操作大多可以并列进行,因此,一个非常自然的想法就是将遗传算法并行化,以提高计算速度。本报告中试图得到一个并行遗传算法的框架,并考察并行化之后的一些特性。为简单起见(本来应该考虑更复杂的问题,如TSP 。因时间有些紧张,做如TSP 等复杂问题怕时间不够,做不出来,请老师原谅),考虑的具有问题是:对给定的正整数n 、n 元函数f ,以及定义域D ,求函数f 在D 内的最大值。 二、 串行遗传算法 1. 染色体与适应度函数 对函数优化问题,一个潜在的解就是定义域D 中的一个点011(,,...,)n x x x -,因此,我们只需用一个长度为n 的实数数组来表示一个个体的染色体。由于问题中要求求函数f 的最大值,我们可以以个体所代表点011(,,...,)n x x x -在f 函数下的值来判断该个体的好坏。因此,我们直接用函数f 作为个体的适应度函数。 2. 选择机制 选择是遗传算法中最主要的机制,也是影响遗传算法性能最主要的因素。若选择过程中适应度好的个体生存的概率过大,会造成几个较好的可行解迅速占据种群,从而收敛于局部最优解;反之,若适应度对生存概率的影响过小,则会使算法呈现出纯粹的随机徘徊行为,算法无法收敛。下面我们介绍在实验中所使用的选择机制。

遗传算法总结【精品毕业设计】(完整版)

遗传算法总结 遗传算法是借鉴生物的自然选择和遗传进化机制而开发出的一种全局自适应概率搜索算法。 一、遗传算法流程图 算法开始 原问题参数集 染色体编码,产生初始种群 计算种群中个体的适应值 终止条件判断 N 选择 交叉 Y 变异 新种群 输出结果 算法结束 图1 遗传算法流程图 二、遗传算法的原理和方法 1)染色体编码 把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法就称为编码。

De Jong 曾提出了两条操作性较强的实用编码原则:编码原则一:应使用能易于产生与所求问题相关的且具有低阶、短定义长度模式的编码方案;编码原则二:应使用能使问题得到自然表示或描述的具有最小编码字符集的编码方案。 编码方法主要有以下几种:二进制编码方法、格雷码编码方法、浮点数编码方法、符号编码方法、参数级联编码方法、多参数交叉编码方法。 2) 适应值计算 由解空间中某一点的目标函数值()f x 到搜索空间中对应个体的适应度函数值 (())Fit f x 的转换方法基本上有一下三种: a . 直接以待解的目标函数值()f x 转化为适应度函数值(())Fit f x ,令 () (())=() f x Fit f x f x ?? -?目标函数为最大化函数 目标函数为最小化函数 b . 对于最小值的问题,做下列转化max max () () (())0 C f x f x C Fit f x -

自适应遗传算法

自适应遗传算法 一.主要流程: 1. 参数的初始化。设定遗传种群规模N ,阵元数M ,信源数P 等。 2. 编码。采用十进制编码方法。 3. 初始种群的产生。随机数生成。 4. 适应度函数的评价。选取 ()() R P ΘA tr f = (1) 其中, H 1H )(A A A A P A -= (2) P A 是A 的投影矩阵,A 是阵列流型。 ∑==L i L 1 H 1XX R (3) R 是数据协方差矩阵的最大似然估计。 5. 选择。比例选择方法与精英选择方法结合使用,在当代种群中选择优良个体遗传到下一代。既保证了种群的多样性,也使最优个体得以保留。 1)比例选择方法(赌轮盘法):每个个体被选中的概率与它的适应度函数值大小成正比,即适应度函数越高的个体被选中的概率也就越高。 2)精英选择方法:让种群中适应度函数值最高的个体不进行配对交叉,直接复制到下一代中。但是容易陷入局部最优解,全局搜索能力差。 6. 交叉。按照概率P c 对种群中个体两两配对,进行交叉操作。本文中选取算数交叉的方式。 算数交叉:是由两个个体的线性组合来产生新的个体,假设第t 代的两个个体为A (t)、B (t),则算数交叉后产生的新个体是 ()()()()t t t A B A αα-+=+11 (4) ()()()()t t t B A B αα-+=+11 (5) 其中,α选取(0,1)之间的随机数。 交叉概率:使交叉概率随着遗传代数的增长,逐渐减小,目的是进化前期注重交叉运算,全局搜索能力强。 2.02cos *4.0+?? ? ??*=πK T P c (6) 其中,T 是进化代数,K 是总进化次数。 7. 变异。按照概率P m 对种群个体进行变异。本文中选取均匀变异的方式。 均匀变异:如某基因座上的基因值为X k ,其取值范围为[Umin,Umax],对其进行变异后的值为 )U -r(U +U =X min max min k (7)

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

遗传算法入门(上)代码中的进化学说与遗传学说 写在之前 算法所属领域 遗传算法的思想解析 为什么要用遗传算法? 科研现状 应用现状 遗传算法入门系列文章: (中篇)遗传算法入门(中)实例,求解一元函数最值(MATLAB版)(下篇)遗传算法入门(下)实例,求解TSP问题(C++版) 写在之前 说明:本想着用大量篇幅写一篇“关于遗传算法的基本原理”作为本系列入门的第一篇,但是在找寻资料的过程中,看到网络上有大量的关于遗传算法的介绍,觉得写的都挺好,所以本文我就简单写点自己的理解。 推荐几篇关于遗传算法的介绍性文章: 遗传算法详解(GA)(个人觉得很形象,很适合初学者) 算法所属领域 ? 相信每个人学习一门知识之前,都会想知道这门知识属于哪一门学科范畴,属于哪一类技术领域? ? 首先对于这种问题,GA是没有绝对的归属的。算法的定义是解决问题的一种思想和指导理论。而遗传算法也是解决某一问题的一种思想,用

某一编程语言实现这种思想的程序具有很多特点,其中一个便是智能性和进化性,即,不需要大量的人为干涉,程序本身能够根据一定的条件自我筛选,最终得出令人满意的结果。所以按照这种特性,把它列为人工智能领域下的学习门类毫无疑问是可以的。遗传算法的思想是借鉴了达尔文的进化学说和孟德尔的遗传学说,把遗传算法说成是一门十足的仿生学一点都不过分。然而从应用的角度出发,遗传算法是求最优解问题的好方法,如信号处理中的优化、数学求解问题、工业控制参数最优解、神经网络中的激活函数、图像处理等等,所以把遗传算法说成优化范畴貌似也说的过去。为了方便理解,我们可以暂时将其定位为人工智能–智能优化,这也是很多书中描述遗传算法的惯用词汇。 遗传算法的思想解析 遗传算法(gentic algorithms简称GA)是模拟生物遗传和进化的全局优化搜索算法 ? 我们知道,在人类的演化中,达尔文的进化学说与孟德尔的遗传学说起着至关重要的理论指导。每个人作为一个个体组成一个人类种群,正是经历着物竞天择,才会让整个群体慢慢变的更好,即更加适应周围的环境。而每一代正是靠着基因交叉与变异才能繁衍出更加适应大自然规律的下一代个体。总之,在漫长的迭代进化中,一个不适应环境的群体,在物竞天择和交叉变异中慢慢变的适应了环境。 ? GA的思想完全模拟了生物的进化和遗传方式。我们在求解一个问题的最优解时,先人为的产生很多任意的解,组成一个解集(一个解是一个个体,一个解集是一个种群),这些解有好有坏。我们的最终目的是让这

MapReduce求解物流配送单源最短路径研究

MapReduce求解物流配送单源最短路径研究 摘要: 针对物流配送路线优化,提出了将配送路线问题分解成若干可并行操作的子问题的云计算模式。详细论述了基于标色法的MapReduce广度优先算法并行化模型、节点数据结构、算法流程和伪代码程序,并通过将该算法应用于快递公司的实际配送,验证了该算法的可行性。关键词: 物流配送; MapReduce;并行计算;最短路径 随着电子商务的普及,人们网上购物的习惯逐渐形成。截止2012年11月30日,阿里巴巴集团旗下淘宝和天猫2012年总交易额已经突破一万亿。综合淘宝和天猫的交易数据来看,以快递员为主体的中国物流配送业对电子商务发展的促进起到了巨大作用。同时传统邮政担负的包裹配送业务比重也逐渐地倾斜于第三方物流配送公司。目前我国物流配送运输成本占整个物流成本的35%~50%左右[1]。由于网购物品用户分布在城市的不同地方,为了控制配送运输成本,改善配送秩序,需要优化配送路线。优化配送路线的求解有串行算法和并行算法。串行算法主要表现在基于算法本身以及其优化组合的方法,例如CLARK G和WRIGHT J的节约算法、GILLETT B E和MILLER L R的扫描算法、Christofides等人的k度中心树和相关算法、Gendrean的禁忌搜索方法、LAWRENCE J 的遗传算法、Dijkstra算法、Nordbeck提出的椭圆限制搜索区域改进算法[2]。随着计算数据的海量化以及摩尔定律的失效(晶体管电路已经接近了其物理改进的极限),串行算法本身的改进和组合已不能适应需求。计算机科学领域出现了另一类并行最短路径分析算法设计,目前关于并行最短路径分析算法设计有基于MPI的主从Dijkstra并行算法[3]、MPI+open-MP混合算法[4]、社区分析的最短路径LC-2q并行算法[5]等。本文针对物流及时配送和成本控制需求,提出基于标色法的MapReduce广度优先算法并行化模型,并应用于配送线路优化问题。由于MapReduce本身封装了数据分割、负载均衡、容错处理等细节,用户只需要将实际应用问题分解成若干可并行操作的子问题,有效降低了求解难度,为解决物流配送运输路径优化问题提供了技术支持。1 MapReduce算法描述信息技术和网络技术的发展为云计算的产生提供了条件。MapReduce并行编程模型是云计算的核心技术之一。MapReduce是Google 实验室提出的一个分布式并行编程模型或框架, 主要用来处理和产生海量数据的并行编程模式,2004 年DEAN J和GHEMAWAT S第一次发表了这一新型分布式并行编程模型[6]。用户不必关注MapReduce 如何进行数据分割、负载均衡、容错处理等细节,只需要将实际应用问题分解成若干可并行操作的子问题,这种分解思路遵守主从架构模型。Mapreduce框架的主要程序分为Master、Map和Reduce。在Hadoop 中,MapReduce由一个主节点(Jobtracker,属于Master)和从节点(Tasktracker,属于Map和Reduce)组成[7]。1.1 基于标色法的MapReduce广度优先算法模型给定一个带权有向图,用G=(N,E,W)模型来表示,其中N={ni∣i=1,2,...,m}为完全图的点的集合;E={e(ni,nj)∣i≠j, ni,nj∈N}为弧段集;W={w(ni,nj)∣i≠j,ni,nj∈N}为权值集。一般向图的权值表示节点与节点之间的几何长度,记为w(ni,nj)=dij,dij表示节点ni到节点nj的距离。最短路径计算就是计算从起始点ni到终止点nj的最短几何长度之和为最小。在有向图起始点和终止点的最短路径计算中,MapReduce采用的是广度优先算法。MapReduce计算最短路径用邻接表来表示图,在邻接表中每一行数据构成Map和Reduce的一个数据内容。Map和Reduce的(key,value)中key为N,value值为与这个节点邻接的所有节点的 AdjacentList。在用标色法求解最短路径时,AdjacentList节点的信息包括源点到顶点的距离distance(除到本身的距离为0外,其余初始值皆为无穷大);节点的颜色color(其值可分别取0、1、2,0表示未处理的顶点,1表示等待处理的顶点,2表示已处理的顶点,源点的初始值为1,其余顶点皆为0);被访问顶点和边的权值记为N和W。顶点的数据结构如表1所示。

相关主题
文本预览
相关文档 最新文档