实数编码遗传算法中交叉算子的研究与改进
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实数编码遗传算法中交叉算子的研究与改进
王巍,彭力
江南大学通信与控制工程学院控制研究中心,江苏无锡(214122)
E-mail:wangwei8311@
摘 要:为了克服实数编码遗传算法进化过程易于停滞的缺点,从个体以及种群的平均适应
度两个方面,对常用的中间重组交叉算子进行了详细的分析。并在进一步思考了其他两种改
的个体在下一代的期望复制数为 1”这一事 实的证明,可以看出:这会导致比例选择操 作失去了效力,出现了对每一个个体都复制 一次的结果,即等概率复制。
综上所述,采用中间重组的交叉操作, 父代与子代的平均适应度几乎不发生变化, 并且种群中的个体会趋于相同,使进化过程 停滞。
基于这种观点,对上面图 1 加以分析。 分析如下:虽然中间重组的交叉操作从始至 终不会改变父代与子代的平均适应度,但在 进化开始时,由于初始种群个体的多样性, 选择算子会起到作用,使得种群的平均适应 度有所上升,随着进化的进行,种群中的个 体会趋于相同,导致个体的适应度都约等于 平均适应度,这就使得比例选择操作失去了 效力,而变异只能产生个别的新解,所以造 成了寻优过程的停滞不前。这也就是图 1 中 的曲线开始时上升,随后趋于平缓,而收敛 不到全局最优解的原因了。
f avg (t + 1) =
f (x(t)) + βf ( y(t) − x(t)) + 2
f ( y(t)) + αf (x(t) − y(t))
= f (x(t)) + f ( y(t)) + f (x(t) − y(t)) (α − β )
2
2
= f avg (t) + Δ
(8)
其中
Δ=
f (x(t) − y(t)) (α − β ) 。
2
当α = β 时, f avg (t + 1) = favg (t) ,说
明父代种群中的任意两个体在经过交叉操
作后,平均适应度不变。由上述 x(t), y(t) 选
取的任意性,可知整个种群的平均适应度也
是 不 变 的 ; 当 α≠β 时 , 由 于
α, β ∈ rand (0,1) , Δ 变化范围很小,所以
则子代个体中的第 i 维变量的交叉算子
计算式为:
xi (t +1) = yi (t +1) = αxi (t) + (1 − α ) yi (t)
(14) 其中,α = f (x) 。
f (x) + f (y)
3.1.2 均匀算术交叉算子的分析
可以认为(14)式是一种加权操作,其实 质是对适应度大的个体加以较大的权重,使 得子代个体在适应度大的父代个体附近产 生。
(5) 从上面的推导可以看出,中间重组的交 叉算子使得产生解的搜索空间不断缩小。
f avg (t + 1) =
f (x(t + 1)) + 2
f ( y(t + 1))
= f (x(t) + β[ y(t) − x(t)]) + f ( y(t) + α[x(t) − y(t)]) 2
(7)
由于线性组合满足齐次性和叠加性,所以:
中图分类号:TP301.6
文献标识码:A
1. 引言(Introduction)
遗传算法(Genetic Algorithm)是模拟达 尔文的遗传选择和自然淘汰的生物进化进 程 的 计 算 模 型 , 由 美 国 Michigan 大 学 的 J.Holland 教授创建的。是一种高度并行的随 机化搜索的自适应的组合优化算法。该算法 不需要求导或其他辅助知识,只是通过影响 搜索方向的目标函数和相应的适应度函数 来寻求最优解。在许多领域得到了应用。
后的平均适应度。
(a) 交叉操作前的平均适应度
(b) 交叉操作后的平均适应度
(c) 交叉操作前的平均适应度
(d) 交叉操作后的平均适应度
图 1 交叉操作前后的平均适应度变化曲线 Fig.1 Changing curves of average fitness using
crossover operator
从图(a)与(b)的对比和(c)与(d)的对比中 可以看出,种群的平均适应度在经过交叉操 作后是几乎不发生变化的。
2.3 小结
为了更好地说明中间重组交叉算子的
给寻优过程带来的影响,先对一事实加以证
明。
下面对“适应度等于平均适应度的个体
在下一代的期望复制数为 1”进行证明。
f (x(t)), f ( y(t)) ,其平均适应度为:
f avg (t) =
f (x(t)) + 2
f ( y(t))
(6)
子代两个体的适应度为:
f (x(t) + β[ y(t) − x(t)])
和
进行交叉后,都不会导致平均适应度的变
化,所以,解个体在进行交叉后,也不会使
整个种群的平均适应度发生变化。
fi = ( f1 + f2 +Λ + fn ) n
(10)
若采用比例选择算子,则各个体的相对
适应度(即选择概率)为:
f1 , f2 ,Λ , fi ,Λ , fn
f sum f sum
f sum
f sum
(11)
所以,子代的期望复制数分别为:
f1 × n , f2 × n ,Λ , fi × n ,Λ , fn × n
max[xi (t +1), yi (t +1)]) ,Λ , xi (t + n), yi (t + n) ∈(min[xi (t + n −1), yi (t + n −1)],
max[xi (t + n −1), yi (t + n −1)]) (4)
即:
(min[xi (t + n), yi (t + n)],max[xi (t + n), yi (t + n)]) ⊂ (min[xi (t + n −1), yi (t + n −1)], max[xi (t + n −1), yi (t + n −1)]) ⊂ Λ ⊂ (min[xi (t), yi (t)],max[xi (t), yi (t)])
然而从上面中间重组交叉算子对新解产生
的解空间的影响的分析中可以看出,这种算
子使得解的搜索空间不断缩小。因此,种群
中的个体最终会因为这种中间重组的交叉
算子而趋于相同,进而使得个体的适应度都
趋于相同,也即个体的适应度都约等于平均
-3-
适应度。 而通过上面对“适应度等于平均适应度
虽然中间重组的交叉操作从始至终不会改变父代与子代的平均适应度但在进化开始时由于初始种群个体的多样性选择算子会起到作用使得种群的平均适应度有所上升随着进化的进行种群中的个体会趋于相同导致个体的适应度都约等于平均适应度这就使得比例选择操作失去了效力而变异只能产生个别的新解所以造成了寻优过程的停滞不前
交叉后的两子代个体分别为:
x(t + 1) = [x1 (t + 1), x2 (t + 1),Λ , xn (t + 1)] y(t + 1) = [ y1(t + 1), y2 (t +1),Λ , yn (t + 1)]
(2)
其中, xi (t), yi (t) 为父代解向量中对应的第 i 维变量,即第 i 个待优化参数; xi (t + 1), yi (t + 1) 为子代解向量中对应的第 i
进型交叉算子的基础上,结合两者的优点,提出了一种新的改进型交叉算子——启发式加权
交叉算子。用 Shaffer’s F6 函数和 De Jone 测试函数 f2 进行了对比测试,仿真试验结果表明 该交叉算子优于前两者,能够使寻优过程以较快的速度和较好的结果收敛,克服了进化的停
滞。
关键词:遗传算法;交叉算子;改进;实数编码
证明:设种群中有 n 个个体,其适应度
分别为: f1, f 2 ,Λ , fn 。
令 f sum = f1 + f 2 + Λ + fn ,所以,
f avg = f sum n = ( f1 + f 2 + Λ + f n ) n
(9)
再设个体 i 的适应度等于种群的平均适
应度,即 fi = favg (1 ≤ i ≤ n) ,所以有:
2.2.1 对解空间中个体的影响
f ( y(t) + α[x(t) − y(t)]) ,其平均适应度为:
设父代个体中第 i 维变量为 xi (t), yi (t) , 则第一次交叉后的子代个体中第 i 维变量
为: xi (t + 1), yi (t + 1) ,第二次交叉后子代个
体中第 i 维变量为: xi (t + 2), yi (t + 2) ,如此 循环,第 n 次交叉后子代个体中第 i 维变量
f avg (t + 1) ≈ favg (t) 。
②再来考虑解个体有 n 维,即:待优化 参数只有 n 个,并且适应度函数仍为解的线 性组合的情况。在这种情况下,每一维的在
பைடு நூலகம்
2.2.2 对种群平均适应度的影响
下面推导当采用中间重组的交叉算子
时,子代与父代的平均适应度的关系。
①为了简便,首先考虑解个体只有一
2. 中间重组交叉算子的描述与 分析(Description and analysis of crossover operator)
2.1 中间重组交叉算子的描述
设用于交叉的任意两父代个体分别为:
x(t) = [x1(t), x2 (t),Λ , xn (t)]
(1)
y(t) = [ y1(t), y2 (t),Λ , yn (t)]
f
(
x,
y )= 0.5−
sin 2 x 2 + y 2 − 0 .5 (1 + 0 .001 ( x 2 + y 2 )) 2
分别对α = β 、α ≠ β 时进行仿真试
验。仿真结果如图 1。
图 1 中,(a)和(b)图是当α = β 时,各
-2-
代交叉操作之前和之后的平均适应度;(c)
和(d)是当α ≠ β 时,各代交叉操作之前和之
遗传算法常用的编码方式有两种,一种 是二进制编码,另一种是浮点数编码。这两 种编码方式各有所长,二进制编码方式与浮 点数编码方式相比,搜索能力强,但是浮点 数编码比二进制编码在变异操作上能够保 持更好的种群多样性[1]。
目前,对于实数编码的遗传算法,交叉 操作算子多采用传统的中间重组的方法 [2][3][4]。但是,这种交叉方法易于使寻优过程 停滞,不能得到满意解。因此,很多人也对 此进行了改进,提出了许多改进型的交叉算 子[5][6],但是,在使用过程中,也出现了问 题。本文对传统的中间重组的方法以及两种 改进型交叉算子进行了分析,并在此基础 上,提出一种新的交叉算子,使得算法不论 在收敛的快速性还是正确性上都有很大的 提高。
③最后,考虑解个体有 n 维,并且适应 度函数为解的非线性组合的情况。在这种情
况下,可对非线性的适应度函数进行线性
化,因此猜想在进行中间重组交叉操作后,
整个种群的平均适应度是不变的,但有待证
明。
通过对非线性的 Shaffer’s F6 函数的仿 真试验,表明父代与子代的平均适应度是不
变的。
Shaffer’s F6 函数表达式为:
维,即:待优化参数只有一个,并且适应度
函数为解的线性组合的情况。
设 x(t), y(t) 为父代种群中的任意两个
体 , 则 由 (3) 式 得 到 子 代 个 体 为 :
x(t) + β[ y(t) − x(t)]
和
y(t) + α[x(t) − y(t)] 。再设 f (⋅) 为适应度
函数,则父代两个体的适应度分别为:
为: xi (t + n), yi (t + n) 。
因为 α, β ∈ rand (0,1) ,所以,
xi (t +1), yi (t +1) ∈(min[xi (t), yi (t)],max[xi (t), yi (t)]) xi (t + 2), yi (t + 2)∈(min[xi (t +1), yi (t +1)],
维变量。从父代到子代交叉变异的公式为:
xi (t + 1) = αxi (t) + (1 − α ) yi (t) = yi (t) + α[xi (t) − yi (t)] yi (t + 1) = βyi (t) + (1 − β )xi (t) = xi (t) + β[ yi (t) − xi (t)]
f sum
f sum
f sum
f sum
(12)
其中 fi × n = [( f1 + f2 + Λ + fn ) n]× n = 1,即:
f sum
f sum
适应度等于平均适应度的个体在下一代的
期望复制数为 1。证毕。 在遗传算法中,因为交叉操作是产生新
解的主要手段,而变异操作仅是使模式多样
化的一种辅助手段,它不能大量产生新解。
(3)
其中,α, β ∈ rand (0,1) 。
2.2 中间重组交叉算子的分析
目前,对于实数编码的遗传算法,很多 论文中都采用了这种交叉算子[2][3][4]。下面分 别从解个体的微观层次和整个种群平均适 应度的宏观层次对这种交叉算子进行分析。
-1-