- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
遗传算法导论
Introduction to Genetic Algorithms
?I 简介
遗传算法是进化计算技术的一部分,而进化计算技术在人工智能领域得到飞速的发展。
你或许已经在想:遗传算法是不是受到了达尔文进化论的启发?简单地说,用遗传算法求解问题时,问题的解是在不断进化中得到的。
?
历史
二十世纪六十年代,I.Rechenberg在他的《演化战略》中第一次引入了进化算法的思想(起初称之为Evolutionsstragegie)。他的这一思想逐渐被其他一些研究者发展。遗传算法(Genetic Algorithms) 是John Holland 发明的,后来他和他的学生及他的同事又不断发展了它。终于,在1975年John Holland 出版了专著《自然系统和人工系统中的自适应》(Adaption In Natural and Artificial Systems)。
1992年,John Koza 曾经使用遗传算法编出新的程序去做一些具体的工作。他称他的这种方法为“进化规划”(Genetic Programming,简称GP)。其中使用了LISP规划方法,这是因为这种语言中的程序被表示为“分析树”(Parse Tree),而这种遗传算法就是以这些分析树为对象的。
?
II 生物学背景
基因
所有的生物都是由细胞组成的。在每一个细胞中都有想同序列的染色体。染色体是一串DNA的片断,它为整个有机体提供了一种复制模式。
染色体是由基因组成的,或者说染色体就是一块块的基因。每一个基因为一个特定的蛋白质编码。或者更简单的说,每一个基因为生物体的某一特定特征编码,比如说眼睛的颜色。所有可能的某一特定特征的属性(比如,蓝色,桔黄色等)被称之为等位基因。每一个基因在染色体上都有其特定的位置,这个位置一般被称作位点(Locus)。
全部序列的基因物质(或者全部的染色体)称之为基因组(或染色体组)(Genome)。基因组上特定序列的基因被称作基因型(Genotype)。基因型和后天的表现型两者是有机体的显性、生理和心理特征比如说眼睛的颜色、智力的基础。
?
复制(Repeoduction)
在复制中,首先发生的是交叉(Crossover)。来自于父代的基因按照一定的方式组成了新的基因。新的子代还可能发生变异(Mutation)。变异的意思是DNA上的某一些成分发生了一点点的变化。这些改变可能是由于在由父代到子代的基因复制中出现的误差。
生物体的适应度由生物体自身是否能生存来度量的。
?
III 搜索空间
搜索空间(Search Space)
在很多情况下,我们解决一个问题就是从一大堆的数据中寻找一个解,而通常这个解都是混杂在数据中的。所有可行解(Feasible Solution可行解就是满足了一定约束条件的解)组成的空间称之为搜索空间(也可以称之为状态空间)。搜索空间中的每一个点都是一个可行解。每一个可行解都可以被它的函数值或者它的适应度所标记。记住:问题的解就是搜索空间中的一个点,于是我们就是要从搜索空间中找到这个点。
这样,求解问题就可以转化为在搜索空间中寻找极值点(最大值或者最小值点)。搜索空间在求解问题时可能是完全已知的,但一般来说我们只知道一些孤立的点,然后我们逐渐地生成其它点。问题是,这个搜索过程可能很复杂,我们甚至不知道该去哪里搜索或者该从是么地方开始搜索。事实上,有很多寻找合适解(注意:不一定是最优解)的方法,比如说爬山法(Hill Climbing)禁止接近法(Tabu Search),模拟退火算法(Simulated Annealing)以及遗传算法等等.用遗传算法求解出来的解一般被认为是一个比较好的解,因为我们没有办法证明它是最优解.
?
NP难题(NP-hard)
举一个比较难的NP问题,这个问题无法用传统的方法解决。
我们知道很多问题有快速的算法(多项式算法).但是,也有很多问题是无法用算法解决的。事实上,已经证明很多问题不可能在多项式时间内解决出来。
但是,有很多很重要的问题他们的解虽然很难求解出来,但是他们的值却是很容易求可以算出来的。这种事实导致了NP完全问题。NP表示非确定的多项式(Nondeterministic Polynomial),意思是这个问题的解可以用非确定性的算法“猜”出来。如果我们有一个可以猜想的机器,我们就可以在合理的时间内找到一个比较好的解。
NP-完全问题学习的简单与否,取决于问题的难易程度。因为有很多问题,它们的输出极其复杂,比如说人们早就提出的一类被称作NP-难题的问题。这类问题不像NP-完全问题那样时间有限的。
因为NP-问题由上述那些特征,所以很容易想到一些简单的算法――把全部的可行解算一遍。但是这种算法太慢了(通常时间复杂度为O(2^n
文档评论(0)