Evolutionary Computing: 2. Genetic Algorithm(1)
本篇博文讲述基因算法(Genetic Algorithm),基因算法是最著名的进化算法。
内容依然来自博主的听课记录和教授的PPT。
Outline
- 简单基因算法
- 个体表达
- 变异
- 重组
- 选择重组还是变异?
1. 简单基因算法(Simple Genetic Algorithm)
Holland's早期的基因算法被认为是“简单的基因算法”或是“权威的基因算法”。(simple genetic algorithm or canonical genetic algorithm)
1.1 直接举例说明
问题描述:利用遗传算法求解区间[0,31]上的二次函数y=x2的最大值
乍一看,是个很白痴的问题,那我们就用GA算法来套一下,看一下流程。
[0, 31] 中的点x就是个体(individual), 函数值f(x)恰好就可以作为x的适应度(fitness),区间[0, 31]就是一个种群(population) 。
种群规模设定为4,用5位二进制数编码染色体。
假定4个个体:
S1: 13 = 01101(二进制)
S2: 24 = 11000
S3: 8 = 01000
S4: 19 = 10011
第一列是编号,第二列是初始值的二进制值(initial population),第三列就是给定的初始值,第四列f(x) = x^2是适应度(fitness),当然适应度越高越符合预期。第五列是种群中各个体被选择的概率(prob)(根据第四列能算出来的)。第七列是个体在配对池(mating pool)中的个数。
被选择作为父辈的概率计算公式为:
这个选择叫做适应-比例选择(fitness proportional selection)。下章有具体讲述。
下面开始重组配对(crossover):
上图表格是配对重组的过程。第一列依然是编号,第二列是配对池,第三列表示重组开始的点,第四列是配对重组后的后代,第五列是新的后代的值,第六列是适应度。
下面是变异(mutation):
前两列内容和之前的一样,第三列是变异后的二进制值,编号1的个体在第一位发生了变异,编号4的个体在第三位发生了变异。数值发生了改变,适应度也发生了变化。
注:这里博主把教授的ppt给改了一下,因为博主不认为他原来写的数值是正确的。原数值如下:在S1的第四列,原ppt上的数字是26,第五列的数字是676。在S4的第四列,原ppt上的数字是18,第五列上的数字是324。当然下面的总和、平均值、最大值也都全部改了。
有一个问题,为什么变异了第一个和第四个,而第二个却没有变异呢?计算机是如何判断让哪一个个体进行变异的呢?
这里讲一个概念叫变异率(mutation rate),这是一个固定的值,在这个问题中我们设变异率0.001,也就是事先告诉计算机的一个数值。在基因的每一位上,也就是二进制码的每一位上,计算机会产生一个随机数,范围在[0,1]之间。接着计算机会将这个随机数与变异率进行比较,如果这个随机数小于这个变异率,那么在这一位上的基因将会发生反转。从这个变异的结果上来看,变异是朝着好的方向进行的。
至此一轮的进化已经走完了,可以看到新的后代:
S1: x = 28, f(x) = 784
S2: x = 25, f(x) = 625
S3: x = 27, f(x) = 729
S4: x = 20, f(x) = 400
可以对比一下第一张表格和最后一张表格,平均适应度由开始的293增加到了634.5,最适应的种群有最开始的576增长到了784。当然最终最好的、我们想要的结果是31^2 = 961。
1.2 特点总结
- 有一个二进制的表示(a binary representation)
- 适应的、成比例的选择(fitness proportionate selection)
- 低可能性的变异(a low probability of mutation)
- 利用创新式的重组(recombination,crossover)来产生新的候补solution
此外再补充一个教授ppt上的表格
缺点总结:
- Representation is too restrictive
- Mutation & crossovers only applicable for bit-string & integer representations
- Selection mechanism sensitive for converging populations with close fitness values
- Generational population model (step 6 in SGA repr. cycle) can be improved with explicit survivor selection
2. 个体表示(Representation of Individuals)
2.1 二进制表示(Binary Representations)
二进制表达是最简单的表达方式之一。比如上面的那个问题就是用的二进制表达。
对于一个给定的问题,我们需要决定: 1.string的长度。2.如何用它来表示一个表型(phenotype)。
具体来说,我们需要保证,我们的每一个二进制编码都能够表示一个有效的solution,反之亦然,所有可能的solution都可以被表达。
教授的原文:In choosing the genotype-phenotype mapping for a specific problem, one has to make sure that the encoding allows that all possible bit strings denote a valid solution to the given problem and that, vice versa, all possible solutions can be represented.
2.2 其他表达方法
主要先拿二进制表达开刀,其他的表达先略过。
除了二进制表示,还有一些其他表达方法,列举如下:
- 整型表示(Integer Representations)
- Real-Valued Representation
- Floating-Point Representation
- Permutation Representations
有些问题并不总适用于二进制表示。比如在一个正方形网格地图上寻找路径的过程中,我们可能会使用整型{0,1,2,3}来表示方向{东,南,西,北}。这里显然整型会比二进制更加合适。
3. 变异(Mutation)
变异本来是个生物学的名词,这里就是表明变异算子(variation operators)通过对基因型的一些随机变化,仅仅用一个父辈创造出了一个新的后代。
原文如下:Mutation is the generic name given to those variation operators that use only one parent and create one child by applying some kind of randomised change to the representation(genotype).
3.1 二进制表达的变异(Mutation for Binary Representations)
在最开始的例子中已经演示过二进制表达的变异。
最常见的二进制变异就是考虑每一位上的基因是否反转(从1到0,从0到1),这个反转有一个极小的概率pm。
3.2 其他表达的变异
主要先拿二进制表达开刀,其他的表达先略过。
- 整型表达的变异(Mutation Operators for Integer Representations)
- 浮点型表达的变异(Mutation Operators for Floating-Point Representations)
- 排列型表达的变异(Mutation Operators for Permutation Representations)
4. 重组(Recombination)
重组被认为是基因算法中最重要的特征之一。
重组的概念上一章讲过了,这里引一段教科书的描述。
Recombination, the process whereby a new individual solution is created from the information contained within two (or more) parent solutions, is considered by many to be one of the most important features in genetic algorithms(GA).
这里重组的概念,有时候会说recombination,有时候会说crossover。crossover更常用来表示two-parent case。
重组算子(Recombination operators)的使用中会有一个重组率(crossover rate),这个概率的取值范围大约是[0.5,1.0]。通常在重组的过程中,一个位置上发生重组的概率会在[0,1),然后这个概率再和上面的我们实现设定好的重组率进行比较,倘若这个值低于了重组率,那么两个父辈就会通过重组产生两个新的后代。相反,则不发生重组,两个新的后代通过无性生殖(asexually)产生。也就是说,在经过一轮重组之后,有一部分后代(offspring)是直接copy父辈而产生的,另有一部分后代表达了之前没有见过的solutions。
回顾一下重组率(crossover rate)和变异率(mutation rate)
变异率(mutation rate)是用来控制染色体的一些部分如何独立地发生变化。所谓独立就只需要一个父辈就可以了。
重组率(crossover rate)决定了一组父辈发生重组的机会。
4.1 二进制表达的重组算子(Recombination Operators for Binary Representations)
4.1.1 单个位置的交叉重组(One-Point Crossover)
从某一个位置开始进行交叉重组。
4.1.2 多个位置的交叉重组(N-Point Crossover)
从不止一个位置开始进行交叉重组。
这两个划分看上去有点多余,但人家西方教科书就这么区分开了。
4.1.3 均衡交叉重组(Uniform Crossover)
与上面两种方式不同的是,uniform crossover这种重组方式是不依赖于基因的具体位置的。它首先在[0,1]上产生一组均匀分布的随机变量,组成一个string,其长度和父辈基因相同。然后有一个事先设定好的参数p(通常是0.5)。在第一个后代的每一位上,如果这个随机变量小于了这个参数,那么后代就遗传第一个父辈的基因,反之,如果这个随机变量大于了这个参数,那么后代就遗传第二个。第二个后代的基因则和第一个后代的重组方式完全相反。
以上三种方式的小结和补充
- n-point crossover has an inherent bias in that it tends to keep together genes that are located close to each other in the representation. This effect is known as positional bias.
- In contrast, uniform crossover does not exhibit any positional bias, but does have a strong tendency towards transmitting 50% of the genes from each parent and against transmitting an offspring a large number of coadapted genes from one parent. This is known as distributional bias.
- n-point crossover倾向于将位置接近的基因保持在一起。这种效果被称为位置偏向(positional bias)
- uniform crossover,相反,没有任何的positional bias。他能够从每个父辈那里传递50%的基因并且防止单从某一个父辈那里获得大量的基因。这种效果被称作分布偏向(distributional bias)。
4.2 其他表达的重组算子
- Recombination Operators for Integer Representations
- Recombination Operators for Floating-Point Representations
- Recombination Operators for Permutation Representations (下章写到)
5. 选择重组还是变异?(crossover or mutation)
在具体的问题中,一般会采取不同的方式。通常两种方法都采用。
只有变异的进化算法(mutation-only-EA)有可能能够解决问题,而只有重组(crossover-only-EA)的进化算法往往不能达到效果。
引教授PPT上的两句话:
- Crossover is explorative, it makes a big jump to an area somewhere "in between" two (parent) areas.
- Mutation is exploitative, it creates random small diversions, thereby staying near (in the area of) the parent.
Evolutionary Computing: 2. Genetic Algorithm(1)的更多相关文章
- Evolutionary Computing: 3. Genetic Algorithm(2)
承接上一章,接着写Genetic Algorithm. 本章主要写排列表达(permutation representations) 开始先引一个具体的例子来进行表述 Outline 问题描述 排列表 ...
- Evolutionary Computing: 4. Review
Resource:<Introduction to Evolutionary Computing> 1. What is an evolutionary algorithm? There ...
- Evolutionary Computing: 5. Evolutionary Strategies(1)
resource: Evolutionary computing, A.E.Eiben Outline What is Evolution Strategies Introductory Exampl ...
- 遗传算法 Genetic Algorithm
2017-12-17 19:12:10 一.Evolutionary Algorithm 进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算 ...
- Evolutionary Computing: 5. Evolutionary Strategies(2)
Resource: Introduction to Evolutionary Computing, A.E.Eliben Outline recombination parent selection ...
- 遗传算法(Genetic Algorithm, GA)及MATLAB实现
遗传算法概述: • 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择.适者生存”的演化法则,它最初由美国Michigan大学的J. Hollan ...
- 超详细的遗传算法(Genetic Algorithm)解析
https://blog.csdn.net/u010451580/article/details/51178225 https://www.jianshu.com/p/c82f09adee8f 00 ...
- 【智能算法】超详细的遗传算法(Genetic Algorithm)解析和TSP求解代码详解
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 文章声明 此文章部分资料和代码整合自网上,来源太多已经无法查明出处,如侵犯您的权利,请联系我删除. 00 目录 遗传算法定义 生 ...
- 基于遗传算法(Genetic Algorithm)的TSP问题求解(C)
基于遗传算法的TSP问题求解(C) TSP问题: TSP(Travelling salesman problem): 译作“旅行商问题”, 一个商人由于业务的需要,要到n个城市,每个城市之间都有一条路 ...
随机推荐
- dom4j微信接口开发
新建一个web项目,我用的是eclipse和tomcat7.0 ,外网环境用的nat123 先建立一个实体bean:TextMessage /** * xml基本对象 * @author xiaohu ...
- 【Algorithms】归并排序(merge sort)
几个比较常见的排序算法里头,这个我是比较生疏的一个,有一天突然被问了一个问题是,归并排序最大的特点是什么,我才想起这个算法来.下午又看不进书啦,就实现一下,记下来. 归并排序采取的是分治策略,就是先将 ...
- Android动画的实现原理 .
1.动画运行模式 独行模式 中断模式 2.Animation类 每个动画都重载了父类的applyTransformation方法这个方法的主要作用是把一些属性组装成一个Transformation类, ...
- iOS,图片处理
1.旋转图片 2.缩放图片 3.截取图片指定区域 4.祛除图片白色背景,弄成透明png 5.将UIView转化为UIImage,并转化为data和base64 6.将视频一帧(CMSampleBuff ...
- IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境
当前我的idea 版本是14.1.4. 1,)SVN Server下载与安装(https://www.visualsvn.com/server/): 因为我开发机是x64的,所以我优先下载 x64的 ...
- node与Elment以及子节点childrenNode与children的区别(2)
测试代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- ASP.NET MVC 3 CheckBoxList 的使用
在以前的 ASP.NET MVC 中可以直接使用 CheckBoxList,但后来不知道什么原因在 MVC 中移除了 CheckBoxList,所以默认情况下 ASP.NET MVC 3 中是没有 C ...
- JVM参数设置、分析(转发)
JVM参数的含义 实例见实例分析 参数名称 含义 默认值 -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,J ...
- MySql5.7.12设置log-bin
什么是binlog日志 binlog日志记录了MySql数据库的增加.删除.修改操作.用来实现MySql主从复制. 设置binlog日志 在my.cnf中配置binlog日志 [mysqld] log ...
- HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)
Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...