一文搞懂什么是遗传算法Genetic Algorithm【附应用举例】

article/2025/10/18 11:06:59

代码链接放文末。

本文参考了很多张军老师《计算智能》的第四章内容。

本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453

遗传算法

1.1 遗传算法简介

1.1.1 基本原理

重温高中生物哈哈!

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

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

遗传算法通过比较适应值区分染色体的优劣,适应值越大的染色体越优秀。评估函数涌过来计算染色体对应的适应值。

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

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

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

在这里插入图片描述
下面我们再来了解几个概念。

模式:指群体中编码的某些位置具有相似结构的染色体集合。

在这里插入图片描述
Holland的模式定理提出,遗传算法的实质是通过选择、交配和变异算子对模式进行搜索,低阶、定义长度较小且平均适应值高于群体平均适应值的模式在群体中的比例将呈指数级增长。即随着进化的不断进行,较优染色体的个数将快速增加。

积木块假设

积木块:指低阶、定义长度较小且平均适应值高于群体平均适应值的模式 。

积木块假设认为在遗传算法运行过程中,积木块在遗传算子的影响下能够相互结合,产生新的更加优秀的积木块,最终接近全局最优解 。

1.1.2 研究进展
在这里插入图片描述
这个大致看下就可以了。

1.2 遗传算法的流程

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

二进制编码方法
在这里插入图片描述
在这里插入图片描述
二进制编码操作简单,但当你的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]间均匀分布的随机数)。否则该基因不发生变异,保持不变。

在这里插入图片描述
下面给出算法基本步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果到这里有些困惑的话,没有关系,我们来看一个实例。

在这里插入图片描述
解题如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

够简单理解吧。

**1.3 遗传算法的改进 **

没有完美的算法,只有适合的算法。下文会贴出每种问题对应的多种研究,感兴趣的可以自行上网查看。

1.3.1 算子选择
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.3.2 参数设置

群体规模N

影响算法的搜索能力和运行效率。
若N设置较大,一次进化所覆盖的模式较多,可以保证群体的多样性,从而提高算法的搜索能力,但是由于群体中染色体的个数较多,势必增加算法的计算量,降低了算法的运行效率。
若N设置较小,虽然降低了计算量,但是同时降低了每次进化中群体包含更多较好染色体的能力。
N的设置一般为20~100

染色体长度L

影响算法的计算量和交配变异操作的效果。
L的设置跟优化问题密切相关,一般由问题定义的解的形式和选择的编码方法决定。
对于二进制编码方法,染色体的长度L根据解的取值范围和规定精度要求选择大小。
对于浮点数编码方法,染色体的长度L 跟问题定义的解的维数D相同。
除了染色体长度一定的编码方法,Goldberg等人还提出了一种变长度染色体遗传算法Messy GA,其染色体的长度并不是固定的。

基因取值范围R

R视采用的染色体编码方案而定。
对于二进制编码方法,R ={0,1},而对于浮点数编码方法,R与优化问题定义的解每一维变量的取值范围相同。

交配概率Pc

决定了进化过程种群参加交配的染色体平均数目。
取值一般为0.4至0.99。也可采用自适应方法调整算法运行过程中的交配概率。

变异概率Pm

增加群体进化的多样性,决定了进化过程中群体发生变异的基因平均个数。
Pm的值不宜过大。因为变异对已找到的较优解具有一定的破坏作用,如果Pm的值太大,可能会导致算法目前处于的较好的搜索状态倒退回原来较差的情况。
Pm的取值一般为0.001至0.1之间。也可采用自适应方法调整算法运行过程中的Pm值。

适应值评价

影响算法对种群的选择,恰当的评估函数应该能够对染色体的优劣做出合适的区分,保证选择机制的有效性,从而提高群体的进化能力。
评估函数的设置同优化问题的求解目标有关。
评估函数应满足较优染色体的适应值较大的规定。
为了更好地提高选择的效能,可以对评估函数做出一定的修正。
目前主要的评估函数修正方法有:线性变换;乘幂变换;指数变换等。

终止条件

决定算法何时停止运行,输出找到的最优解,采用何种终止条件,跟具体问题的应用有关。
可以使算法在达到最大进化代数时停止,最大进化代数一般可设置为100~1000,根据具体问题可对该建议值作相应的修改。
也可以通过考察找到的当前最优解是否达到误差要求来控制算法的停止。
或者是算法在持续很长的一段进化时间内所找到的最优解没有得到改善时,算法可以停止。

1.3.3 混合遗传算法

提出混合遗传算法的原因有两个,一是遗传算法存在局部搜索能力较弱的缺陷,二是当遗传算法应用到专门的领域时往往不是最佳的方法。

在这里插入图片描述
1.3.4 并行遗传算法

并行计算
单指令流多数据流计算机
多指令流多数据流计算机
并行计算网络

串行计算
单指令流单数据流处理器

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

在这里插入图片描述
在这里插入图片描述
代码下载链接,有需要的请自行提取,不想hua前的朋友,可评论同我说,我会回复你,但可能会比较慢。祝好!

https://download.csdn.net/download/qq_44186838/62603353

智能优化算法大礼包


http://chatgpt.dhexx.cn/article/o8aqewyl.shtml

相关文章

遗传算法的基本原理和matlab实现

2016年9月7日星期三 T.s.road 总结笔记 遗传算法解决全局优化(即为最值点如图中C,D),而局部最优解决的是极值点问题(如图中A,B) 1. 遗传算法流程; %遗传算法的伪代码描述&…

遗传算法(三)——基本遗传算法

目录 2.基本遗传算法 2.1基本遗传算法描述 2.1.1基本遗传算法的构成要素 2.1.2基本遗传算法描述 2.1.3基本遗传算法的形式化定义 2.2基本遗传算法的实现 2.2.1个体适应度评价 2.2.2比例选择算子 2.2.3单点交叉算子 2.2.4基本位变异算子 2.3基本遗传算法应用举例 2.3…

遗传算法原理以及matlab代码

目录 1,算法原理以及形象解释 2,参数编码 3,算法框架 4,代码 MATLAB 1,算法原理以及形象解释 遗传算法(Genetic Algorithm, GA)是仿生物智能优化算法,是模拟达尔文生物进化论中…

遗传算法的基本原理

1、简介 遗传算法是一种基于自然选择和群体遗传机理的搜索算法,它模拟了自然选择和自然遗传过程中的繁殖、杂交和突变现象.再利用遗传算法求解问题时,问题的每一个可能解都被编码成一个“染色体”,即个体,若干个个体构成了群体(所有可能解).在遗传算法开始时,总是随机的产生一些…

遗传算法原理介绍

前言 遗传算法( genetic algorithm,GA)是模拟自然界生物进化机制的一种算法,即遵循适者生存、优胜劣汰的法则,也就是寻优过程中有用的保留无用的则去除。在科学和生产实践中表现为在所有可能的解决方法中找出最符合该问题所要求的条件的解决方法,即找出一个最优解。…

遗传算法原理及其matlab程序实现

遗传算法原理及其matlab实现 一、遗传算法背景二、遗传算法原理及其数学模型2.1 编码方式2.1.1 二进制编码2.1.2 浮点数编码 2.2 种群初始化2.3 计算初始种群的适应度函数值2.4 对初始种群个体进行筛选—天泽(以轮盘赌方式进行选择)2.5 个体染色体交叉及…

遗传算法原理及其python实现

遗传算法原理 基本思想: 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则,它最初由美国Michigan大学的J. Holland教授于1967年提出。遗传算法…

智能算法——遗传算法原理、应用汇总

一、遗传算法原理 遗传算法(GA)是一种基于生物界规律和自然遗传机制的并行搜索算法。1975 年,J. Holland 教授首次在书中提出“自然组合人工智能系统的适应性”。它是一种多参数,多组合同时优化方法,模拟自然进化过程中…

遗传算法原理

一、遗传算法简介 遗传算法是进化算法的一个分支. 它将达尔文的进化理论搬进了计算机. 科学定义如下: **遗传算法(Genetic Algorithm, GA)**起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优…

遗传算法

目录 一、算法原理 二、代码实现 三、结果分析 优化目标函数为Rastrigin(x) 目标函数为Schaffer(x) 目标函数为Griewank(x) 总结 一、算法原理 1、基本原理 遗传算法是一种典型的启发式算法,属于非数值算法范畴。其目的是抽象和严谨地解释自然界的适应过程以…

遗传算法(GA)详解

遗传算法(GA)详解 遗传算法主要作用是求解最优解,例如求函数极值,或是飞机巡航问题中的最短巡航路线的求解等,其作用与模拟退火算法的作用较为相似。本文将从GA算法的原理,结构与两个实践应用进行比较详细…

html中热区如何设置,Dreamweaver中如何设置热区?DW设置热区方法图解

Dreamweaver中如何设置热区?下面小编就为大家详细介绍一下,一起来看看吧! 方法/步骤 向平时一样,这里我们在设置Dreamweaver热区的时候。同样这里是需要建立一个新的HTML界面的。 建立完毕,如下图中所示的一个新的文档(HTML) 按照…

用html编写或在dw中完成,Dreamweaver教程-在 Dreamweaver 中编写 HTML 代码

Dreamweaver教程-在 Dreamweaver 中编写 HTML 代码,代码,教程,标签,光标,文本 Dreamweaver教程-在 Dreamweaver 中编写 HTML 代码 易采站长站,站长之家为您整理了Dreamweaver教程-在 Dreamweaver 中编写 HTML 代码的相关内容。 1.启动 Dreamweaver CS5 2.点击左上角…

dw写HTML怎么设置背景颜色,dreamweaver cs6设置div背景颜色的具体操作教程

最近有不少刚刚接触dreamweaver cs6的伙伴们,并不是很熟悉其中是怎么设置div背景颜色?本期为你们分享的文章就讲述dreamweaver cs6设置div背景颜色的具体流程介绍。 dreamweaver cs6设置div背景颜色的具体操作教程 首先需要打开dreamweaver cs6软件,添加…

dw html转为css,DIV+CSS辅助软件Dreamweaver介绍

DIVCSS开发软件之Adobe Dreamweaver介绍 接下来我们(www.divcss5.com)给大家介绍是大家最熟悉不过的软件Adobe Dreamweaver,他被称为网页三剑客之一主要成员。 Dreamweaver我们常称他为DW,是开发DIVCSS比较好的工具。 Dreamweaver特点 1、开发css具体完善快捷简便提…

html中水平线颜色代码,网页设计水平线代码 怎么在dw中修改水平线的颜色

在Dreamweaver里有以下办法: 设计视图,点插入菜单-HTML-水平线,或者在代码视图,直接输入即可; 插入一个高度为1px的表格或div,一定要删除空格符 ,div的话还要设置超出隐藏; 可以用CS…

html基础dw,HTML基础DW使用教程

1、打开文件拓展名: 方法一.打开计算机→组→文件夹和搜索选项→查看,把隐藏拓展名的勾取掉。 方法二.打开计算机→文件夹选项→查看,把隐藏拓展名的勾取掉。 2.桌面新建一个记事本,把.txt后缀改成HTML。 3.右键打开方式&#xff…

前端基础--DW的使用

前端基础–DW 开发工具与关键技术:DW/浏览器 ; DW的使用。 作者:刘佳明 撰写时间:2019年1月 28 日 在学习前端的第一步首先便是学会正确的使用DW这一个编程app;下面便由我自己编写关于DW的使用过程 第一步&#xff…

dw怎么让html使用css样式,dw怎么用css样式?

dw怎么用css样式? 首先介绍一下CSS样式的属性: CSS样式属性被分为八大类:类型,背景,区块,方框,边框,列表,定位,扩展。 类型主要定义文本的字体,大…

Dwr 实例教程

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。 作者: 永恒の_☆ 地址: http://blog.csdn.net/chenghui0317/article/details/9842873 一、Dwr的介绍 Dwr 简称 Direct…