关于遗传算法研究的容调研设计毕业论文目录摘要 (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、遗传算法的处理对象不是参数(优化问题的参变量)本身,而是对参数集进行了编码的个体。
这种编码操作,使得遗传算法可直接对结构对象进行操作(所谓结构对象泛指集合、序列、矩阵、树、图、链和表等各种一维或高维结构形式)。
这一特点使得遗传算法具有广泛的应用领域,例如:通过对连接矩阵的操作,遗传算法可用来对神经网络或自动机的结构或参数加以优化。
通过对集合的操作,遗传算法可实现对规则集合或知识库的精练而达到高质量的机器学习目的[5]。
通过对树结构的操作,遗传算法可得到用于分类的最佳结构树。
通过对任务序列的操作,遗传算法可用于任务规划,而通过对操作序列的处理,遗传算法可自动构造顺序控制系统。
2、遗传算法的基本作用对象是多个可行解的集合,而非单个可行解。
它是采用同时处理群体中多个个体的方法,即同时对搜索空间中的多个解进行评估。
这一特点使遗传算法具有较好的全局搜索性能,减少了陷于局部优解的可能性。
同时这又使得遗传算法本身具有良好的并行性。
3、遗传算法仅用适应度函数值来评估个体,而无须搜索空间的知识或其它辅助信息。
遗传算法的适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。
对适应度函数的唯一要求是,对于输入可计算出能够进行比较的输出。
遗传算法的这一特点使它的应用围极大拓宽,使之可广泛应用于目标函数不可微、不连续、非规划、极其复杂或无解析表达式等类优化问题。
4、遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导它的搜索方向。
遗传算法执行选择、交叉、变异等类似生物进化过程的简单随机操作,具有极强的鲁棒性。
需要指出,遗传算法采用概率仅仅是作为一种工具来引导其搜索过程朝着搜索空间的更优的解的区域移动。
因此尽管看起来它是一种盲目的搜索方法,但实际上有明确的搜索方向。
1.4遗传算法的应用遗传算法由于具有鲁棒性强,实现简单,对问题依赖性小等优点,为求解复杂系统优化问题提供了通用框架,下面是一些主要应用领域:(1)函数优化:是GA的经典应用领域,也是对GA进行性能评价的常用算例,对于一些非线性、多模型、多目标的函数优化问题,用其他优化方法较难求解,GA却可以得到较好的结果。
(2)组合优化[6]:随问题规模的扩大,搜索空间急剧扩大,对这类复杂问题,实践证明,GA对于组合优化的NP完全问题非常有效。
例如求解TSP。
(3)生产调度问题:GA已成为解决复杂调度问题的有效工具,在单件生产车间调度、流水线生产车间调度、生产规模、人物分配等方面都得到了有效的应用。
(4)自动控制:GA在自动控制领域中的应用日益增加,并显示了良好的效果。
如在参数辨识、人工神经网络的结构优化设计和权值学习,都显示了GA的应用优势。
(5)机器人智能控制:GA是源自于对人工自适应系统的研究,已经在移动机器人路径规划、关节机器人运动轨迹规律、机器人逆运动学求解、细胞机器人的结构优化和行动协调等方面得到研究和应用。
(6)图像处理和模式识别:在图像处理过程中,如扫描、特征提取、图像分割等不可避免的会产生一些误差。
目前,GA已在图像恢复、图像边缘特征提取、几何形状识别等方面得到了应用。
(7)人工生命[7]:基于GA的进化模型是研究人工生命现象的重要理论基础,已在其进化模型、学习模型、行为模型等方面得到应用。
(8)遗传程序设计:Koza发展了遗传程序设计,基本思想是:采用树型结构表示计算机程序,运用遗传算法的思想,通过自动生成计算机程序来解决问题。
虽然该理论尚未成熟,应用也有些限制,但已成功地应用于人工智能、机器学习等领域。
(9)机器学习:基于GA的机器学习、特别分类器系统,在调整人工神经网络的连接权、神经网络结构的优化设计、和多机器人路径规划系统中得到了成功的应用。
(10)生物信息学:多重序列比对是生物信息学的重要研究容,它的目标是通过同时比较多个序列,发现它们之间的相似区域和保守性位点, 进而推断未知生物分子的结构和功能,或者重构系统发育树,寻找物种之间的进化关系[8]。