遗传算法(GA)是一种通过随机化搜索进行工作的启发式优化方法。优化问题的可能解集合被视为由若干个体组成的种群。个体对其环境的适应程度由其适应度表示。
一个个体在搜索空间中的坐标由染色体表示,本质上是一组字符串。基因是染色体的一个片段,它编码某个待优化参数的值。基因的典型编码可以是二进制或整数。
通过模拟重组、变异和选择这些进化操作,可以找到平均适应度高于前代的新一代搜索点。
根据comp.ai.genetic FAQ 中的说法,再怎么强调也不过分:GA并不是为了求解问题而进行的纯粹随机搜索。GA会使用随机过程,但其结果显然并非随机的(优于随机)。
Figure 60.1. 遗传算法的结构图
| P(t) | 时刻 t 的祖代 |
| P''(t) | 时刻 t 的子代 |
+=========================================+
|>>>>>>>>>>> Algorithm GA <<<<<<<<<<<<<<|
+=========================================+
| INITIALIZE t := 0 |
+=========================================+
| INITIALIZE P(t) |
+=========================================+
| evaluate FITNESS of P(t) |
+=========================================+
| while not STOPPING CRITERION do |
| +-------------------------------------+
| | P'(t) := RECOMBINATION{P(t)} |
| +-------------------------------------+
| | P''(t) := MUTATION{P'(t)} |
| +-------------------------------------+
| | P(t+1) := SELECTION{P''(t) + P(t)} |
| +-------------------------------------+
| | evaluate FITNESS of P''(t) |
| +-------------------------------------+
| | t := t + 1 |
+===+=====================================+