美章网 精品范文 遗传算法论文范文

遗传算法论文范文

前言:我们精心挑选了数篇优质遗传算法论文文章,供您阅读参考。期待这些文章能为您带来启发,助您在写作的道路上更上一层楼。

遗传算法论文

第1篇

论文摘要:TSP是组合优化问题的典型代表,该文在分析了遗传算法的特点后,提出了一种新的遗传算法(GB—MGA),该算法将基因库和多重搜索策略结合起来,利用基因库指导单亲遗传演化的进化方向,在多重搜索策略的基础上利用改进的交叉算子又增强了遗传算法的全局搜索能力。通过对国际TSP库中多个实例的测试,结果表明:算法(GB—MGA)加快了遗传算法的收敛速度,也加强了算法的寻优能力。

论文关键词:旅行商问题遗传算法基因库多重搜索策略

TSP(travelingsalesmanproblem)可以简述为:有n个城市1,2,…,n,一旅行商从某一城市出发,环游所有城市后回到原出发地,且各城市只能经过一次,要求找出一条最短路线。TSP的搜索空间是有限的,如果时间不受限制的话,在理论上这种问题终会找到最优解,但对于稍大规模的TSP,时间上的代价往往是无法接受的。这是一个典型的组合最优化问题,已被证明是NP难问题,即很可能不存在确定的算法能在多项式时间内求到问题的解[1]。由于TSP在工程领域有着广泛的应用,如货物运输、加工调度、网络通讯、电气布线、管道铺设等,因而吸引了众多领域的学者对它进行研究。TSP的求解方法种类繁多,主要有贪婪法、穷举法、免疫算法[2]、蚂蚁算法[3]、模拟退火算法、遗传算法等。

遗传算法是一种借鉴生物界自然选择和遗传机制的随机化搜索算法,其主要特点是群体搜索策略和群体中个体之间的信息交换,搜索不依赖于梯度信息[4]。遗传算法主要包括选择、交叉和变异3个操作算子,它是一种全局化搜索算法,尤其适用于传统搜索算法难于解决的复杂和非线性问题。遗传算法虽然不能保证在有限的时间内获得最优解,但随机地选择充分多个解验证后,错误的概率会降到可以接受的程度。

用遗传算法求解TSP能得到令人满意的结果,但是其收敛速度较慢,而且种群在交叉算子作用下,会陷入局部解。采用局部启发式搜索算法等,虽然能在很短的时间内计算出小规模城市的高质量解,一旦城市规模稍大就容易陷入局部最优解。因此,为了能够加快遗传算法的收敛速度,又能得到更好的近似最优解,该文采纳了文[5]中杨辉提出的基因库的想法,并结合文[6]中Cheng-FaTsai提出的多重搜索策略思想,使用单亲演化与群体演化相结合的方式来求解TSP问题。该文根据文[7]中最小生成树MST(minimumcostspanningtree)的应用,由MST建立TSP的基因库,保存有希望成为最优解的边,利用基因库提高初始群体的质量进行单亲演化,然后利用改进后的交叉算子和的多重搜索策略进行群体演化。

1单亲演化过程

现有的大多数演化算法在整个演化过程中所涉及的基因,大多来源于个体本身,个体质量的高低决定了算法的全局性能,如果群体中初始个体的适应度都较差,肯定要影响算法的收敛速度,对于规模稍大的TSP尤其明显[8]。该文为了克服上述弱点,首先利用普里姆算法求出TSP中最小生成树,并将各个MST中的每一条边都保存在一个n*(n-1)方阵里面,就构成了一个基因库,在生成初始群体的时候尽量使用基因库中的基因片段,来提高整个初始群体的适应度,从而提高算法的效率。

1.1TSP编码表示

设n个城市编号为1,2,…,n,为一条可行路径,Pk=Vk1Vk2…Vkn为一条可行路径,它是1,2,…,n的一个随机排列,其含意是第k条路径起点城市是Vk1,最后一个城市是Vkn,则第k条环路的总长度可以表示为:

其中,d(Vki,Vkj)表示城市Vki与城市Vkj之间的距离。在算法中环路Pk的总长d(Pk)用来评价个体的好坏[9]。适应度函数取路径长度d(Pk)的倒数,f(Pk)=1/d(Pk)。

1.2构建TSP基因库

对n个编号为1,2,…,n的城市,根据它们的坐标计算各城市之间的欧氏距离d(i,j),i,j=1,2,…,n,得到一个n*n的方阵D={d(i,j)}。然后利用普里姆算法求得该TSP的一棵MST,并将这棵MST中的每一条边e(i,j)对应地存储在一个n*(n-1)的方阵M={e(i,j)},即该文的基因库。由于一个TSP可能有多棵MST,操作可以重复多次,这样生成的基因库中的基因就更多,增强了初始群体的全局性。具体算法如下:

VoidMiniSpanTree—PRIM(MGraphG,VertexTypeu){

Struct{

VertexTypeadjvex;

VRTypelowcost;

}closedge[MAX—VERTEX—NUM];

k=LocateVex(G,u);

for(j=0;j<G.vexnum;++j)

if(j!=k)closedge[j]={u,G.arcs[k][j].adj};

closedge[k].lowcost=0;

for(i=0;i<G.vexnum;++i){

k=minimum(closedge);

printf(closedge[k].adjvex,G.vexs[k]);

closedge[k].lowcost=0;

for(j=0;j<G.vexnum;++j)

if(G.arcs[k][j].adj<closedge[j].lowcost)

closedge[j]={G.vexs[k],G.arcs[k][j].adj};

}

}

1.3单亲演化算法

单亲演化算法是利用遗传算法的优胜劣汰的遗传特性,在单个染色体内以基因重组的方式,使子代在满足TSP问题的限定条件下进行繁衍,然后保留适应度高的染色体种群,达到优化的目的。单亲演化算法的基因重组操作包括基因换位、基因段错位和基因段倒转三种操作来实现。基因换位操作是将亲代的染色体基因进行对换后,形成子代,其换位又分为单基因换位和基因段换位两种方式。基因段错位操作是随机确定基因段,也随机选定错位位置,整段错移。基因段倒转操作则是随机地确定倒转基因段的起止位置,倒转操作是对该段内基因按中垂线作镜面反射,若段内基因数为奇数时,则中位基因不变。单亲演化时可以是单个操作用于单个父代,也可以是几种操作同时采用。为了编程方便,文中采用基因段倒转操作。

2群体演化过程

在单亲演化算法求得的初始群体基础上,再利用多重搜索策略并行地进行群体演化,这样在保证算法的快速收敛的同时也注重了搜索空间的全局性。

2.1交叉算子

该文算子采用一种与顺序交叉OX(ordercrossover)法类似的交叉方法[11],即随机在串中选择一个区域,例如以下两个父串及区域选定为:

P1=(12|3456|789)P2=(98|7654|321)

将P2的区域加到P1的前面或后面,P1的区域加到P2的前面或后面,得

M1=(7654|123456789)

M2=(3456|987654321)

在M1中自区域后依次删除与区域相同的城市码,得到最终的两个子串:

S1=(765412389)S2=(345698721)

同时为了能更好地增强算子的全局搜索能力,对该算子作了如下的改进。子代个体的新边来自:随机生成和群体中其他个体,其选择比例由随机数p和阈值P来决定。如果随机数p小于阈值P,则子代个体的新边来自随机生成,否则就来自群体中的其他个体。

这种改进后的交叉算子在父串相同的情况下仍能产生一定程度的变异效果,这对维持群体的多样化特性有一定的作用。实验结果也证实了这种改进算子对于种群的全局搜索能力有一定的提高,避免搜索陷入局部解。

2.2局部启发式算子

为了增强遗传算法的局部搜索性能,在算法中引入2-Opt局部搜索算子[12]。该算子通过比较两条边并交换路径以提升算法的局部搜索性能,示例见图2。

比较子路径ab+cd和ac+bd,如果ab+cd>ac+bd则交换,否则就不交换。考虑到程序的运行效率,不可能对每对边都做检查,所以选取染色体中的一定数量的边进行比较。2-Opt搜索算子实际上进行的相当于变异操作,同时又不仅仅是简单的变异,而是提高算法的局部搜索性能的变异操作。

2.3选择机制和收敛准则

为了限制种群的规模[13],该文采用了联赛选择法的淘汰规则。联赛选择法就是以各染色体的适应度作为评定标准,从群体中任意选择一定数目的个体,称为联赛规模,其中适应度最高的个体保存到下一代。这个过程反复执行,直到保存到下一代的个体数达到预先设定的数目为止。这样做可能导致种群过早收敛,因此在收敛准则上要采取苛刻的要求来保证搜索的全局性。

遗传算法求TSP问题如果不设定终止条件,其演化过程将会无限制地进行下去。终止条件也称收敛准则,因为多数最优化问题事先并不了解最优的目标函数值,故无法判断寻优的精度。该文采用如下两条收敛准则:在连续K1代不再出现更优的染色体;优化解的染色体占种群的个数达K2的比例以上。当两准则均满足时,则终止运算,输出优化结果和对应的目标函数值。由数值实验表明,添加第2条准则之后,全局最优解的出现频率将大为提高。

2.4基于多重搜索策略的群体演化算法

由于基因库的引入,可能降低初始种群的多样性,为避免算法陷入局部最优解,因此在群体演化中采取多重搜索策略。由Cheng-FaTsai提出的多重搜索策略[6],就是把染色体集中的染色体分成保守型和探索型两种不同类型的集合,然后针对不同类型的染色体集合根据不同的交叉、变异概率分别进行交叉变异操作,对保守型染色体集合就采用比较低的交叉变异概率,而对探索型染色体集合就采用比较高的交叉变异概率。这种策略对保守型染色体集合的操作最大限度地保留了父代的优秀基因片段,另一方面对探索型染色体集合的操作又尽可能地提高了算法的全局搜索能力。为了提高算法的收敛速度,初始染色体集合该文采用了前面单亲演化的结果中的染色体集合,交叉算子则利用的是前面介绍的改进后的算子,改进后的多重搜索策略见下。

3实验结果与分析

该文的GB—MGA算法由C#编程实现,所有的结果都是在P42.0G微机上完成,并进行通用的TSP库实验,选用了具有一定代表性的TSP实例,并把该算法和其他算法做了一个对比。为了减少计算量,程序中的数据经过四舍五入整数化处理,与实数解有一定的偏差,下面给出图Kroa100的示例。

为了证明该文提出的GB—MGA算法的有效性,将该文算法与典型的遗传算法GA、单亲遗传算法PGA以及文[5]中杨辉提出的Ge—GA(genepoolgeneticalgorithm)算法和文[12]中提出的MMGA(modifiedmultiple-searchinggeneticalgorithm)算法都进行了一个对比。

实验结果证明,该文算法的求解质量要优于GA、PGA、MMGA算法,而求解速度方面则优于Ge—GA算法,特别是对于大规模城市的TSP问题求解效果尤其明显,具有快速收敛的特性。Ge—GA算法对于中等城市规模的TSP实例求解,其运算时间就大幅度增加,如果把该算法用于求解大规模和超大规模TSP问题,那么时间上的代价就让人无法忍受。而该文的GB—MGA算法在单亲遗传演化中就使用了基因库中的优质基因,使得单个个体的进化速度大大提高,从而为进一步的演化提供了条件,群体演化过程的选择机制和收敛准则的恰当选取使得算法在注重了求解质量的同时兼顾了算法的效率。

4结束语

第2篇

遗传算法就是一种以事物的自然属性和遗传属性为基础,通过计算机对生物进化规律进行模拟以寻优的一种算法,将寻优的范围与遗传空间相对应,把每一种可能的值通过二进制码进行编码,如同染色体一样,形成的字符串相当于基因,然后按预期的结果对每一组编码进行评价,选出最合适的一个值。算法一开始是提出一些问题的解,然后根据要求对这些解进行选择,重新拆解组合,去掉不合适的,留下最优值,由此形成的便是新值,如此往复,继承与改良,这便是GA算法。由以上我们可以看出GA算法并不是简单的重复,而是属于一种螺旋式的上升过程,是不断向更好的方向“进化”的,在淘汰与择优中趋于稳定。

2GA算法的数学基础和算子

2.1GA算法的数学基础

图式定理是GA算法的数学基础,图式定理是Holland提出的,它在一定程度上解释了GA算法强大的数据信息处理能力,由定理我们能看出,经过不断地复制和交叉变异,在第一代中包含的编码数量H可以用如下公式表示:m(H,t+1)≥m(H,t)(N(H)/FAV)[1-PC•(〥(H)/(L-1))-O(H)•Pm](1)如以遗传学讲,其中m(H,t)和m(H,t+1)分别代表第t代和第t+1代种群数量,N代表图式H中染色体适应能力的平均水平,FAV代表种群中包含的染色体的适应力的平均水平,交叉比率用PC表示,变异比率用Pm表示,图式的长度用〥表示,OH是H的确定参数,即阶,染色体长度用L表示。

2.2GA算法的算子

GA遗传算法的基本算子有三个,分别是选择、交叉和变异。选择算子相当于生物界优胜劣汰,决定物种最终存活的自然选择,在生物群中选择一些适应力强的生物,将它们的染色体放入基因库,是染色体重新交叉组合完成变异的前提,选择算子的特点是只能在原有的基础上选择出优良的基因,而无法重新创造。交叉算子相当于自然界生物为完成繁衍生息和进化而进行的繁殖现象,染色体经由交叉,重新组合后形成新的染色体,即从双亲染色体里随机地分别选择一条再重新组合,是染色体的重新创造。变异算子是在选择和交叉算子完成重组的基础上使遗传算法能力的增强,以寻找GA值的最优解,如果在整个GA算法中少了变异操作,就只能在原有基础上来回寻找而没有新的突破。

3如何实现遗传算法

遗传算法归根结底是寻找一个最优的解或者工程中所讲的最好的解决方案,从函数来讲是求如下函数的最优解:F=f(x,y,z),x,y,z∈Ω,F∈R(2)其中x,y,z是自变量,每一组(x,y,z)就是一组解,优化目标的目的是寻找一组解使得:F=f(x0,y0,z0)=maxf(x,y,z)(3)首先,将公式(2)的各个参数通过二进制数编码形成字符串,再进行链接形成所谓的“基因链”,据已有的研究结果,可以知道字符串长度不同、码制不同都将对最终计算的结果的精度产生影响。其次,采用随机抽选的方式选择个体的初始值,之所以随机抽选是因为这样产生的结果更具有一般性,能代表寻常情况。最后,确定群体的规模,即确定基因选择的目标源,在这个目标源中寻找最佳值,规模的确定决定了GA算法结果的权威性和有效性,太小则不能提供足够的采样点,结果的多样性将会打折扣,太大则会增加计算量,拖长搜索时间,通畅将规模控制在40~200左右为宜,在对每个个体的优劣实施评价之后,设置一个适应度函数,然后分别确定交叉率和变异率,判断搜索何时停止,在本次讨论中,判断标准可以定为搜索所得的解是否达到了预期的最大值。

4GA在机械工程中的应用

GA算法的优点显而易见,它在机械工程中的应用是极为广泛的。在零件的切削中可以对零部件和切削工具予以优化,使得切削参数的设置达到总在工作以最低的成本,实现最高的效率,最终得到最高的收益的目的,在自动化控制的智能制造系统中可以为系统的静态动态的配合寻找到最佳契合点,以下对GA算法在机械公式和功能中的应用以具体实例加以阐述。

4.1优化人工神经网

ANN,即人工神经网,是一种用于建模和控制的,针对模型结构不稳定的线性系统而设计的结构,单次结构目前并不成熟,并没有确切的数据指导后来者准确的使用,处于摸索阶段。对于ANN,目前采用的训练方法是反向传播算法,大速度比较慢且结果具有一定的局限性,GA算法可谓使这一问题得见柳暗花明。在AN的行学习参数的优化工作中,仍用反向传播,但对一下因素进行编码操作,包括隐含层数、隐含层数的单元数、势态、网络连接方法、迭代数等,编码完成后,构成ANN基因链,把基因链的适应度函数定义为10-MSE-隐含单元数/10-训练跌代数/1000,MSE是训练好的网络对样本的方差。

4.2优化FLC矩阵的参数

模糊逻辑控制器,简称FLC,涉及到的概念有控制对象偏差和动作强度,表达了二者的模糊关系,现有一延时二阶系统的函数为GS=exp(-0.4s)/(0.3s+1),要求此系统的输出值尽量的跟踪输入值,采用FLC矩阵进行参数优化,取矩阵R=77×11,对此矩阵的77个元素以8bit的二进制码表示,基因链长616bit,经由GA算法优化的FLC控制下,输出值的效果明显地优于“比例-积分-微分”控制器的效果。

4.3实现机床挂最佳组合

机床挂轮组合的完美与否直接决定了生产线的效率,而这又是一个极为古老的问题,最佳组合最终实现的是挂轮组的传动比与要求的值误差达到最小,本文中,笔者通过GA算法,以求能找到一个有效的方案,适合度函数定义为:F=20-ABS(id)-(A/B)*(C/D)(A,B,C,D)∈Ω其中,A,B,C,D分别代表挂轮齿数,共计4个挂轮,ABS()表示绝对值函数,Ω是挂轮约束条件,需要A+B>C=d+m,C+D>B+d+m,d,m分别代表齿轮模、安装轴径。笔者在文中采用cenitor算法,对每个齿轮用一个5位二进制码进行编码,代表挂轮表的32个挂轮,共4个挂轮故基因码长20位,个体数为100,经过验证后发现,如果id为整数,GA算法只需完成1000次杂交运算就可以选出多个误差为0的组合,它并非盲目地完成计算,搜索数远小于问题解的数值。

5结语

第3篇

假设所用的计算机传输介质两节点之间不多于一条直线的链接路,所用计算机网络就可以运用数学图G=(N,L)来进行描述。而且网络的节点不会出现任何的故障,网络链接介质的可靠和自身的长度没有关系,网络链接路与网络只有两种状态存在:正常工作和故障。而当所有的计算机网络用户都相互联通时,则可组成G图的一棵生成树,并且全部的结点都处于正常。那么无论在什么时刻,可能只有L种的子集(L)是正常状态,全部结点都是正常状态。因此,整个计算机网络的可靠度都可使用数学建模来进行运算。

2遗传算法在计算机网络可靠度优化计算中的应用研究

2.1遗传运算方法

在计算机网络中遗传运算主要是以变异和交叉这两种方式进行。交叉主要是通过在网络结点的范围([1,N])之间的随机数,以此作为基因交叉位置的设置且一次只可以操作一个结点。这样能够最大程度地确保网络的连通性,但也有可能出现错的连通结构,所以进行调整操作;变异则是先确定基因的变异和数目,然后再根据范围来选择新的基因段替换旧基因段生成后代。一般变异率都在0.001到0.01内,如是变异出现了错误的网络连通结构基因,就必须进行相应的调整。

2.2算法的调整与仿真实例