5-第二篇 第2章 遗传算法的基本实现技术

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.1.4 实数编码

直接采用十进制的实数进行编码的方法称为实数编码,是连续参数优化问题直接的自然描述,不存在编码和解码过程。在实数编码情况下,我们将一个实参数矢量对应成一个染色体,一个实数对应一个基因,一个实值对应成一个等位基因。因为这种编码方法使用的是决策变量的真实值,所以该编码方法也叫做真值编码方法。使用实数编码存在以下优点:

1. 基因以实数编码消除了因编码精度不够,使得搜索空间中具有较优适应值的可能解未能够表示出来的隐患。当对连续参数进行二进制编码时,存在一个潜在的危险,亦即没有足够的精度来将那些具有最好适应值的参数值充分表示出来,在定义范围比较大的情况下,提高二进制精度往往需要很长的编码长度。比如,在范围[-100,100]的30串位空间上要想取到一维6

10-的精度,就要求相应的二进制位串长至少为2830840⨯=,这给存贮和运算带来很大的负担。这使遗传算法的搜索空间急剧扩大,甚至可能无法进行

下去。而直接采用实数编码时,表示同样的范围只需精度在610-以上的30个实数组成的位串即可。

2. 遗传算法用实数编码的基因,具备了利用连续变量函数具有的渐变性的能力。渐变性表示变量小的变化所引起的对应函数值的变化也是小的,我们所考虑的问题多数为连续函数,都具备这种渐变性,遗传算法这一特性证明对某些优化问题是至关重要的。

3. 采用实数编码可以消除“汉明悬崖”。在采用简单二进制编码时,整数3和4所代表的实数在直线上是相邻的,但其二进制码011和100在汉明距离是最远的。

实数编码中的数值常用浮点数来表示,称为浮点数编码方法。所谓浮点数编码方法,是指个体的每个基因值用某一范围内的一个浮点数来表示,个体的编码长度等于其决策变量的个数。例如,若某一个优化问题含有5个变量(1,2,,5)i x i =,每个变量都有其对应的上下限min max [,]i i U U ,有一个浮点数编码串为:

就表示一个个体的基因型,即表达空间的编码串;相应的表现型,即问题空间的解向量是:

[4.50,3.60,6.40,5.20,4.00]T x =。

显然,这种编码方法使用的是决策变量的真实值,表达空间与问题空间的表达是一致的。

用浮点数编码时应注意:

1. 应保证基因值在给定的区间限制范围内;

2. 在使用交叉、变异等遗传算子时,也必须保证其运算结果所产生的新个体基因也在同一限制范围内;

3. 当多个字节来表示一个基因时,交叉运算必须在两个分界字节进行。

2.1.5 多参数级联编码

前面提到的编码方法,都是针对一个变量来说明的。而实际的优化问题往往包含多个设计变量,这时如何对多个设计变量进行编码呢?

例如求函数22(,)f x y x y =的极值,若[0,63],[0,63]x y ∈∈,可以采用如下编码方法:x 用8位的0,1串表示,y 也用8位的0,1串表示,将这两个0,1串按x 的编码在前,y 的编码在后的顺序连接起来,构成16位0,1串作为基因码表示。

在进行多参数级联编码时,每个参数的编码方式可以是二进制编码、格雷码、浮点数编码或符号编码等编码方式中的—种,每个参数可以具有不同的上下界,也可以有不同的编码长度或编码精度。

2.2 群体设定

X :

初始群体的设定是遗传算法中继编码后的又一个重要工作。初始群体作为起点一代代地进化直到进化停止准则满足而进化终止,由此得到最后一代群体。群体数量,或群体规模的设定,指群体中个体数目的确定。群体规模对遗传算法的性能影响极大,因而必须选择合适的数目。

现研究经一代遗传后可生成的模式数目。假设群体规模为M ,每个个体的编码长度为l ,交叉概率为c P ,变异概率为m P ,粗略地估计定义距)(H δ为: s c

m P P l H δδ=--≤)1)(1()( (2-6) 群体规模M 的确定受遗传操作中选择操作影响最大,根据Goldberg 的分析估计,认为一个比较好的群体规模为22s M δ=,其中s δ为式(2-6)确定的模式长度。显然M 越大,遗传操作处理的模式越多,群体中个体的多样性越高,算法陷入局部危险就越小,生成有意义的积木块并逐渐进化为最优解的机会就越多。但是,群体规模太大会带来若干弊病:

① 群体越大,其适应度评估数增加,所以计算量也增加,从而影响算法效能;

② 群体中个体生存下来的概率大多采用和适应度成比例的方法,当群体中个体非常多时,少量适应

度很高的个体会被选择而生存下来,但大多数个体却被淘汰,影响交叉配对操作。另一方面,群体规模太小,会使遗传算法的搜索空间中分布范围有限,因而搜索有可能停止在未成熟阶段,引起未成熟收敛现象,这样产生早熟而无法求出最优解,一般取群体规模10~160。

初始群体中的个体一般是随机产生的,在不具有关于问题解空间的先验知识的情况下,很难判定最有效解的数量及其可行解空间中的分布状况。因此,我们往往希望在问题解空间均匀采样,随机生成一定数目的个体(为群体规模的2倍),然后从中挑出较好的个体构成初始群。对于二进制编码,染色体位串上的每一位基因{0,1}上随机选择,所以群体初始化至少需要l M ⨯次随机取值,这样在解空间也是均匀分布的。

另外,对于带约束域的问题,还需要判定随机初始化编码串所对应的参数点是否在可行域范围之内。

2.3 适应度函数

在遗传算法中用适应度来评估个体或解的优劣,并将评估适应度的函数称为适应度的函数。适应度的函数值较高的个体遗传到下一代的概率较大,反之较小。

2.3.1 目标函数映射成适应度函数

通常优化问题求解中,其目标是求费用函数()f X 的最小值,而不是最大值。即使某一问题可自然地表示成求最大值形式,但也不能保证到对于所有的X ,()f X 都取非负值。由于遗传算法中要对个体的适应度比较排序,并在此基础上确定选择概率,所以适应度函数的值须为正值。由此可见,将目标函数映射成求最大值形式且函数值非负的适应度函数是必要的。

对于一个最小化问题转化为最大化问题,一般情况下,只需要简单地把适应度函数乘以1-即可。但对遗传算法而言,这种方法还不足以保证适应度函数()F X 的非负性。对此,可采用以下的方法进行变换:

max max (),()()0,C f X f X C F X -<⎧=⎨⎩

若其他 (2-7) 求F (X )的最大值和求-f(X)的最小值等价。

显然存在多种方式来选择max C 。max C 可以是一个合适的输入值,也可采用迄今为止进化进程中()f X 的最大值,或()f X 的最大值。

值得注意的是, max C 的选择对遗传算法的性能影响极大。max C 选择太小,)(X F 的非负性不能充分保证,从而导致大多数)(X F 均为0,使个体之间没有差异而进化困难;此外,在用比例方法选择时, 如果所有)(X F 均为0,则计算每个个体的选择概率时会因分母为0而计算无法进行。如max C 选择太大,大到

相关文档
最新文档