基本遗传算法(讲的很好很透彻_学习亲测)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ⅱ. 对每一个指定的变异点,对其基因值做取反运算或用其它等位基因值来代替,
从而产生出一个新的个体。 基本位变异运算的示例如下所示: 基本位变异 A:1010 1 01010 变异点 A’:1010 0 01010
变异概率
变异是针对个体的某一个或某一些基因座上的基因值执行的,因此变异概率pm 也是针对基因而言,即: Pm = B M ·l
Umax umin
2l 1
= - 0.3 + 70352(12.1+3)/(218-1) = 1.052426
2.2 个体适应度评价
如前所述,要求所有个体的适应度必须为正数或零,不能是负数。 (1) 当优化目标是求函数最大值,并且目标函数总取正值时,可以直接设定个体 的适应度F(X)就等于相应的目标函数值f(X),即: F(X)=f(X) (2) 对于求目标函数最小值的优化问题,理论上只需简单地对其增加一个负号就
式中
B——每代中变异的基因数目; M——每代中群体拥有的个体数目 l——个体中基因串长度。
[变异操作示例] 变异字符的位置是随机确定的,如下表所示。某群体有3个个体,每个体含4 个基因。针对每个个体的每个基因产生一个[0, 1] 区间具有3位有效数字的均 匀随机数。假设变异概率 pm = 0.01,则随机数小于0.01的对应基因值产生变 异。表中3号个体的第4位的随机数为0.001,小于0.01,该基因产生变异, 使3号个体由 0010 变为 0011 。其余基因的随机数均大于0.01,不产生变异。
交叉概率
pc =
Mc M
式中 M——群体中个体的数目; Mc——群体中被交换个体的数目。 [交叉操作示例] 交叉的个体是随机确定的,如下表所示。某群体有n个个体,每个个体含8 个等位基因。针对每个个体产生一个[0, 1] 区间的均匀随机数。假设交叉概率 pc = 0.6,则随机数小于0.6的对应个体与其随机确定的另一个个体交叉,交叉 点随机确定。 个体编号 1 2 3 4 … 个体 11011000 10101011 00101100 10001101 … 随机数 0.728 0.589 0.678 0.801 … 交叉操作 11011000 101010 11 00101100 100011 01 … 100011 11 … 101010 01 新个体
2.4 单点交叉算子
(1) 交叉算子作用
通过交叉,子代的基因值不同于父代。交换是遗传算法产生新个体的主要手段。 正是有了交换操作,群体的性态才多种多样。
(2) 最常用和最基本——单点交叉算子。 (3) 单点交叉算子的具体计算过程如下: Ⅰ. 对群体中的个体进行两两随机配对。 若群体大小为M,则共有 [ M/2 ]对相互 配对的个体组。 Ⅱ. 每一对相互配对的个体,随机设置某一基因座之后的位置为交叉点。
1.1 基本遗传算法的构成要素
(1) 染色体编码方法 基本遗传算法使用固定长度的二进制符号串来表示群体中的个体,其等位基 因由二值符号集{0,1}组成。
初始群体中各个个体的基因值用均匀分布的随机数来生成。如:
x;100111001000101101 就可表示一个个体,该个体的染色体长度是 l=18。
上述轮盘选择过程,可描述如下:
Ⅰ. 顺序累计群体内各个体的适应度,得相应的累计值Si,最后一个累计值为Sn; Ⅱ. 在[0, Sn]区间内产生均匀分布的随机数r; Ⅲ. 依次用Si与r比较,第一个出现Si大于或等于r的个体j被选为复制对象; Ⅳ. 重复 Ⅲ、Ⅳ 项,直至新群体的个体数目等于父代群体的规模。
若染色体的长度为l ,则共有(l-1)个可能的交叉点位置。
Ⅲ. 对每一对相互配对的个体,依设定的交叉概率pc在其交叉点处相互交换两个个 体的部分染色体,从而产生出两个新的个体。 单点交叉运算的示例如下所示: A;10110111 00 单点交叉 A’:10110111 11 B:00011100 11 B’:00011100 00
2.3 比例选择算子
(1) 选择算子或复制算子的作用: 从当前代群体中选择出一些比较优良的个体,并将其复制到下一代群体中。 (2) 最常用和最基本的选择算子: 比例选择算子。
(3) 比例选择算子:
指个体被选中并遗传到下一代群体中的概率与该个体的适应度大小成正比。 (4) 执行比例选择的手段是轮盘选择。
M——群体大小; F——个体适应度评价函数; s——选择操作算于; c——交叉操作算子: m——变异操作算于; pc——交叉概率; pm——变异概率;
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
可将其转化为求目标函数最大值的优化问题,即:
min f(X)=max ( - f(X)) 但实际优化问题中的目标函数值有正也有负,优化目标有求函数最大值,也有 求函数最小值,显然上面两式保证不了所有情况下个体的适应度都是非负数这个 要求。
基本遗传算法一般采用下面两种方法之一将目标函数值 f(x)变换为个体的适应度F(x): 方法一:对于求目标函数最大值的优化问题,变换方法为: f(X)+Cmin if f(X)+Cmin> 0 F(X) = 0 if f(X)+Cmin ≤ 0 其中,Cmin为一个适当地相对比较小的数,它可用下面方法之一来选取: • 预先指定的一个较小的数。 • 进化到当前代为止的最小目标函数值。 • 当前代或最近几代群体中的最小目标函数值。
2 基本遗传算法的实现
根据上面对基本遗传算法构成要素的分析和算法描述,我们可以很方便地用计
算机语言来实现这个基本遗传算法。
现对具体实现过程中的问题作以下说明:
2.1 编码与解码
(1) 编码
假设某一参数的取值范围是[umin , umax],用长度为l的二进制编码符号串来表 示该参数,则它总共能够产生 2l种不同的编码,参数编码时的对应关系如下:
(2) 个体适应度评价 基本遗传算法按与个体适应度成正比的概率来决定当前群体中每个个体遗传 到下一代群体中的机会多少。为正确计算这个概率,这里要求所有个体的适应 度必须为正数或零。这样,根据不同种类的问题,必须预先确定好由目标函数 值到个体适应度之间的转换规则,特别是要预先确定好当目标函数值为负数时 的处理方法。 (3) 遗传算子
轮盘法的基本精神是:个体被选中的概率取决于个体的相对适应度:
pi = fi / fi ( i=1,2,…,M )
式中 pi——个体i被选中的概率;
fi——个体i的适应度;
fi——群体的累加适应度。 显然,个体适应度愈高,被选中的概率愈大。但是,适应度小的个体也有可
能被选中,以便增加下一代群体的多样性。
基本遗传算法使用下述三种遗传算子: • 选择运算:使用比例选择算子; • 交叉运算:使用单点交叉算子; • 变异运算:使用基本位变异算子。
(4) 基本遗传算法的运行参数 基本遗传算法有下述4个运行参数需要提前设定: • M:群体大小,即群体中所含个体的数量,一般取为20 ~ 100。 • T:遗传运算的终止进化代数,一般取为100 ~ 500 • pc:交叉概率,一般取为0.4 ~ 0.99 • pm:变异概率,一般取为 0.0001 ~ 0.1
2.6 算法流程图
开始 Gen=0 编码 随机产生M个初始个体 满足终止条件?
Y
输出结果
N
计算群体中各个体适应度 从左至右依次执行遗传算子
终止
pm
j=0 选择个体变异点 执行变异
pc
j=0 根据适应度选择复制个体 执行复制 将复制的个体添入 新群体中 j = j+1
j=0 选择两个交叉个体 执行交叉 将交叉后的两个新个体 添入新群体中 j = j+2
将变异后的个体添入 新群体中
j = j+1
N
j = M? Y
N
j = pc· M? Y
Gen=Gen+1
N
j = pm· L· M? Y
3 基本遗传算法应用举例 —— 基本遗传算法在函数优化中的应用。
[例] Rosenbrock函数的全局最大值计算。
max s.t.
如图所示:
f(x1,x2) = 100 (x12-x22)2 + (1-x1)2 -2.048 ≤ xi ≤ 2.048 (xi=1,2)
方法二:对于求目标函数最小值的优化问题,变换方法为: F(X) =
Cmax - f(X) if f(X) Cmax 0 if f(X) Cmax
其中,Cmax是一个适当地相对比较大的数,它可用下面几种方法求得: • 预先指定的一个较大的数。 • 进化到当前代为止的最大目标函数值。 • 当前代或最近几代群体中的最大目标函数值。
2l 1
得:
2l =
Umax umin +1 12.1 + 3.0 +1 = 1/10000 = 151001
即: 217 < 151001 < 218 x需要18位 {0/1} 符号表示。 如:010001001011010000 解码:
1
x = umin + ( bi
i=l
·2i-1) ·
轮盘选择的原理:
图中指针固定不动,外圈的圆环可以 自由转动, 圆环上的刻度代表各个个 体的适应度。当圆环旋转若干圈后停止, 指针指定的位置便是被选中的个体。 从统计意义讲,适应度大的个体,其 刻度长,被选中的可能性大;反之,适 应度小的个体被选中的可能性小,但有 时也会被“破格”选中。
[轮盘选择示例]
(2) 解码
假设某一个体的编码是:
x: bl bl-1 bl-2……b2b1
则对应的解码公式为:
U umin x = umin + ( bi ·2i-1 ) · max iBaidu Nhomakorabeal 2l 1
1
[例 ]
设 -3.0 ≤ x ≤ 12.1 , 精度要求 =1/10000,由公式: =
Umax umin
[说明]
这4个运行参数对遗传算法的求解结果和求解效率都有一定的影响,但目前 尚无合理选择它们的理论依据。在遗传算法的实际应用中,往往需要经过多次试 算后才能确定出这些参数合理的取值大小或取值范围。
1.2 基本遗传算法的形式化定义
基本遗传算法可定义为一个7元组:
GA= (M, F, s, c, m, pc, pm )
该函数有两个局部极大点,
00000000…00000000=0 00000000…00000001=1 00000000…00000010=2 …… 11111111…11111111=2l–1
umin umin + umin + 2
umax
其中, 为二进制编码的编码精度,其公式为:
=
Umax umin 2l 1
基本遗传算法(GA)
1 基本遗传算法描述
遗传算法在自然与社会现象模拟、工程计算等方面得到了广泛应用。在各个
不同的应用领域,为了取得更好的结果,人们对GA进行了大量改进,为了不至 于混淆,我们把Holland提出的算法称为基本遗传算法,简称 GA、SGA (Simple Genetic Algorithm )、CGA(Canonical Genetic Algorithm),将其它 的“GA类”算法称为GAs(Genetic Algorithms),可以把GA看作是GAs的一种特 例。
2.5 基本位变异算子
基本位变异算子是最简单和最基本的变异操作算子。
对于基本遗传算法中用二进制编码符号串所表示的个体,若需要进行变异操作 的某一基因座上的原有基因值为0,则变异操作将该基因值变为1,反之,若原有 基因值为1,则变异操作将其变为0。 基本位变异因子的具体执行过程是: Ⅰ. 对个体的每一个基因座,依变异概率pm指定其为变异点。