博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Java遗传算法编程》—— 1.5 生物进化
阅读量:5990 次
发布时间:2019-06-20

本文共 1332 字,大约阅读时间需要 4 分钟。

本节书摘来异步社区《Java遗传算法编程》一书中的第1章,第1.5节,作者: 【英】Lee Jacobson(雅各布森) , 【美】Burak Kanber(坎贝尔),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 生物进化

生物通过自然选择的过程进化,这首先由达尔文(1859)在他的著作《物种起源》中提出。正是他的生物进化的概念,启发了早期的计算机科学家,转而用生物进化作为其优化技术的模型,并在进化计算的算法中实现。

因为在遗传算法中使用的许多思想和概念直接来自生物进化,对该主题有基本的了解,有利于深入了解这个领域。既然这样,在开始探索遗传算法之前,让我们先浏览一下生物进化的(有点简化)基础知识。

所有的生物都含有DNA,它编码了构成生物体的所有不同性状。DNA可以看成是生命的“说明书”,以便从头开始创建生物体。改变生物体的DNA会改变其性状,诸如眼睛和头发的颜色。DNA由单个基因组成,这些基因负责编码生物体的具体性状。

生物体的基因被分组放在染色体中,一套完整的染色体组成一个生物体的基因组。所有生物体至少具有一条染色体,但通常含有更多,例如人类有46条染色体,有些物种有超过1000条染色体。在遗传算法,我们通常将染色体称为候选解。这是因为遗传算法通常使用一条染色体来编码候选解。

对于特定性状的各种可能设置被称为“等位基因”,性状编码在染色体中的位置被称为“基因座”。我们将特定的基因组称为“基因型”,该基因型编码的物理生物体被称为“表现型”。

两个生物体交配时,来自两个生物体的DNA被带到一起,它们结合的方式导致产生的生物体(通常被称为的后代)从第一个亲代得到50%的DNA,并从第二个亲代得到另外50%的DNA。来自生物体DNA的基因偶尔会发生变异,为它提供双亲所没有的DNA。通过为种群增加以前没有的基因,这些变异为种群提供了遗传多样性。种群中的所有可能的遗传信息被称为种群的“基因库”。

如果产生的生物体对环境适应得足够好,能够生存,它自己很可能交配,让它的DNA继续留在未来种群中。然而,如果产生的生物体对环境适应得不够好,不能生存并最终交配,它的遗传物质将不会传播到未来种群中。这就是为什么进化偶尔被称为适者生存,因为只有适者才能达到个体生存并传递它们的DNA。正是这种选择性的压力,慢慢将进化导向发现越来越适应、越来越好的个体。

生物进化的一个实例

为了阐明这个过程如何逐渐导致进化出越来越适应的个体,请考虑下面的例子。

在一个遥远的星球上,存在一个物种,它的形状是白方块。

4fe0eaa9cdfec955556baf9989377aa4fe6cff02

白方块的物种已经和平生活了几千年,直到最近,一个新的物种赶到,即黑圆圈。

e2fb215f3c9fee56869ff4c469f0b90be6afc076

黑圆圈物种是食肉动物,并开始以白方块种群为食。

3370ed6293eaad5751d8141bf4e3700240bc4d3d

白方块没有任何办法来保护自己并抵抗黑圆圈。直到有一天,一个幸存的白方块随机变异,从一个白方块变成一个黑方块。黑圆圈不再以新的黑方块为食,因为它的颜色和自己一样。

3388d02ddc98b2c93a737d2dd40f465fddb1f885

一些幸存的方块种群交配,造就了新一代方块。这些新方块继承了黑方块的颜色基因。

f81762986505268cecc4ec1abeeef63daa168ca0

然而,白方块继续被吃掉......

0f771af12d3df5699cb81ac81e9f832ab43612c7

最后,由于黑方块的进化优势,看起来类似黑圆圈,他们不再被吃了。现在,只剩下黑方块了。

5672f9a7e7265cf748b0fe6baa27c307440f768f

黑方块不再畏惧黑圆圈,它们再一次自由地生活在和平之中。

97defdc77762c5e0f0c657dd90a65ae05f2d4b63

转载地址:http://gcilx.baihongyu.com/

你可能感兴趣的文章
jqgrid比较使用频繁但偏冷门的知识点
查看>>
Java并发编程71道面试题及答案
查看>>
JAVA S3 Example
查看>>
iOS代码分享:分享、加密、解析、二维码、Http多线程、重力感应、常用界面重载等...
查看>>
tomcat线程模型
查看>>
JAVA ArrayList 源码学习
查看>>
在使用jersey框架搭建服务时,经常会报出如下异常
查看>>
maven -- profile
查看>>
结合简单demo分析线程及多线程的使用
查看>>
open source in android platform (./configure)
查看>>
电影《降临》,简直就是在讲BitCoin的故事啊
查看>>
boost静态链接库和c++/clr不兼容问题:未能加载文件或程序集,不是有效的Win32应用程序。...
查看>>
jQuery取得select选择的文本与值
查看>>
ORACLE体系结构--密码文件管理
查看>>
Spring6:基于注解的Spring MVC(上篇)
查看>>
线性代数---线性相关和生成子空间
查看>>
robotium之基本操作和log操作
查看>>
Struts秘籍之第2段:第3.8式:使用JavaScript动态改变选择项
查看>>
hexo 搭建个人主页的一些问题总结
查看>>
linux用户管理(1)----创建用户(adduser和useradd)和删除用户(userdel)
查看>>