遗传算法入门(一)

(一)遗传算法简介

遗传算法的概念最早是由 Bagley J.D 于1967年提出,后来Michigan大学的 J.H.Holland 教授于1975年开始对遗传算法的机理进行系统化的研究。遗传算法是受达尔文进化论启发,借鉴生物进化过程而提出的一种启发式搜索算法,它是对达尔文生物进化理论的简单模拟,遵循“适者生存”、“优胜略汰”的原理。遗传算法Genetic Algorithm,GA)又叫基因进化算法,或进化算法,它模拟一个人工种群的进化过程,并且通过选择、杂交以及变异等机制,种群经过若干代后总是达到最优(或近最优)的状态。因此在介绍遗传算法前有必要简单的介绍生物进化知识。

(二)进化论知识

作为遗传算法生物背景的介绍,下面内容了解即可:

种群(Population):生物的进化以群体的形式进行,这样的一个群体称为种群。

个体:组成种群的单个生物。

基因(Gene):一个遗传因子。 

染色体(Chromosome):包含一组的基因。

生存竞争,适者生存:对环境适应度高的个体参与繁殖的机会比较多,后代就会越来越多。适应度低的个体参与繁殖  的机会比较少,后代就会越来越少。

遗传与变异:新个体会遗传父母双方各一部分的基因,同时有一定的概率发生基因变异。

简单说来:繁殖过程会发生基因交叉(Crossover)、基因突变(Mutation),适应度(Fitness)低的个体会被逐步淘汰,而适应度高的个体会越来越多。那么经过N代的自然选择后,保存下来的个体都是适应度很高的,其中很可能包含史上产生的适应度最高的那个个体。

现代生物遗传学中描述的生物进化理论
遗传物质的主要载体是染色体(chromsome),染色体主要由DNA蛋白质组成。其中DNA为最主要的遗传物质。基因(gene)是有遗传效应的片断,它存储着遗传信息,可以准确地复制,也能发生突变,并可通过控制蛋白质的合成而控制生物的状态。生物自身通过对基因的复制(reproduction)和交叉(crossover,即基因分离,基因组合和基因连锁互换)的操作,使其性状的遗传得到选择和控制。生物的遗传特性使生物界的物种能保持相对的稳定;生物的变异特性使生物个体产生新的性状,以至于形成新的物种(量变积累为质变),推动了生物的进化和发展。

(三)遗传学基本概念与术语

基因型(genotype):性状染色体的内部表现。

表现型(phenotype):染色体决定性状的外部表现,或者说,根据基因型形成的个体。

进化(evolution):逐渐适应生存环境,品质不断得到改良。生物的进化是以种群的形式进行的。

适应度(fitness):度量某个物种对于生存环境的适应程度。

选择(selection):以一定的概率从种群中选择若干个个体。一般,选择过程是一种基于适应度的优胜劣汰的过程。

复制(reproduction):细胞分裂时,遗传物质DNA通过复制而转移到新产生的细胞中,新细胞就继承了旧细胞的基因。

交叉(crossover):两个染色体的某一相同位置处DNA被切断,前后两串分别交叉组合形成两个新的染色体。也称基因重组或杂交。

变异(mutation):复制时可能(很小的概率)产生某些复制差错,变异产生新的染色体,表现出新的性状。

编码(coding):DNA中遗传信息在一个长链上按一定的模式排列。遗传编码可看作从表现型到基因型的映射。

解码(decoding):基因型到表现型的映射。

个体(individual):指染色体带有特征的实体。
种群(population):个体的集合,该集合内个体数称为种群的大小。

(四)遗传算法思想

借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体。

举个例子,使用遗传算法解决“0-1背包”问题的思路:0-1背包的解可以编码为一串0-1字符串(0:不取,1:取)。首先随机产生M个0-1字符串,然后评价这些0-1字符串作为0-1背包问题的解的优劣;然后随机选择一些字符串通过交叉、突变等操作产生下一代的M个字符串,而且较优的解被选中的概率要比较高。这样经过G代的进化后就可能会产生出0-1背包问题的一个“近似最优解”。

编码:需要将问题的解编码成字符串的形式才能使用遗传算法。最简单的一种编码方式是二进制编码,即将问题的解     编码成二进制位数组的形式。例如,问题的解是整数,那么可以将其编码成二进制位数组的形式。将0-1字符     串作为0-1背包问题的解就属于二进制编码。

遗传算法有3个最基本的操作:选择交叉变异

选择:选择一些染色体来产生下一代。一种常用的选择策略是“比例选择”,也就是个体被选中的概率与其适应度函     数值成正比。假设群体的个体总数是M,那么一个个体Xi被选中的概率为f(Xi)/(f(X1)+f(X2)+…+ f(Xn))。     比例选择实现算法就是所谓的“轮盘赌算法”(Roulette Wheel Selection)。

交叉:两条染色体交换部分基因来构造下一代的两条新的染色体。例如:

交叉前:

00000|011100000000|10000

11100|000001111110|00101

交叉后:

00000|000001111110|10000

11100|011100000000|00101

染色体交叉是以一定的概率发生的,这个概率记为Pc。

变异:在繁殖过程,新产生的染色体中的基因会以一定的概率出错,称为变异。变异发生的概率记为Pm 。例如:

变异前:

000001110000000010000

变异后:

000001110000100010000

适应度函数(Fitness Function):用于评价某个染色体的适应度,用f(x)表示。有时需要区分染色体的适应度函数与问题的目标函数。例如:0-1背包问题的目标函数是所取的物品价值,但将物品价值作为染色体的适应度函数可能并不一定适合。适应度函数与目标函数是正相关的,可对目标函数作一些变形来得到适应度函数。

补充:轮盘赌选择

具体操作如下:
(1)计算出群体中每个个体的适应度f(i=1,2,…,M),M为群体大小;
(2)计算出每个个体被遗传到下一代群体中的概率;


(3)计算出每个个体的累积概率;


(q[i]称为染色体x[i] (i=1, 2, …, n)的积累概率)


(4)在[0,1]区间内产生一个均匀分布的伪随机数r;
(5)若r<q[1],则选择个体1,否则,选择个体k,使得:q[k-1]<r≤q[k] 成立;
(6)重复(4)、(5)共M次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值