SlideShare uma empresa Scribd logo
1 de 55
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
(2)  个体适应度评价 基本遗传算法 按与个体适应度成正比的概率来决定当前群体中每个个体遗传 到下一代群体中的机会多少。 为正确计算这个概率,这里要求所有个体的适应 度必须为正数或零。这样,根据不同种类的问题,必须预先确定好由目标函数 值到个体适应度之间的转换规则,特别是要预先确定好当目标函数值为负数时 的处理方法。 (3)  遗传算子 基本遗传算法使用下述三种遗传算子: •  选择运算:使用 比例选择算子 ; •  交叉运算:使用 单点交叉算子 ; •  变异运算:使用 基本位变异算子 。 (4)  基本遗传算法的运行参数 基本遗传算法有下述 4 个运行参数需要提前设定: •   M :群体大小,即群体中所含个体的数量,一般取为 20 ~ 100 。 •  T :遗传运算的终止进化代数,一般取为 100 ~ 500 •   p c :交叉概率,一般取为 0.4 ~ 0.99 •   p m :变异概率,一般取为  0.0001 ~ 0.1
[ 说明 ] 这 4 个运行参数对遗传算法的求解结果和求解效率都有一定的影响,但目前 尚无合理选择它们的理论依据。在遗传算法的实际应用中,往往需要经过多次试 算后才能确定出这些参数合理的取值大小或取值范围。 7.1.2  基本遗传算法的形式化定义 基本遗传算法可定义为一个 7 元组: GA =  (M, F, s, c, m, p c , p m  ) M—— 群体大小; F—— 个体适应度评价函数; s—— 选择操作算于; c—— 交叉操作算子: m—— 变异操作算于; p c —— 交叉概率; p m —— 变异概率;
7.1.3  基本遗传算法描述 Procedure  GA Begin initialize  P(0); t=0; while (t<=T)  do for  i=1 to M  do Evaluate fitness  of  P(t); end  for for  i=1 to M  do Select  operation  to  P(t); end  for for  i=1 to  M/2  do Crossover  operation  to  P(t); end  for for  i=1 to  M  do Mutation  operation  to  P(t); end  for for  i=1 to  M  do P(t+1) =  P(t); end  for t=t+1 end  while end
7.2  基本遗传算法的实现 根据上面对基本遗传算法构成要素的分析和算法描述,我们可以很方便地用计 算机语言来实现这个基本遗传算法。 现对具体实现过程中的问题作以下说明: 7.2.1  编码与解码 (1)  编码   假设某一参数的取值范围是 [u min  , u max ] ,我们用长度为  的二进制编码符号串来表示该参数,则它总共能够产生  2  种不同的编码,参数编码时的对应关系如下: 00000000…00000000 = 0  u min   00000000…00000001 = 1  u min  +   00000000…00000010 = 2  u min  + 2  …… 11111111…11111111=2  –1  u max
其中,   为二进制编码的编码精度,其公式为: (2)  解码 假设某一个体的编码是: x :  b   b  -1  b  -2 ……b 2 b 1 则对应的解码公式为: x = u min  + (    b i  · 2 i-1  )   ·   1 i=  U max     u min 2      1     =  U max     u min 2      1
[object Object],即:  2 17   < 151001 < 2 18   x 需要 18 位  {0/1}  符号表示。  如: 010001001011010000 解码: 得:  U max     u min 2   + 1 1/10000 12.1 + 3.0 + 1   151001 x = u min  + (    b i  · 2 i-1 )   ·   1 i=  U max     u min 2      1  = - 0.3 + 70352  (12.1+3)/(2 18 -1) = 1.052426     =  U max     u min 2      1
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
基本遗传算法一般采用下面两种方法之一将目标函数值  f(x) 变换为个体的适应度 F(x) : 方法一 :对于求目标函数最大值的优化问题,变换方法为: 其中, C min 为一个适当地相对比较小的数,它可用下面方法之一来选取: •  预先指定的一个较小的数。 •  进化到当前代为止的最小目标函数值。 •  当前代或最近几代群体中的最小目标函数值。 方法二 :对于求目标函数最小值的优化问题,变换方法为: 其中, C max 是一个适当地相对比较大的数,它可用下面几种方法求得: •  预先指定的一个较大的数。 •  进化到当前代为止的最大目标函数值。 •  当前代或最近几代群体中的最大目标函数值。 F(X) = f(X)+C min  if  f(X)+C min > 0 0  if  f(X)+C min  ≤  0 F(X) = C max  - f(X)  if  f(X)    C max 0  if  f(X)     C max
7.2.3  比例选择算子 (1)  选择算子或复制算子的作用: 从当前代群体中选择出一些比较优良的个体,并将其复制到下一代群体中。 (2)   最常用和最基本的选择算子 :  比例选择算子。 (3)  比例选择算子: 指个体被选中并遗传到下一代群体中的概率与该个体的适应度大小成正比。 (4)  执行比例选择的手段是轮盘选择。 轮盘法的基本精神是:个体被选中的概率取决于个体的相对适应度: p i  = f i  /   f i  ( i=1,2,…,M )   式中  p i —— 个体 i 被选中的概率; f i —— 个体 i 的适应度;  f i —— 群体的累加适应度。 显然,个体适应度愈高,被选中的概率愈大。但是,适应度小的个体也有可 能被选中,以便增加下一代群体的多样性。
轮盘选择的原理: 图中指针固定不动,外圈的圆环可以 自由转动,  圆环上的刻度代表各个个 体的适应度。当圆环旋转若干圈后停止, 指针指定的位置便是被选中的个体。 从统计意义讲,适应度大的个体,其 刻度长,被选中的可能性大;反之,适 应度小的个体被选中的可能性小,但有 时也会被“破格”选中。
上述轮盘选择过程,可描述如下: Ⅰ .   顺序累计群体内各个体的适应度,得相应的累计值 S i ,最后一个累计值为 S n ; Ⅱ .   在 [0, S n ] 区间内产生均匀分布的随机数 r ; Ⅲ .   依次用 S i 与 r 比较,第一个出现 S i 大于或等于 r 的个体 j 被选为复制对象; Ⅳ .   重复  Ⅲ 、 Ⅳ  项,直至新群体的个体数目等于父代群体的规模。 [ 论盘选择示例 ]
7.2.4  单点交叉算子 (1)  交叉算子作用   通过交叉,子代的基因值不同于父代。交换是遗传算法产生新个体的主要手段。正是有了交换操作,群体的性态才多种多样。 (2)  最常用和最基本 ——单点交叉算子。 (3)  单点交叉算子的具体计算过程如下: Ⅰ .  对群体中的个体进行两两 随机 配对。 若群体大小为 M ,则共有  [ M/2 ] 对相互 配对的个体组。 Ⅱ .  每一对相互配对的个体, 随机 设置某一基因座之后的位置为交叉点。  若染色体的长度为   ,则共有 (  -1) 个可能的交 叉点位置。 Ⅲ .  对每一对相互配对的个体,依设定的交叉概率 p c 在其 交 叉点处相互交换两个个  体的部分染色体,从而产生出两个新的个体。 单点交叉运算的示 例 如下所示 : 单点交叉 A ; 10110111  00  A ’ : 10110111  11 B : 00011100  11  B ’ : 00011100  00
交叉概率  式中  M—— 群体中个体的数目; M c —— 群体中被交换个体的数目。 [ 交叉操作示例 ]  交叉的个体是随机确定的,如下表所示。某群体有 n 个个体,每个个体含 8 个等位基因。针对每个个体产生一个 [0, 1]  区间的均匀随机数。假设交叉概率  p c  =  0.6 ,则随机数小于 0.6 的对应个体与其随机确定的另一个个体交叉,交叉 点随机确定。 p c  =  M c M 个体编号 个体 随机数 交叉操作 新个体 1 11011000 0.728 11011000 2 10101011 0.589 101010  11 101010  01 3 00101100 0.678 00101100 4 10001101 0.801 100011  01 100011  11 … … … … …
7.2.5  基本位变异算子 基本位变异算子是最简单和最基本的变异操作算子。 对于基本遗传算法中用二进制编码符号串所表示的个体,若需要进行变异操作 的某一基因座上的原有基因值为 0 ,则变异操作将该基因值变为 1 ,反之,若原有 基因值为 1 ,则变异操作将其变为 0 。 基本位变异因子的具体执行过程是: Ⅰ .  对个体的每一个基因座,依变异概率 p m 指定其为变异点。 Ⅱ .  对每一个指定的变异点,对其基因值做取反运算或用其它等位基因值来代替,  从而产生出一个新的个体。 基本位变异运算的示例如下所示: A : 1010 1 01010  A ’ : 1010 0 01010 变异点 基本位变异
变异是针对个体的某一个或某一些基因座上的基因值执行的,因此变异概率 p m 也是针对基因而言,即: 式中  B—— 每代中变异的基因数目; M—— 每代中群体拥有的个体数目  —— 个体中基因串长度。 变异概率 P m  =  B  M  ·  
[ 变异操作示例 ]  变异字符的位置是随机确定的,如下表所示。某群体有 3 个个体,每个体含 4 个基因。针对每个个体的每个基因产生一个 [0, 1]  区间具有 3 位有效数字的均 匀随机数。假设变异概率  p m  = 0.01 ,则随机数小于 0.01 的对应基因值产生变 异。表中 3 号个体的第 4 位的随机数为 0.001 ,小于 0.01 ,该基因产生变异, 使 3 号个体由  0010  变为  0011  。其余基因的随机数均大于 0.01 ,不产生变异。
7.2.6  算法流程图 开始 Gen=0 编码 随机产生 M 个初始个体 满足终止条件 ? 计算群体中各个体适应度 从左至右依次执行遗传算子 j = 0 j = 0 j = 0 根据适应度选择复制个体 选择两个交叉个体 选择个体变异点 执行变异 执行交叉 执行复制 将复制的个体添入新群体中 将交叉后的两个新个体添入新群体中 将变异后的个体添入新群体中 j = j+1 j = j+2 j = j+1 j =  M ? j = p c ·M ? j = p m ·L·M ? Gen=Gen+1 输出结果 终止 Y N Y Y Y N N N p c p m
7.3  基本遗传算法应用举例 ——  基本遗传算法在函数优化中的应用 。 [ 例 ]  Rosenbrock 函数的全局最大值计算。 max  f(x 1 ,x 2 ) = 100 (x 1 2 -x 2 2 ) 2  + (1-x 1 ) 2 s.t.  -2.048  ≤  x i  ≤  2.048  (x i =1,2) 如图所示: 该函数有两个局部极大点, 分别是 : f(2.048, -2048)=3897.7342 和 f(-2.048,-2.0048)=3905.9262 其中后者为全局最大点。
下面介绍求解该问题的遗传算法的构造过程: 第一步 :确定决策变量及其约束条件。 s.t.  -2.048  ≤  x i  ≤  2.048  (x i =1,2) 第二步: 建立优化模型。 max  f(x 1 ,x 2 ) = 100 (x 1 2 -x 2 2 ) 2  + (1-x 1 ) 2 第三步; 确定编码方法。 用长度为 l0 位的二进制编码串来分别表示二个决策变量 x 1 ,x 2 。 lO 位二进制编码串可以表示从 0 到 1023 之间的 1024 个不同的数,故将 x 1 ,x 2 的定义域离散化为 1023 个均等的区域,包括两个端点在内共有 1024 个不同的离散点。从离散点 -2.048 到离散点 2.048 ,依次让它们分别 对应于从 0000000000(0) 到 1111111111(1023) 之间的二进制编码。再将分别表示 x 1 和 x 2 的二个 10 位长的二进制编码串连接在一起,组成一个 20 位长的二进制编码串,它就构成了这个函数优化问题的染色体编码方法。例如 X : 0000110111 11011 10001  就表示一个个体的基因型。
第四步: 确定解码方法。 解码时先将 20 位长的二进制编码串切断为二个 10 位长的二进制编码串,然后分别将它们转换为对应的十进制整数代码,分别记为 y 1 和 y 2 。 依据前述个体编码方法相对定义域的离散化方法可知,将代码 y i 转换为变量 x i 的解码公式为: 例如,对前述个体 X :  0000110111 11011 10001  它由这样的两个代码所组成: y 1 = 55 y 2  = 881 经上式的解码处理后,得到: x 1 = -1.828 x 2 = 1.476  x i  = 4.096     y i  1023      2.048  ( i = 1,2)
第五步: 确定个体评价方法。 由式  f(x 1 ,x 2 ) = 100 (x 1 2 -x 2 2 ) 2  + (1-x 1 ) 2  可知,  Rosenbrock 函数的值域总是非负的,并且优化目标是求函数的最大值,故这里可将个体的适应度直接取为对应的目标函数值,并且不再对它作其他变换处理,即有: F(x) = f(x 1 ,x 2 ) 第六步: 设计遗传算子。 选择运算使用比例选择算子; 交叉运算使用单点交叉算子; 变异运算使用基本位变异算子。 第七步: 确定遗传算法的运行参数。 对于本例,设定基本遗传算法的运行参数如下: 群体大小 :  M = 80 终止代数 :  T = 200 交叉概率: p c = 0.6 变异概率: p m = 0.001
下图为其进化过程示例及运行结果。 图中两条曲线分别为各代群体中个体适应度的最大值和平均值。
(a) 下图所示分别为初始群体、第 5 代群体、第 10 代群体和第 100 代群体中个体的分布情况。 在图 (a) 中各个个体分布得比较均匀。
在图 (b) 中大量的个体分布在最优点和次最优点附近。 (b)
从图 (c)  中可以看出,次最优点也被淘汰。 (c)
从图 (d) 中可以看出,个体更加集中在最优点附近。 (d) 由该组图我们可以看出,随着进化过程的进行,群体中适应度较低的一些个体被逐渐淘汰掉,而适应度较高的一些个体会越来越多.并且它们都集中在所求问题的最优点附近,从而最终就可搜索到问题的最优解。
基本遗传算法源程序
 
 
 
_
 
 
 
 
 
 
 
= = i + +
 
= = = i + +
 
_ _ = i
 
 
 
 
= =
 
=
 
 
 
 

Mais conteúdo relacionado

Destaque (10)

ワダノAブテックスの情報を コピー1
ワダノAブテックスの情報を   コピー1ワダノAブテックスの情報を   コピー1
ワダノAブテックスの情報を コピー1
 
RESUME New
RESUME NewRESUME New
RESUME New
 
Smart care på vei til u.s.a, slideshow
Smart care på vei til u.s.a, slideshowSmart care på vei til u.s.a, slideshow
Smart care på vei til u.s.a, slideshow
 
scan0003
scan0003scan0003
scan0003
 
Smart care på vei til u.s.a, slideshow
Smart care på vei til u.s.a, slideshowSmart care på vei til u.s.a, slideshow
Smart care på vei til u.s.a, slideshow
 
AgileSumurai TaryuJiai
AgileSumurai TaryuJiaiAgileSumurai TaryuJiai
AgileSumurai TaryuJiai
 
Desenterrando Raíces
Desenterrando RaícesDesenterrando Raíces
Desenterrando Raíces
 
Informatica nº 4 - programação de computadores
Informatica   nº 4 - programação de computadoresInformatica   nº 4 - programação de computadores
Informatica nº 4 - programação de computadores
 
Nailing your first interview with edu kazi
Nailing your first interview with edu kaziNailing your first interview with edu kazi
Nailing your first interview with edu kazi
 
Zumbis e seus Ciclos na Mídia: uma introdução a partir de Kyle William Bishop
Zumbis e seus Ciclos na Mídia: uma introdução a partir de Kyle William BishopZumbis e seus Ciclos na Mídia: uma introdução a partir de Kyle William Bishop
Zumbis e seus Ciclos na Mídia: uma introdução a partir de Kyle William Bishop
 

Semelhante a 基本遗传算法

第3章 离散系统的时域分析
第3章   离散系统的时域分析第3章   离散系统的时域分析
第3章 离散系统的时域分析
reader520
 
04 计算机的运算方法01
04 计算机的运算方法0104 计算机的运算方法01
04 计算机的运算方法01
Huaijin Chen
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02
Huaijin Chen
 
Fux8923
Fux8923Fux8923
第2章数据类型、运算符和表达式
第2章数据类型、运算符和表达式第2章数据类型、运算符和表达式
第2章数据类型、运算符和表达式
summerfeng
 
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE     A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
Jian Michael
 
项目反应理论项目进度报告20090929
项目反应理论项目进度报告20090929项目反应理论项目进度报告20090929
项目反应理论项目进度报告20090929
Albert
 
2、故障诊断与神经网络和专家系统
2、故障诊断与神经网络和专家系统2、故障诊断与神经网络和专家系统
2、故障诊断与神经网络和专家系统
xdm2012
 
07 陣列與字串
07 陣列與字串07 陣列與字串
07 陣列與字串
shademoon
 

Semelhante a 基本遗传算法 (20)

第3章 离散系统的时域分析
第3章   离散系统的时域分析第3章   离散系统的时域分析
第3章 离散系统的时域分析
 
04 计算机的运算方法01
04 计算机的运算方法0104 计算机的运算方法01
04 计算机的运算方法01
 
Deep learning wiki on data encodingi
Deep learning  wiki on data encodingiDeep learning  wiki on data encodingi
Deep learning wiki on data encodingi
 
Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02
 
Struct免費入口不限量免費下載論文的方法ural equationmodeling
Struct免費入口不限量免費下載論文的方法ural equationmodelingStruct免費入口不限量免費下載論文的方法ural equationmodeling
Struct免費入口不限量免費下載論文的方法ural equationmodeling
 
第1章
第1章第1章
第1章
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
Fux8923
Fux8923Fux8923
Fux8923
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
第2章数据类型、运算符和表达式
第2章数据类型、运算符和表达式第2章数据类型、运算符和表达式
第2章数据类型、运算符和表达式
 
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE     A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
A ROBUST MODELING FOR MULTIPLE NONLINEAR REGRESSION USING BEZIER SURFACE
 
第2章
第2章第2章
第2章
 
项目反应理论项目进度报告20090929
项目反应理论项目进度报告20090929项目反应理论项目进度报告20090929
项目反应理论项目进度报告20090929
 
2、故障诊断与神经网络和专家系统
2、故障诊断与神经网络和专家系统2、故障诊断与神经网络和专家系统
2、故障诊断与神经网络和专家系统
 
第2章符 号 运 算
第2章符 号 运 算第2章符 号 运 算
第2章符 号 运 算
 
11第11章 偏最小二乘回归分析.ppt
11第11章  偏最小二乘回归分析.ppt11第11章  偏最小二乘回归分析.ppt
11第11章 偏最小二乘回归分析.ppt
 
Introduction to Compressive Sensing in Wireless Communication
Introduction to Compressive Sensing in Wireless CommunicationIntroduction to Compressive Sensing in Wireless Communication
Introduction to Compressive Sensing in Wireless Communication
 
08 指標
08 指標08 指標
08 指標
 
07 陣列與字串
07 陣列與字串07 陣列與字串
07 陣列與字串
 

基本遗传算法

  • 1.
  • 2. (2) 个体适应度评价 基本遗传算法 按与个体适应度成正比的概率来决定当前群体中每个个体遗传 到下一代群体中的机会多少。 为正确计算这个概率,这里要求所有个体的适应 度必须为正数或零。这样,根据不同种类的问题,必须预先确定好由目标函数 值到个体适应度之间的转换规则,特别是要预先确定好当目标函数值为负数时 的处理方法。 (3) 遗传算子 基本遗传算法使用下述三种遗传算子: • 选择运算:使用 比例选择算子 ; • 交叉运算:使用 单点交叉算子 ; • 变异运算:使用 基本位变异算子 。 (4) 基本遗传算法的运行参数 基本遗传算法有下述 4 个运行参数需要提前设定: • M :群体大小,即群体中所含个体的数量,一般取为 20 ~ 100 。 • T :遗传运算的终止进化代数,一般取为 100 ~ 500 • p c :交叉概率,一般取为 0.4 ~ 0.99 • p m :变异概率,一般取为 0.0001 ~ 0.1
  • 3. [ 说明 ] 这 4 个运行参数对遗传算法的求解结果和求解效率都有一定的影响,但目前 尚无合理选择它们的理论依据。在遗传算法的实际应用中,往往需要经过多次试 算后才能确定出这些参数合理的取值大小或取值范围。 7.1.2 基本遗传算法的形式化定义 基本遗传算法可定义为一个 7 元组: GA = (M, F, s, c, m, p c , p m ) M—— 群体大小; F—— 个体适应度评价函数; s—— 选择操作算于; c—— 交叉操作算子: m—— 变异操作算于; p c —— 交叉概率; p m —— 变异概率;
  • 4. 7.1.3 基本遗传算法描述 Procedure GA Begin initialize P(0); t=0; while (t<=T) do for i=1 to M do Evaluate fitness of P(t); end for for i=1 to M do Select operation to P(t); end for for i=1 to M/2 do Crossover operation to P(t); end for for i=1 to M do Mutation operation to P(t); end for for i=1 to M do P(t+1) = P(t); end for t=t+1 end while end
  • 5. 7.2 基本遗传算法的实现 根据上面对基本遗传算法构成要素的分析和算法描述,我们可以很方便地用计 算机语言来实现这个基本遗传算法。 现对具体实现过程中的问题作以下说明: 7.2.1 编码与解码 (1) 编码 假设某一参数的取值范围是 [u min , u max ] ,我们用长度为  的二进制编码符号串来表示该参数,则它总共能够产生 2  种不同的编码,参数编码时的对应关系如下: 00000000…00000000 = 0 u min 00000000…00000001 = 1 u min +  00000000…00000010 = 2 u min + 2  …… 11111111…11111111=2  –1 u max
  • 6. 其中,  为二进制编码的编码精度,其公式为: (2) 解码 假设某一个体的编码是: x : b  b  -1 b  -2 ……b 2 b 1 则对应的解码公式为: x = u min + (  b i · 2 i-1 ) · 1 i=  U max  u min 2   1  = U max  u min 2   1
  • 7.
  • 8.
  • 9. 基本遗传算法一般采用下面两种方法之一将目标函数值 f(x) 变换为个体的适应度 F(x) : 方法一 :对于求目标函数最大值的优化问题,变换方法为: 其中, C min 为一个适当地相对比较小的数,它可用下面方法之一来选取: • 预先指定的一个较小的数。 • 进化到当前代为止的最小目标函数值。 • 当前代或最近几代群体中的最小目标函数值。 方法二 :对于求目标函数最小值的优化问题,变换方法为: 其中, C max 是一个适当地相对比较大的数,它可用下面几种方法求得: • 预先指定的一个较大的数。 • 进化到当前代为止的最大目标函数值。 • 当前代或最近几代群体中的最大目标函数值。 F(X) = f(X)+C min if f(X)+C min > 0 0 if f(X)+C min ≤ 0 F(X) = C max - f(X) if f(X)  C max 0 if f(X)  C max
  • 10. 7.2.3 比例选择算子 (1) 选择算子或复制算子的作用: 从当前代群体中选择出一些比较优良的个体,并将其复制到下一代群体中。 (2) 最常用和最基本的选择算子 : 比例选择算子。 (3) 比例选择算子: 指个体被选中并遗传到下一代群体中的概率与该个体的适应度大小成正比。 (4) 执行比例选择的手段是轮盘选择。 轮盘法的基本精神是:个体被选中的概率取决于个体的相对适应度: p i = f i /  f i ( i=1,2,…,M ) 式中 p i —— 个体 i 被选中的概率; f i —— 个体 i 的适应度;  f i —— 群体的累加适应度。 显然,个体适应度愈高,被选中的概率愈大。但是,适应度小的个体也有可 能被选中,以便增加下一代群体的多样性。
  • 11. 轮盘选择的原理: 图中指针固定不动,外圈的圆环可以 自由转动, 圆环上的刻度代表各个个 体的适应度。当圆环旋转若干圈后停止, 指针指定的位置便是被选中的个体。 从统计意义讲,适应度大的个体,其 刻度长,被选中的可能性大;反之,适 应度小的个体被选中的可能性小,但有 时也会被“破格”选中。
  • 12. 上述轮盘选择过程,可描述如下: Ⅰ . 顺序累计群体内各个体的适应度,得相应的累计值 S i ,最后一个累计值为 S n ; Ⅱ . 在 [0, S n ] 区间内产生均匀分布的随机数 r ; Ⅲ . 依次用 S i 与 r 比较,第一个出现 S i 大于或等于 r 的个体 j 被选为复制对象; Ⅳ . 重复 Ⅲ 、 Ⅳ 项,直至新群体的个体数目等于父代群体的规模。 [ 论盘选择示例 ]
  • 13. 7.2.4 单点交叉算子 (1) 交叉算子作用 通过交叉,子代的基因值不同于父代。交换是遗传算法产生新个体的主要手段。正是有了交换操作,群体的性态才多种多样。 (2) 最常用和最基本 ——单点交叉算子。 (3) 单点交叉算子的具体计算过程如下: Ⅰ . 对群体中的个体进行两两 随机 配对。 若群体大小为 M ,则共有 [ M/2 ] 对相互 配对的个体组。 Ⅱ . 每一对相互配对的个体, 随机 设置某一基因座之后的位置为交叉点。 若染色体的长度为  ,则共有 (  -1) 个可能的交 叉点位置。 Ⅲ . 对每一对相互配对的个体,依设定的交叉概率 p c 在其 交 叉点处相互交换两个个 体的部分染色体,从而产生出两个新的个体。 单点交叉运算的示 例 如下所示 : 单点交叉 A ; 10110111 00 A ’ : 10110111 11 B : 00011100 11 B ’ : 00011100 00
  • 14. 交叉概率 式中 M—— 群体中个体的数目; M c —— 群体中被交换个体的数目。 [ 交叉操作示例 ] 交叉的个体是随机确定的,如下表所示。某群体有 n 个个体,每个个体含 8 个等位基因。针对每个个体产生一个 [0, 1] 区间的均匀随机数。假设交叉概率 p c = 0.6 ,则随机数小于 0.6 的对应个体与其随机确定的另一个个体交叉,交叉 点随机确定。 p c = M c M 个体编号 个体 随机数 交叉操作 新个体 1 11011000 0.728 11011000 2 10101011 0.589 101010 11 101010 01 3 00101100 0.678 00101100 4 10001101 0.801 100011 01 100011 11 … … … … …
  • 15. 7.2.5 基本位变异算子 基本位变异算子是最简单和最基本的变异操作算子。 对于基本遗传算法中用二进制编码符号串所表示的个体,若需要进行变异操作 的某一基因座上的原有基因值为 0 ,则变异操作将该基因值变为 1 ,反之,若原有 基因值为 1 ,则变异操作将其变为 0 。 基本位变异因子的具体执行过程是: Ⅰ . 对个体的每一个基因座,依变异概率 p m 指定其为变异点。 Ⅱ . 对每一个指定的变异点,对其基因值做取反运算或用其它等位基因值来代替, 从而产生出一个新的个体。 基本位变异运算的示例如下所示: A : 1010 1 01010 A ’ : 1010 0 01010 变异点 基本位变异
  • 16. 变异是针对个体的某一个或某一些基因座上的基因值执行的,因此变异概率 p m 也是针对基因而言,即: 式中 B—— 每代中变异的基因数目; M—— 每代中群体拥有的个体数目  —— 个体中基因串长度。 变异概率 P m = B M · 
  • 17. [ 变异操作示例 ] 变异字符的位置是随机确定的,如下表所示。某群体有 3 个个体,每个体含 4 个基因。针对每个个体的每个基因产生一个 [0, 1] 区间具有 3 位有效数字的均 匀随机数。假设变异概率 p m = 0.01 ,则随机数小于 0.01 的对应基因值产生变 异。表中 3 号个体的第 4 位的随机数为 0.001 ,小于 0.01 ,该基因产生变异, 使 3 号个体由 0010 变为 0011 。其余基因的随机数均大于 0.01 ,不产生变异。
  • 18. 7.2.6 算法流程图 开始 Gen=0 编码 随机产生 M 个初始个体 满足终止条件 ? 计算群体中各个体适应度 从左至右依次执行遗传算子 j = 0 j = 0 j = 0 根据适应度选择复制个体 选择两个交叉个体 选择个体变异点 执行变异 执行交叉 执行复制 将复制的个体添入新群体中 将交叉后的两个新个体添入新群体中 将变异后的个体添入新群体中 j = j+1 j = j+2 j = j+1 j = M ? j = p c ·M ? j = p m ·L·M ? Gen=Gen+1 输出结果 终止 Y N Y Y Y N N N p c p m
  • 19. 7.3 基本遗传算法应用举例 —— 基本遗传算法在函数优化中的应用 。 [ 例 ] Rosenbrock 函数的全局最大值计算。 max f(x 1 ,x 2 ) = 100 (x 1 2 -x 2 2 ) 2 + (1-x 1 ) 2 s.t. -2.048 ≤ x i ≤ 2.048 (x i =1,2) 如图所示: 该函数有两个局部极大点, 分别是 : f(2.048, -2048)=3897.7342 和 f(-2.048,-2.0048)=3905.9262 其中后者为全局最大点。
  • 20. 下面介绍求解该问题的遗传算法的构造过程: 第一步 :确定决策变量及其约束条件。 s.t. -2.048 ≤ x i ≤ 2.048 (x i =1,2) 第二步: 建立优化模型。 max f(x 1 ,x 2 ) = 100 (x 1 2 -x 2 2 ) 2 + (1-x 1 ) 2 第三步; 确定编码方法。 用长度为 l0 位的二进制编码串来分别表示二个决策变量 x 1 ,x 2 。 lO 位二进制编码串可以表示从 0 到 1023 之间的 1024 个不同的数,故将 x 1 ,x 2 的定义域离散化为 1023 个均等的区域,包括两个端点在内共有 1024 个不同的离散点。从离散点 -2.048 到离散点 2.048 ,依次让它们分别 对应于从 0000000000(0) 到 1111111111(1023) 之间的二进制编码。再将分别表示 x 1 和 x 2 的二个 10 位长的二进制编码串连接在一起,组成一个 20 位长的二进制编码串,它就构成了这个函数优化问题的染色体编码方法。例如 X : 0000110111 11011 10001 就表示一个个体的基因型。
  • 21. 第四步: 确定解码方法。 解码时先将 20 位长的二进制编码串切断为二个 10 位长的二进制编码串,然后分别将它们转换为对应的十进制整数代码,分别记为 y 1 和 y 2 。 依据前述个体编码方法相对定义域的离散化方法可知,将代码 y i 转换为变量 x i 的解码公式为: 例如,对前述个体 X : 0000110111 11011 10001 它由这样的两个代码所组成: y 1 = 55 y 2 = 881 经上式的解码处理后,得到: x 1 = -1.828 x 2 = 1.476 x i = 4.096  y i 1023  2.048 ( i = 1,2)
  • 22. 第五步: 确定个体评价方法。 由式 f(x 1 ,x 2 ) = 100 (x 1 2 -x 2 2 ) 2 + (1-x 1 ) 2 可知, Rosenbrock 函数的值域总是非负的,并且优化目标是求函数的最大值,故这里可将个体的适应度直接取为对应的目标函数值,并且不再对它作其他变换处理,即有: F(x) = f(x 1 ,x 2 ) 第六步: 设计遗传算子。 选择运算使用比例选择算子; 交叉运算使用单点交叉算子; 变异运算使用基本位变异算子。 第七步: 确定遗传算法的运行参数。 对于本例,设定基本遗传算法的运行参数如下: 群体大小 : M = 80 终止代数 : T = 200 交叉概率: p c = 0.6 变异概率: p m = 0.001
  • 24. (a) 下图所示分别为初始群体、第 5 代群体、第 10 代群体和第 100 代群体中个体的分布情况。 在图 (a) 中各个个体分布得比较均匀。
  • 26. 从图 (c) 中可以看出,次最优点也被淘汰。 (c)
  • 27. 从图 (d) 中可以看出,个体更加集中在最优点附近。 (d) 由该组图我们可以看出,随着进化过程的进行,群体中适应度较低的一些个体被逐渐淘汰掉,而适应度较高的一些个体会越来越多.并且它们都集中在所求问题的最优点附近,从而最终就可搜索到问题的最优解。
  • 29.  
  • 30.  
  • 31.  
  • 32. _
  • 33.  
  • 34.  
  • 35.  
  • 36.  
  • 37.  
  • 38.  
  • 39.  
  • 40. = = i + +
  • 41.  
  • 42. = = = i + +
  • 43.  
  • 44. _ _ = i
  • 45.  
  • 46.  
  • 47.  
  • 48.  
  • 49. = =
  • 50.  
  • 51. =
  • 52.  
  • 53.  
  • 54.  
  • 55.