コンピュータサイエンスにおける進化計算(Evolutionary Computation, EC)とは、生物の進化プロセスから着想を得たグローバル最適化のためのアルゴリズム群です。これは計算知能やソフトコンピューティングの一分野であり、正解が未知の複雑な問題に対して、試行錯誤を繰り返しながら最適な解を導き出す「メタヒューリスティクス」または「確率的最適化」という特性を持っています。
基本的なアプローチは、まず複数の「候補解」を生成し、それを世代交代させながら更新していくことです。生物学的な自然選択、突然変異、組み換えといった仕組みを模倣し、質の低い解を排除し、ランダムな変更や親個体同士の情報交換を加えることで、徐々に「適応度(Fitness)」の高い解へと進化させます。
このような手法は、人間が設計したソフトウェアよりも効率的に多次元的な問題を解決できる場合があり、システム設計の最適化など幅広い分野で活用されています。また、生物学の分野では、進化プロセスの共通点を研究するためのコンピュータ上の実験手法(in silico)としても利用されています。

Key Facts
- 生物学的模倣:自然選択、突然変異、交叉(組み換え)という生物の進化メカニズムをアルゴリズムに適用している。
- 集団ベースの探索:単一の解ではなく、複数の候補解(個体群)を同時に保持し、競争させることで最適解を探る。
- 適応度関数:解の「良さ」を判定する基準であり、この値を最大化(または最小化)することが目的となる。
- 多様性の確保:突然変異などの確率的な操作により、局所的な最適解(局所解)に陥るのを防ぎ、広範囲な探索を可能にする。
進化計算の主要な4つのアプローチ
進化計算は、歴史的に異なるアプローチから発展し、1991年頃に「進化計算」という一つの分野として統合されました。それぞれの手法は、データの表現方法や選択・変異の仕組みに違いがあります。
1. 遺伝的アルゴリズム (GA)
ジョン・ホランドによって提唱された手法で、主に適応の仕組みを研究することを目的としていました。解をビット列(0と1の並び)として表現し、大規模な個体群の中で交叉と突然変異を繰り返し、特定の遺伝子配列(アレル)を選択的に残していきます。
2. 進化戦略 (ES)
ドイツのインゴ・レヒェンベルクとハンス=パウル・シュヴェーフェルによって導入されました。従来の勾配降下法では局所解に捕まりやすいという課題を解決するため、ランダムな突然変異を用いてそれを脱出させる手法です。初期にはコンピュータを使わず、サイコロを用いて変異を決定していたという歴史があります。
3. 進化プログラミング (EP)
ローレンス・J・フォーゲルが開始したAI研究の一環です。有限オートマトンを用いて予測問題を解くことを目的とし、状態の追加・削除や遷移ルールの変更といった突然変異を繰り返し、最適な予測マシンを構築します。
4. 遺伝的プログラミング (GP)
1990年代にジョン・コーザらによって推進された手法です。進化の対象となるのはデータではなく「プログラムそのもの」です。LispのS式のような木構造でプログラムを表現し、部分的な木の入れ替え(交叉)を行うことで、タスクを最適に遂行するコードを自動生成します。

技術的メカニズムと生物学との関係
進化アルゴリズムの根幹を支えるのは、「多様性の創出」と「質の向上」という2つの相反する力です。交叉(組み換え)と突然変異が新しい可能性(多様性)を生み出し、選択操作が優れた個体を残すことで全体の質を高めます。
これらのプロセスは多くの場合、確率的(ストカスティック)に動作します。適応度の高い個体ほど生き残る確率は高くなりますが、あえて適応度の低い個体にも生存のチャンスを与えることで、予期せぬ優れた解への道を開く設計がなされています。
また、計算理論の視点からは、生物の細胞内で行われている微細なプロセスは、現代のコンピュータの低レベル操作に非常に近いと考えられています。生物学的システムは、入力を処理して次の状態を計算する「計算マシン」のようなものであり、このアナロジーが進化計算の理論的基盤となっています。
進化計算の概要まとめ
| 手法 | 主な表現形式 | 主な特徴 | 主な用途 |
|---|---|---|---|
| 遺伝的アルゴリズム (GA) | ビット列(文字列) | 大規模集団による並列探索 | 組合せ最適化、適応研究 |
| 進化戦略 (ES) | 実数ベクトル | 突然変異による局所解の脱出 | 流体力学、パラメータ最適化 |
| 進化プログラミング (EP) | 有限オートマトン | 状態遷移の変異 | 予測問題、システム同定 |
| 遺伝的プログラミング (GP) | 木構造(プログラム) | コードの自動生成と進化 | パターン認識、プランニング |
Frequently Asked Questions
進化計算と通常の最適化アルゴリズムの違いは何ですか?
通常の最適化(勾配法など)は、現在の地点から最も効率的な方向へ進みますが、途中の「局所的な山(局所解)」で止まってしまうことがあります。一方、進化計算は複数の候補を同時に探索し、ランダムな変異を加えるため、より広い範囲から「真の最高点(全域最適解)」を見つけ出す能力に長けています。
適応度関数とは具体的にどのようなものですか?
適応度関数は、ある解がどれだけ目標に近いかを数値化する「採点基準」です。例えば、迷路脱出アルゴリズムであれば「ゴールまでの距離が短いほど高得点」とする関数を定義します。アルゴリズムはこのスコアを最大化するように個体を進化させます。
突然変異はなぜ必要なのですか?
交叉(親の組み合わせ)だけでは、親たちが持っていない新しい特性を生み出すことができません。突然変異によってランダムな変更を加えることで、探索範囲を広げ、集団が似通ってしまう「早期収束」を防ぎ、革新的な解を発見する可能性を維持します。
進化計算はどのような分野で実際に使われていますか?
エンジニアリングにおける形状最適化、金融市場の予測モデル、ロボットの制御アルゴリズムの自動生成、さらにはアンテナの設計など、人間が手作業で最適解を導き出すのが困難な複雑な設計問題に広く応用されています。
References
- De Jong, Kenneth A. (2006). Evolutionary Computation: A Unified Approach. Cambridge, Mass.: MIT Press. .
- Kruse, Rudolf; Mostaghim, Sanaz; Borgelt, Christian; Braune, Christian; Steinbrecher, Matthias (2022). "Computational Intelligence". Computational Intelligence: A Methodological Introduction. Texts in Computer Science (3rd ed.). Cham: Springer International Publishing. pp. 2–3. :10.1007/978-3-030-42227-1. .
- Chaturvedi, Devenda K. (2008), "Introduction to Soft Computing", Soft Computing, vol. 103, Berlin, Heidelberg: Springer, pp. 1–10, :10.1007/978-3-540-77481-5_1,
- Eiben, A. E.; Smith, J. E. (2015), Evolutionary Computing: The Origins, Natural Computing Series, Berlin, Heidelberg: Springer, pp. 13–24, :10.1007/978-3-662-44874-8_2,
- Burgin, Mark; Eberbach, Eugene (April 12, 2013). "Evolutionary Turing in the Context of Evolutionary Machines". :1304.3762 [cs.AI].
- Fogel, David B., ed. (1998). Evolutionary computation : the fossil record. New York: IEEE Press. . 38270557.
- Fischer, Thomas (1986), "Kybernetische Systemanalyse einer Tuchfabrik zur Einführung eines computergestützten Dispositionssystems der Fertigung", DGOR, Berlin, Heidelberg: Springer, p. 120, :10.1007/978-3-642-71161-9_14,
- Mitchell, Melanie (1998). An Introduction to Genetic Algorithms. The MIT Press. :10.7551/mitpress/3927.001.0001. .
- Barricelli, Nils Aall (1954). "Esempi Numerici di processi di evoluzione". Methodos: 45–68.
- Fraser AS (1958). "Monte Carlo analyses of genetic models". Nature. 181 (4603): 208–9. :1958Natur.181..208F. :10.1038/181208a0. 13504138. 4211563.
📸 フォトギャラリー

