遺伝的アルゴリズム最適化 戻る
進化計算・最適化

遺伝的アルゴリズム最適化シミュレーター

Rastrigin・Ackley等の難関ベンチマーク関数に対しGAを実行。個体群が適応度地形を探索しながら最適解に収束する様子をリアルタイム可視化。

パラメータ設定
目的関数
個体群サイズ N 60
突然変異率 0.05
交叉率 0.80
最大世代数 200
現在の状態
0
世代
最良適応度
最良 x
最良 y
多様性(標準偏差)

Rastrigin関数

$$f(x,y)=20+x^2+y^2-10(\cos 2\pi x+\cos 2\pi y)$$

定義域 $[-5,5]^2$、最小値 $f(0,0)=0$

CAEへの応用:GAは構造トポロジー最適化(SIMPの初期値探索)、エンジン燃焼最適化、アンテナ形状設計など多数の実務問題に使われています。
適応度地形(コンター)+ 個体群(白点)+ 最良個体(赤星)

遺伝的アルゴリズム最適化とは

🧑‍🎓
遺伝的アルゴリズムって、生物の進化を真似して最適解を見つけるって聞きましたけど、具体的にどうやってるんですか?
🎓
ざっくり言うと、ランダムな解の集団(個体群)を作って、良い解を選び(選択)、組み合わせ(交叉)、時々ランダムに変え(突然変異)ながら、世代を重ねて解を改良していくんだ。このシミュレーターの上のスライダーで「個体群サイズ N」や「突然変異率」を変えられるから、まずはデフォルト値で「実行」ボタンを押してみて。点(個体)が山だらけの地形を這いずり回りながら、一番低い谷(最適解)に集まっていく様子が見えるよ。
🧑‍🎓
え、山だらけの地形って?Rastrigin関数って何ですか?確かにグラフを見るとボコボコしてますね。
🎓
そのボコボコがポイントなんだ。Rastrigin関数は、真ん中の深い谷(大域的最適解)の周りに、無数の浅い谷(局所最適解)が並んだ、いわば「だまし穴だらけ」のテスト関数。普通の勾配法を使うと、最初に落ちた浅い谷から抜け出せなくなる。でも遺伝的アルゴリズムは、複数の点で同時に探すから、どこかの点が深い谷を見つけやすくて、他の点もそこに引き寄せられる。パラメータで「交叉率」を下げてみると、情報の共有が減って収束が遅くなるのがわかるよ。
🧑‍🎓
なるほど!でも、実務のCAE設計で、こんなボコボコした関数を最適化することってあるんですか?
🎓
もちろんあるよ。例えば自動車のエンジン燃焼室の形状を最適化する時、燃費や排ガスを計算するCAEシミュレーションは複雑で、パラメータを変えると出力がガタガタに変動する「ノイジー」な関数になる。それはRastrigin関数のように多くの局所解がある状態に近い。遺伝的アルゴリズムは、そのシミュレーションをブラックボックスとして扱い、入出力の関係だけから最適な形状パラメータを探せるんだ。シミュレーターで「目的関数」をAckley関数に切り替えてみて。また違った地形で、アルゴリズムがどう振る舞うか観察してみよう。

物理モデルと主要な数式

このシミュレーターで使用される代表的な多峰性テスト関数、Rastrigin関数です。多くの局所最適解を持つため、最適化アルゴリズムの探索性能を評価するベンチマークとして広く使われます。

$$f(x,y)=20+x^2+y^2-10(\cos 2\pi x+\cos 2\pi y)$$

$x, y$: 設計変数(探索するパラメータ)。$f(x,y)$: 目的関数値(最小化したいコストや評価指標)。第3項のコサイン関数が周期的な凹凸を生み出し、定義域 $[-5,5]^2$ 内に無数の局所解を形成します。大域的最適解は $(x,y)=(0,0)$ で、そのとき $f(0,0)=0$ となります。

遺伝的アルゴリズムの核心となる「交叉」操作の一例である、二点交叉の概念です。二つの親個体(解)から、遺伝子(設計変数の値)の一部を交換して子個体を生成します。

$$ \begin{aligned}\text{親1:}& \quad [x_1, x_2, ..., x_k, x_{k+1}, ..., x_m] \\ \text{親2:}& \quad [y_1, y_2, ..., y_k, y_{k+1}, ..., y_m] \\ \text{子1:}& \quad [x_1, x_2, ..., y_k, y_{k+1}, ..., x_m] \\ \text{子2:}& \quad [y_1, y_2, ..., x_k, x_{k+1}, ..., y_m] \end{aligned} $$

この操作により、親の良い特性を組み合わせた新しい解を探索します。シミュレーターの「交叉率」は、この操作が行われる確率を制御します。突然変異は、この遺伝子配列の一部をランダムに変化させ、探索領域から抜け出す多様性を生み出します。

実世界での応用

構造トポロジー最適化: 材料をどこに配置すべきかを決める設計で、SIMP法などの感度情報に基づく手法の初期設計や、離散的な設計変数(穴を開ける/開けない)の探索に遺伝的アルゴリズムが用いられます。軽量化しながら強度を確保する自動車部品や航空機部材の設計に応用されています。

エンジン燃焼最適化: 燃焼室形状、噴射タイミング、バルブタイミングなど多数のパラメータが燃費と排ガス性能に複雑に影響します。CAEシミュレーション(CFD)と遺伝的アルゴリズムを組み合わせ、大域的な最適パラメータセットを探索します。

アンテナ・電磁界デバイス設計: アンテナの形状やフィルタの構造をパラメータ化し、所望の周波数特性を得るために遺伝的アルゴリズムで探索します。電磁界シミュレーション1回の計算コストが高いため、効率的な探索が求められる分野です。

航空機の翼型設計: 揚力と抗力の比(揚抗比)を最大化する翼の形状を探す問題です。複数の設計条件(離着陸時、巡航時)を同時に満たす多目的最適化として遺伝的アルゴリズムが適用されるケースもあります。

よくある誤解と注意点

このシミュレーターで遺伝的アルゴリズム(GA)に慣れると、「万能の最適化ツール」と誤解しがちだ。まず、GAは必ずしも「最適解」を見つける保証はない。あくまで「非常に良い解」を高い確率で見つける手法だ。特に実務では、計算コストが莫大になる。例えば、車体の衝突安全性を最適化する場合、1回のCAE解析に数時間かかる。個体数100、世代数50なら、単純計算で5000回の解析が必要で、現実的ではない。実務では、初期設計を決定するための大まかな探索や、他の手法では手がかりがつかめない問題の初期解生成に使われることが多い。

次に、パラメータ設定の魔術に頼らないこと。「突然変異率は0.01が黄金律」といった迷信は捨てよう。最適なパラメータは問題によって大きく変わる。このツールで試してほしいのは、突然変異率を極端に高く(例:0.5)すると個体群がランダムウォークして収束しなくなる一方、低くしすぎ(例:0.001)すると初期の多様性が失われ、最初に捕まった局所解から抜け出せなくなる様子だ。実務では、最初はデフォルト値で走らせ、解の多様性が早く失われるなら突然変異率を上げ、逆に収束が遅すぎるなら選択圧を強めるといった調整が必要になる。

関連する工学分野

このシミュレーターの背後にある「多峰性関数の最適化」という考え方は、CAEを超えて多くの先端工学分野に直結している。例えば、航空機の翼形状最適化では、揚力と抗力という相反する目的を同時に満たす(多目的最適化)ためにGAが活用される。翼表面の無数の制御点を設計変数とすると、それらが作り出す流れ場はRastrigin関数のように複雑な応答曲面になる。

また、自動車の軽量化設計では、ボディフレームのビーム断面形状や板厚を変数として、剛性や固有振動数を制約条件に、重量を最小化する問題に適用される。ここでの「地形」は、衝突安全性や振動特性を表す複数のCAEシミュレーション結果が織りなす、高次元の超曲面だ。さらに、材料インフォマティクスという分野では、新規材料の分子組成や処理条件の組み合わせを遺伝子に見立て、所望の特性を持つ材料をGAで探索する。このように、設計変数と評価指標の関係が「ブラックボックス」で、かつ多くの局所解が存在するあらゆる工学設計問題が、このツールで学ぶ原理の応用先となる。

発展的な学習のために

このシミュレーターに慣れたら、次のステップは「次元の呪い」を体感することだ。このツールは2変数(xとy)だが、実問題は数十~数百変数に及ぶ。変数が増えると探索空間は指数関数的に膨張し、単純なGAでは太刀打ちできなくなる。学習では、変数を3つに増やした地形を頭で想像してみよう。さらに、制約条件付き最適化を学ぶことが実務への架け橋になる。例えば「軽量化したいが、たわみは5mm以下」という制約だ。この場合、ペナルティ関数法や適合度のランキング手法など、制約を処理するテクニックが必要となる。

数学的背景としては、スキーマ定理の理解がアルゴリズムの本質を深める。これは「短い定義長で平均適合度の高い遺伝子パターン(スキーマ)は、世代を重ねるにつれて指数関数的に増加する」というGAの背後にある理論的支柱だ。これにより、GAがランダム探索ではなく、良い遺伝子ブロックを組み合わせて建設的に探索する仕組みが説明できる。次のトピックとしては、GAの派生形である進化戦略(ES)や粒子群最適化法(PSO)を比較してみることを勧める。同じ「群知能」でも、PSOは個体が自身の最良位置と群の最良位置に向かって飛翔するモデルで、GAとは異なる探索ダイナミクスを示す。これらの違いを理解することで、問題に応じた最適化手法の選択眼が養われる。