遗传算法入门(连载之一)

2024-06-10 14:08
文章标签 遗传算法 连载 入门

本文主要是介绍遗传算法入门(连载之一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在学习有关遗传算法和神经网络方面的知识,网上查看了很多这方面的秘笈,只怪小生天生愚钝、才疏学浅,不能很好的领悟秘笈中的真谛,往往被弄得晕头转向、不知所措 快哭了 委屈。直到有一天无意中看到了博主zzwu写的有关这方面的文章,初读之,如温旧习;渐深入,觉甚好;遂一气呵成,犹如拨云见日、茅塞顿开。余甚怕在茫茫Internet中再无机会拜读之,遂收藏于此,以便众人观之,绝无其他不良用途。在此对博主再次深表感谢。博文转自:http://blog.csdn.net/zzwu/article/details/561577





(连载之一)
.
扎自<游戏编程中的人工智能技术>第三章
清华大学出版社出版


生物只有经过许多世代的不断演化(evolution),才能更好地完成生存与繁衍的任务。遗传算法也遵循同样的方式,需要随着时间的推移不断成长、演化,最后才能收敛,得到针对某类特定问题的一个或多个解。因此,了解一些有关有生命的机体如何演化的知识,对理解遗传算法的演化机制是是有帮助的。本章的开始几页将扼要阐述自然演化的机制(通常称为“湿”演化算法),以及与之相关的术语。即使你当年在中学里对生物并不擅长,也无须担心。本章不会涉及到过深的细节,但对于理解自然演化的基本机制已经足够。抛开以上不论,当你读完本章或下一章后,我想,你也会和我一样,深深叹服自然母亲的令人着迷!

。。从本质上说,任何生物机体不过就是一大堆细胞的集合。每个细胞都包含若干组相同的DNA链,人们一般称之为染色体(chromosome)。染色体中包含的DNA分为两股,这两股DNA链以螺旋状绞合在一起,如下面图3.1所示那样,这就是我们所熟悉的DNA双螺旋结构模型。



图 3.1 DNA双螺旋结构 
 

。。单个的染色体是由称作基因(gene)的更小的结构模块组成,而基因则又由称作核苷酸(nucleotide)的物质组成。核苷酸一共只有四种类型,即:腺嘌呤(thymine)、鸟嘌呤(adenine)、胞嘧啶(cytocine)、胸腺嘧啶(guanine)。它们常简写为T、A、C、G(我不知道为什么?...<一笑>)。这些核苷酸相互连接起来,形成若干很长的基因链,而每个基因编码了生物机体的某种特征,如头发的颜色,耳朵的样子,等。一个基因可能具有的不同设置(如头发的黑色、棕色或金黄色),称为等位基因(allele),它们沿染色体纵向所处的物理部位称为基因的座位(locus)。

。。一个细胞中的染色体组(collection)包含了复制该机体所需的全部信息。这就是克隆怎样实行的秘密。你可以从被克隆施主(donor)身上,哪怕是一个血细胞中包含的信息,复制出整个生物机体,例如一头羊。新的羊将会在每一个方面和施主羊完全相同。染色体的这一集合就称为生物机体的基因组(genome)。在一特殊基因组中等位基因的一种状态称为该机体的遗传类型(genotype)。这些就是用来生成实际的生物机体  - 所谓表现型(phenotype) - 本身的硬编码指令。你和我都是表现型。我们的DNA携带了我们的遗传类型。如将这些术语用到其他领域中,则,设计汽车用的成套蓝图就是一个遗传类型;在生产线上隆隆作响的成品汽车就是一个表现型;只有设计被定型之前的,那些完全阵旧的设计,才勉强称得上是一个基因组。

。。行了,行话说到此已经足够了。现在让我们讨论,怎样把所有这些应用到进化中去。如果你属于偶尔有机会离开计算机屏幕的那种人(因为我的朋友告诉我,我才知道外边还有一个世界呢!),你可能已经注意到,对于千千万万的动物和植物 - 小到只有在显微镜下才能看到的单细胞生物,大到从空间卫星上也能见到的巨大珊瑚礁 - 地球是它们共同的家,不管它们的大小怎样、形状或颜色又怎样。一个生物机体被认为取得了成功,如果它得到了配偶并生下了一个子机体,而后者完全有希望来继续进一步复制自己。

。。为了做到这一点,生物机体必须善长许多工作。例如,能寻找食物和水、能面对掠食者来保卫自己、能使自己吸引潜在的配偶,等。所有这些特长在某种程度上都和生物机体的遗传类型 - 生命的蓝图有关。生物机体的某些基因将会产生有助于它走向成功的属性,而另一些基因则可能要妨碍它取得成功。一个生物的成功的量度就是它的适应性。生物机体愈能适应,它的子孙后代也就愈多。下面转来讨论我们的关键部分...

。。当两个生物机体配对和复制时,它们的染色体相互混合,产生一个由双方基因组成的全新的染色体组。这一过程就叫重组(recombination)或交叠(crossover,又译杂交,交叉,交换)。这样就意味,后代继承的可能大部分是上一代的优良基因,也可能继承了它们不少的不良基因。如果是前一种情况,后代就可能变得比它的父母更能成功(例如,它对掠食者有更强的自卫机制);如为后一种情况,后代甚至就有可能不能再复制自己。这里要着重注意的是,愈能适应的子孙后代就愈有可能继续复制并将其基因传给下一个子孙后代。由此就会显示一种趋向,每一代总是比其父母一代生存和匹配得更完美。

。。作为它的一个很方便得到的例子,我们设想,雌性动物仅仅吸引大眼睛的雄性。这样,在追求雌性配偶的雄性中,眼睛的尺寸愈大,其获得成功的可能性也愈大。你可以说,动物的适应性正比于它的眼睛的直径。因此,你就可以看到,从一个具有不同大小眼睛的雄性群体出发,当动物进化时,在同位基因中,能产生大眼睛雄性动物的基因,相对于产生小眼睛雄性动物的基因,就更有可能被复制到下一代。由此可以推出,当进化几代之后,大眼睛将会在雄性群体占据统治地位。过些时候,你就可以说,生物正在向一种特殊的遗传基因收敛。



-连载1完-


这篇关于遗传算法入门(连载之一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048373

相关文章

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C++学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数? void swap(int& x, int& y){int tmp = x;x = y;y = tmp;} 相信大家很快就能写出上面这段代码,但是如果要求这个交换函数支持字符型

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

C++入门01

1、.h和.cpp 源文件 (.cpp)源文件是C++程序的实际实现代码文件,其中包含了具体的函数和类的定义、实现以及其他相关的代码。主要特点如下:实现代码: 源文件中包含了函数、类的具体实现代码,用于实现程序的功能。编译单元: 源文件通常是一个编译单元,即单独编译的基本单位。每个源文件都会经过编译器的处理,生成对应的目标文件。包含头文件: 源文件可以通过#include指令引入头文件,以使

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级

打造坚固的SSH防护网:端口敲门入门指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 打造坚固的SSH防护网:端口敲门入门指南 前言什么是端口敲门端口敲门的优点1. 增强安全性2. 动态防火墙规则3. 隐匿服务4. 改善日志管理5. 灵活性和兼容性6. 低资源消耗7. 防御暴力破解和扫描8. 便于合法用户访问9. 适用于不同类型的服务 端口敲

好书推荐《深度学习入门 基于Python的理论与实现》

如果你对Python有一定的了解,想对深度学习的基本概念和工作原理有一个透彻的理解,想利用Python编写出简单的深度学习程序,那么这本书绝对是最佳的入门教程,理由如下:     (1)撰写者是一名日本普通的AI工作者,主要记录了他在深度学习中的笔记,这本书站在学习者的角度考虑,秉承“解剖”深度学习的底层技术,不使用任何现有的深度学习框架、尽可能仅使用基本的数学知识和Python库。从零创建一个

手把手教你入门vue+springboot开发(五)--docker部署

文章目录 前言一、前端打包二、后端打包三、docker运行总结 前言 前面我们重点介绍了vue+springboot前后端分离开发的过程,本篇我们结合docker容器来研究一下打包部署过程。 一、前端打包 在VSCode的命令行中输入npm run build可以打包前端代码,出现下图提示表示打包完成。 打包成功后会在前端工程目录生成dist目录,如下图所示: 把

CALayer入门

iOS开发UI篇—CALayer简介 一、简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可