第二章 进化计算的基本原理
2.1 经典遗传算法
1.二进制编码
一个串长为m的二进制数
b1b2...bm,其中
bi=0或1,i=1,…,m,其表示的最小整数为0,最大整数为
11...1=2m−1。共可以表示
2m个整数,分别为0,1,…,
2m−1。
假设变量x变化范围为
x∈[a,b],解得精度为
10−α。将[a,b]的两个等分为若干个小区间,只用二进制数表示等分点和区间的端点。为达到精度要求,只要将[a,b]等分成(b-a)*
10α个小区间。将等分点(包括端点)的最好点作为解得近似,则最优解和最好点的距离不超过精度。m应满足
(b−a)×10α+1≤2m,同时m-1应满足:$2^{m-1}<(b-a) \times 10^\alpha+1 $,因此m应该满足$2^{m-1}-1<(b-a) \times 10^\alpha\le 2^m-1 $
编码方法:m位二进制数中最小为0,最大为
2m−1,共
2m个整数,故当二进制的位数为m时,用
[0,2m−1]便可表示所有的整数。将m位的整数与[a,b]中的等分点一一对应。
解码方法:设
B=bm−1bm−2...b0为任一个m位的二进制数,则B对应的十进制数为
x1=∑i=0m−1bi2i。用如下变换将
x1对应于[a,b]中的等分点x,
x=a+(b−a)×x!/(2m−1)
2.初始群体
随机产生N个m位的二进制数。N称为群体规模。
3.适应度函数
比偶较常见的取法:
对于
maxf(x),取
Fit(x)=f(x)−fmin,其中,
fmin是
f(x)的下界。
对于
minf(x),取
Fit(x)=fmax−f(x),其中,
fmax是
f(x)的上界。
一般要满足:取正值,x越好,Fit(x)越大。
4.选择算子(赌轮选择方法)
(1)准备
计算群体中每个个体
xi被选择的概率,即
pi=Fit(xi)/∑j=1NFit(xj)
注意
pi≥0,andp1+p2+...+pN=1
计算
xi的累加概率,即
qi=∑j=1ip(j),i=1,2,3,...,N
(2)选择
根据概率将圆盘形的赌轮等分成N个扇形,在进行选择时,可假象随机转动一下赌轮,若指针落入第r个扇形内,则选择个体
xr。这样,重复N次,便可选出N个个体。
上述可用以下数学方法在计算机上实现。将[0,1]区间依次分成长度为
p1p1...pN的小区间,按均匀分布在[0,1]中产生一个随机数,这个数落在第几个小区间,就选择第几个个体参加交叉。(例如,
r<q1,则选择
x1,若
qi−1≤r≤qi,i>1则选择
xi参加遗传)这样,重复N次,便可选出N个个体。
这种选择的特点是:个体适应度越大,他被选择的机会越多。
5.遗传算子
(3)交叉
我们以单点交叉为例:假设
x1=000101001...1,x2=110010110...0是被选择交叉的一对,他们的串长为l,随机选取1,…,l-1位中的一位,如第k位(从左往右),交换第k位右端部分的二进制串后得到两个后代。
(4)变异
先取定变异概率
pm(一般较小,
pm≤0.05),对交叉后代集中每个后代的每一位,产生一个随机数
r⊂[0,1],若
r≤pm,则将该位取反,否则该位不变。(或对每一个个体产生一个随机数若该个体被选中,随机选择一位进行变异)
6.选择下一代群体P(t+1)
在
P(t)∪O1,...,ON中按照某种法则选出N个个体,组成下一代群体P(t+1)。(比如选出最好的个体等等)
2.2 模式定理
模式定理证明群体中适应度高的个体,其生存的机会概率就可能高。
1.概念
(1)通配符(或无关符或任意符)。在一个{0,1,
∗}中组成的字符串中,
∗叫做通配符,它既可以表示0,也可以表示1。因此它是不确定字符。
(2)模式(schema)。一个由{0,1,
∗}中字符构成的字符串称为模式,它表示将字符串中的每一个
∗都用0和1替换后所得的所有可能的字符串的集合。记作
H。
(3)模式阶(schema order)。模式
H中确定字符(0和1)的个数称为模式的H的阶,记作
O(H)。
(4)定义距(defining length)。模式
H中的第一个(最左边)确定字符的位置到最后一个确定字符的位置间的距离,即最后一个确定字符(0或1)的位数(从左算起)减去第一个确定字符的位数,记作
δ(H)。
2.模式定理
定义:设
P(t)=x1,x2,...,xN表示第t代群体,Fit(x)为适应度函数,则称
f(H,t)=∣H∩p(t) ∣1∑x⊂H∩P(t)Fit(x)
为模式
H的平均适应度。其中,
∣H∩p(t) ∣表示$H\cap p(t)
中元素的个数,即P(t)中含有H$中元素的个数。
模式定理:设经典遗传算法的交叉和变异概率分别为
pc和
pm,模式
H的定义距为
δ(H),阶为
O(H),第t+1代种群P(t+1)含有H中元素个数的期望值记为
E(∣H∩p(t+1) ∣)≥∣H∩p(t) ∣Fˉ(t)f(H,t)psurvival(H)=∣H∩p(t) ∣Fˉ(t)f(H,t)[1−pcl−1δ(H)](1−pm)O(H)
≈∣H∩p(t) ∣Fˉ(t)f(H,t)[1−pcl−1δ(H)−pmO(H)]
式中,l为P(t)中个体的位数,即串长;
Fˉ(t)=x⊂P(t)∑Eval(x)∣P(t)∣;psurvival(H)为
H不被交叉和变异算子破坏的概率。
由于定理的重要性,接下来从三部分对其进行证明。
(1)选择对模式的影响。
据赌轮选择规则,个体被选择的次数和适应度成正比,且每转动一次赌轮,$H\cap p(t) $中的每一个个体被选择的次数占群体中个体被选择次数的平均比例(即平均百分比或被选择平均概率)为
f(H,t)/F(t)
式中,
F(t)=∑x∈P(t)Fit(x)。注意到,$H\cap p(t)
中含有{\vert H\cap p(t) \ \vert }
个个体,且每个要经受N次选择。假设随机变量是H\cap p(t) $中的每一个个体被选择的次数,故其期望为
∣H∩p(t) ∣×N×f(H,t)/F(t)=∣H∩p(t) ∣×f(H,t)/F(t)
式中,
F(t)=F(t)/N为P(t)的平均适应度。
(2)交叉对模式的影响。
由于单点交叉是随机选取1到l-1位置中某一位作为交叉点,然后交换交叉点后两父母体的对应子串,则只有当交叉点落在H的定义距智能的位置,H才有可能被破坏。但应该注意,即使交叉点落在定义距位置内,H仍有不被破坏的可能性。
例如,两个个体
A=0100011,B=1110010作为单点交叉,即使交叉点位于H的第2位和第4位之间(从左),A,B交叉后的后代仍属于模式
H=∗1∗∗0∗∗故,H被破坏的概率不超过
l−1δ(H)。又因为交叉是以概率
pcl−1δ(H)。所以,经交叉后,H不被破坏(生存)的概率至少为
1−pcl−1δ(H)
于是,经过选择和交叉后,模式H中仍生存的元素个数的期望值至少是
∣H∩p(t) ∣×f(H,t)/F(t)×[1−pcl−1δ(H)]
(3)变异对模式的影响。
因为对交叉后的每个个体,其每一位发生变异的概率为
pm,所以,该位不发生变异的概率为
1−pm,而模式H在变异算子的作用下,若要不受破坏,其确定位置的0,1在变异时必须不发生变化,而模式的阶为O(H),因此在变异算子的作用下,H不被破坏的概率为
(1−pm)O(H)。故经过选择、交叉、变异之后,P(t+1)含有H中元素的个数的期望值应该满足:
E(∣H∩p(t+1) ∣)≥∣H∩p(t) ∣Fˉ(t)f(H,t)[1−pcl−1δ(H)](1−pm)O(H)
当
pm<<1,pc<<1时,
(1−pm)O(H)≈1−pmO(H),且
[1−pcl−1δ(H)][1−pmO(H)]≈[1−pcl−1δ(H)−pmO(H)]
因此可得以下推论:
在经典遗传算法中,定义距短、低阶且适应度高于平均适应度的模式H,在后代中,其在群体中数目的期望值以指数级递增。
证明 假设对
∀t′≤t,都有
Fˉ(t′)f(H,t′)>C>>1,δ(H),O(H)都很小,因为
pcl−1δ(H)<<1,pmO(H)<<1,所以一般地,
∃K>1,使
Fˉ(t)f(H,t)[1−pcl−1δ(H)−pmO(H)]≥K>1
因此,
E(∣H∩p(t+1) ∣)≥∣H∩p(t) ∣⋅K≥∣H∩p(0) ∣⋅Kt。
保证了较优的模式的样本数按指数级增长。
2.3 积木块假设
具有低阶、短定义距以及高适应度的模式称作积木块。
积木块假设 低阶、短定义距以及高适应度的模式在遗传算子的作用下,相互结合,能生成高阶、长定义距、更高平均适应度的模式,并可最终生成全局最优解。(尚未被证明,但大量实验支持这一假设)
保证了遗传算法具备寻找到全局最优解的能力。
2.4 编码规则、群体的设定及适应度函数的尺度化
1.编码规则
通常编码设计具有以下原则:(1)完备性:原问题空间的所有点都能成为编码的点。(2)健全性:编码后的空间的点能对应原问题空间中的所有的点。(3)非冗余性:染色体的和候选解一一对应。
De Jong提出的编码规则:
(1)有意义的积木块编码规则:所有编码规则应在遗传算子的作用下易于生成所求解问题相关的积木块。
(2)最小字符集编码规则:所有编码应使问题能够得到自然表述,而用最小的字符集。
eg:TSP问题
用1,2,3,4的一个排列
I1I2I3I4表示一条路径,它表示的路径为
I1−I2−I3−I4−I1
在进行交叉时,只需要将交叉算子的中间段互换,按照中间段的对应规则将左右两段换位对应字符即可。
因此,设计的编码在表示时要尽量简单,有利于计算机编程。设计的编码要利于后面的遗传算子的操作,且遗传算子在此编码下易于产生更好的解和能产生解得多样性。
2.初始种群的产生
设定群体的规模N和初始群体。
N越大,陷入局部解得危险越小。N太大,计算量会急剧增加,降低收敛的速度;另一方面,N太小,遗传算法搜索空间容易被限制在较小范围内,因此导致未成熟收敛。因此,一般根据问题的维数和难度确定N,一般几十到几百之间。
(1)随机方法产生。(2)根据特定问题,具体分析。
3.适应度函数的尺度化
将适应度函数的值放大或缩小来重新定义适应度函数,以使遗传算法避免未成熟收敛或加快收敛的过程叫适应度函数的尺度化。
一般的,令
u:R→R+为R上严格单增非负函数,则$\bar{f(x)}=u(Fit(x))
。\bar{f(x)}$为尺度化之后的函数。
(1)线性尺度化。令
f(x)ˉ=aFit(x)+b,其中a,b为常数,应满足:
①
f(x)ˉ≥0 ②
average(f(x)ˉ)=average(Fit(x));保证具有平均适应度的个体期望被选择的平均次数不变。
③
maxf(x)ˉ=C⋅average(Fit(x)),C∈[1.2,2.0]。保证最好个体期望被选择的数目为平均值的C倍。
2.5 文献中常出现的一些遗传算子简介
1.选择算子
赌轮选择,保留最佳个体选择,期望值方法,排序选择法,联赛选择法,排挤选择法
2.交叉算子
单点交叉,两点交叉,多点交叉,一致交叉
3.变异算子
位点变异,对换变异,插入变异