本文为《遗传算法原理及应用》基本遗传算法学习总结。
一、前言
遗传算法有很多形式,其中较为简单的就是基本遗传算法(SGA)了,SGA 是其他遗传算法的基础。接下来我们介绍相关的知识。
二、基本遗传算法描述
我们首先介绍 SGA 的构成要素:
- 染色体编码方法。使用二进制字符串表示,等位基因由二值符号 { 0 , 1 } \{0,1\} { 0,1} 组成,初始种群的基因值满足均匀分布。
- 个体适应度评价。我们会根据个体适应度的大小对群体进行优胜劣汰,因为要以概率的形式接受个体,所以适应度必须 ≥ 0 ≥0 ≥0。实际情况中需要自己设计。
- 遗传算子。SGA 只使用我们上篇文章说到的选择算子、交叉算子和变异算子。选择运算采用比例选择算子,即上篇文章中用个体适应度除以群体适应度总和;交叉运算采用单点交叉算子,只对染色体的一段进行交叉互换(而不考虑多段);变异运算采用基本位变异算子或均匀变异算子,即某些位发生基因突变。
- SGA 的运行参数。以下参数需通过反复实验尝试才能得到较好的结果。
- M M M:群体大小,取20~100
- T T T:终止进化代数,即迭代次数,取100~500
- p c p_c pc:交叉概率,即发生交叉互换的概率,取0.4~0.99
- p m p_m pm:变异概率,即个体产生基因突变的概率(而非每个基因座的突变概率),取0.0001~0.1
三、基本遗传算法的实现
接下来我们详细介绍 SGA 的构成要素。
-
染色体编码方法。
(1)如 X = 1010 X=1010 X=1010 为个体基因型,可表示一个个体;
(2)染色体长度通常取二进制值域刚好能满足可行域的位数(有时也可取一半的离散点):2 m < ( U m a x − U m i n ) × 1 0 S < 2 n 2^m<(U_{max}-U_{min})×10^S<2^n 2m<(Umax−Umin)×10S<2n
对应二进制编码位数为 n n n, U m a x