遗传算法集智百科

遗传算法GeneticAlgorithms的基础是“染色体是一串基因”这一经典观点。R.A.费舍尔使用这种观点建立了数理遗传学MathematicalGenetics,提供了数学公式来说明特定基因在整个种群中的扩散速率(Fisher,1958)。费舍尔的工作可以总结为以下关键要点:

在这种表述中,自然选择NaturalSelection可以被认为是一种搜索方法,用以搜索可能个体集合(即搜索空间),以找到具有更高适应度的个体。即使当自然种群仅由一个物种组成时(例如,当前这一代人类),该种群中也存在相当大的差异。这些变体就构成搜索空间的所有样本。

遗传算法是Fisher公式的一种泛化后的计算机程序版本(HollandJ,1995),泛化的要点包括:

上述第一种泛化使得适应度函数变成了一个复杂的非线性函数,不能再简单地用各个基因效应的加和来近似。第二种泛化则强调了像交叉这种作用于染色体的常见遗传算子。交叉操作在每一次染色体配对中都会出现,而变异操作则在每一百万个个体中才可能出现一次。交叉是哺乳动物能产生混合了亲代特征的子代的核心原因。人类群体就是最生动的例证。交叉还使得使用人工杂交育种来创造出具有优良特征的变种动植物成为可能。很显然,交叉的高频出现使得它成为演化中的一个重要角色,以及遗传算法中的一个关键步骤。

交叉算子的最简单形式(单点交叉)可以被很容易的定义:两条染色体对齐排列好,随机选择染色体上的一点,两条染色体交换从该点起直到末尾的这一段,从而生成了两个后代染色体。

这种简单版本的交叉操作能很好地近似在实际的配对中出现的交叉现象。在单点交叉的作用下,同一条染色体中,相距较近的等位基因可能会被分配到同一个后代中,而相距较远的等位基因则更可能被分割开来,分配到不同的后代中。比如,在一条有1001个等位基因的染色体中,只有1/1001的概率使得一堆邻近的等位基因被分隔开,而在染色体头尾两端的基因则总是会被分割开来。在标准的遗传学术语中,这种现象叫做连锁linkage。通过观察由等位基因决定的性状在后代中被分割的频率,连锁现象就可以被确定。事实上,假设单点交叉就能让基因测序变得可能,即便我们没有任何关于DNA的知识——在1944年,使用实验方法来确定连锁效应,华盛顿卡内基研究所CarnegieInstitutionofWashington就发表了一大本记录了果蝇基因序列的手册(Lindsley&Grell,1944)。

在费舍尔的工作基础上,遗传算法使用了不同的适应度。但是遗传算法着重强调了由交叉算子产生的变异。基本的遗传算法程序通过下列步骤来根据当代群体产生后代群体(为简单起见,假设每一个个体都只有一个染色体):

当然,可以有很多种修改这些步骤的方法,但这个基本的流程已经展示了遗传算法的基本性质。

交叉算子在后续世代的研究中引入了大量的复杂性:在亲代中极其有效的个体(比如爱因斯坦)在后代中不会出现,因为该个体中地等位基因被分割开来,传到了不同的后代个体中。这就引发了一个重要的问题:如果不是亲代的染色体,那到底是什么在一代又一代中遗传着呢?回答这个问题,需要预测在一代又一代中扩散的等位基因团,还需要对费舍尔的基本理论做进一步的扩展和泛化。模式定理SchemaTheorem就是这么一个泛化。模式定理把任意一个等位基因团成为“模式”。一个模式使用符号*来表示染色体中不属于该模式的位置。例如,如果一个位置中有两个不同的等位基因,分别为1和0,那么位置2为1,位置4为0,位置5为0的基因团就被表示成符号串*1*00**...*。用N(s,t)表示在第t代中携带模式s的染色体数目模式定理揭示了携带模式s的染色体在下一代中预期的数目[math]\displaystyle{N(s,t+1)}[/math]。下面是一个简化后的版本:

其中[math]\displaystyle{u(s,t)}[/math]指在第[math]\displaystyle{t}[/math]代中携带模式[math]\displaystyle{s}[/math]的染色体的平均适应度,[math]\displaystyle{e}[/math]指模式s会被变异算子和交叉算子破坏的概率(通常会很小,但如果模式中的等位基因在染色体中分布很广,即模式的长度很大,则[math]\displaystyle{e}[/math]会很大)。上述公式可以被重写为一个概率值形式[math]\displaystyle{P(s,t)\,}[/math],这是在数理遗传学中更加典型的形式:[math]\displaystyle{P(s,t)=N(s,t)/N(t)\,}[/math],其中[math]\displaystyle{N(t)}[/math]是群体在第[math]\displaystyle{t\.}[/math]代的规模。

模式定理说明了,群体中每一个等位基因团的比例都会提高或降低,其速率由它所能带来的平均适应度决定。特别地,能带来更高适应度的模式,会在群体中快速传播开来。结果就是,交叉算子会使用这些高于平均适应度的模式,尝试各种新的组合。这些模式成为了构建解的组件块buildingblocks。尽管遗传算法每一代只处理[math]\displaystyle{N(t)}[/math]个符号串,它能有效处理在群体中承载的多得多的模式。比如,一个长度为40的符号串中包含的模式的数量为[math]\displaystyle{2*exp(40)\sim16,000\,}[/math],因此遗传算法只要处理几十个长度为40的符号串,就能处理成千上万个模式。这是一个及其出色的速度。

遗传算法经常被用于为那些没有标准解法(如梯度上升、相加近似)的问题寻找一个好的解(Mitchell,2009)。一些已经应用了遗传算法的典型问题包括控制流设计、飞机引擎设计、规划、蛋白质折叠、机器学习、对语言的获取和演化建模、以及对复杂适应系统(例如市场和生态系统)建模等。要使用遗传算法,搜索空间必须被表示成用一个固定符号集生成的一组符号序列,就像生物的染色体只由四种碱基构成一样。这些符号串可以表示任何事物,从生物体,到信号处理规则,到复杂实应系统中的智能体等。遗传算法要初始化一个由这些符号串组成的群体,这可以用随机的方式生成,也可以用一些关于问题的先验知识来生成。然后,遗传算法就会处理这些符号串,后续的世代就会显示出一些模式,这些模式能是个体拥有高于平均值的适应度。当高于平均、优良连接的模式频繁地出现时,遗传算法就会迅速发现并用来优化。

下面是一个用python实现的简单遗传算法示例,要解决的问题是求下面函数在区间[math]\displaystyle{[0,127]}[/math]内的最大值点。

[math]\displaystyle{f(x)=x^2-50x}[/math]

下面代码仅作演示目的,没有遵循严格的编程规范,且可能有各种奇奇怪怪的bug,望体谅。

THE END
1.470有位小朋友问的数学冷知识,二进制是怎么算的?我们来聊聊470有位小朋友问的数学冷知识,二进制是怎么算的?我们来聊聊我服子佩 澳大利亚,新南威尔士州 1 打开网易新闻 体验效果更佳上课不认真听讲会怎么样,老师一个生动比喻,让学生瞬间懂了 篮球搞笑 1932跟贴 打开APP 老外发明新高科技,一顿操作伤脑筋,这是告诉我们折射原理 萌小宠搞笑 1732跟贴 打开APP 5次解方程,https://m.163.com/v/video/VNIE9UD26.html
2.10的二进制如何计算?二进制是计算机中使用的基础数字系统。它使用 0 和 1 来表示数字。要将一个十进制数转换为二进制数,可以使用以下步骤:将十进制数除以 2,并记录余数。将除数除以 2,并记录余数。重复步骤 2,直到除数为 0。将余数逆序排列,得到二进制数。例如,要将 10 转换为二进制数,可以按照以下步骤进行操作:10 / 2https://baijiahao.baidu.com/s?id=1782697389644312276&wfr=spider&for=pc
3.深入理解二进制向量的加减运算(什么叫二进制向量的加减)问题:什么叫二进制向量的加减 答案: 在计算机科学和数学领域,二进制向量加减是基础且重要的运算方式。 二进制向量,即由0和1组成的数组,是计算机存储和处理信息的基本形式。 首先,我们来看看什么叫二进制向量的加法。二进制向量的加法类似于小学时学习的十进制加法,遵循“逢二进一”的原则。例如,1加1等于10,在二https://www.zaixianjisuan.com/jisuanzixun/shenrulijieerjinzhixiangliangdejiajianyunsuan.html
4.二进制中的RC4以及提高出题难度的方法不管是在哪个方向,只要与信息有关,都会涉及到密码学。在二进制中会分析大量的加密算法,在web分析中也纯在很多加密方式,今天我就用通俗的语言来分析从浅入深的分析RC4加密算法,并且涉及到其实战中的算法分析。让我们在二进制分析中更加游刃有余。 什么是RC4加密算法?https://xz.aliyun.com/t/5644
5.深入理解二进制算法必备底层知识6的二进制如何计算深入理解二进制 算法必备底层知识 深入理解二进制 计算机储存方式 二进制 原码、反码、补码 为什么使用补码 八进制和十六进制 位运算 位操作符 补码运算 位运算的应用 计算机储存方式 二进制 在计算机世界里,所有的信息都是以二进制的形式组成的,比如一个整型数字3,在计算机中的存在形式是0000 0000 0000 0000 0000 https://blog.csdn.net/weixin_52115456/article/details/119149687
6.二进制八进制十进制十六进制转换算法将十进制转换为二进制、八进制、十六进制 将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。 1) 整数部分 十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是: 将N 作为除数,用十进制整数除以 N,可以得到一个商和余数; https://www.jianshu.com/p/5cb29fc43dd8
7.二进制转八进制算法算法公共参数华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:二进制转八进制算法。https://support.huaweicloud.com/topic/364270-4-E
8.张维为:读不懂中国共产党是西方误读关键丨嘉宾新著先睹?*二进制算法源自莱布尼茨从《周易》中受到的启发 可以说,从整个16—18世纪我们看到的是“中学西渐”,也就是中国的哲学、文学、艺术等,随着中国的物质文明不断地涌入欧洲,影响了欧洲人的物质和精神生活。 德国哲学家莱布尼茨如此渴望得到关于中国的知识,他在给朋友的信中说,他准备在自己的房门上贴一块牌子,上面写https://www.whb.cn/zhuzhan/jtxw/20190918/287170.html
9.二进制与十进制的讲解与转换「建议收藏」腾讯云开发者社区在了解二进制之前,我们先来说一下我们最常接触的十进制。 什么是十进制呢? ? 用白话文来讲,十进制就是以 【 0 1 2 3 4 5 6 7 8 9 】 十个数字为基数的一个计数方法,简单来说就是逢十进一。 我们在使用十进制进行计数的时候,往往都是从0 开始,逐一递加,当数到的数字我们用基数已经无法计数https://cloud.tencent.com/developer/article/2149639
10.二进制算法二进制算法怎么算常见问题二进制算法是一种基于二进制数的运算方法,其基本运算包括加法、减法、乘法和除法。除了基本运算外,二进制算法还包括逻辑运算、位移运算等操作。逻辑运算包括与、或、非等操作,位移运算包括左移和右移操作。这些操作都有对应的规则和操作数的要求。 二进制算法是一种基于二进制数的运算方法,其基本运算包括加法、减法、https://m.php.cn/article/655748.html
11.二进制搜索算法7篇(全文)假设标签的编码长度为L, 在二进制搜索算法中, 请求命令中每次发送标签编码的序列号。因此, 其发送的二进制编码长度为Len=L;动态二进制算法每次发出的平均二进制编码的长度Len= (1+L) /2[7];而本算法中, 发送请求命令的第2个参数是最高碰撞位, 它只与L有关, 即Len=log2L+1。因此, 本算法每次请求命令https://www.99xueshu.com/w/ikeyzw827bmj.html
12.二进制图文详解二进制图文详解 二进制Binary 2进制 逢二进一的计数规则。 在计算机内部,一切数据都是2进制的!! 2进制的数字 补码 补码本质是一种解决负数问题的算法。 1. 将数据的一半当做负数使用。 2. 补码在内存中是2进制的,显示的时候为10进制。 - Java利用算法支持了补码计算: - Integer.parseInt() - Integer.https://www.coder100.com/index/index/content/id/1466110
13.二进制转十进制算法宜城教育资源网www.ychedu.com二进制转十进制算法_二进制转十进制公式二进制二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是"逢二进一",借位规则是"借一当二",由18世纪德国数理哲学大师莱布尼兹发现。再联想到二进制转十进制二进制转为十进制的时候,先http://qt.ychedu.com/MFJA/QNJJA/602654.html
14.二进制相减的算法图解理想股票技术论坛本文介绍了二进制相减的算法,并通过图解的方式详细展示了二进制减法的步骤和原理,让读者能够更好地理解和掌握这一计算方法。通过学习本文,读者可以快速而准确地进行二进制数的相减运算。 ,理想股票技术论坛https://www.55188.com/misc.php?mod=tag&id=555112
15.如何理解二进制的概念?写代码的cc:10分钟带你了解什么是二进制776 赞同 · 139 评论文章 什么是“二进制”?-科普100问https://www.zhihu.com/question/583380263/answer/2894734913?utm_id=0
16.主题曲《恋爱算法》MV甜蜜来袭:二进制时空与你邂逅电视剧主题曲《恋爱算法》MV甜蜜来袭:二进制时空与你邂逅 节目简介 恋爱指南我指北 导演:王源 主演:李思奇 / 文渊 / 王祖一 / 吕妍 / 余衍隆 / 叶皓然 / 谢泽成 地区:内地 类型:爱情/ 都市 / 芒果出品 简介:996游戏开发师谢恩与冰山男投资人仇景明,因一款圆梦游戏《白日梦想家》意外卷入游戏世界,重返校园,从甲https://www.mgtv.com/b/381014/13106959.html