1
模式识别与智能计算的MATLAB实现
1.11.2.3 9.2.3 遗传算子
9.2.3 遗传算子

遗传算子就是遗传算法中进化的规则。基本遗传算法的遗传算子主要有选择算子、交叉算子和变异算子。

1.选择算子

选择算子就是用来确定如何从父代群体中按照某种方法,选择哪些个体作为子代的遗传算子。选择算子建立在对个体的适应度进行评价的基础上,其目的是避免基因的缺失,提高全局收敛性和计算效率。选择算子是GA的关键,体现了自然界中适者生存的思想。

常用选择算子的操作方法有以下几种。

(1)赌轮选择方法

此方法的基本思想是个体被选择的概率与其适应度值大小成正比。为此,首先要构造与适应度函数成正比的概率函数ps(i):

alt

其中,f(i)为第i个个体适应度函数值;n为种群规模。然后将每个个体按其概率函数ps(i)组成面积为1的一个赌轮。每转动一次赌轮,指针落入串i所占区域的概率即被选择复制的概率为ps(i)。当ps(i)较大时,串i被选中的概率大,但适应度值小的个体也有机会被选中,这样有利于保持群体的多样性。

(2)排序选择法

排序选择法是指在计算每个个体的适应度值之后,根据适应度大小顺序对群体中的个体进行排序,然后按照事先设计好的概率表按序分配给个体,作为各自的选择概率。所有个体按适应度大小排序,选择概率和适应度无直接关系而仅与序号有关。

(3)最优保存策略

此方法的基本思想是希望适应度最好的个体尽可能保留到下一代群体中。其步骤如下:

①找出当前群体中适应度最高的个体和适应度最低的个体;

②若当前群体中最佳个体的适应度比总的迄今为止最好个体的适应度还要高,则以当前群体中的最佳个体作为新的迄今为止的最好个体;

③用迄今为止的最好个体替换当前群体中最差个体。

该策略的实施可保证迄今为止得到的最优个体不会被交叉、变异等遗传算子破坏。

2.交叉算子

交叉算子体现了自然界信息交换的思想,其作用是将原有群体的优良基因遗传给下一代,并生成包含更复杂结构的新个体。

交叉算子有一点交叉、二点交叉、多点交叉和一致交叉等。

(1)一点交叉

首先在染色体中随机选择一个点作为交叉点,然后在第一个父辈的交叉点前的串和第二个父辈交叉点后的串组合形成一个新的染色体,第二个父辈交叉点前的串和第一个父辈交叉点后的串形成另外一个新染色体。

在交叉过程的开始,先产生随机数并与交叉概率pc比较,若随机数比pc小,则进行交叉运算;否则不进行,直接返回父代。

例如下面两个串在第五位上进行交叉,生成的新染色体将替代它们的父辈而进入中间群体。

alt

(2)二点交叉

在父代中选择好两个染色体后,选择两个点作为交叉点。然后将这两个染色体中两个交叉点之间的字符串互换就可以得到两个子代的染色体。

例如下面两个串选择第5位和第7位为交叉点,然后交换两个交叉点间的串就形成两个新的染色体。

alt

(3)多点交叉

多点交叉与二点交叉相似。

(4)一致交叉

在一致交叉中,子代染色体的每一位都是从父代相应位置随机复制而来的,而其位置则由一个随机生成的交叉掩码决定。如果掩码的某一位是1,则表示子代的这一位是从第一个父代中的相应位置复制的,否则是从第二个父代中相应位置复制的。

例如下面父代按相应的掩码进行一致交叉:

alt

3.变异算子

变异算子是遗传算法中保持物种多样性的一个重要途径,它模拟了生物进化过程中的偶然基因突变现象。其操作过程是,先以一定概率从群体中随机选择若干个体,然后对于选中的个体,随机选取某一位进行反运算,即由1变为0,0变为1。

同自然界一样,每一位发生变异的概率是很小的,一般在0.001~0.1之间;如果过大,会破坏许多优良个体,也可能无法得到最优解。

GA的搜索能力主要是由选择算子和交叉算子赋予的。变异算子则保证了算法能搜索到问题解空间的每一点,从而使算法具有全局最优,进一步增强了GA的能力。

对产生的新一代群体进行重新评价选择、交叉和变异。如此循环往复,使群体中最优个体的适应度和平均适应度不断提高,直到最优个体的适应度达到某一限值或最优个体的适应度和群体的平均适应度不再提高,则迭代过程收敛,算法结束。