Outline

  1. 什么是进化算法
  2. 能够解决什么样的问题
  3. 进化算法的重要组成部分
  4. 八皇后问题(实例)

1. 什么是进化算法

遗传算法(GA)是模拟生物进化过程的计算模型,是自然遗传学与计算机科学相互结合的新的计算方法。

<图片来源于,Pro. Frank Neumann, The University of Adelaide>


2. 能够解决什么样的问题

我们主要面对的三个问题类型:

2.1 Optimisation

我们有一个系统模型,但是需要寻找合适的input,来达到我们想要的目标。

2.2 Modelling

我们已经有了很多组input 和 output,现在需要寻找一个合适的模型来让每一个input都可以得到正确的output。

2.3 Simulation

我们已经有了一个给定的model,现在希望得到在不同input情况下的output结果。


3. 进化算法的重要组成部分(Components of Evolutionary Algorithms)

  • 表达
  • 评估算法/适应算法
  • 种群
  • 父母选择机制
  • 变异算子(variation operators)
  • 监督选择机制
  • 初始化
  • 终止条件

 有些东西比较抽象,后面章节会详细介绍的。

3.1 表达(Representation)

表现型和基因型 (phenotypes and genotypes)

直接举例来说:

比如在一个优化问题中,所有的可能的解都是整型的(int),那么给定的整型就是一组表现型。

在这个例子中这些整型可以由二进制来表示,那么比如18是一个表现型,那么10010就是基因型。

<这样举例说具体一点,但并不是说基因型就是二进制>

基因型(genotype) --> 通过解码(decode) --> 表现型(phenotype)

我们的目的是要获得一个最终最好的solution,那么这个solution就是通过,decode最佳的基因型来获得的。

3.2 评估算法/适应算法(Evaluation function/Fitness Function)

The role of the evaluation function is to represent the requirements the population should adapt to.

It forms the basis for selection, and so it facilitates improvements.

It defines what "improvement" means.

Technically, it is a function or procedure that assigns a quality measure to genotypes.

Typically, this function is composed from a quality measure in the phenotype space and the inverse representation.

To stick with the example above, if the task is to find an integer x that maximises x2, the fitness of the genotype 10010 could be defined as the square of its corresponding phenotype: 182 = 324

3.3 种群(Population)

A population is a multiset of genotypes.

Population可以容下所有可能的solution,包含许多的基因型集合。

个体(individuals),相当于静态的对象,不能改变或者说适应,是要靠population来进行适应和改变的。

3.4 父母选择机制(Parent selection mechanism)

父母选择机制,用来从众多的个体中,区分出质量好的拿一部分。

其中更好的个体,超越了他们父母的个体,将会用来作为新父母,用来产生新的下一代。

3.5 变异算子(Variation operators)

变异算子的作用,就是从旧的个体中创造出新的个体。也即根据表现型,创造出新的候选solution。

这一块包含了突变(mutation)和重组(recombination)

变异 说的是一个基因型产生一个变异体(也即子孙后代),这种突变伴随着一系列的随机性选择。

这东西可以看作是为基因池(gene pool)提供新鲜血液(fresh blood)

变异可以理解为一元的变异算子(variation operator)

重组 说的是将父母的基因型混合到子孙后代的基因型中去。和突变一样,如何混合以及混合的部分也是随机的。

The principle behind recombination is simple - by mating two individuals with different but desirable features, we can produce an offspring that combines both of those features.

重组可以理解为二元的变异算子(variation operator)

3.6 监督选择机制 (Survivor selection mechanism)

监督选择机制的作用就是用来从众多的个体中,区分出质量较好的那一部分。

和 父母选择 的区别:

1. 运用的阶段不同。监督选择机制将会用在,当新的子孙后代被产生以后。

2. 父母选择 通常会带有随机性质(stochastic),而监督选择机制则是具有确定性的(deterministic)

3.7 初始化(Initialisation)

讲了那么多进化,那第一代的population是怎么来的呢。

The first population is seeded by randomly generated individuals.

这说起来挺神奇的,就是这么随机出来的。。。后面会详细说。

3.8 终止条件(termination condition)

一直在进化,那总得有个尽头吧,就像递归一样,应该有个终止条件。

在有些问题当中,问题会给一个已知的标准,已知的优化适应标准,当达到 或者 在一定程度上接近这个标准以后,我们就可以停止了。

但是,在EA算法中往往有很多的随机性,因此并不能保证一定能达到那个标准。。。这样看来运算就永远无法停止。因此,为了解决这个问题,提供了如下标准作为停止算法的标准:

  • Reaching some (known/hoped for) fitness
  • Reaching some maximum allowed number of generations
  • Reaching some minimum level of diversity
  • Reaching some specified number of generations without fitness improvement

概念比较多,用一幅图小结一下:

伪代码:


4. 八皇后问题

上面讲得太抽象,下面讲一个简单的实例。

什么是八皇后问题?详见百度百科,这里介绍算法。

4.1 表达:

从图上看,表现型 就是棋盘上表现出的情况。基因型 就是那一组数字 13526478(每个数字代表了棋盘上的位置)

4.2 变异

4.3 重组

4.4 父母选择和监督选择

4.5 Summary

参考文献:教授PPT (Frank Neumann, The University of Adelaide)

Evolutionary Computing: 1. Introduction的更多相关文章

  1. Evolutionary Computing: 5. Evolutionary Strategies(2)

    Resource: Introduction to Evolutionary Computing, A.E.Eliben Outline recombination parent selection ...

  2. Evolutionary Computing: 4. Review

    Resource:<Introduction to Evolutionary Computing> 1. What is an evolutionary algorithm? There ...

  3. Evolutionary Computing: 5. Evolutionary Strategies(1)

    resource: Evolutionary computing, A.E.Eiben Outline What is Evolution Strategies Introductory Exampl ...

  4. Evolutionary Computing: [reading notes]On the Life-Long Learning Capabilities of a NELLI*: A Hyper-Heuristic Optimisation System

    resource: On the Life-Long Learning Capabilities of a NELLI*: A Hyper-Heuristic Optimisation System ...

  5. Evolutionary Computing: Assignments

    Assignment 1: TSP Travel Salesman Problem Assignment 2: TTP Travel Thief Problem The goal is to find ...

  6. Evolutionary Computing: multi-objective optimisation

    1. What is multi-objective optimisation [wikipedia]: Multi-objective optimization (also known as mul ...

  7. Evolutionary Computing: 3. Genetic Algorithm(2)

    承接上一章,接着写Genetic Algorithm. 本章主要写排列表达(permutation representations) 开始先引一个具体的例子来进行表述 Outline 问题描述 排列表 ...

  8. Evolutionary Computing: 2. Genetic Algorithm(1)

    本篇博文讲述基因算法(Genetic Algorithm),基因算法是最著名的进化算法. 内容依然来自博主的听课记录和教授的PPT. Outline 简单基因算法 个体表达 变异 重组 选择重组还是变 ...

  9. [Z] 计算机类会议期刊根据引用数排名

    一位cornell的教授做的计算机类期刊会议依据Microsoft Research引用数的排名 link:http://www.cs.cornell.edu/andru/csconf.html Th ...

随机推荐

  1. C# DataGrid合并单元格

    1.栏位枚举 private enum DataGridColumn { ROWNUM = , EMPID, EMPNAME, SEX, SALARY, ADRRESS, PHONE, TEL, PO ...

  2. Python开发【第九章】:线程、进程和协程

    一.线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 1.t ...

  3. cocos2dx 3.x(在Mac平台下利用Eclipse打包安卓apk安装包详细教程)

    最近在学习cocos2dx在MAC上如何打包apk,今天先把安装JDK和ANT的过程记来. 首先,打开终端,输入"java -version" 点击回车后,出现如下提示: 我们的M ...

  4. 树的Prufer 编码和最小生成树计数

      Prufer数列 Prufer数列是无根树的一种数列.在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2.它可以通过简单的迭代方 ...

  5. 使用 Redis 实现排行榜功能 (转载 https://segmentfault.com/a/1190000002694239)

    排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如"用户积分榜".如果没有实效性一直按照总榜来排,可能榜 ...

  6. 在linux中访问virtualbox的共享文件夹

    1.在客户机里需要安装Virtualbox的增强功能. 2.使用virtualbox的图形界面设置好共享文件夹. 3.假设你设置的共享文件夹的名称是 share,使用如下命令在客户机的linux系统中 ...

  7. Azure sdk for python

    http://www.oschina.net/translate/python-windows-azure Len  6:17:54 PM __author__ = 'len.li' from azu ...

  8. 改int非空自增列为int可为空列

    ) --声明读取数据库所有数据表名称游标mycursor1 open mycursor1 --从游标里取出数据赋值到我们刚才声明的数据表名变量中 fetch next from mycursor1 i ...

  9. :first-child 类似的 :first 匹配第一个元素,但是:first-child选择器可以匹配多个:即为每个父级元素匹配第一个子元素。这相当于:nth-child(1)

    描述: 在每个 ul 中查找第一个 li HTML 代码: <ul> <li>John</li> <li>Karl</li> <li& ...

  10. DDL、DML、DCL的理解

    1.DDL       1-1.DDL的概述                DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以 ...