智能计算之遗传算法(GA)介绍

目录

1. 简介

2. GA思想来源及建立过程

3. 研究发展

4. GA的基本结构

5. GA的实现流程

(1) 染色体编​辑

(2) 群体的初始化

(3) 适应值评价

(4) 选择算子(父体选择)

(5) 交配算子(杂交算子)

(6) 变异算子

(7) 算法流程

6. 实例举例

7. 遗传算法的改进

(1) 算子的选择

(2) 参数设置

(3) 混合遗传算法

8. GA的应用


1. 简介

        遗传算法(Genetic Algorithm,GA)是进化计算的一个分支,是一种模拟自然界生物进化过程的随机自适应的全局搜索算法。

2. GA思想来源及建立过程

        GA思想源于自然界“自然选择”和“优胜劣汰”的进化规律,通过模拟生物进化中的自然选择和交配变异寻找问题的全局最优解。它最早由美国密歇根大学教授John H. Holland提出,现在已经广泛应用于各种工程领域的优化问题之中。

        GA是通过模拟自然界中生物的遗传进化过程,对优化问题的最优解进行搜索。算法维护一个代表问题潜在解的群体,对于群体的进化,算法引入了类似自然进化中选择、交配以及变异等算子。遗传算法搜索全局最优解的过程是一个不断迭代的过程(每一次迭代相当于生物进化中的一次循环),直到满足算法的终止条件为止。
        在遗传算法中,问题的每个有效解被称为一个“染色体(chromosome)”,在有些书籍中也称为“串”,相对于群体中的每个生物个体(individual)。染色休的具体形式是一个使用特定编码方式生成的编码串。编码串中的每一个编码单元称为“基因(gene)”

如图:

        遗传算法通过比较适应值(fitness value)区分染色体的优劣,适应值越大的染色体越优秀。评估函数(evaluation function)用来计算并确定染色体对应的适应值。

        选择算子按一定的规则对群体的染色体进行选择,得到父代种群。(一般的,越优秀的染色体被选中的次数越多。)

        交配算子作用于每两个成功交配的染色体,染色体交换各自部分的基因,形成两个子代染色体。子代染色体取代父代进入新种群,而没有交配的染色体自动进入新的种群。

        变异算子使得新种群进行小概率的变异。染色体发生变异的基因改变数值,经过变异的新种群替代原种群进入下一次进化。

在这里插入图片描述

        对于遗传算法的基本原理,Holland给出了著名的模式定理(Schema Theory),为遗传算法提供了理论支持
        模式(schema)是指群体中编码的某些位置具有相似结构的染色体集合。假设染色体的编码是由0或1组成的二进制符号序列,模式01***О则表示以01开头且以О结尾的编码串对应的染色体的集合,即{010000,010010,010100,010110,011000,011010,011100,011110}。模式中具有确定取值的基因个数叫做模式的阶(schema order),如模式01***0 的阶为3。模式的定义长度(schema defining length)是指模式中第一个具有确定取值的基因到最后一个具有确定取值的基因的距离,例如模式01***0的定义长度为5,而*1****的定义长度为0。
        Holland 的模式定理提出﹐遗传算法的实质是通过选择、交配和变异算子对模式进行搜索,低阶、定义长度较小且平均适应值高于群体平均适应值的模式在群体中的比例将呈指数级增长,即随着进化的不断进行,较优染色体的个数将快速增加。
        模式定理证明了遗传算法寻求全局最优解的可能性,但不能保证算法一定能找到全局最优解。Goldberg[10]在1989年提出了积木块假设(Building Block Hypothesis),对模式定理做了补充,说明遗传算法具有能够找到全局最优解的能力。
        积木块(building block)是指低阶、定义长度较小且平均适应值高于群体平均适应值的模式。积木块假设认为在遗传算法运行过程中,积木块在遗传算子的影响下能够相互结合,产生新的更加优秀的积木块,最终接近全局最优解。

3. 研究发展

4. GA的基本结构

        遗传算法是美国密歇根(M ichigan)大学的J.H.Holland教授在研究自然界自适应现象的过程中提出来的.Holland所提出的遗传算法常被称为简单遗传算法(SGA)。遗传算法的基本结构如算法2.1所示.

        在算法2.1中,在对规模为N的种群初始化和对种群中个体计算适应值后,按照基于个体适应值的某个概率函数选择N个父体,适应值较大的个体被选择作为父体的可能性较大.通过杂交,N个父体产生N个后代,N个后代以一定的概率进行变异,并都存活下来,形成下一代种群.在遗传算法中,杂交算子是一个主要的遗传算子,而以较小的概率对个体进行变异.

5. GA的实现流程

(1) 染色体编辑

        目前用于染色体编码的方法有格雷码编码、字母编码、多参数交叉编码等。这里仅给出两种常见的较为简单的编码方法:二进制编码方法和浮点数编码方法。 

二进制编码方法

在这里插入图片描述

        举一个简单的例子,假设[Umin ,Umax]为[1,64],采用6位二进制符号串进行编码,则某个二进制符号串010101代表了数值22。
        二进制编码操作简单,但当你的L较大时,计算难度会增大,难以解决精度要求高的问题,因此,我们需要寻求另外的编码方法。

在这里插入图片描述(2) 群体的初始化

        一般情况下,遗传算法在群体初始化阶段采用的是随机数初始化方法。采用生成随机数的方法,对染色体的每一维变量进行初始化赋值。初始化染色体时必须注意染色体是否满足优化问题对有效解的定义

        如果在进化开始时保证初始群体已经是一定程度上的优良群体的话,将能够有效提高算法找到全局最优解的能力。

(3) 适应值评价

        评估函数用于评估各个染色体的适应值,进而区分优劣。评估函数常常根据问题的优化目标来确定,比如在求解函数优化问题时,问题定义的目标函数可以作为评估函数的原型。
        在遗传算法中,规定适应值越大的染色体越优。因此对于一些求解最大值的数值优化问题,我们可以直接套用问题定义的函数表达式。但是对于其他优化问题,问题定义的目标函数表达式必须经过一定的变换

(4) 选择算子(父体选择)

轮盘赌选择法

在这里插入图片描述

         按适应值大小切分区域大小,即适应值越大的染色体占比越大,越有可能被选中,同时由于是随机选取,也保证了适应值小的染色体也有被选中的可能。

(5) 交配算子(杂交算子)

        在染色体交配阶段,每个染色体能否进行交配由交配概率Pc(一般取值为0.4到0.99之间)决定,其具体过程为:对于每个染色体,如果Random(0, 1)小于Pc则表示该染色体可进行交配操作(其中Random(0, 1)为[0, 1]间均匀分布的随机数),否则染色体不参与交配直接复制到新种群中。 

        每两个按照Pc交配概率选择出来的染色体进行交配,经过交换各自的部分基因,产生两个新的子代染色体。具体操作是随机产生一个有效的交配位置,染色体交换位于该交配位置后的所有基因。

注意:因为父代是两个染色体,生成的子代也是两个染色体,故种群染色体总数N值不会改变。

(6) 变异算子

        染色体的变异作用于基因之上,对于交配后新种群中染色体的每一位基因,根据变异概率Pm判断该基因是否进行变异。

        如果Random(0, 1)小于Pm,则改变该基因的取值(其中Random(0, 1)为[0, 1]间均匀分布的随机数)。否则该基因不发生变异,保持不变。

在这里插入图片描述

(7) 算法流程

Step 1:初始化规模为N的群体,其中染色体每个基因的值采用随机数产生器生成并满足问题定义的范围。当前进化代数Generation=0。
Step 2:采用评估函数对群体中所有染色体进行评价,分别计算每个染色体的适应值,保存适应值最大的染色体 Best。
Step 3:采用轮盘赌选择算法对群体的染色体进行选择操作,产生规模同样为N的种群。
Step 4:按照概率P从种群中选择染色体进行交配。每两个进行交配的父代染色体,交换部分基因,产生两个新的子代染色体,子代染色体取代父代染色体进入新种群。没有进行交配的染色体直接复制进入新种群。
Step 5:按照概率P。对新种群中染色体的基因进行变异操作。发生变异的基因数值发生改变。变异后的染色体取代原有染色体进入新群体﹐未发生变异的染色体直接进人新群体。
Step 6:变异后的新群体取代原有群体﹐重新计算群体中各个染色体的适应值。倘若群体的最大适应值大于Best的适应值,则以该最大适应值对应的染色体替代 Best。
Step 7:当前进化代数Generation 加1。如果 Generation超过规定的最大进化代数或Best达到规定的误差要求,算法结束;否则返回Step 3。

6. 实例举例

解:

7. 遗传算法的改进

        遗传算法简单,可操作性强,具有较强的健壮性和普适性以及潜在的并行性,并且拥有较好的全局搜索能力,能够以较大的概率得到全局最优解,因此多个领域的复杂问题相继采用了遗传算法进行解决,进而促进了遗传算法理论研究的不断发展。遗传算法从提出到现在不过几十年的时间,成功的应用案例展示了其作为一种随机全局搜索算法的强大优势和能力,同时,在应用中出现的问题也暴露了现有遗传算法的局限和不足。因此,大量的对算法进行改进的研究活动从未停止过,人们一直致力于提高和拓展算法的能力。

我们可以从以下几个方面去进行改进:

(1) 算子的选择

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2) 参数设置

(3) 混合遗传算法

 (4) 并行遗传算法

并行遗传算法一般有两种表现形式:标准型并行方法和分解型并行方法。

8. GA的应用

        遗传算法最早用于研究和设计人工自适应系统和求解函数优化问题。随着对遗传算法的研究逐步深入,遗传算法的性能不断地得到改进和完善,算法的应用涉及更加广泛的领域,并表现出很好的解决问题的能力。目前,遗传算法的应用范围已延伸到组合优化,图像处理,模式识别.智能控制,神经网络、自动程序设计、机器学习、人工生命,数据挖掘.网络通信等多个领域和各类学科如电子工程学,电力学、社会学经济学和电磁学等。

洋洋就介绍到这里了,我也是初次学,请大家指教,有问题之间评论或私聊即可,看到就会回复哦,先说好,我不知我什么时候会上线哦,有时候一个星期也不来一次的。哈哈哈! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sublimetext3插件安装_sublime text 3 交互python

爱折腾的我最近在用sublime text 3 写python,但是原生态的编译模式不支持交互。在网上找了许多资料,想要可以交互运行python,大都需要sublimeREPL这个插件,我不想用这个插件。在多次摸索过后找到了如下解决方案,在此记…

如何用手机打开dcm格式图片_压缩图片用这个神奇吧(电脑版)

一码不扫,可以扫天下?Light Image Resizer是将数码照片和图像存在电脑中,并希望重新调整图片大小,压缩,转换,创建备份,导入或组织图片的人们设计的完美工具。Light Image Resizer 专业的图像缩放…

智能计算之神经网络(BP)介绍

目录 1. 神经网络流行原因 2. 人工神经网络定义 3. 人工神经网络的学习能力 4. 人工神经网络的基本原理 5. 神经网络的研究进展 6. 神经网络的典型结构 6.1 单层感知器网络 6.2 前馈型网络 6.3 前馈内层互联网络 6.4 反馈型网络 6.5 全互联网络 7. 神经网络的学习算…

python系统关键字_Python基础教程 - global关键字及全局变量的用法

Python中global关键字主要作用是声明变量的作用域。 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a 5; void test(void) { a 1; // 没有先声…

智能计算之神经网络(Hopfield网络-DHNN,CHNN )介绍

目录 1. 神经网络受欢迎的原因 2. 人工神经网络定义 3. 人工神经网络的学习能力 4. 人工神经网络的基本原理 5. 神经网络的研究进展 6. 神经网络的典型结构 6.1 单层感知器网络 6.2 前馈型网络 6.3 前馈内层互联网络 6.4 反馈型网络 6.5 全互联网络 7. 神经网络的学…

智能计算之蚁群算法(ACO)介绍

目录 1. 简介 2. 基本思想 3. 研究进展 4. 基本流程 (1)路径构建 (2)信息素更新 ​5. 应用举例 6. 改进版 6.1 精华蚂蚁系统 6.2 基于排列的蚂蚁系 6.3 最大最小蚂蚁系 6.4 蚁群系统 7. 参数设置​编辑 8. 练习题 …

Java try catch finally语句

在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行。例如,程序在 try 块里打开了一些物理资源(如数据库连接、网络连接和磁盘文件等&#xff09…

linux代码_Sonar代码走查的配置(linux)

SonarQube是一个静态代码质量检查工具,可以检查出代码中明显或潜在问题。虽然偶尔它的判断会是错误的,但还是值得我们用。它能以比较基础的级别减少代码出错的可能,可以节省人工Review代码时间。它支持多种语言的检查。我这里的代码是java代码…

智能计算之粒子群算法(PSO)介绍

目录 1. 简介(思想) 2. 研究发展 3. 算法步骤 4. 应用举例 5. 粒子群优化算法的改进研究 5.1 理论改进 5.2 拓扑结构改进 5.3 混合算法改进 5.4 离散版本改进 6. 相关应用 7. 参数设置​ 1. 简介(思想) 粒子群优化算法(Particle Swarm Optimization&…

python爬虫能秒杀么_面试题之用python爬取并夕夕不同时段秒杀商品信息

先上效果图吧(因为确实也是刚入门,很多细节没有注意到的,各位尽管提出来)并夕夕很多时候都在不停的有秒杀商品的活动,对于价格问题,我就没法讨论了,但是人家能吸引到这么多流量,真本…

html 怎么让tr的css覆盖td的_通达OA上传漏洞之变量覆盖分析

作者:kw0ng开始通达OA上传到包含漏洞分析的文章已经有很多,本文重点分析,文件上传处决定路径信息是否回显的UPLOAD_MODE参数是怎么传递的。代码分析触发文件上传点位于/ispirit/im/upload.php中,服务端在接收文件信息的同时还需要…

怎么看电脑的hdmi是输出还是输入_高清hdmi矩阵切换器4进4出音视频方案介绍景阳华泰科技...

高清hdmi矩阵切换器4进4出多少钱?这就需要了解您需要哪种4进4出矩阵!景阳华泰科技生产的矩阵分为两种形式,一种是我们近几十年来一直使用的一体机,高清HDMI矩阵切换器4进4出采用一体机结构,经济实惠,功能较…

专业音频如何把电平转换成dbu_谭俊峰|录课、买麦,你应该了解的音频常识

近来,有打算录录课、吹吹牛,于是想升级一下硬件。既然要录音,那搞个好一点儿的麦克风总是必要的。于是,上网去查。不查不知道,一查吓一跳。为啥呢?既不为产品的琳琅满目,也不为价格的云泥之别&a…

android 自定义进度条_第一百八十九回:Android中自定义ProgressBar三

各位看官们大家好,上一回中咱们说的是Android中自定义ProgressBar的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!看官们,我们在上一回是通过自定义PrgressBar的方式给它添加了文字&…

沉降观测曲线图 沉降观测汇总_这些沉降观测要求,工程人必须掌握!

1沉降观测的基本要求 1)仪器设备、人员素质的要求根据沉降观测精度要求高的特点,为能精确地反映出建(构)筑物在不断加荷下的沉降情况,一般规定测量的误差应小于变形值的1/10—1/20,为此要求沉降观测应使用精密水准仪(S1或S05级),水…

rgb红色范围_【论文阅读18】RGB-D Object-Oriented Semantic Mapping

主要内容基于RGB-D数据的语义建图(SLAM帮助语义)。具体过程如下首先利用SSD执行单帧RGB图片(2D)物体检测。接着基于检测结果和深度信息,利用3D分割算法进一步分割3D点云。最终利用ORB-SLAM2的相机位姿信息将每帧的3D点…

7价 半导体掺杂_掺杂工艺(一)

概述半导体材料的独特性质之一是它们的导电性和导电类型(N型或P型)能被产生和控制。在本章中,描述在晶圆内和表面上特别的小块导电区和PN结的形成。介绍扩散和离子注入两种掺杂技术的原理和工艺。简介使晶体管和二极管工作的结构就是PN结。结(junction)就是富含电子…

数据增强_imgaug图像数据增强必备工具

导读我们经常会遇到训练模型时数据不够的情况,而且很多时候无法再收集到更多的数据,只能通过做一些数据增强或者其它的方法来合成一些数据。常用的数据增强方式有裁剪、旋转、缩放、亮度对比度色度饱和度变换、仿射变换、透视变换等,这篇文章…

深度学习多模态融合_3D目标检测多模态融合综述

0前言本篇文章主要想对目前处于探索阶段的3D目标检测中多模态融合的方法做一个简单的综述,主要内容为对目前几篇几篇研究工作的总结和对这个研究方面的一些思考。在前面的一些文章中,笔者已经介绍到了多模态融合的含义是将多种传感器数据融合。在3D目标检…

自适应宽_移动端实现自适应缩放界面的方法汇总

作者 | 唐宋元明清2188来源 | http://www.cnblogs.com/kybs0/在开发App端的网页时,要适配iphone、ipad、ipod、安卓等各种机型,一般是直接使用em、px转em、界面缩放。本章是通过将界面缩放,等比例显示在各机型上。过程中遇到了些问题和大坑~然…