关于遗传算法研究的内容调研设计毕业论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于遗传算法研究的容调研设计毕业论文
目录
摘要.......................................................... I Abstract ....................................................... II 第一章遗传算法概论. (1)
1.1 遗传算法的产生和国外研究现状 (1)
1.2 遗传算法的基本原理 (2)
1.3遗传算法的特点 (3)
1.4遗传算法的应用 (4)
1.5课题的任务 (6)
第二章基本遗传算法 (7)
2.1 基本遗传算法简介 (7)
2.2 基本遗传算法描述 (7)
2.3 基本遗传算法的实现 (10)
第三章遗传算法求解TSP (15)
3.1 旅行商问题概述 (15)
3.2 使用改进的遗传算法求解TSP (16)
第四章求解TSP的实验结果及分析 (26)
4.1实验环境 (26)
4.2算法在求解不同规模下的TSP的实验结果 (26)
4.3改良的遗传算法和其它智能优化算法的比较 (27)
4.4使用单一变异算子和混合变异算子的实验结果对比分析 (28)
第五章总结 (30)
参考文献 (32)
附录1 改良遗传算法求解TSP Java源程序 (33)
附录2 英文文献翻译 (50)
致谢 (56)
第一章遗传算法概论
1.1 遗传算法的产生和国外研究现状
遗传算法(Genetic Algorithm简称GA)美国的J. Holland教授于1975年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法[1]。
遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体(优胜劣汰),利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。最后一代候选解群中的最优解就是所求得的最优解。
1991年D.Whitey在他的论文中提出了基于领域交叉的交叉算子(Adjacency based crossover),这个算子是特别针对用序号表示基因的个体的交叉,并将其应用到了(旅行商)TSP问题中,通过实验对其进行了验证。
D.H.Ackley等提出了随机迭代遗传爬山法(Stochastic Iterated Genetic Hill-climbing,SIGH)采用了一种复杂的概率选举机制,此机制中由m个“投票者”来共同决定新个体的值(m表示群体的大小)。实验结果表明,SIGH与单点交叉、均匀交叉的神经遗传算法相比,所测试的六个函数中有四个表现出更好的性能,而且总体来讲,SIGH比现存的许多算法在求解速度方面更有竞争力
[2]。
H.Bersini和G.Seront将遗传算法与单一方法(simplex method)结合起来,形成了一种叫单一操作的多亲交叉算子(simplex crossover),该算子在根据两个母体以及一个额外的个体产生新个体,事实上他的交叉结果与对三个个体用选举交叉产生的结果一致。同时,文献还将三者交叉算子与点交叉、均匀交叉做了比较,结果表明,三者交叉算子比其余两个有更好的性能。
国也有不少的专家和学者对遗传算法的交叉算子进行改进。2002年,戴晓明等应用多种群遗传并行进化的思想,对不同种群基于不同的遗传策略,如变
异概率,不同的变异算子等来搜索变量空间,并利用种群间迁移算子来进行遗传信息交流,以解决经典遗传算法的收敛到局部最优值问题
2004年,宏立等针对简单遗传算法在较大规模组合优化问题上搜索效率不高的现象,提出了一种用基因块编码的并行遗传算法(Building-block Coded Parallel GA,BCPGA)。该方法以粗粒度并行遗传算法为基本框架,在染色体群体中识别出可能的基因块,然后用基因块作为新的基因单位对染色体重新编码,产生长度较短的染色体,在用重新编码的染色体群体作为下一轮以相同方式演化的初始群体。
2005年,江雷等针对并行遗传算法求解TSP,探讨了使用弹性策略来维持群体的多样性,使得算法跨过局部收敛的障碍,向全局最优解方向进化。
1.2 遗传算法的基本原理
1.2.1遗传算法的基本术语
由于遗传算法的研究与应用尚在不断发展之中,有关术语的运用尚未完全取得统一。为了在下面的研究中做到准确、清晰、规的描述,对本文使用到的遗传算法术语解释如下[3]:
个体(individual):遗传算法中处理的基本对象、数据结构,对应于自然遗传学中的生物个体。
种群( population):个体的集合,对应于自然遗传学中的生物种群。
种群大小( population size):种群中个体数目称为种群大小。
位串( bit string):也叫染色体(chromosome),个体特征的表现形式,对应于自然遗传学中的染色体。
基因( gene):位串中的元素,表示不同的特征,对应于生物学中的遗传物质单位,以DNA序列形式把遗传信息译成编码。
基因位( locus):某一基因在位串(染色体)中的位置
适应度(fitness):某一个体对于环境的适应程度,或者在环境压力下的生存能力,取决于遗传特性。
适应度函数(fitness function):为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数,适应度函数是计
算个体在种群中被使用的概率。
遗传操作(genetic operator):遗传算法中有三种关于染色体的运算:选择、交叉和变异,这三种运算被称为遗传操作。
选择(selection)操作:选择(selection)操作是模拟生物界优胜劣汰的自然选择法则,从种群中选择适应度较好(较好可能是高于种群的平均适应度也可能是低于种群的平均适应度,取决于要解决的问题和使用什么作为适应度)的个体来生成下一代种群进行交叉变异。
交叉(crossover)操作:交叉就是互换两个染色体某些位上的基因以产生新的个体,普通遗传算法中常用的交叉算子有单切点交叉、双切点交叉、循环交叉。
变异(mutation)操作:位串中的基因发生变化,发生在同一个个体之,常见的变异有交换(两个基因交换位置)、倒序(位串上的某一段基因位置反转)、插入(位串上的某一个基因被插入到位串中的其它位置)。
交叉率:发生交叉运算的个体个数占全体个体总数的比例,取值围一般为0.4~0.99。
变异率:发生变异的基因位数所占全体个体的基因总位数的比例,取值围一般为0.0001~0.1。
1.2.2遗传算法的基本原理
遗传算法是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。在遗传算法中问题的解被表示成“染色体”,在算法中也即是以二进制编码或实数编码的串[4]。并且,在执行遗传算法之前,随机给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,设定相应的适应度函数,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,得到问题的最优解或者近似最优解。
1.3遗传算法的特点
1、遗传算法的处理对象不是参数(优化问题的参变量)本身,而是对参数