1. Introduction ——进化算法

本系列博客开始介绍进化算法。

知识内容来源于本人在硕士阶段听的课程以及阅读的文献书籍。算是听课笔记或是读书笔记吧。

博主在国外读的书,可能就中英文混杂了。


Outline

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

1. 什么是进化算法

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

<图片来源于,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.

简单说这个进化算法就是用来解决如何进行improvement的。

3.3 人口 (Population)

A population is a multiset of genotypes.

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

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

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

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

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

3.5 Variation operators

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算法中往往有很多的随机性,因此并不能保证一定能达到那个标准。。。这样看来运算就永远无法停止。因此,为了解决这个问题,我们还提供了如下标准作为停止算法的标准:

  • The maximally allowed CPU time elapses.
  • The total number of fitness evaluations reaches a given limit.
  • The fitness improvement remains under a threshold value for a given period of time (i.e., for a number of generations or fitness evaluations).
  • The population diversity drops under a given threshold.

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

伪代码:


4. 八皇后问题

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

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

4.1 表达:

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

4.2 变异

4.3 重组

4.4 父母选择和监督选择

4.5 Summary

参考文献:主要来源笔记和教授的PPT。Frank Neumann, The University of Adelaide

时间: 2024-12-25 07:13:16

1. Introduction ——进化算法的相关文章

2. Genetic Algorithm(1) ——进化算法

本篇博文讲述基因算法(Genetic Algorithm),基因算法是最著名的进化算法. 内容依然来自博主的听课记录和教授的PPT. Outline 简单基因算法 个体表示 变异 重组 1. 简单基因算法(Simple Genetic Algorithm) Holland's早期的基因算法被认为是“简单的基因算法”或是“权威的基因算法”.(simple genetic algorithm or canonical genetic algorithm) 1. 直接举例说明 问题描述:利用遗传算法求

差分进化算法 (Differential Evolution)

Differential Evolution(DE)是由Storn等人于1995年提出的,和其它演化算法一样,DE是一种模拟生物进化的随机模型,通过反复迭代,使得那些适应环境的个体被保存了下来.但相比于进化算法,DE保留了基于种群的全局搜索策略,采用实数编码.基于差分的简单变异操作和一对一的竞争生存策略,降低了遗传操作的复杂性.同时,DE特有的记忆能力使其可以动态跟踪当前的搜索情况,以调整其搜索策略,具有较强的全局收敛能力和鲁棒性,且不需要借助问题的特征信息,适于求解一些利用常规的数学规划方法所

[Evolutionary Algorithm] 进化算法简介

进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算法,而是一个“算法簇”.进化算法的产生的灵感借鉴了大自然中生物的进化操作,它一般包括基因编码,种群初始化,交叉变异算子,经营保留机制等基本操作.与传统的基于微积分的方法和穷举方法等优化算法(具体介绍见博客[Math] 常见的几种最优化方法中的其他数学优化方法)相比,进化计算是一种成熟的具有高鲁棒性和广泛适用性的全局优化方法,具有自组织.自适应.自学习的特性,能够不受问题性质的限制,有效地

什么是遗传/进化算法?

这是基於 进化论 而启发出来的一种很特别的 机器学习 技巧.  我最近渐渐明白到它可能是破解 strong AI 的关键.  Ben Goertzel 和我见面的谈话中也特别注重这一方向.  原来 Alan Turing 很早就看到 进化 和 machine learning 之间有明显关系,而现时机器学习的一个很有名的研究者 Leslie Valiant 也在新书 (English version) 中谈论这课题. 进化论 首先,要理解什么是进化论.  举例来说,假设某只动物的基因变异 令牠比

Matlab微分进化算法及优化函数测试

微分进化(Difference Evolution,DE)算法是一种优化算法,据称其比GA(遗传算法)等更为优秀. 借鉴网上实现的DE算法,用Matlab实现了对若干函数优化问题的解法,代码如下: function [] = de_test clear all; close all; clc; %解:X = [0, 0, ...] %nVar = 30 %dims: [-30, 30]     function fitness = sphere(vals)         prod = vals

差分进化算法优化集成参数

一.差分进化的思想 差分进化是在遗传算法的基础上发展而来的,与遗传算法相似,有变异.交叉.选择等操作,但是实现简单,收敛速度快.差分进化的过程是随机生成一个初始化群体,经过交叉.变异.选择三个操作,反复迭代,保留有用的个体,寻找最优解. 差分进化利用了贪婪的思想,在每一次的迭代中,保留最优解.通过当前种群个体跟经过交叉.变异后的个体以适应度值为标准,进行比较,保留最优的个体. (1)初始化 (2)变异 (3)交叉 (4)选择 其中,F是变异因子,用来控制两个随机个体差分向量的缩放程度.CR是交叉

查分进化算法DE

% 差分进化算法程序  function DE        t0 = cputime;  %计时     %% 种群初始化     T = 1000;               % 最大迭代次数      F0 = 0.5;               % 变异率      N = 100;                % 种群大小      D = 10;                 % 每个个体染色体的个数,即所求问题的维数      CR = 0.3;              

差分进化算法-python实现

DEIndividual.py 1 import numpy as np 2 import ObjFunction 3 4 5 class DEIndividual: 6 7 ''' 8 individual of differential evolution algorithm 9 ''' 10 11 def __init__(self, vardim, bound): 12 ''' 13 vardim: dimension of variables 14 bound: boundaries

进化算法期末考试题目

题目: 小吃店的营业情况 某小吃店供应的一种特色点心很受欢迎,小吃店营业时间是上午8时至下午1时,顾客按表1所示规律到达该店.顾客往往是几个熟人一起来用点心的,经过一段时间的观察,每批顾客的人数如表2所示,每位顾客吃点心的份数如表3所示.每位顾客在小吃店的停留时间见表4,如有几个熟人一起进店用点心,则这群顾客在店中的停留时间是其中吃得最慢的顾客所停留的时间. 表1 顾客到达规律 顾客到达时间间隔/min 3 5 6 8 10 概率P 0.3 0.2 0.15 0.2 0.15 表2 每批顾客数