算法】超详细的遗传算法(GeneticAlgorithm)解析

上传人:工**** 文档编号:512082643 上传时间:2024-03-16 格式:DOCX 页数:11 大小:26.82KB
返回 下载 相关 举报
算法】超详细的遗传算法(GeneticAlgorithm)解析_第1页
第1页 / 共11页
算法】超详细的遗传算法(GeneticAlgorithm)解析_第2页
第2页 / 共11页
算法】超详细的遗传算法(GeneticAlgorithm)解析_第3页
第3页 / 共11页
算法】超详细的遗传算法(GeneticAlgorithm)解析_第4页
第4页 / 共11页
算法】超详细的遗传算法(GeneticAlgorithm)解析_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《算法】超详细的遗传算法(GeneticAlgorithm)解析》由会员分享,可在线阅读,更多相关《算法】超详细的遗传算法(GeneticAlgorithm)解析(11页珍藏版)》请在金锄头文库上搜索。

1、法】超详细的遗传算法(GeneticAlgorithm)解析01 什么是遗传算法?1.1 遗传算法的科学定义遗传算法(Genetic Algorithm, GA )是模拟达尔文生物进化论的 自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟 自然进化过程搜索最优解的方法。其主要特点是直接对结构对象进行操作,不存在求导和函数连续 性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化 的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间, 自适应地调整搜索方向。遗传算法以一种群体中的所有个体为对象,并利用随机化技术指 导对一个被编码的参数空间进行高效搜索。其中,选择、交叉

2、和变异 构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函 数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的 核心内容。1.2 遗传算法的执行过程(参照百度百科)遗传算法是从代表问题可能潜在的解集的一个种群( population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体 (individual)组成。每个个体实际上是染色体(chromosome)带有特征 的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表 现(即基因型)是某种基因组合,它决定了个体的形状的外部表现, 如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。 因此,

3、在一开始需要实现从表现型到基因型的映射即编码工作。由于 仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代( generation )演化产生出越来越好的近似解,在每一代,根据问题 域中个体的适应度(fitness)大小选择(selection )个体,并借助于 自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation ),产生出代表新的解集的种群。 这个过程将导致种群像自然进化一样的后生代种群比前代更加适 应于环境,末代种群中的最优个体经过解码(decoding ),可以作

4、为 问题近似最优解。1.3 遗传算法过程图解image02相关生物学术语为了大家更好了解遗传算法,在此之前先简单介绍一下相关生物学术语,大家了解一下即可。基因型(genotype):性状染色体的内部表现;表现型(phe no type):染色体决定的性状的外部表现,或者说, 根据基因型形成的个体的外部表现;进化(evolution):种群逐渐适应生存环境,品质不断得到改良。 生物的进化是以种群的形式进行的。适应度(fitness):度量某个物种对于生存环境的适应程度。选择(selection):以一定的概率从种群中选择若干个个体。一般, 选择过程是一种基于适应度的优胜劣汰的过程。复制(repr

5、oduction):细胞分裂时,遗传物质DNA通过复制而 转移到新产生的细胞中,新细胞就继承了旧细胞的基因。交叉(crossover):两个染色体的某一相同位置处DNA被切断, 前后两串分别交叉组合形成两个新的染色体。也称基因重组或杂交;变异(mutation):复制时可能(很小的概率)产生某些复制差错, 变异产生新的染色体,表现出新的性状。编码(coding) : DNA中遗传信息在一个长链上按一定的模式排 列。遗传编码可看作从表现型到基因型的映射。解码(decoding):基因型到表现型的映射。个体(individual):指染色体带有特征的实体;种群(population ):个体的集合

6、,该集合内个体数称为种群 03 问题引出与解决3.1一元函数最大值问题如下的函数图像:image现在我们要在既定的区间内找出函数的最大值。学过高中数学的孩纸都知道,上面的函数存在着很多的极大值和极小值。而最大值则是指定区间的极大值中的最大的那一个。从图像 上具体表现为,极大值像是一座座山峰,极小值则是像一座座山谷。 因此,我们也可以把遗传算法的过程看作是一个在多元函数里面求最 优解的过程。这些山峰对应着局部最优解,其中有一个山峰是海拔最高的,这 个山峰则对应的是全局最优解。那么,遗传算法要做的就是尽量爬到 最高峰,而不是困在较低的小山峰上。(如果问题求解是最小值,那 么要做的就是尽量走到最低谷

7、,道理是一样的)。image3.2 袋鼠蹦跳既然我们把函数曲线理解成一个一个山峰和山谷组成的山脉。那么我们可以设想所得到的每一个解就是一只袋鼠,我们希望它们不断的向着更高处跳去,直到跳到最高的山峰。 所以求最大值的过程就转化成一个“袋鼠跳”的过程。下面介绍介绍“袋鼠跳”的几种方式。 爬山算法:一只袋鼠朝着比现在高的地方跳去。它找到了不远处 的最高的山峰。但是这座山不一定是最高峰。这就是爬山算法,它不 能保证局部最优值就是全局最优值。 模拟退火:袋鼠喝醉了。它随机地跳了很长时间。这期间,它可 能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高峰跳去。 这就是模拟退火算法。 遗传算法:有很多袋

8、鼠,它们降落到喜玛拉雅山脉的任意地方 这些袋鼠并不知道它们的任务是寻找珠穆朗玛峰。但每过几年,就在 一些海拔高度较低的地方射杀一些袋鼠。于是,不断有袋鼠死于海拔 较低的地方,而越是在海拔高的袋鼠越是能活得更久,也越有机会生 儿育女。就这样经过许多年,这些袋鼠们竟然都不自觉地聚拢到了一 个个的山峰上,可是在所有的袋鼠中,只有聚拢到珠穆朗玛峰的袋鼠被带回了美丽的澳洲。04 大体实现过程遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function )来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。 遗传算法的实现过程实际上就像自然

9、界的进化过程那样。面我们用袋鼠跳中的步骤一一对应解释,以方便大家理解:1. 首先寻找一种对问题潜在解进行“数字化”编码的方案。(建 立表现型和基因型的映射关系)2. 随机初始化一个种群(那么第一批袋鼠就被随意地分散在山脉 上),种群里面的个体就是这些数字化的编码。3. 接下来,通过适当的解码过程之后(得到袋鼠的位置坐标)。4. 用适应性函数对每一个基因个体作一次适应度评估(袋鼠爬得 越高当然就越好,所以适应度相应越高)。5. 用选择函数按照某种规定择优选择(每隔一段时间,射杀一些 所在海拔较低的袋鼠,以保证袋鼠总体数目持平。)。6. 让个体基因变异(让袋鼠随机地跳一跳)。7. 然后产生子代(希

10、望存活下来的袋鼠是多产的,并在那里生儿育女)。遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解。(你不必去指导袋鼠向那边跳,跳多远。)而只要简单的“否定”一些表现不好的个体就行了。(把那些总是爱走下坡路的袋鼠射杀,这就是遗传算法的精粹!由此我们可以得出遗传算法的一般步骤:1. 随机产生种群。2. 根据策略判断个体的适应度,是否符合优化准则,若符合,输出最佳个体及其最优解,结束。否则,进行下一步。3. 依据适应度选择父母,适应度高的个体被选中的概率高,适应 度低的个体被淘汰。4. 用父母的染色体按照一定的方法进行交叉,生成子代。5. 对子代

11、染色体进行变异。由交叉和变异产生新一代种群,返回步骤2,直到最优解产生。具体图解可以回到1.3 查看。05 开始我们的进化(具体实现细节)5.1 先从编码说起 编码是应用遗传算法时要解决的首要问题,也是设计遗传算法时 的一个关键步骤。编码方法影响到交叉算子、变异算子等遗传算子的 运算方法,大很大程度上决定了遗传进化的效率。迄今为止人们已经提出了许多种不同的编码方法。总的来说,这 些编码方法可以分为三大类:二进制编码法、浮点编码法、符号编码 法。下面分别进行介绍:5.1.1 二进制编码法就像人类的基因有 AGCT 4 种碱基序列一样。不过在这里我们只 用了 0 和 1 两种碱基,然后将他们串成一

12、条链形成染色体。一个位能表 示出 2 种状态的信息量,因此足够长的二进制染色体便能表示所有的 特征。这便是二进制编码。如下:1110001010111它由二进制符号0和1所组成的二值符号集。它有以下一些优点:1. 编码、解码操作简单易行2. 交叉、变异等遗传操作便于实现3. 合最小字符集编码原则4. 利用模式定理对算法进行理论分析。二进制编码的缺点是:对于一些连续函数的优化问题,由于其随 机性使得其局部搜索能力较差,如对于一些高精度的问题(如上题), 当解迫近于最优解后,由于其变异后表现型变化很大,不连续,所以会远离最优解,达不到稳定。5.1.2浮点编码法二进制编码虽然简单直观,但明显地。但是

13、存在着连续函数离散 化时的映射误差。个体长度较短时,可能达不到精度要求,而个体编 码长度较长时,虽然能提高精度,但增加了解码的难度,使遗传算法 的搜索空间急剧扩大。所谓浮点法,是指个体的每个基因值用某一范围内的一个浮点数 来表示。在浮点数编码方法中,必须保证基因值在给定的区间限制范 围内,遗传算法中所使用的交叉、变异等遗传算子也必须保证其运算 结果所产生的新个体的基因值也在这个区间限制范围内。如下所示:1.2-3.2-5.3-7.2-1.4-9.7浮点数编码方法有下面几个优点:1. 适用于在遗传算法中表示范围较大的数2. 适用于精度要求较高的遗传算法3. 便于较大空间的遗传搜索4. 改善了遗传

14、算法的计算复杂性,提高了运算交率5. 便于遗传算法与经典优化方法的混合使用6. 便于设计针对问题的专门知识的知识型遗传算子7. 便于处理复杂的决策变量约束条件5.1.3 符号编码法符号编码法是指个体染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集如A,B,C.。符号编码的主要优点是:1. 符合有意义积术块编码原则2. 便于在遗传算法中利用所求解问题的专门知识3. 便于遗传算法与相关近似算法之间的混合使用。5.2 为我们的袋鼠染色体编码在上面介绍了一系列编码方式以后,那么,如何利用上面的编码来为我们的袋鼠染色体编码呢?首先我们要明确一点:编码无非就是建立从基因型到表现型的映射关系

15、。这里的表现型可以理解为个体特 征(比如身高、体重、毛色等等)。那么,在此问题下,我们关心的 个体特征就是:袋鼠的位置坐标(因为我们要把海拔低的袋鼠给杀 掉)。无论袋鼠长什么样,爱吃什么。我们关心的始终是袋鼠在哪里, 并且只要知道了袋鼠的位置坐标(位置坐标就是相应的染色体编码, 可以通过解码得出),我们就可以:1. 在喜马拉雅山脉的地图上找到相应的位置坐标,算出海拔高度。 (相当于通过自变量求得适应函数的值)然后判读该不该射杀该袋鼠。2. 可以知道染色体交叉和变异后袋鼠新的位置坐标。 回到3.1中提的求一元函数最大值的问题。在上面我们把极大值比喻为山峰,那么,袋鼠的位置坐标可以比喻为区间-1, 2的某一个x坐 标(有了 x坐标,再通过函数表达式可以算出函数值 得到了袋 鼠染色体编码,解码得到位置坐标,在喜马拉雅山脉地图查询位置坐 标算出海拔高度)。这个 x 坐标是一个实数,现在,说白了就是怎么 对这个 x 坐标进行编码。下面我们以二进制编码为例讲解,不过这种 情况下以二进制编码比较复杂就是了。(如果以浮点数编码,其实就 很简洁了,就一浮点数而已。)我们说过,一定长度的二进制编码序列,只能表示一定精度的浮 点数。在这里假如我们要求解精确到六位小数,由于区间长度为2

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

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号