2022年遗传算法导论 .pdf

上传人:Q****o 文档编号:30550091 上传时间:2022-08-06 格式:PDF 页数:16 大小:556.32KB
返回 下载 相关 举报
2022年遗传算法导论 .pdf_第1页
第1页 / 共16页
2022年遗传算法导论 .pdf_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《2022年遗传算法导论 .pdf》由会员分享,可在线阅读,更多相关《2022年遗传算法导论 .pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Introduction to Genetic Algorithms 遗传算法导论http:/cs.felk.cvut.cz/xobitko/ga/(其中有全部操作的小程序可视化演示) by Marek Obitko, student of Czech Technical University. 王郑耀 翻译原文为英语版本,你可以在这里找到.你也可以在这里下载到PDF格式的英语版本的文件. - 这里我想介绍一下遗传算法的一些基础知识。我尽量写的比较通俗易懂,使得以前没有任何相关知识的读者也能读懂。我们只假设读者对于计算机程序设计有一定的了解。这里我们有一些 Java Applet 程序用来演示

2、遗传算法的工作情况。遗传算法所涉及的范围是很宽的,所以我们不可能涉及到它的方方面面。但是你可以从这里得到遗传算法的一些思想:什么是遗传算法?遗传算法可以用来做什么?这里面没有什么很难的数学理论。现在, 你可以选择下一步去浏览下面的内容,你也可以从左边的菜单中任意选择你想要浏览的内容。 如果你不想阅读全部的内容而只关心其中的一部分,你也可以跳过去直接去首页面。这里还有一个日语译本。I 简介前言遗传算法是进化计算技术的一部分,而进化计算技术在人工智能领域得到飞速的发展。你或许已经在想: 遗传算法是不是受到了达尔文进化论的启发?简单地说,用遗传算法求解问题时,问题的解是在不断进化中得到的。历史二十世

3、纪六十年代,I.Rechenberg 在他的演化战略 中第一次引入了进化算法的思想(起初称之为Evolutions strategies ) 。他的这一思想逐渐被其他一些研究者发展。遗传算法(Genetic Algorithms ) 是 John Holland 发明的, 后来他和他的学生及他的同事又不断发展了它。终于,在1975 年 John Holland 出版了专著自然系统和人工系统中的自适应(Adaption In Natural and Artificial Systems) 。 1992年,John Koza 曾经使用遗传算法编出新的程序去做一些具体的工作。他称他的这种方法为 “

4、进化规划 ” (Genetic Programming ,简称 GP) 。其中使用了LISP 规划方法,这是因为这种语言中的程序被表示为“ 分析树 ” (Parse Tree ) ,而这种遗传算法就是以这些分析树为对象的。II 生物学背景基因所有的生物都是由细胞组成的。在每一个细胞中都有想同序列的染色体。染色体是一串DNA 的片断,它为整个有机体提供了一种复制模式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - 染色体是由基因

5、组成的,或者说染色体就是一块块的基因。每一个基因为一个特定的蛋白质编码。或者更简单的说,每一个基因为生物体的某一特定特征编码,比如说眼睛的颜色。所有可能的某一特定特征的属性(比如,蓝色,桔黄色等)被称之为等位基因。每一个基因在染色体上都有其特定的位置,这个位置一般被称作位点(Locus) 。全部序列的基因物质(或者全部的染色体)称之为基因组(或染色体组)(Genome) 。基因组上特定序列的基因被称作基因型(Genotype) 。基因型和后天的表现型两者是有机体的显性、生理和心理特征比如说眼睛的颜色、智力的基础。复制( Repeoduction )在复制中,首先发生的是交叉(Crossover

6、) 。来自于父代的基因按照一定的方式组成了新的基因。新的子代还可能发生变异(Mutation ) 。变异的意思是DNA 上的某一些成分发生了一点点的变化。这些改变可能是由于在由父代到子代的基因复制中出现的误差。生物体的适应度由生物体自身是否能生存来度量的。III 搜索空间搜索空间( Search Space )在很多情况下 ,我们解决一个问题就是从一大堆的数据中寻找一个解,而通常这个解都是混杂在数据中的。所有可行解(Feasible Solution 可行解就是满足了一定约束条件的解)组成的空间称之为搜索空间(也可以称之为状态空间)。搜索空间中的每一个点都是一个可行解。每一个可行解都可以被它的

7、函数值或者它的适应度所标记。记住: 问题的解就是搜索空间中的一个点,于是我们就是要从搜索空间中找到这个点。Example of a search space 这样,求解问题就可以转化为在搜索空间中寻找极值点(最大值或者最小值点)。搜索空间在求解问题时可能是完全已知的,但一般来说我们只知道一些孤立的点,然后我们逐渐地生成其它点。 问题是, 这个搜索过程可能很复杂,我们甚至不知道该去哪里搜索或者该从是么地方开始搜索。事实上,有很多寻找合适解(注意:不一定是最优解)的方法,比如说爬山法( Hill Climbing )禁止接近法 (Tabu Search),模拟退火算法 (Simulated Ann

8、ealing) 以及遗传算法等等 .用遗传算法求解出来的解一般被认为是一个比较好的解,因为我们没有办法证明它是最优解 . NP 难题 (NP-hard) 举一个比较难的NP 问题 ,这个问题无法用传统的方法解决。我们知道很多问题有快速的算法(多项式算法 ).但是 ,也有很多问题是无法用算法解决的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 事实上,已经证明很多问题不可能在多项式时间内解决出来。但是, 有很多很重要的问题他们

9、的解虽然很难求解出来,但是他们的值却是很容易求可以算 出 来 的 。 这 种 事 实 导 致 了NP完 全 问 题 。 NP表 示 非 确 定 的 多 项 式(Nondeterministic Polynomial ) ,意思是这个问题的解可以用非确定性的算法“ 猜 ” 出来。如果我们有一个可以猜想的机器,我们就可以在合理的时间内找到一个比较好的解。NP-完全问题学习的简单与否,取决于问题的难易程度。因为有很多问题,它们的输出极其复杂,比如说人们早就提出的一类被称作NP-难题的问题。这类问题不像NP-完全问题那样时间有限的。因为 NP-问题由上述那些特征,所以很容易想到一些简单的算法 把全部的

10、可行解算一遍。但是这种算法太慢了(通常时间复杂度为O( 2n) )在很多情况下是不可行的. 现在 ,没有知道有没有那种精确的算法存在。证明存在或者不存在那种精确的算法这个沉重的担子就留给了新的研究者了,或许你就是J。现在很多人认为那种精确的算法是不存在的,所以他们试图寻找一种替代的算法 比如说这里的遗传算法。这 里 的NP- 问 题 的 例 子 , 旅 行 商 问 题 ( Travelling Salesman Problem ) 或 背 包 问 题(knapsack problem) ,都是满意性问题。NP 问题的简述你可以在这里看到。IV 遗传算法基本思想遗传算法受到达尔文进化论的影响很大

11、。在遗传算法中,问题的解是逐渐进化得到的!遗传算法的计算从一组可能解开始,这组解被称作种群(Population) ,在算法中被表示成基因。我们又把种群中的解拿出来去构成新的一个种群,这是因为我们期望新的种群要比旧的种群要好!当然,新的种群中的解要有这样的性质,就必须按照它的适应度去选择,适应度越高,它参与构造新的种群的机会就越大。这个过程一次又一次的重复,一直到我们所给的约束条件满足为止,比如说种群中解得个数或者种群的良好程度。遗传算法的基本结构1开始按照问题的特点随机产生一个拥有N 个然的色体的种群;2适应度计算用适应度函数f(x) 计算种群每一个基因的适应度;3产生新的种群重复以下步骤,

12、一直到新的母体群建立起来为止;1) 选择 按照种群中的各个基因的适应度从中选择两个父代基因(适应度越大,机会越大) ;2) 交叉 以一定的交叉概率交叉两个父代的基因以产生子代。交叉完成之后,子代完完全全是父代的复制;3) 变异 以一定的概率对子代基因的的每一个位点(Locus)进行变异;4) 接受把这个子代放到新的种群中去;4替换对新产生的种群进行更深入的算法运算;5测验如果终止条件满足,则停止;并且把当前母体群中最好的解输出;6循环如果5 不满足,则转到2;继续进行名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理

13、- - - - - - - 第 3 页,共 16 页 - - - - - - - - - 一些说明你可以发现这个遗传算法的基本结构是很一般的。在具体的问题中,我们还要做很多工作以实现算法。首先的问题是怎样创建一个基因?怎样对它们编码?这些问题都是和对基因的操作(交叉、变异)密切联系的。编码、交叉和变异我们将在下一章介绍。下一个问题是怎样从父代种群中选择用来交叉的父代。方法有很多, 但是最基本的思想是:选择好的父代(因为我们认为好的父代可以产生好的子代)。你或许在想:仅仅从产生的子代中选择基因去构造新的种群可能会丢失掉上一代种群中的很多信息。这确实是事实, 我们可以使用精英主义(Elitism

14、)方法。也就是说,种群中最好的那个基因我们将毫无改变的复制到新的种群中。显然,任何时刻产生的一个最优解的解都可以存活到算法结束。还有很多问题我们都将在后面的章节中陆续讨论。你可能在想,为什么遗传算法能够得到我们需要的结果呢?这个问题部分地可以被Holland 的模式定理( Schema Theorem)解决。可是,这个模式定理现在被很多人批评,因为很多人认为它是有问题的。如果你有兴趣的话,你可以在这里找到更多的资料!V 遗传算法中的算子概述在前面的遗传算法的基本结构中我们注意到交叉和变异是遗传算法中最重要的部分。算法的结果受交叉和变异的影响最大。当然,在我们讨论交叉和变异之前我们先要介绍一些基

15、因的信息。基因的编码基因在一定能够意义上包含了它所代表的问题的解在里面。最常用的编码方式是二进制串(Binary String ) 。于是基因可以表示为:Chromosome 1 1101100100110110Chromosome 2 1101111000011110每一个基因用一个二进制串表示,这个二进制串的每一位表示解的某些特征。或者, 整个二进制串表示一个数,比如说在基本的遗传算法的Applet 中就是如此。当然,编码的方法有很多。选用什么方法编码主要取决于所要解决的问题本身。比如说,有的问题直接用整数或者实数来编码可能更好!交叉当我们决定了用什么方法来编码后,我们既可以考虑下一步了

16、交叉。交叉的本质就是从种群中选择父代以生成新的母体群。最简单的方法就是随机的选择一个交叉点,在交叉点之前的部分来自父代1 号基因,交叉点之后的部分来自来父代的2 号基因。用图可以表示为上述过程如下:(表示交叉点)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - Chromosome 1 11011 | 00100110110Chromosome 2 11011 | 11000011110Offspring 1 11011 | 1

17、1000011110Offspring 2 11011 | 00100110110当然,交叉的方式也很多。比如说一个直接的对这个方法的改良就是多选择几个交叉点。交叉可能很复杂, 这有可能是基因编码方法的原因!对特定的问题我们要选择特定的交叉方法以使得遗传算法的结果比较好!变异一旦交叉完成, 变异就要开始了。变异的目的是防止种群中的解跑到局部极值去。变异是对子代的随机的改变。对二进制串编码方式来说,我们可以随机地改变子代中的某个位点的数字( 1 变为 0,或者 0 变为 1) 。于是,变异可以用表表示如下:Original offspring 11101111000011110Original

18、offspring 21101100100110110Mutated offspring 11100111000011110Mutated offspring 21101101100110110显然,变异取决于编码方式和交叉方法。比如说变异可以是交叉两个基因。VI 遗传算法的一个例子求函数最小值问题在搜索空间那一章中我们已经提到:我们遇到的很多问题都可以转化为求解一个函数的极值。下面这个例子就是恰好是这种问题。给定一些函数,然后用遗传算法求这些函数在给定空间中的最小值。对于其他一些问题,通过定义搜索空间和适应度函数,我们通常可以转化为这种问题。VII 遗传算法中的一些参数交叉和变异的概率遗传算

19、法中有两个基本参数:交叉的概率和变异的概率。交叉的概率是说交叉行为发生的几率大小,如果几率为0,那么子代就完完全全和父代一样。只要存在交叉, 子代的基因是由几个父代的基因的中的片段组合而成的,所以就不完全和父代一样。如果交叉100的发生,那么所有的子代都是由交叉产生的。如果交叉的概率为 0,那么子代就是父代的完全复制。(注意:但是,这并不意味着子代就和父代完全一样)交叉过程的目的就是希望新的基因是由旧的基因中好的部分组合而成的,从而新的基因比名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -

20、 第 5 页,共 16 页 - - - - - - - - - 原先的基因要好。当然把旧的种群中的一部分基因完全保留到下一代中去也是很有意义的。变异的概率说的是基因的某些部分发生变异的概率。如果没有变异的话,子代就和交叉过的父代没有任何区别。只要存在变异, 子代的基因就会发生改变。如果变异的概率为100,那么所有的子代都会改变。如果交叉的概率为0,那么子代就不会改变。变异的目的是为了防止遗传算法的解跑到局部极值点,所以,变异应该发生。但是变异不能发生的太频繁,否则的话就变成了随机搜索了。其他一些参数遗传算法中还有一些其它参数,比如说种群的大小就是一个很重要的参数。种群的大小是说每一代种群中所含

21、基因的多少。如果其中的基因太少,则遗传算法中进行交叉操作的机会就越少,所以导致我们的算法只是考察了搜索空间的一部分。另一方面, 如果基因太多,则遗传算法的速度就会变慢。进一步的研究表明,在一定的条件下(这些条件主要由问题本身和编码方法决定)增大种群的大小是没有意义的,因为它不会加快遗传算法的计算速度。VIII 函数的极值点问题这里又是一个求函数极值的问题,但是在这个例子中我们的函数是一个二元函数。例子 (此处是 JAVA 程序 ,略) IX 选择算子简介正如我们在遗传算法基本结构中已经知道的那样,用来交叉的基因是从从父代种群中选择出来 .那么怎样选择这些基因呢?根据达尔文的进化论,适应环境的

22、(好的) 基因将生存下来并且 交 叉 产 生 新 的 一 代 。 选 择 好 的 基 因 的 方 法 有 很 多 , 比 如 轮 盘 赌 选 择 方 法(Roulette Wheel Selection ) 、 (Boltman Selection ) 、锦标赛选择方法(Tournament Selection ) 、分级选择方法(Rank Selection) 、稳定状态选择方法(Steady State Selection)等等。在本章中我们将选择部分做深入一点的说明。轮盘赌选择方法(Roulette Wheel Selection )父代的选择是根据他们的适应度做出的。基因越是适应环境,

23、那么它被选择到的机会就越大。想像一个轮盘赌的机器上放置了种群中所有的基因。每一个基因所占的地方的大小和它的适应度成正比。如下图所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 16 页 - - - - - - - - - 原先的基因要好。当然把旧的种群中的一部分基因完全保留到下一代中去也是很有意义的。变异的概率说的是基因的某些部分发生变异的概率。如果没有变异的话,子代就和交叉过的父代没有任何区别。只要存在变异, 子代的基因就会发生改变。如果变异的概率为100,那么所有

24、的子代都会改变。如果交叉的概率为0,那么子代就不会改变。变异的目的是为了防止遗传算法的解跑到局部极值点,所以,变异应该发生。但是变异不能发生的太频繁,否则的话就变成了随机搜索了。其他一些参数遗传算法中还有一些其它参数,比如说种群的大小就是一个很重要的参数。种群的大小是说每一代种群中所含基因的多少。如果其中的基因太少,则遗传算法中进行交叉操作的机会就越少,所以导致我们的算法只是考察了搜索空间的一部分。另一方面, 如果基因太多,则遗传算法的速度就会变慢。进一步的研究表明,在一定的条件下(这些条件主要由问题本身和编码方法决定)增大种群的大小是没有意义的,因为它不会加快遗传算法的计算速度。VIII 函

25、数的极值点问题这里又是一个求函数极值的问题,但是在这个例子中我们的函数是一个二元函数。例子 (此处是 JAVA 程序 ,略 ) IX 选择算子简介正如我们在遗传算法基本结构中已经知道的那样,用来交叉的基因是从从父代种群中选择出来 .那么怎样选择这些基因呢?根据达尔文的进化论,适应环境的 (好的) 基因将生存下来并且 交 叉 产 生 新 的 一 代 。 选 择 好 的 基 因 的 方 法 有 很 多 , 比 如 轮 盘 赌 选 择 方 法(Roulette Wheel Selection ) 、 (Boltman Selection ) 、锦标赛选择方法(Tournament Selection

26、 ) 、分级选择方法(Rank Selection) 、稳定状态选择方法(Steady State Selection)等等。在本章中我们将选择部分做深入一点的说明。轮盘赌选择方法(Roulette Wheel Selection )父代的选择是根据他们的适应度做出的。基因越是适应环境,那么它被选择到的机会就越大。想像一个轮盘赌的机器上放置了种群中所有的基因。每一个基因所占的地方的大小和它的适应度成正比。如下图所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 16 页

27、 - - - - - - - - - 代中!于是遗传算法将按照如下的方式进行:在每一代中选择一少部分基因(与适应度相符合)来构造子代。接着,父代中一部分基因(与适应度不符合的)被新产生的子代所代替,父代中其它的人基因被保留到新的一代中。精英主义精英主义思想我们已经在前面介绍过了。这种思想是说当利用交叉和变异产生新的一代时,我们有很大的可能把在某个中间步骤中得到的最优解丢失。精英主义正如它的语义所蕴含的那样,在每一次产生新的一代时,我们首先把当前最优解原封不动的复制到新的一代中。然后按照我们前面所说的那样做就行。精英主义方法可以大幅提高运算速度,因为它可以防止丢失掉找到的最好的解!X 编码( E

28、ncoding )简介当你开始用遗传算法求解问题时,基因的编码是一个很重要的问题。编码方法是依赖于问题本身的。在这一章中我们将介绍几种在实际中已经取得成功的方法。二进制编码二进制编码是最常见的一个编码方法,这主要是因为用遗传算法编的第一个程序就是用二进制编码的。在使用二进制编码时,每一个基因就是一个由0 或者 1 组成的字符串。Chromosome A101100101100101011100101Chromosome B111111100000110000011111Example of chromosomes with binary encoding 二进制编码的基因使用二进制编码时,即使

29、等位基因的数量不大,我们也可以得到很多种可能的基因。另一方面,这种方法对于很多问题来都很不自然,所以有时候在交叉和变异结束后还要做一些调整。一个问题:背包问题(Knapsack Problem)问题: 这里有一些给定价值和大小的东西。背包的容积是给定的。请你在不超过背包容积的情况下往背包中装东西,以使得背包中东西的价值达到最大。编码方法:二进制的每一位代表对应的东西是否在背包中。互换(排列,顺序)编码(Permutation Encoding )互换编码可以用来解决排序问题,比如说旅行商问题(Travelling Salesman Problem )和任务排序问题( Task Ordering

30、 Problems) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - Chromosome A 1 5 3 2 6 4 7 9 8Chromosome B 8 5 6 7 2 3 1 4 9Example of chromosomes with permutation encoding 互换编码只是对排序问题有用。即使是排序问题中的某些问题采用互换编码,在交叉和变异后还必须作出一些调整以使得基因保持一致(比如,有可能产生实数

31、)。一个问题:旅行商问题(Travelling Salesman Problem ) TSP 问题: 给定一些城市和这些城市间的距离。旅行商要到所有这些城市中去,但是它不能花太多时间。寻找一个到所有这些城市的顺序以使得旅行路程最短。编码方法:基因表示的是访问各个城市的顺序。值编码( Value Encoding)在很多问题中我们还可以采用直接的值编码,也就是说用一些比较复杂的数来编码,比如说实数。因为二进制编码在这类问题中不好用。在值编码中,每个基因就是一串取值。这些取值可以是与问题有关任何值:整数,实数,字符或者其他一些更复杂的东西。Chromosome A 1.2324 5.3243 0.

32、4556 2.3293 2.4545 Chromosome B ABDJEIFJDHDIERJFDLDFLFEGT Chromosome C (back), (back), (right), (forward), (left) Example of chromosomes with value encoding 值编码对于一些特殊的问题是很有效的。但是,对于这种编码方法它的交叉和变异算子就要按照问题和编码方法具体的去设计。一个问题:为神经网络寻找权重(Finding Weights For Neural Networks )问题:这里有一些给定了结构的神经网络算法。求要输入的神经元的权重以使得

33、网络有我们想要的输出。编码方法:用一个实数表示对应的输入的权重。树形编码( Tree Encoding)树形编码主要用于遗传规划中的演化编程或者表示。在树形编码中, 每个基因都是由数字或符号组成的树形结构。这些符号可以是函数,也可以是规划中使用的一些命令。数形编码的一个例子名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 16 页 - - - - - - - - - Chromosome A Chromosome B ( + x ( / 5 y ) ) ( do_until

34、 step wall ) Example of chromosomes with tree encoding 数形编码对演化规划这类问题很适合.规划语言LISP 经常在其中使用,因为规划中使用的很多程序可以用数形结构很容易的表示出来,从而交叉算子和变异算子相对也简单. 一个问题: 为给定的自变量和函数值选择一个函数(Finding A Function From Given Values )问题: 给定了很多组输入和输出。请你为这些输入输出选择一个函数,使得这个函数把每个输入尽可能近地映射为输出。编码方法:基因就是树形结构中的一些函数。XI 交叉和变异简介交叉和变异是遗传算法中的两个最基本的算

35、子。遗传算法的好坏由他们决定。这两个算子的类型和实现是由问题本身和编码方法决定的。交叉和变异的方式有很多。这一章我们我们介绍几种例子,通过这些例子你可以去体会交叉算子和变异算子的构造方法。二进制编码1 交叉算子单交叉点交叉算子 (Single Point Crossover ) :选择一个交叉点,子代在交叉点前面的基因从一个父代基因那里得到,后面的部分从另外一个父代基因那里得到; 11001011+11011111 = 11001111 双交叉点交叉算子(Two Point Crossover ): 选择两个交叉点,子代基因在两个交叉点间部分来自一个父代基因,其余部分来自于另外一个父代基因.

36、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 16 页 - - - - - - - - - 11001011 + 11011111 = 11011111 均匀交叉算子 (Uniform Crossover): 子代基因的每一个位点是随机地来自于两个父代基因中的一个的 ; 11001011 + 11011101 = 11011111 算术交叉算子(Arithmetic Crossover ):对父代基因做一个代数运算从而产生一个新的基因。下面就是使用和运算(AND )实

37、现的: 11001011 + 11011111 = 11001001 (AND) 2 变异算子位点转换算子(Bit Inversion ) :选择一些位点然后将这些地方的0,1 互换;11001001 = 10001001 互换编码1 交叉算子单交叉点交叉算子(Single Point Crossover ):选择一个交叉点,子代的从初始位置出发的部分从一个基因复制,然后在另一个基因中扫描,如果某个位点在子代中没有,就把它添加进去;注意:这个算法交叉点后面的部分可以有很多中具体的方法;(1 2 3 4 5 6 7 8 9) + (4 5 3 6 8 9 7 2 1) = (1 2 3 4 5

38、6 8 9 7) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 16 页 - - - - - - - - - 2 变异算子变序算子( Order Changing) :从子代基因中选择两个数,交换它们的位置; (1 2 3 4 5 6 8 9 7) = (1 8 3 4 5 6 2 9 7) 值编码1 交叉算子上面二进制编码中所由交叉算子都适用。2 变异算子填值算子( Adding Crossover ) :对于实数编码的算法,可以给选定的一些数添加一个小的实数(扰动

39、) :(1.29 5.68 2.86 4.11 5.55) = (1.29 5.68 2.73 4.22 5.55) 树形编码1 交叉算子树交叉算子(Tree Crossover) :在两个父代基因上选一个交叉点(位置),然后把他们在交叉点下面的部分交换就行;2 变异算子改变交叉算子(Changing Operator) :选择一些节点,然后把他们换掉;XII 旅行商问题( TSP) (Travelling Salesman Problem)问题背景旅行商问题( TSP) :给定一些城市和这些城市间的距离。旅行商要到所有这些城市中去,但是它不能花太多时间。寻找一个到所有这些城市的顺序以使得旅行

40、路程最短。换句话的说,就是要从有N 个节点的完全图上寻找最短Hamiltonian 遍历。算法实现我们将使用含有16 个基因的种群,使用交换编码方式 你可以在前一章中找到有关交名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 16 页 - - - - - - - - - 换编码方式的解释,以及怎样用这种编码方法来对TSP 问题编码。这个TSP 是在定义了欧氏距离的完全图上求解的,所谓完全图就是指图中的每一个节点都和其它节点直接相连。注意,增加或者删除城市时要重新创建新的基

41、因,然后重新开始。你可以从下面这些交叉和变异算子中选择一个交叉算子和变异算子使用。我给它们简单的介绍。交叉算子 一点算法:子代的基因一部分从父代一个基因上按父代的位置复制,其它部分按照父代第二个基因上原来的顺序复制到子代上; 两点算法:子代的基因有两个部分从父代一个基因上按父代的位置复制,其它部分按照父代第二个基因上原来的顺序复制到子代上;不交叉:不交叉,完从父代复制过来;变异算子 普通随机算法:选择一少部分城市,把它们的顺序交换; 改善随机算法:选择一少部分城市,如果交换顺能改善解则交换它们的位置; 改善对称算法:对称地选择一些城市,如果交换顺能改善解则交换它们的位置; 优化随机算法:先进行

42、“ 普通随机算法” ,然后进行 “ 改善随机算法 ” ; 优化对称算法:先进行“ 普通随机算法” ,然后进行 “ 改善对称算法” ; 不变异:不变异;例子下面这个例子就是一个TSP 的演示,按 “Change View”显示种群向最优解收敛的过程或者逆序显示。 你可以用鼠标在图上添加或者删除城市。添加或者删除城市后在城市中间就会产生随机的路线,因为程序已经建立了新的种群。当然,别忘记我们是在完全图上解TSP 问题的。选择不同的交叉算子和变异算子让程序去计算(并且不断增加城市的数量),看看这个遗传算法程序会有哪些变化。这个程序已知的BUG :在进行操作之前,先点击一下Change View,否则

43、在一些浏览器上你会发现程序运行时图形没有任何变化。我是用的是CardLayout ,我不知道怎样让这个Applet 正常工作。如果你知道,请你给我发Email 告诉我。XIII 推荐遗传算法中的参数:这一章中我们给那些想要使用遗传算法来解决问题的人推荐一些材料。当然,这些推荐的材料都是很一般的。所以在你的具体问题之中,你可能不得不自己实验某些参数,因为到目前为止,还没有一个适用于遗传算法所有应用领域的关于算法参数的理论。下面这些推荐的材料都是遗传算法研究中实验得出的结果,这些结果很多只适用于二进制编码。 交叉率交叉率一般来说应该比较大,推荐使用 80-95。 (还有自己得出的结果说60最好。)

44、 变异率变异率一般来说应该比较小,据报道使用0.5-1最好。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 16 页 - - - - - - - - - 种群的规模让人感到惊奇的是,比较大的种群的规模并不能优化遗传算法的结果。种群的大小推荐使用 20-30, (还有自己得出的结果说50-100 最好。 )一些研究表明,种群规模的大小取决于编码的方法,具体的说就是编码串(Encoded String)的大小。也就是说,如果说采用32 位为基因编码的时候种群的规模大小最好为

45、32 的话, 那么当采用16 位为基因编码时种群的规模相应应变为原来的两倍。 选择算法推荐使用基本的轮盘赌选择方法,但是有时候分级选择方法可能会更好。查看选择 那一章,你可以看看它们的优点和缺点。当然还有一些比较复杂的方法可供使用,这些算法可以在遗传算法程序运行过程中自动改变参数的取值,基本上算法的行为和模拟退火算法(Simulated Annealing )差不多。 如果你没有使用特别的方法来保存已经发现的最优值的话,你 一 定 要 使 用 精 英 主 义 方 法 。 你 也 可 以 尝 试 使 用 一 下 稳 定 状 态 选 择 方 法(Steady State Selection) 。

46、编码方法编码方法取决于问题本身和问题中实例的个数。查看编码 这一章你可以得到一些建议或者这里有一些其它资源。 交叉和变异的类型这两种算子取决于问题和编码方法。查看算子 你可以得到一些建议。你也可以查看下面这些站点。遗传算法的应用 遗传算法已经在很多复杂问题(比如说NP-难题)、机器学习和简单的进化规划中得到了使用。遗传算法在一些艺术领域也取得了很大成就,比如说进化图片和进化音乐。 遗传算法的优势在于他的并行性。遗传算法在搜索空间中非常独立地移动(按照基因型而不是表现型),所以它几乎不可能像其它算法那样“粘”在局部极值点。 遗传算法更容易实现。一旦你有了一个遗传算法的程序,如果你想解决一个新的问

47、题,你只需要针对新的问题重新进行基因编码就行。如果编码方法也相同,那你只需要改变一下适应度函数就可以了。当然,选择编码方法和适应度函数是一件非常难的问题。 遗传算法的缺点是它的计算时间太长。它们可能比其他任何算法需要的时间都长。当然,对于今天的高速计算机来说,这已经不是个大问题了。 为了让读者更好地了解遗传算法所解决的问题, 这里有一个关于遗传算法应用的小列表: 非线性动态系统预测,数据分析; 神经网络的结构和权重设计; 自动控制导弹的轨道设计; 进化 LISP 规划(遗传规划); 战略计划; 蛋白质分子的形状的寻找; 旅行商问题和时间序列排序问题; 构图的函数问题; 名师资料总结 - - -

48、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 16 页 - - - - - - - - - 更多的资料你可以通过附件中的 链接 找到。 ENCORE, the EvolutioNary COmputation REpository network ftp:/alife.santafe.edu/pub/USER-AREA/EC/ (there are also some others nodes) FAQ - The Hitch-Hikers Guide to Evolutionary Com

49、putation ftp:/alife.santafe.edu/pub/USER-AREA/EC/FAQ/www/index.htmlFAQ - Genetic programming http:/www-dept.cs.ucl.ac.uk/research/genprog/gp2faq/gp2faq.htmlThe Genetic Algorithms Archive - many links, information about mailing list, some fun stuff http:/www.aic.nrl.navy.mil:80/galist/Artificial Life

50、 Online - links, if you are looking for some introductory materials, look herehttp:/alife.santafe.edu/Yahoo! Science:Computer Science:Algorithms:Genetic Algorithms- directory of other linkshttp:/ groups comp.ai.genetic and comp.ai.alife关于这些页面这 些 页 面 是Czech Technical University大 学 的 学 生Marek Obitko19

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁