48.2. 遺伝的アルゴリズム

遺伝的アルゴリズム(GA)は発見的な最適化手法で、非決定的、無作為の検索として働きます。 最適化の問題に対する解の集合は個体とみなされます。 個体の環境への順応の度合は適応度によって指定されます。

検索空間の中で個体の同格性は、その実体が文字列の集合である染色体によって表現されます。 遺伝子は最適化をしようとしている1つのパラメータの値を符号化する染色体の一部分です。 遺伝子の符号化の典型的な例としてバイナリもしくは整数が挙げられます。

進化の過程のシミュレーションである、再組合せ突然変異淘汰を通して、祖先よりも適応度の平均が高い新世代の検索点が見つけられます。

comp.ai.geneticFAQによると、GAが問題に対する純粋な無作為検索ではないことを強調し過ぎてはいけないと言っています。 GAは確率的なプロセスを使いますが、結果は明らかに(無作為よりもより良い)非無作為です。

図 48-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                          |
+===+=====================================+