最適化 (Optimization) — CAE用語解説
最適化とは
CAEでいう「最適化」って、普通の数学の最適化と何が違うんですか?
なるほど、だから効率的なアルゴリズムが大事なんですね。具体的にはどんな手法を使うんですか?
大きく分けて2つある。ひとつは勾配法(gradient-based)で、感度(微分情報)を使って効率よく降下方向を探す。もうひとつはメタヒューリスティクスで、遺伝的アルゴリズムや粒子群最適化のように微分を使わず確率的に探索する。前者は速いけど局所解に落ちやすく、後者は大域的に探索できるけど計算回数が多い。
トポロジー最適化・形状最適化・寸法最適化
3つの違いは「どこまで自由にデザインを変えられるか」だ。
- トポロジー最適化:材料の有無そのものを決める。穴の数や接続関係(トポロジー)まで自由に変わる。例えば航空機のリブ構造で「ここに穴を開けていいか」まで自動で決まる。
- 形状最適化:既に決まった形状の境界面を滑らかに動かして改善する。ノッチのR形状を変えて応力集中を減らすようなイメージ。
- 寸法最適化:板厚や断面寸法といったパラメータだけを変える。一番制約が強いが、設計変更がシンプルで製造に直結しやすい。
自由度はトポロジー>形状>寸法の順に大きい。実務では最初にトポロジー最適化で概形を決めて、次に形状最適化でディテールを詰め、最後に寸法最適化で板厚を微調整する、という三段構えが多いよ。
トポロジー最適化って3Dプリンタとの相性がいいって聞きますけど、本当ですか?
その通り。トポロジー最適化の結果は生物の骨みたいに有機的な形状になることが多くて、従来の切削や鋳造では製造が難しかった。でもアディティブ・マニュファクチャリング(3Dプリンタ)なら、そういう複雑形状もそのまま造形できる。GE Aviationのジェットエンジン用燃料ノズルは有名な成功例で、20個の部品を1個に統合して重量を25%削減したんだ。
勾配法 vs メタヒューリスティクス
勾配法ってどうやって「どの方向に設計を変えたら良くなるか」を知るんですか?
感度(sensitivity)を計算するんだ。ざっくり言うと「この板厚を0.1mm増やしたら応力が何MPa減るか」という偏微分を求める。やり方は3つある:
- 有限差分法:変数を微小にずらして2回解き、差を取る。簡単だが変数の数だけ解析が必要。
- 直接微分法:支配方程式をそのまま微分して感度方程式を作る。変数が少なく応答が多い場合に有利。
- 随伴法(Adjoint Method):応答が少なく変数が多い場合に圧倒的に有利。後で詳しく説明するよ。
じゃあメタヒューリスティクスは微分を使わないんですよね。どういう場面で使うんですか?
主に3つの場面で活躍する。まず目的関数が不連続や離散的な場合。例えばボルト本数(2本 or 4本 or 6本)のような整数変数は微分できない。次に局所解が多数ある多峰性の問題。勾配法だと最寄りの谷に落ちてしまうが、遺伝的アルゴリズムなら集団全体で広く探索できる。最後に解析コードがブラックボックスで感度が取れない場合。商用ソフトでソースコードにアクセスできないときによく使われるね。
実務だと遺伝的アルゴリズム以外にはどんなものが使われてますか?
随伴法(Adjoint Method)
随伴法が「圧倒的に有利」って言ってましたけど、具体的に何がすごいんですか?
核心は「設計変数が何百万個あっても、感度計算に必要な追加の連立方程式がたった1回で済む」ということ。普通の有限差分法だと変数が $n$ 個あれば $n$ 回の解析が必要だけど、随伴法なら1回の随伴解析で全変数の感度が一括で得られる。
えっ、100万個の設計変数でも1回で済むんですか? なんでそんなことが可能なんですか?
ポイントはラグランジュの未定乗数法だ。目的関数 $J$ と支配方程式の残差 $R(\mathbf{u}, \mathbf{x}) = 0$ を組み合わせた拡張関数:
を考える。ここで $\boldsymbol{\lambda}$ が随伴変数だ。$\mathcal{L}$ の $\mathbf{u}$ に関する微分をゼロにする条件から随伴方程式:
$$\left(\frac{\partial R}{\partial \mathbf{u}}\right)^T \boldsymbol{\lambda} = -\left(\frac{\partial J}{\partial \mathbf{u}}\right)^T$$が導かれる。この随伴方程式を1回解けば、設計変数 $\mathbf{x}$ の各成分に対する感度が:
$$\frac{dJ}{dx_i} = \frac{\partial J}{\partial x_i} + \boldsymbol{\lambda}^T \frac{\partial R}{\partial x_i}$$で一気に求まる。右辺の計算は行列-ベクトル積だけだから超安い。CFDの形状最適化ではメッシュ上の全ノード座標が設計変数になるので、随伴法がないと事実上不可能なレベルだよ。
OpenFOAMにも随伴ソルバーがありますよね。実際に使うときの注意点は?
いい質問だね。OpenFOAMのadjointOptimisationFoamは定常RANS随伴に対応していて実用レベルだ。注意点としては:まず元の流れ場(primal)が十分に収束していることが前提。残差が大きいと随伴解もガタガタになる。次に随伴方程式の収束は元の方程式より難しいことが多い。緩和係数を小さめにするのがコツ。あとは乱流モデルの随伴をフリーズ(frozen turbulence)するか厳密に解くかで精度が変わる。計算資源に余裕があれば厳密随伴を使いたいところだ。
多目的最適化
実際の設計って「軽くしたい」と「強度を上げたい」みたいに目的が複数ありますよね。どうやって両立するんですか?
パレートフロント上の解が全部最適なら、最終的にどうやって1つの設計を選ぶんですか?
数学的にはどれも等価だから、最終的にはエンジニアの判断で決める。よく使われる方法は3つ:
- 重み付け法:$\min\ w_1 f_1 + w_2 f_2$ のように重みで優先度を反映する。
- 膝点(knee point)選択:トレードオフの効率が最も良い「曲がり角」を選ぶ。少しの質量増で大きく強度が上がるポイントを狙う感じ。
- 製造制約フィルタ:パレート解の中から、製造コスト・工程・公差など最適化に組み込めなかった実務的条件で絞る。
実務ではNSGA-IIのような多目的遺伝的アルゴリズムでパレートフロントを一括生成し、そこからチームで議論して選ぶワークフローが主流だね。
NSGA-IIってよく聞きますけど、計算コストはどのくらいかかるんですか?
集団サイズ×世代数だけ評価が必要になる。例えば集団100×50世代=5000回。1回の解析に1時間かかるなら単純計算で5000時間。現実的にはサロゲートモデルで近似して評価回数を100〜200程度に減らすか、HPCクラスタで並列実行するかだね。modeFRONTIERやHyperStudyのような最適化プラットフォームはこのあたりを自動化してくれる。
数学的定式化
CAEにおける最適化問題は一般に次の形で定式化される:
$$\begin{aligned} \min_{\mathbf{x}} \quad & J(\mathbf{u}(\mathbf{x}), \mathbf{x}) \\ \text{subject to} \quad & g_j(\mathbf{u}(\mathbf{x}), \mathbf{x}) \leq 0, \quad j = 1, \dots, m \\ & h_k(\mathbf{u}(\mathbf{x}), \mathbf{x}) = 0, \quad k = 1, \dots, p \\ & x_i^L \leq x_i \leq x_i^U, \quad i = 1, \dots, n \end{aligned}$$ここで $\mathbf{x}$ は設計変数ベクトル、$\mathbf{u}(\mathbf{x})$ はFEM/CFDなどの状態変数(変位場・速度場など)、$J$ は目的関数(質量・コンプライアンス・抗力など)、$g_j$ は不等式制約(応力上限・体積率など)、$h_k$ は等式制約、$x_i^L, x_i^U$ は設計変数の上下限である。
トポロジー最適化ではSIMP法(Solid Isotropic Material with Penalization)が代表的で、各要素の擬似密度 $\rho_e \in [0, 1]$ を設計変数とし、ヤング率を:
$$E_e = \rho_e^p \, E_0$$とペナルティ化する($p$ は通常3)。これにより中間密度(グレースケール)を抑制し、0/1に近い明確な材料配置が得られる。
関連用語
- トポロジー最適化 — 材料配置の有無を最適化する手法
- 形状最適化 — 境界面の形状を滑らかに変化させる手法
- 寸法最適化 — 板厚・断面寸法のパラメータを最適化する手法
- 随伴法 (Adjoint Method) — 大規模問題の効率的な感度計算手法
- 遺伝的アルゴリズム — 進化計算に基づくメタヒューリスティクス
- 多目的最適化 — 複数の目的関数を同時に扱う最適化
- パレート最適性 — 多目的最適化における最適解の概念
- SIMP法 — トポロジー最適化の代表的な密度法
- ベイズ最適化 — サロゲートモデルベースの効率的探索
- NSGA-II — 多目的遺伝的アルゴリズムの標準手法
- サロゲートモデル — シミュレーションの代理モデル
- 目的関数 — 最適化の対象となる関数
- 制約条件 — 設計が満たすべき条件
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
最適化の実務で感じる課題を教えてください
Project NovaSolverは、CAEエンジニアが日々直面する課題——セットアップの煩雑さ、計算コスト、結果の解釈——の解決を目指しています。あなたの実務経験が、より良いツール開発の原動力になります。
お問い合わせ(準備中)関連トピック
なった
詳しく
報告