モンテカルロ法 (Monte Carlo Method) — CAE用語解説
モンテカルロ法とは
モンテカルロ法って、乱数を使う解析手法ですよね? CAEだとどういう場面で使うんですか?
大きく分けて3つの使い方がある。1つ目は不確かさ伝播(Uncertainty Propagation)で、材料物性や荷重条件にばらつきがあるとき、出力の統計分布を求める。2つ目は信頼性解析で、破壊確率や安全係数の分布を評価する。3つ目は放射伝熱のビューファクター計算で、複雑形状の面間放射をレイトレーシングで求めるんだ。
へえ、けっこう使い道が広いんですね。そもそもモンテカルロ法の基本的な考え方ってどういうものなんですか?
ざっくり言うと「答えがわからない積分や期待値を、乱数サンプリングの平均値で近似する」手法だ。例えば円の面積を求めたいとき、正方形の中にランダムに点を打って、円の中に入った点の割合から面積を推定する——あの有名な実験がまさにモンテカルロ法の本質だね。名前の由来はモナコのモンテカルロ・カジノで、「サイコロを何回も振る」イメージにぴったりだからだ。
基本原理
モンテカルロ法は、求めたい量 $I$ を期待値として表現し、独立同分布の乱数サンプル $x_1, x_2, \ldots, x_N$ を用いて近似する。
$$I = \mathbb{E}[f(X)] = \int f(x)\, p(x)\, dx \approx \hat{I}_N = \frac{1}{N}\sum_{i=1}^{N} f(x_i)$$大数の法則により、$N \to \infty$ で $\hat{I}_N \to I$ が保証される。これがモンテカルロ推定の理論的基盤だ。
収束速度と誤差
サンプリング数はどれくらい必要なんですか? 適当に1000回とかでいいんですか?
単純なモンテカルロ法だと収束速度が $O(1/\sqrt{N})$ だから、有効数字を1桁増やすにはサンプル数を100倍にする必要がある。例えば標準誤差を1%以下にしたいなら、ざっと $N = 10{,}000$ は欲しいところだ。
推定量 $\hat{I}_N$ の標準誤差は次式で評価される。
$$\text{SE} = \frac{\sigma}{\sqrt{N}}, \quad \sigma^2 = \text{Var}[f(X)]$$この $1/\sqrt{N}$ の収束は問題の次元に依存しないのが最大の強みだ。有限要素法のメッシュ収束が次元の呪いに悩まされるのとは対照的に、モンテカルロ法は100次元の入力空間でも同じ収束速度を保つ。高次元の積分問題でFEMやFVMが使えない場面でも、モンテカルロ法なら対応できる。
CAEにおける応用分野
不確かさ伝播 (Uncertainty Propagation)
不確かさ伝播って、具体的にはどんな場面で使うんですか?
例えば自動車のボディ構造解析を考えてみよう。板厚の製造公差が ±0.05mm、ヤング率のロット間ばらつきが ±3%、溶接ビードの位置精度が ±1mm あるとする。決定論的なFEM解析では代表値1個しか入力できないけど、モンテカルロ法なら各パラメータを確率分布(正規分布や一様分布)として与えて、何百回もFEMを回す。結果として「最大応力の95パーセンタイル値」とか「剛性の変動係数」が得られるんだ。
なるほど、「この設計で最悪のケースはどのくらいか」がわかるわけですね。でもFEMを何百回も回すって、計算コスト的に大丈夫なんですか?
そこが実務での最大の壁だ。対策としては、応答曲面法(RSM)やクリギングなどのサロゲートモデルを作って、それに対してモンテカルロ法を適用するのが主流。元の重い解析は数十~数百回だけ走らせて代理モデルを構築し、代理モデルに対して10万回サンプリングするイメージだね。
信頼性解析 (Reliability Analysis)
信頼性解析って不確かさ伝播と似てますけど、何が違うんですか?
不確かさ伝播が「出力の統計分布全体」を知りたいのに対して、信頼性解析は「破壊する確率」という1つの数字にフォーカスする。限界状態関数 $g(\mathbf{x})$ を定義して、$g(\mathbf{x}) \leq 0$ となる確率、つまり破壊確率 $P_f$ を求めるんだ。
$$P_f = P[g(\mathbf{X}) \leq 0] = \int_{g(\mathbf{x}) \leq 0} p(\mathbf{x})\, d\mathbf{x} \approx \frac{1}{N}\sum_{i=1}^{N} \mathbf{1}[g(\mathbf{x}_i) \leq 0]$$
破壊確率が $10^{-6}$ みたいな極めて小さい値だと、それを検出するのに100万回以上サンプリングが必要ってことですか? さすがに無理では……
するどいね。単純モンテカルロ法だと $P_f = 10^{-6}$ を変動係数10%で推定するには $N \approx 10^8$ 回必要になる。だから実務では重点サンプリング(Importance Sampling)という手法を使って、破壊領域の近くに集中的にサンプルを打つ。あるいはFORM/SORMのような近似手法で最も危険な点(設計点)を見つけてから、その周辺でモンテカルロ法を適用する「サブセットシミュレーション」を使うこともある。航空宇宙や原子力のように $P_f < 10^{-7}$ が要求される分野では必須のテクニックだ。
自動車業界だとどういう使い方が多いですか?
6σ設計との組み合わせが代表例だ。6σ品質(百万個に3.4個の不良率)を達成するには、ばらつきを考慮した設計が必須になる。モンテカルロ法でFEM結果の分布を求めて、6σの裾野でもNGにならないことを確認する。量産部品のプレス成形で板厚・摩擦係数・ブランク位置のばらつきを入れて、割れやしわの発生確率を評価するのも典型的なアプリケーションだよ。
放射伝熱 (Radiation Heat Transfer)
放射伝熱でモンテカルロ法を使うってどういうことですか? FEMやFVMとはまったく違うアプローチなんですか?
まったく違う。放射エネルギーを多数の光線(レイ)として離散化し、各レイの射出方向・反射・吸収を確率的に追跡するんだ。面Aからランダムな方向にレイを飛ばして、面Bに到達したレイの割合がそのままビューファクター $F_{A \to B}$ の推定値になる。
$$F_{A \to B} \approx \frac{\text{面Bに到達したレイの数}}{\text{面Aから射出した全レイ数}}$$
へえ、レイトレーシングみたいな感じですね。どういう場面で特に有効なんですか?
人工衛星の熱設計が代表例だね。宇宙空間では対流がないから放射が支配的で、太陽電池パネルやラジエータの複雑な形状間のビューファクターを正確に求める必要がある。解析解は平行平板とか同軸円板みたいな簡単な形状にしか存在しないから、実際の衛星形状ではモンテカルロ法が事実上の標準手法だよ。Thermal Desktopなどの宇宙熱解析ソフトは内部的にこの手法を使っている。
ガス放射(参加性媒体)の場合はどうなるんですか? 火炉の中とかだと、ガス自体が放射を吸収・射出しますよね。
いい質問だ。参加性媒体がある場合は、レイが媒体中を進むときに吸収係数 $\kappa$ に従ってランダムに吸収されるか散乱されるかを判定する。光路長 $s$ をビールの法則 $\tau = e^{-\kappa s}$ に基づいてサンプリングするんだ。Discrete Ordinates法やP1近似と比べると計算コストは高いけど、波長依存性や非灰色ガスの扱いが自然にできるのがモンテカルロ法の強みだ。
サンプリング戦略
分散低減手法
収束を速くするテクニックってあるんですか? さっき $1/\sqrt{N}$ って言ってましたけど、これを改善できたらかなり嬉しいですよね。
分散低減手法(Variance Reduction Techniques)がいくつもある。実務でよく使われるものを紹介しよう。
| 手法 | 概要 | 収束速度の改善 | 適用場面 |
|---|---|---|---|
| 単純ランダム | 擬似乱数で独立にサンプリング | $O(1/\sqrt{N})$(基準) | プロトタイピング、小規模問題 |
| Latin Hypercube (LHS) | 各変数の範囲を層別に等分割 | $O(1/N)$(条件による) | DOE、サロゲートモデル構築 |
| Sobolシーケンス | 低食い違い量列による準乱数 | $O((\log N)^d / N)$ | 高次元の数値積分 |
| 重点サンプリング | 関心領域に密度を集中 | 問題依存で大幅改善 | 信頼性解析の稀事象推定 |
| 対照変量法 | 負の相関を持つ変量で分散相殺 | 最大50%の分散低減 | 対称性のある問題 |
Latin Hypercube Samplingは実務でよく聞きますね。普通の乱数と何がそんなに違うんですか?
単純ランダムだと偶然の偏りでサンプルが集中する領域と空白域ができてしまう。LHSは各変数の範囲をN等分して、各層から必ず1点ずつ取るから、入力空間をムラなくカバーできる。例えばFEMの不確かさ解析で50回しか計算できないとき、LHSなら50個のサンプルでも入力空間をかなり均一に探索できる。Ansys Workbenchの「Design of Experiments」やOptiStructのロバスト設計でも標準的に使えるよ。
Sobolシーケンスは聞いたことがあまりないんですが、LHSとどう使い分けるんですか?
Sobolシーケンスは「準モンテカルロ法」に分類される。乱数ではなく、あらかじめ設計された低食い違い量列を使うから、空間の被覆が非常に効率的だ。LHSはサンプル数Nを事前に決める必要があるけど、Sobolは途中でサンプルを追加しても均一性が保たれる。ただしLHSのほうが実装が簡単で、商用ソフトのサポートも多いから、まずはLHSから始めて、精度が足りなければSobolを検討するのがいいだろう。
サロゲートモデルとの併用
さっきサロゲートモデルの話がありましたけど、具体的なワークフローを教えてもらえますか?
典型的なワークフローはこうだ。まず入力変数(板厚、材料定数、荷重など)の確率分布を定義する。次にLHSで50~200点のサンプルを生成し、それぞれに対してFEMを実行する。得られた入出力データでクリギングや多項式カオス展開(PCE)の代理モデルを構築する。最後にこの代理モデルに対して10万~100万回のモンテカルロ法サンプリングを行い、出力の統計量や破壊確率を求める。代理モデルの評価はマイクロ秒オーダーだから、100万回でも数秒で終わるんだ。
なるほど、重い計算は少数回に抑えて、大量サンプリングは軽い代理モデルで賄うわけですね。すごく合理的だ。代理モデルの精度はどうやって保証するんですか?
代理モデルの精度検証は必ずやること。LOOCV(Leave-One-Out Cross-Validation)で $R^2 > 0.95$ を確認するとか、追加検証点で予測誤差を確認するとか。代理モデルが外れていたら、いくらモンテカルロ法を回しても意味のない結果になるからね。最近は能動学習(Adaptive Sampling)でモデルの不確かさが大きい領域に追加サンプルを自動配置する手法も出てきている。
関連用語
- 不確かさの定量化 (Uncertainty Quantification)
- 信頼性解析 (Reliability Analysis)
- ラテン超方格サンプリング (Latin Hypercube Sampling)
- 応答曲面法 (Response Surface Method)
- サロゲートモデル (Surrogate Model)
- モンテカルロ放射 (Monte Carlo Radiation)
- ビューファクター (View Factor)
- 実験計画法 (Design of Experiments)
- FORM (First-Order Reliability Method)
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
モンテカルロ法の実務で感じる課題を教えてください
Project NovaSolverは、CAEエンジニアが日々直面する課題——セットアップの煩雑さ、計算コスト、結果の解釈——の解決を目指しています。あなたの実務経験が、より良いツール開発の原動力になります。
お問い合わせ(準備中)関連トピック
なった
詳しく
報告