感度解析
感度の理論基礎
感度解析とは
先生、感度解析って何ですか?
設計変数の微小変化が目的関数にどの程度影響するかを定量化する。最適化の「方向」を決定するための情報。
感度の計算方法
| 方法 | 計算コスト | 精度 |
|---|---|---|
| 有限差分法 | 設計変数の数×FEM回数 | 近似(ステップサイズ依存) |
| 解析的感度(直接法) | 1回のFEM+追加計算 | 厳密 |
| 随伴法(Adjoint) | 1回のFEM+1回の随伴解析 | 厳密。設計変数が多いとき最効率 |
随伴法が最も効率的ですか?
トポロジー最適化のように設計変数が数万個の場合、随伴法は1回の追加計算で全変数の感度を得られる。有限差分法だと数万回のFEMが必要。
まとめ
感度解析の随伴法(Adjoint法)はFox & Kapoor(1968)
構造最適化の感度計算に使われる「随伴法(Adjoint method)」はFox & Kapoor(1968年、AIAA)が振動問題の固有値感度として最初に定式化した。随伴法の革命的な点は設計変数の数N_dに関わらず感度計算コストが一定(O(1))になることで、数千設計変数の問題でも効率的に感度を求められる。この特性が現代のトポロジー最適化(SIMP法)の実用化を支えており、OptiStructやABAQUS Topologyの内部では全てAdjoint感度が使われている。
感度の数値計算手法
感度解析のFEM
まとめ
自動微分(AD)は感度解析の実装コストを激減させた
複雑なCAEコードの感度(勾配)を手計算で導出するのは膨大なコストがかかるため、「自動微分(Automatic Differentiation, AD)」が1990年代から実用化された。ADはソースコードの演算グラフを解析して数値的な連鎖律適用を自動化する手法で、前進モードは設計変数1個当たりの感度計算、後退モード(Backpropagation)は目的関数1個当たりの全変数感度計算に適する。TensorFlowやPyTorchの自動微分エンジンはニューラルネットワーク学習と同じ技術で、OPENMDAO(NASA)等のCAE最適化フレームワークでも活用されている。
感度の実務適用
感度解析の実務
最適化の前段階として感度を確認。どの設計変数が目的関数に最も影響するかを特定。
実務チェックリスト
ソボル指標でどの設計変数が重要かを定量化する
感度解析の実務では「どの設計変数が目的関数に最も影響するか」を特定することが重要で、分散ベースの大域的感度指標「ソボル指標(Sobol' indices)」が標準ツールとなっている。Ilya Sobol'(ロシア科学アカデミー)が1993年に提案したこの手法は、各設計変数の寄与率を1次・2次(交互作用)で分解する。トヨタのエンジン燃費最適化では10変数の圧縮比・点火時期・噴射量等のソボル解析を実施し、総変動の65%が圧縮比1変数に起因することを確認して効率的な最適化を行った事例がある。
感度の感度のソフトウェア比較
ツール
OpenMDAOはNASAが2010年代にオープンソース公開
OpenMDAO(Open Multidisciplinary Design, Analysis, and Optimization)はNASAエームズ研究センターが2010年代に開発しオープンソース公開したMDO(多分野連成設計最適化)フレームワークだ。随伴法・自動微分・複素数ステップ差分を統一的なAPIで提供しており、MIT・Stanford・TUDelftなど主要航空宇宙工学科での設計最適化教育ツールとして広く採用されている。ボーイングは737 MAXの翼形状最適化にOpenMDAOを活用したと2017年AIAA SciTech Forum発表で開示した。
感度の先端研究
感度解析の先端
複素数ステップ差分法は有限差分より1000倍精度が高い
感度計算の数値的手法として有限差分法は汎用的だが、ステップ幅hを小さくするほど丸め誤差が増大する「ステップ幅のジレンマ」がある。複素数ステップ差分法(Complex Step method)はJoaquim Martins(2003年)が航空宇宙設計感度計算に適用して普及させた手法で、虚部方向に微小量ihを加えて感度を計算するため、h→0の極限でも丸め誤差がゼロになる。現在はSU2(スタンフォード大学開発の航空CFD最適化ツール)に標準実装されており、有限差分では達成できない機械精度感度が得られる。
感度のトラブル対応
感度解析のトラブル
感度の符号ミスで最急降下法が最急上昇になる
勾配ベース最適化で「目的関数が最小化でなく最大化する方向に動いてしまう」現象は、感度(勾配)の符号が逆転していることが主因だ。特にFEAコードとの有限差分接続時、変位と荷重の符号規則の不整合により感度が実際と逆符号になることがある。診断法は少数の設計変数で感度の符号を手計算(扰動解析)と比較する「Gradient Verification Test」で、OpenMDAOは開発初期フェーズでのgradient checkを標準ワークフローとして要求している。
関連トピック
なった
詳しく
報告