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

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

 

目录

 

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.1遗传算法的应用步骤

2.3.2基本遗传算法在函数优化中的应用举例

2.3.3补充解释

参考资料


2.基本遗传算法

针对不同的问题,很多学者设计了许多不同的编码方法来表示问题的可行解,开发出了许多种不同的遗传算子来模仿不同环境下的生物遗传特性。这样,由不同的编码方法和不同的遗传算子就构成了各种不同的遗传算法。但这些遗传算法都有共同的特点,即通过对生物遗传和进化过程中选择、交叉、变异机理的模仿,来完成对问题最优解的自适应搜索过程。

基于这个共同特点,Goldberg总结出了一种统一的最基本的遗传算法——基本遗传算法(Simple Genetic Algorithms,简称SGA)。基本遗传算法只使用选择算子、交叉算子和变异算子这三种基本遗传算子。它不仅给各种遗传算法提供了一个基本框架,同时也具有一定的应用价值。

2.1基本遗传算法描述

2.1.1基本遗传算法的构成要素

(1)染色体编码方法。基本遗传算法使用固定长度的二进制符号串来表示群体中的个体,其等位基因是由二值符号集{0,1}所组成的。初始群体中各个个体的基因值可用均匀分布的随机数来生成。如:X=100111001000101101就可表示一个个体,该个体的染色体长度是n=18。

(2)个体适应度评价。基本遗传算法按与个体适应度成正比的概率来决定当前群体中每个个体遗传到下一代群体中的机会多少。为正确计算这个概率,这里要求所有个体的适应度必须为正数或零。这样,根据不同种类的问题,必须预先确定好由目标函数值到个体适应度之间的转换规则,特别是要预先确定好当目标函数值为负数时的处理方法。

(3)遗传算子。基本遗传算法使用下述三种遗传算子:
●选择运算使用比例选择算子;
●交叉运算使用单点交叉算子;
●变异运算使用基本位变异算子或均匀变异算子。

(4)基本遗传算法的运行参数。基本遗传算法有下述4个运行参数需要提前设定:
●M:群体大小,即群体中所含个体的数量,一般取为20~100;
●T:遗传运算的终止进化代数,一般取为100~500;
●Pc:交叉概率,一般取为0.4-0.99;
●Pm:变异概率,一般取为0.0001~0.1。

需要说明的是,这4个运行参数对遗传算法的求解结果和求解效率都有一定的影响,但目前尚无合理选择它们的理论依据。
在遗传算法的实际应用中,往往需要经过多次试算后才能确定出这些参数合理的取值大小或取值范围。

2.1.2基本遗传算法描述

下面我们给出基本遗传算法的伪代码描述。

Procedure SGA
begininitialize P(0);        %初始化群体t=0;while (t≤T)for i=0 to M doEvaluate fitness of P(t);         %计算群体中每个个体的适应度endforfor i=1 to M doSelect operation to P(t);        %选择操作endforfor i=1 to M/2 doCrossover operation to P(t);  %交叉操作endforfor i=1 to M doMutation operation to P(t);   %变异操作endforfor i=1 to M doP(t+1)=P(t);endfort=t+1;endwhile
end

2.1.3基本遗传算法的形式化定义

基本遗传算法可定义为一个8元组:

2.2基本遗传算法的实现

根据上面对基本遗传算法构成要素的分析和算法描述,我们可以很方便地用计算机语言来实现这个基本遗传算法。

现对具体实现过程中的间题作以下说明。

2.2.1个体适应度评价

在遗传算法中,以个体适应度的大小来确定该个体被遗传到下一代群体中的概率。个体的适应度越大,该个体被遗传到下一代的概率也越大;反之,个体的适应度越小,该个体被遗传到下一代的概率也越小。基本遗传算法使用比例选择算子来确定群体中各个个体遗传到下一代群体中的数量。为正确计算不同情况下各个个体的遗传概率,要求所有个体的适应度必须为正数或零,不能是负数。

2.2.2比例选择算子

选择算子或复制算子的作用是从当前代群体中选择出一些比较优良的个体,并将其复制到下一代群体中。最常用和最基本的选择算子是比例选择算子。所谓比例选择算子,是指个体被选中并遗传到下一代群体中的概率与该个体的适应度大小成正比。比例选择实际上是一种有退还随机选择,也叫做赌盘( Roulette Wheel)选择,因为这种选择方式与赌博中的赌盘操作原理颇为相似。

如下图,整个赌盘被分为大小不同的一些扇面,分别对应着价值各不相同的一些赌博物品。当旋转着的赌盘自然停下来时,其指针所指扇面上的物品就归赌博者所有。虽然赌盘的指针具体停止在哪一个面是无法预测的,但指针指向各个扇面的概率却是可以估计的,它与各个扇面的圆心角大小成正比:圆心角越大,停在该扇面的可能性也越大;圆心角越小,停在该扇面的可能性也越小。

与此类似,在遗传算法中整个群体被各个个体所分割,各个个体的适应度在全部个体的适应度之和中所占比例也大小不一,这个比例值瓜分了整个赌盘盘面,它们也决定了各个个体被遗传到下一代群体中的概率。

比例选择算子的具体执行过程是:
(1)先计算出群体中所有个体的适应度的总和。
(2)其次计算出每个个体的相对适应度的大小,它即为各个个体被遗传到下一代群体中的概率。
(3)最后再使用模拟赌盘操作(即0到1之间的随机数)来确定各个个体被选中的次数。

2.2.3单点交叉算子

单点交叉算子是最常用和最基本的交叉操作算子。

单点交叉算子的具体执行过程如下:

(1)对群体中的个体进行两两随机配对。若群体大小为M,则共有$\lfloor M/2 \rfloor$对相互配对的个体组。其中$\lfloor x \rfloor$表示不大于x的最大的整数。

(2)对每一对相互配对的个体,随机设置某一基因座之后的位置为交叉点。若染色体的长度为n,则共有(n-1)个可能的交叉点位置。

(3)对每一对相互配对的个体,依设定的交叉概率Pc在其交叉点处相互交换两个个体的部分染色体,从而产生出两个新的个体。

2.2.4基本位变异算子

基本位变异算子是最简单和最基本的变异操作算子。对于基本遗传算法中用二进制编码符号串所表示的个体,若需要进行变异操作的某一基因座上的原有基因值为0,则变异操作将该基因值变为1;反之,若原有基因值为1,则变异操作将其变为0。

基本位变异算子的具体执行过程如下:
(1)对个体的每一个基因座,依变异概率Pm指定其为变异点;
(2)对每一个指定的变异点,对其基因值做取反运算或用其他等位基因值来代替,从而产生出一个新的个体;


 

2.3基本遗传算法应用举例

由前述可以知道,基本遗传算法是一个选代过程,它模仿生物在自然环境中的遗传和进化机理,反复将选择算子、交叉算子、变异算子作用于群体,最终可得到问题的最优解或近似最优解。

虽然算法的思想比较单纯,结构也比较简单,但它却也具有一定的实用价值,能够解决一些复杂系统的优化计算问题。

2.3.1遗传算法的应用步骤

遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的领域和种类。对一个需要进行优化计算的实际应用问题,一般可按下述步骤来构造求解该问题的遗传算法。

第一步:确定决策变量及其各种约束条件,即确定出个体的表现型X和问题的解空间。
第二步:建立优化模型,即确定出目标函数的类型(是求目标函数的最大值还是求目标函数的最小值?)及其数学描述形式或量化方法。
第三步:确定表示可行解的染色体编码方法,也即确定出个体的基因型X及遗传算法的搜索空间。
第四步:确定解码方法,即确定出由个体基因型X到个体表现型X的对应关系或转换方法。
第五步:确定个体适应度的量化评价方法,即确定出由目标函数值f(X)到个体适应度F(X)的转换规则。
第六步:设计遗传算子,即确定出选择运算、交叉运算、变异运算等遗传算子的具体操作方法。
第七步:确定遗传算法的有关运行参数,即确定出遗传算法的M、T、Pc、Pm等参数。

由上述构造步骤可以看出,可行解的编码方法遗传算子的设计是构造遗传算法时需要考虑的两个主要问题,也是设计遗传算法时的两个关键步骤。对不同的优化问题需要使用不同的编码方法和不同操作的遗传算子,它们与所求解的具体问题密切相关,因而对所求解问题的理解程度是遗传算法应用成功与否的关键

2.3.2基本遗传算法在函数优化中的应用举例

【例】Rosenbrock函数的全局最大值计算。

   max             f(x1,x2)=100(x1^{2}-x2)^{2}+(1-x1)^{2}                   (2-6)

遗传算法的主要构造过程如下:

下面介绍求解该问题的遗传算法的构造过程。

第一步:确定决策变量和约束条件。

式(2-7)已给出了该问题的决策变量及其约束条件。

第二步:建立优化模型。

式(2-6)已给出了该问题的数学模型。

第三步:确定编码方法。

用长度为10位的二进制编码串来分别表示两个决策变量x1、x2。10位二进制编码串可以表示从0到1023之间的1024个不同的数,故将x1、x2的定义域离散化为1023个均等的区域,包含两个端点,分别有1024个不同的离散点。从离散点-2.048到离散点2.048,依次让它们分别对应于从0000000000(0)到1111111111(1023)之间的二进制编码。再将分别表示x1、x2的两个10位长的二进制编码串连接在一起。组成一个20位长的二进制编码串,它就构成了这个函数优化问题的染色体编码方法。使用这种编码方法,解空间和遗传算法的搜索空间具有一一对应的关系。

例如

就表示一个个体的基因型,其中前10位表示x1,后10位表示x2。

第四步:确定解码方法。

解码时,需先将20位长的二进制编码串切断为两个十进制串,然后分别将它们转换为对应的十进制整数代码,分别记为y1和y2。依据前述个体编码方法和对定义域的离散化方法可知,将代码yi转换为变量xi的解码公式为:

4.096×yi/1023是整个决策变量的区间长度(在1023等分),加上-2.048(区间开始的值),求得xi即为解码后的数值(在区间的约束条件内)

例如,对于前述个体   X:0000110111 1101110001 它由这样的两个代码所组成:y1=55  y2=881

经过式(2-7)的解码处理后,可得到:x1=-1.828   x2=1.476

第五步:确定个体评价方法。

由式(2-6)可知,Rosenbrock函数的值域总是非负的,并且优化目标是求函数的最大值,故这里将个体的适应度直接取为对应的目标函数值,并且不再对它作其他变换处理,即有F(X)=f(x1,x2)     (2-9)

第六步:设计遗传算子。

选择运算使用比例选择算子;

交叉运算使用单点交叉算子;

变异运算使用基本位变异算子。

第七步:确定基本遗传算法的运行参数。

对于本例,设定基本遗传算法的运行参数如下:

群体大小:M=80

终止代数:T=200

交叉概率:Pc=0.6

变异概率:Pm=0.001

通过上述七个步骤可构成用于Rosenbrock函数优化计算的基本遗传算法,下图为其进化过程示例及运行结果。图中横轴表示进化代数,纵轴表示适应度(也是目标函数值),图中的两条曲线分别为各代群体中个体适应度的最大值和平均值。

在上图可以看出,在解的进化过程中,群体中个体适应度的最大值和平均值虽然有上下波动的情况,但总的来说却是呈现一种上升的趋势。

随着进化过程的进行,群体中适应度较低的一些个体被逐渐淘汰掉,而适应度较高的一些个体越来越多,并且它们都集中在所求问题的最优点附近,从而最终就可搜索到问题的最优解。

2.3.3补充解释

遗传算法可以形象化的理解:假设我们求这群山的海拔最高的点

往这群山上撒一些点,初始化群体;
然后给个海拔的要求,假如是图中的红线1,不满足要求的淘汰掉,满足要求的留下来;
然后再给个海拔的要求,假如是图中的红线2,不满足要求的淘汰掉,满足要求的留下来,依次求下去,如红线3;
随着适应度的不断提高,群体也逐渐接近最优解,也就是说遗传算法是一种全局的优化算法。

当然也有可能陷入局部最优解,这和适应度函数的设置有很大的关系。比如,撒在山3的个体比较多,满足适应度函数的个体集中在山3上,即使交叉、变异之后再选择,它也只在山3选择,不会到其它山1、山2上。最终求得的结果在山3上,并不是山2的最优解,这就是“早熟”的现象。

参考资料

《遗传算法原理及应用》周明、孙树栋编著


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

相关文章

遗传算法原理以及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…

Dreamweaver css盒模型

CSS盒模型概述:CSS盒模型(Box Model)规定了元素处理元素内容(content)、内边距(padding)、边框(border)、外边距(margin)的方式。 下图为盒模型模型图 盒模型各部分说明…

Dreamweaver css定位

规定元素的定位类型。 说明:这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对定位或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。 通过设置top bottom l…