1. 引言
遗传算法(Genetic Algorithm, GA)是模拟生物在自然环境中的遗传和进化的过程而形成的自适应全局优化搜索算法。它借用了生物遗传学的观点,通过自然选择、遗传和变异等作用机制,实现各个个体适应性的提高。
1.1 生物学基础
生物遗传和进化的规律:
- 生物的所有遗传信息都包含在其染色体中,染色体决定了生物的性状。染色体是由基因及其有规律的排列所构成的。
- 生物的繁殖过程是由其基因的复制过程来完成的。同源染色体的交叉或变异会产生新的物种,使生物呈现新的性状。
- 对环境适应能力强的基因或染色体,比适应能力差的基因或染色体有更多的机会遗传到下一代。
1.2 基本概念
遗传学术语 | 遗传算法术语 |
---|---|
群体 | 可行解集 |
个体 | 可行解 |
染色体 | 可行解的编码 |
基因 | 可行解编码的分量 |
基因形式 | 遗传编码 |
应适度 | 评价函数值 |
选择 | 选择操作 |
交叉 | 交叉操作 |
变异 | 变异操作 |
1.2.1 群体和个体
- 个体就是模拟生物个体而对问题中的对象(一般就是问题的解)的一种称呼,一个个体也就是搜索空间中的一个点。
- 种群(population)就是模拟生物种群而由若干个体组成的群体, 它一般是整个搜索空间的一个很小的子集。
1.2.2 染色体和基因
- 染色体(chromosome)就是问题中个体的某种字符串形式的编码表示。
- 字符串中的字符也就称为基因(gene)。
1.2.3 遗传编码
二进制编码方法是遗传算法中最常用的一种编码方法,它使用的编码符号集是由二进制符号 0 0 0和 1 1 1所组成的二值符号集 { 0 , 1 } \{0,1\} { 0,1},它所构成的个体基因型是一个二进制编码符号串。
假设某一参数的取值范围是 [ u m i n , u m a x ] [u_{\rm{min}},u_{\rm{max}}] [umin,umax],用长度为 L L L的二进制编码符号来表示该参数。则它总共能够产生 2 L 2^L 2L种不同的编码,参数编码时的对应关系如下:
000 ⋯ 000 = 0 u min 000 ⋯ 001 = 1 u min + δ ⋯ ⋯ 111 ⋯ 111 = 2 λ − 1 u max \begin{aligned} & 000\cdots 000 = 0 & u_{\min} \\ & 000\cdots 001 = 1 & u_{\min}+\delta \\ & \cdots & \cdots \\ & 111\cdots 111 = 2^\lambda-1 & u_{\max} \\ \end{aligned} 000⋯000=0000⋯001=1⋯111⋯111=2λ−1uminumin+δ⋯umax
二进制编码的精度为:
δ = u max − u min 2 λ − 1 \delta=\dfrac{u_{\max}-u_{\min}}{2^\lambda -1} δ=2λ−1umax−umin
假设某一个体的编码是: x : b λ b λ − 1 b λ − 2 ⋯ b 2 b 1 x:b_\lambda b_{\lambda-1} b_{\lambda-2} \cdots b_{2}b_{1} x:bλbλ−1bλ−2⋯b2b1,则对应的解码公式为:
x = u min + ( ∑ i = 1 λ b ⋅ 2 i − 1 ) δ x = u_{\min}+\left(\sum_{i=1}^{\lambda}{b\cdot 2^{i-1}}\right)\delta x=umin+(i=1∑λb⋅2i−1)δ
1.3 遗传操作
1.3.1 选择操作
选择操作,是从旧的种群中选择适应度高的染色体,放入匹配集(缓冲区),为以后染色体交换、变异,产生新的染色体作准备。
适应度比例法,也叫作轮盘赌、转轮法,按各染色体适应度大小比例来决定其被选择数目的多少。第 i i i个染色体被选的概率为:
P c i = f ( x i ) ∑ j = 1 N p f ( x j ) P_{ci}=\dfrac{f\left(x_i\right)}{\sum_{j=1}^{N_p}{f\left(x_j\right)}} Pci=∑j=1Npf(xj)f(xi)式中, x i x_i xi为种群中的第 i i i个染色体; f ( x ) f\left(x\right) f(x)为染色体的适应度函数; N p N_p Np为种群大小。
1.3.2 交叉操作
交叉操作,是指对两个相互配对的染色体依据交叉概率 P c P_c Pc按某种方式相互交换其部分基因,从而形成两个新的个体。
具体方法: 随机选择二个染色体(双亲染色体),随机指定一点或多点, ,进行交换,可得二个新的染色体(子辈染色体)。
双亲染色体如下, ∣ {\color{red}|} ∣为交换点,
A 11010 ∣ 110 B 01011 ∣ 011