目录
1. 简介
遗传算法(Genetic Algorithm,GA)是进化计算的一个分支,是一种模拟自然界生物进化过程的随机自适应的全局搜索算法。
2. GA思想来源及建立过程
GA思想源于自然界“自然选择”和“优胜劣汰”的进化规律,通过模拟生物进化中的自然选择和交配变异寻找问题的全局最优解。它最早由美国密歇根大学教授John H. Holland提出,现在已经广泛应用于各种工程领域的优化问题之中。
GA是通过模拟自然界中生物的遗传进化过程,对优化问题的最优解进行搜索。算法维护一个代表问题潜在解的群体,对于群体的进化,算法引入了类似自然进化中选择、交配以及变异等算子。遗传算法搜索全局最优解的过程是一个不断迭代的过程(每一次迭代相当于生物进化中的一次循环),直到满足算法的终止条件为止。
在遗传算法中,问题的每个有效解被称为一个“染色体(chromosome)”,在有些书籍中也称为“串”,相对于群体中的每个生物个体(individual)。染色休的具体形式是一个使用特定编码方式生成的编码串。编码串中的每一个编码单元称为“基因(gene)”
如图:
遗传算法通过比较适应值(fitness value)区分染色体的优劣,适应值越大的染色体越优秀。评估函数(evaluation function)用来计算并确定染色体对应的适应值。
选择算子按一定的规则对群体的染色体进行选择,得到父代种群。(一般的,越优秀的染色体被选中的次数越多。)
交配算子作用于每两个成功交配的染色体,染色体交换各自部分的基因,形成两个子代染色体。子代染色体取代父代进入新种群,而没有交配的染色体自动进入新的种群。
变异算子使得新种群进行小概率的变异。染色体发生变异的基因改变数值,经过变异的新种群替代原种群进入下一次进化。
对于遗传算法的基本原理,Holland给出了著名的模式定理(Schema Theory),为遗传算法提供了理论支持。
模式(schema)是指群体中编码的某些位置具有相似结构的染色体集合。假设染色体的编码是由0或1组成的二进制符号序列,模式01***О则表示以01开头且以О结尾的编码串对应的染色体的集合,即{010000,010010,010100,010110,011000,011010,011100,011110}。模式中具有确定取值的基因个数叫做模式的阶(schema order),如模式01***0 的阶为3。模式的定义长度(schema defining length)是指模式中第一个具有确定取值的基因到最后一个具有确定取值的基因的距离,例如模式01***0的定义长度为5,而*1****的定义长度为0。
Holland 的模式定理提出﹐遗传算法的实质是通过选择、交配和变异算子对模式进行搜索,低阶、定义长度较小且平均适应值高于群体平均适应值的模式在群体中的比例将呈指数级增长,即随着进化的不断进行,较优染色体的个数将快速增加。
模式定理证明了遗传算法寻求全局最优解的可能性,但不能保证算法一定能找到全局最优解。Goldberg[10]在1989年提出了积木块假设(Building Block Hypothesis),对模式定理做了补充,说明遗传算法具有能够找到全局最优解的能力。
积木块(building block)是指低阶