基本遗传算法精品毕业设计完整版.docx
《基本遗传算法精品毕业设计完整版.docx》由会员分享,可在线阅读,更多相关《基本遗传算法精品毕业设计完整版.docx(18页珍藏版)》请在冰豆网上搜索。
基本遗传算法精品毕业设计完整版
遗传算法
1、遗传算法生物学基础和基本理论
达尔文自然选择学说认为,生物要生存下去,就必须进行生存斗争。
生存斗争包括种内斗争、种间斗争以及生物跟无机环境之间的斗争三个方面。
在生存斗争中,具有有利变异(mutation)的个体容易存活下来,并且有更多的机会将有利变异传给后代;具有不利变异的个体就容易被淘汰,产生后代的机会也少得多。
因此,凡是在生存斗争中获胜的个体都是对环境适应性比较强的。
达尔文把这种在生存斗争中适者生存,不适者淘汰的过程叫做自然选择。
达尔文的自然选择学说表明,遗传和变异是决定生物进化的内在因素。
遗传是指父代与子代之间,在性状上存在的相似现象。
变异是指父代与子代之间,以及子代的个体之间,在性状上或多或少地存在的差异现象。
在生物体内,遗传和变异的关系十分密切。
一个生物体的遗传性状往往会发生变异,而变异的性状有的可以遗传。
遗传能使生物的性状不断地传送给后代,因此保持了物种的特性,变异能够使生物的性状发生改变,从而适应新的环境而不断地向前发展。
生物的各项生命活动都有它的物质基础,生物的遗传与变异也是这样。
根据现代细胞学和遗传学的研究得知,遗传物质的主要载体是染色体(chromsome),染色体主要是由DNA(脱氧核糖核酸)和蛋白质组成,其中DNA又是最主要的遗传物质。
现代分子水平的遗传学的研究又进一步证明,基因(gene)是有遗传效应的片段,它储存着遗传信息,可以准确地复制,也能够发生突变,并可通过控制蛋白质的合成而控制生物的性状。
生物体自身通过对基因的复制(reproduction)和交叉(crossover),即基因分离、基因自由组合和基因连锁互换)的操作使其性状的遗传得到选择和控制。
同时,通过基因重组、基因变异和染色体在结构和数目上的变异产生丰富多采的变异现象。
需要指出的是,根据达尔文进化论,多种多样的生物之所以能够适应环境而得以生存进化,是和上述的遗传和变异生命现象分不开的。
生物的遗传特性,使生物界的物种能够保持相对的稳定;生物的变异特性,使生物个体产生新的性状,以至于形成了新的物种,推动了生物的进化和发展。
由于生物在繁殖中可能发生基因交叉和变异,引起了生物性状的连续微弱改变,为外界环境的定向选择提供了物质条件和基础,使生物的进化成为可能。
人们正是通过对环境的选择、基因的交叉和变异这一生物演化的迭代过程的模仿,从而提出了能够用于求解最优化问题的强鲁棒、自适应的遗传算法。
遗传算法(GeneticAlgorithm--GA)起源于对生物系统进行的计算机模拟研究,是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应优化概率搜索算法。
它最早由美国Michigan大学的Holland教授提出,起源于20世纪60年代对自然和人工自适应系统的研究。
20世纪70年代Holland教授的学生DeJong基于遗传算法在计算机上进行了大量的纯数值函数优化计算实验。
最后在20世纪80年代由Goldberg进行归纳总结,形成了遗传算法的基本框架。
遗传算法是基于自然界的生物遗传进化机理而演化出的一种自适应优化算法。
针对不同类型的问题,人们设计出了各种不同的编码方法和不同的进化算子,从而构成了不同类型的遗传进化机制,以适应解决各种不同的问题,Goldberg对这些算法加以总结,归纳出这些不同的遗传算法之间的共同特点,即:
遗传和进化过程都是通过选择、交叉和变异的机理来完成对问题最优解的自适应搜素过程,由此提出了一种统一了所有遗传算法本质特征的最基本的遗传算法——基本遗传算法(SimpleGeneticAlgorithms,SGA)。
在基本遗传算法中只使用选择算子、交叉算子、和变异算子这三种基本的遗传算子,从而给其他各类遗传算法提供了基本的算法框架。
2、遗传算法的基本思想
我们以引用生物遗传学上的相关术语来描述遗传算法的基本思想.遗传算法根据待解问题的要求,从代表问题可能潜在解集的一个种群(population)开始,而一个种群是由经过基因(gene)编码(coding)的一定数目的个体(individual)组成.每个个体实际上是带有特征的染色体(chromosome)实体.染色体作为遗传物质的主要载体,其不同的基因组合决定了个体的性能表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的.因此遗传算法中最基础的工作就是实现染色体个体的性能表现,即:
实现个体的编码工作。
由于仿照基因编码的工作很复杂,针对不同的问题编码都有所不同,在基本遗传算法中为了增强算法的适应性,我们往往简化编码工作,而采用二进制编码。
当完成编码工作,初代种群产生之后,则对种群按照“优胜劣汰,适者生存”的进化原理来逐代(generation)进化,在每一代中,都是根据该代种群个体的适应度值(fitness)的大小来挑选下一代个体群体,并借助于自然遗传学中的遗传算子(geneticoperator)来进行组合交叉操作(crossover)、变异操作(mutation)和选择操作(Selection),从而产生出代表新的子代解集的种群。
正是这个进化过程使得种群具备了生物界所特有的进化优化机制,使得种群能够像自然界那样让后代种群比父代种群具有更强的适应性,从而更加适应于所处环境。
这样进化到最后一代种群中的最优个体经过解码操作(DecodingOperator),即为所求问题的近似最优解。
2、遗传算法的基本结构
遗传算法借助生物遗传学的观点,通过对生物遗传和进化过程中的选择、交叉、变异机理的模仿,来完成对问题最优解的自适应搜索过程,以实现各个个体的适应性的提高。
遗传算法的流程图如下所示,主要包括:
染色体编码、产生初始群体,计算适应度、进化操作等几大部分,下面将分别进行介绍。
基本遗传算法的算法流程图
基本遗传算法是一个迭代过程,它模仿生物在自然环境中的遗传和进化机理,反复将选择算子、交叉算子、变异算子作用于群体,最终可得到问题的最优解或近似最优解。
虽然算法的思想比较单纯,结构也比较简单,但它却也具有一定的实用价值,能够解决一些复杂系统的优化计算问题。
2.1编码
遗传算法主要是通过遗传操作对群体中具有某种结构形式的个体施加结构重组处理,从而不断地搜索出群体中个体间的结构相似性,形成并优化积木块以逐渐逼近最优解。
由此可见,遗传算法不能直接处理问题空间的参数,必须把参数转换成遗传空间的由基因按一定结构组成的染色体或个体。
这一转换操作叫做编码,也可以称作(问题的)表示(representation)。
在遗传算法中如何描述问题的可行解,即把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法就称为编码。
针对一个具体应用问题,如何设计一种完美的编码方案一直是遗传算法的应用难点之一,也是遗传算法的一个重要研究方向。
对实际应用的问题,必须对编码方法、交叉运算方法、变异运算方法、译码方法等统一考虑,以寻求一种对问题的描述最为方便、遗传运算效率最高的编码方案。
2.1.1二进制编码(位串编码)
二进制编码方法是遗传算法种最常用的一种编码方法,它使得编码符号集是由二进制符号0和1所组成的二值符号集{0,1},它所构成的个体基因型是一个二进制编码符号串。
二进制编码方法有下述一些优点:
(1)编码、译码操作简单易行。
(2)交叉、变异等遗传操作便于实现。
(3)符合最小字符集编码原则。
(4)便于利用模式定理对算法进行理论分析。
2.1.2符号编码
符号编码是指组成个体编码串的码值无数值含义而仅有字符含义。
当然,码值本身或者字母表中的各种码值可能以数字形式出现,但其代表的意义则只能是字。
许多组合优化问题所采用的编码形式经常是符号编码。
最常见的例子是城市旅行商(TSP)问题的编码。
TSP问题描述为:
一个商人从某一城市出发,要走遍区域中的所有n座城市,最终回到出发地,其中每座城市必须经过且只能经过一次。
问题是按照何种路线走,整个旅行过程所经过的回路长度最短。
如果给每座城市以唯一的符号标识,如英文大写字母表{A,B,Z},则走过的路线可表示为AGIX……L(假设城市不超过26座),如果给定字母表{c1,c2,cn},则路线又可表示为C1C2……Cn,同理,若给定字母表{1,2,n},则路线又可表示为481……n,这里,数字同样不代表数值,而代表字符。
可见,不同的字母表可以产生出不同的符号编码。
在某些应用
问题中,编码甚至可以是矩阵等其它形式。
符号编码的优点在于便于利用专门问题已有的先验知识和信息,同时形式可以变化多样,因而可以处理各种非数值优化问题和组合优化问题,其不足之处在于针对性地设计遗传操作显得复杂一些。
以上简单介绍了位串编码,符号编码。
除此之外,还有其他的编码方法,如多数联级编码、实数编码、多参数交叉编码。
2.2初始群体的产生
2.2.1初始群体的设定
一般来讲,初始群体的设定可采取如下策略:
(1)根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,在此分布范围内设定初始群体。
(2)先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。
这种过程不断迭代,直到初始群体中个体数达到了预先确定的规模。
2.2.2群体多样性
群体规模越大,群体中个体的多样性越高,算法陷入局部解的危险就越小,所以,从考虑群体多样性出发,群体规模应较大。
但是,群体规模太大会带来计算量增加的弊病,从而影响算法效能。
另外,群体规模太小,会使遗传算法的搜索空间中分布范围有限,因而搜索有可能停止在未成熟阶段,引起早熟(prematureconvergence)现象。
显然,要避免早熟现象,必须保持群体的多样性,即群体规模不能太小。
2.3适应度函数
遗传算法在进化搜索中基本上不用外部信息,仅用适应度函数为依据。
遗传算法的目标函数不受连续可微的约束且定义域可以为任意集合。
对适应度函数的唯一要求是,针对输入可计算出能加以比较的非负结果。
这一特点使得遗传算法应用范围很广。
在具体应用中,适应度函数的设计要结合求解问题本身的要求而定。
适应度函数评估是选择操作的依据、适应度函数设计直接影响到遗传算法的性能。
在选择操作时也可能会出现以下问题:
①在遗传进货的初期,通常会产生一些超常的个体,若按照比例选择法,这些异常个体因竞争力太突出而控制了选择过程,影响算法的全局优化性能。
②在遗传进化后期,即算法接近收敛时,由于种群中个体适应度差异较小时,继续优化的潜能降底可能获得某个局部解。
上述问题我们通常称为遗传算法的骗问题。
适应函数设计不当可能造成这种问题的出现。
2.3.1适应度函数设计方法
适应度函数设计主要满足以下条件:
(1)单值、连续、非负、最大化:
这个条件是很容易理解和实现的。
(2)合理、一致性:
要求适应度值反应解的优劣程度,这个条件的达成往往比较难以衡量。
(3)计算量小:
适应度函数设计应该尽可能简单,这样可以减少计算时间和空间上的复杂性,降低计算成本。
(4)通用性强:
适应度对某类具体问题,应尽可能通用,最了无需使用者改变适应度函数中的参数。
这个条件应该不是属于强要求。
常见的适应度函数构造方法有:
(1)目标函数映射成适应度函数
在许多问题求解中,其目标是求取费用函数(代价函数)g(x)的最小值,而不是求效能函数或利润函数u(x)的最大值。
即使某一问题可自然地表示成求最大值形式,但也不能保证对于所有的x,u(x).都取非负值。
由于遗传算法中,适应度函数要比较排序并在此基础上计算选择概率,所以适应度函数的值要取正值。
由此可见,在不少场合,将目标函数映射成求最大值形式且函数值非负的适应度函数是必要的。
在通常搜索方法下,为了把一个最小化问题转化为最大化问题,只需要简单的把费用函数乘以-1即可,但对遗传算法而言,这种方法还不足以保证在各种情况下的非负值。
对此,可采用以下的方法进行转换:
显然存在多种方式来选择系数.可以是一个合