欢迎访问喜蛋文章网
你的位置:首页 > 经典文章 > 文章正文

能看懂的遗传算法及matlab实例代码详解(1)

时间: 2021-07-19 22:27:24 | 作者:拾華 | 来源: 喜蛋文章网 | 编辑: admin | 阅读: 105次

能看懂的遗传算法及matlab实例代码详解(1)

第一篇文章先写写概念引出(其实就是想到哪里写到哪里),这篇文章暂时这样,以后会有更改,我想把这个文章写个系列,主要还是随手写写,又不妥当的地方希望大家能够指出。这个系列应该在本月能写完,以后我也想多写点这些方面的东西,借由本文,与诸位共勉。

第一篇文章是遗传算法的生物学概念,暂时还没涉及算法。

遗传算法是模拟生物在自然环境下遗传和进化的过程而形成的自适应全局优化算法。这里的生物是指类似猫,狗,老虎,人之类的比较高级的生物。

学过高中生物的人都知道(划掉),我们来复习一下高中生物的遗传部分。

首先我们要知道:啥是DNA(基因)

DNA是由A T C G 四种核苷酸经过一系列排列构成的,这里的排列是线性且成对的(如图)

(图片质量不佳,请见谅 )

而DNA与蛋白质组合后经过高度螺旋后,就变成了染色体,在接下来的叙述中蛋白质并没有卵用,所以我们忽视它。

然后我们还需要知道:啥是变异

变异分为两类:基因突变和染色体变异,我们先说染色体变异。

染色体的种类比较多,因此我们只考虑一种比较简单的情况:交叉交换

先看图有个基础概念,后面会把这个模型接着简化

关于基因突变就比较简单了,连图都不用上,就是DNA中的核苷酸序列突然有几个突然变了(比如A换成了T......之类的)

另外有一点需要强调:这两种变异都是有概率发生的。

最后我们还有知道一些关于种群的东西。

不上定义了,举个例子:

假如你有一群羊,这一群羊就是一个群体,而其中的一只羊就是一个个体,每只羊身上都携带者DNA(即遗传编码),因此每只羊在繁殖的时候都有概率发生基因突变或者染色体变异,而且羊群的生存环境不很优越,也就是自然环境对每只羊都有选择压力,所以每只羊对环境都有适应度,反过来说环境对羊群有选择。

现在我们想要一群高个子的羊,为了得到这个结果,我们采取这样一个方案:先让羊群繁殖一代,在所有的羊中挑选那些长得比较高的羊,没有选中的羊全部杀死,再让这群羊繁殖一代,再次在羊群中选择那些比较高的,剩下的羊全部杀死,以此循环几代,几代过后,理论上来说,剩下的羊都是些高个子的山羊。

我们分析下这种方案:在适应度方面,对于每一只羊来说,它们对于环境的适应度也不尽相同,适应度高的个体活下来的机率会更大,换言之这些活下来的个体繁殖出下一代的个体的机率也就越大。可以预见,当繁殖代数越来越高,种群中个体的平均适应度也就会越来越高。

而对于变异对种群的影响:要考虑到这样一个因素:可能会存在这样一种情况(陷入局部最优解),用文字解释不如图表来的直观,所以看图

global是全局,local是局部

一图胜千言,所以要引入一些随机因素,使得我们寻找的点不能过于集中,虽然这使得计算量增加,但是它能使得对于问题的求解更加全面,不会使问题陷入局部最优解。

遗传和变异是生物进化的驱动力,遗传使得子代与父代之间的基因具有相似的地方,而变异是指子代个体在性状上具有些许差异。

如果一个变异可以提升这个个体的适应度,那么这个个体生存下来并繁殖后代的可能性也就越大,而这个突变基因在种群中的数量也就会越来越多。

当有多种变异产生的时候,会有一种适应度最高的变异组合,在繁殖次数足够的情况下,最后适应度最高的个体(携带者适应度最高的变异组合)被选出,而这个个体在一般情况下离我们想要的值(全局最优解)很接近。

因此,我们总结下生物遗传和进化的规律:

1.生物的所有遗传信息都包含在其染色体中,染色体决定了生物性状。而染色体是由基因及其有规律的排列所构成的。

2.生物的繁殖过程是由其基因的复制过程来完成的。同源染色体的交叉或变异会产生新的基因,从而产生新的性状。

3.对于环境的适应能力强的基因或染色体,比适应能力差的基因和染色体有更多的机会遗传到下一代。

上述是遗传算法的生物学基础,下篇文章我想写一些遗传算法在用程序设计中的合理性,也就是遗传算法为啥能用,为啥好用的基础。

文章标题: 能看懂的遗传算法及matlab实例代码详解(1)
文章地址: http://www.xdqxjxc.cn/jingdianwenzhang/115587.html
Top