智能计算之遗传算法(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; // 没有先声…

如何查看keepalived版本号_Keepalived介绍 , 配置说明 , 及实际应用

1. Keepalived介绍Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到…

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

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

用python画渐变的圆_使用numpy绘制圆形渐变

由于对称性,实际上只需要计算图像256*256的四分之一,即64*64,然后将其逐块旋转90度,然后将它们组合起来。这样,总时间是计算256256像素的1/4倍。在 以下是示例。在import numpy as np import matplotlib.pyplot as plt…

发那科程序全部输出_如何拷贝FANUC系统全部程序

在SETTING画面复I/O通道一项中设定I/O4(或者制20#参数改为4),将存储卡(插在机床的面板上的PCMCIA接口里。选择编辑模式,程序钥匙锁打开,全部程序预览页面(列表),点击(操作),点击右扩展键,点击(F输出)&#…

计算平均成绩

根据用户输入的总人数和总成绩计算平均成绩。要求程序能够处理总人数或者总成绩不是数字时的情况。 使用多重 catch 语句时,Java 虚拟机会把实际拋出的异常对象依次和各个 catch 代码块中声明的异常类型匹配,如果异常对象为某个异常类型或者其子类的实例…

智能计算之蚁群算法(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&…

passive模式 tcp_FTP主动模式和被动模式的比较

总是记不住FTP主动和被动模式的区别。放在这里,以备日后查阅。FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式…

Java 中 finally 与 return 的执行顺序详解

java方法是在栈幀中执行,栈幀是线程私有栈的单位,执行方法的线程会为每一个方法分配一小块栈空间来作为该方法执行时的内存空间,栈幀分为三个区域: 1 . 操作数栈,用来保存正在执行的表达式中的操作数,数据…

车辆工程用得到python吗_如今车辆工程真的不如以前了吗?

背景:合肥工业大学2015届毕业生,车辆工程专业,理科实验班,成绩排名专业10%以内,有推免研究生资格。 上面这些title虽然比不上985的,但在当年工大的各专业中,基本上是无敌的存在了。 然后当年我竟…

headfirstjava最新版本下载_读过HeadFirstJava的大神进来看看

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼线程一章有个聊天程序,我运行之后客户端没将服务器的内容显示在JTextArea中,求解答客户端程序import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.net.*;public…

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

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

Java throws和throw

throws 声明异常 当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部声明这个异常,以便将该异常传递到方法的外部进行处理。使用 throws 声明的方法表示此方法不处理异常。throws 具体格式如下: returnType method_name(paramLi…

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

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