最近学习遗传算法
遗传算法的实现有6个主要因素:参数的编码、初始种群的设定、适应度函数的设计、遗传操作、算法控制参数的设定、约束条件的处理。
基因gene 染色体 chromosome 群体population 复制reproducation 交叉 crossover 变异mutation 适应性 fitness
SGA 基本遗传算法(Simple Genetic Algorithm) 遗传算子 Genetic Operator
SGA基本步骤
1、染色体编码与解码 2、个体适应度的检测评估 3、遗传算子(选择运算使用比例选择算子、交叉运算使用单点交叉算子、变异运算使用基本位变异算子或者均匀变异算子) 4、运行的主要参数 M群体规模 T终止条件 Pc交叉概率 Pm变异概率。
优化问题的基本遗传算法构造过程:
1、确定决策变量和约束条件 2、建立优化模型 3、确定编码方法 4、确定解码方法 5、确定个体评价方法 6、设计遗传算子和确定遗传算法的运行参数。
一、编码 (Coding and Decoding)
编码:把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法。
解码:由遗传算法解空间向问题空间的转换。
二进制编码的缺点之一是Hamming Cliff 海明悬崖:某些相邻整数的二进制代码间有很大的海明距离,使得交叉和突变都难以跨越。
De Jong依据模式定理,提出的编码准则:
1、积木块规则:编码应当易于生成与所求问题相关的短距和低阶的积木块。
2、最小字符集规则:编码应采用最小字符集以使问题得到自然的表示和描述。
主要的编码方法有:二进制编码、格雷码、浮点数编码、多参数级联编码、多参数交叉编码。
编码的评估策略:完备性、健全性、非冗余性
二、选择
选择是在群体中选择生命力强的个体产生新的群体的过程。
根据每个个体的适应度值大小选择,适应度较高的个体被遗传到下一代群体的概率较大。这样使得群体中个体的适应度值接近最优解。
常用的选择算子:轮盘赌选择(Roulette Wheel Selection)、随机竞争选择(Stochastic Tournament)、最佳保留选择、无回放随机选择、确定式选择、无回放余数随机选择、均匀选择、最优保存策略、随机联赛选择、排挤选择(小生境常用)。
三、交叉
交叉:是按较大的概率从群体中选择两个个体,交换两个个体的某个或某些位。
交叉运算产生子代,子代继承了父代的基本特征。
交叉算子的设计包括两个主要内容:确定交叉点位置、如何进行部分基因的交换。
几种适合二进制编码和浮点数编码个体的交叉算子:单点交叉、两点交叉与多点交叉、均匀交叉、算术交叉。
交叉算法是产生新个体的主要算法,它决定了遗传算法的全局搜索能力。
四、变异
变异:是以较小概率对个体编码串上的某个或某些位值进行改变。
变异运算,是指将个体染色体编码串中的某些基因座上的基因值用该基因座的其他等位基因来替换,从而形成新的个体。
变异本身是一种随机算法,只是产生新个体的辅助算法,它决定了遗传算法的局部搜索能力。
适合于二进制编码和浮点数编码个体的几种变异算子:基本位变异、均匀变异、边界变异、非均匀变异、高斯近似变异
五、适应度函数
适应度函数也称评价函数,是根据目标函数确定的用于区分群体中个体好坏的标准,总是非负的,任何情况下都希望其值越大越好。
在选择操作中,会出现两个成为遗传算法欺骗的问题:
(1、)在遗传算法初期,通常会产生一些超常个体,按照比例选择法,这些超常个体会因竞争力突出,而控制选择过程,影响到算法的全局优化性能。
(2、)遗传算法后期,当算法趋于收敛时,由于种群中个体适应度差异较小,继续优化的潜能降低,可能获得某个局部最优解。
适应度函数的设计主要满足以下条件:
(1)单值、连续、非负、最大化。
(2)合理、一致性。
(3)计算量小
(4)通用性强。
在遗传算法的不同阶段,还需要对个体适应度进行适当的扩大或缩小,成为适应度的尺度变换,主要有三种:线性尺度变换、乘幂尺度变换、指数尺度变换。
六、控制参数的选择。
交叉概率Pc始终控制着遗传运算中起主导地位的交叉算子,一般建议取值范围是0.4~0.99。
变异概率Pm一般建议取值范围是0.0001~0.1
群体规模一般可以根据实际情况在10~200之间选定。
七、约束条件的处理
根据具体问题一般可选择三种方法:搜索空间限定法、可行解变换法、罚函数法