kriging — CAE用語解説
kriging
先生、クリギングってCAEの最適化でよく出てきますけど、どんな手法ですか?
理論と物理
Krigingの基本概念
Kriging(クリギング)って、CAEでよく聞くけど、結局何をしている手法なんですか?
空間統計学に基づく補間・予測手法だ。限られたサンプル点(例えば、異なる設計パラメータでのCAEシミュレーション結果)から、未サンプルの点での応答(応力、固有振動数など)を確率的に推定する。特に「最良線形不偏予測(BLUP)」という性質が特徴で、予測誤差の分散を最小化する。
「確率的に推定」というのは、単なる曲線フィッティングとどう違うんですか?
大きな違いは、Krigingが「地域化変数」という確率過程を仮定することだ。観測値
その「相関」は具体的にどう表すんですか?
共分散関数、または相関関数を使ってモデル化する。例えば、ガウス型相関関数がよく使われる:
数値解法と実装
Krigingモデルの構築手順
Krigingモデルを実際に作るには、どんな計算ステップを踏むんですか?
大まかに4ステップだ。1. サンプル点の計画(実験計画法:Latin Hypercube Samplingなど)、2. 各点でCAEシミュレーションを実行し応答値を取得、3. 取得したデータを用いてKrigingモデルのハイパーパラメータ(
ハイパーパラメータの「最尤推定」って、具体的にはどういう計算ですか?
観測データ
予測誤差分散も計算できると言っていましたが、その式は?
新しい点
実践ガイド
CAEワークフローへの組み込み
実際の設計開発でKrigingを使う典型的なワークフローはどんな感じですか?
設計空間探索や感度分析、特に最適化の前段階として使われることが多い。例えば、板厚やリブの位置など5〜10個の設計変数に対して、初期サンプル数として「変数の10倍」程度(例えば50〜100点)のLHS計画を作成し、各点でFEM解析をバッチ実行する。得られた応力や変形量の最大値に対してKrigingモデルを構築し、その代理モデルを用いて数百万回のモンテカルロシミュレーションや、効率的な最適化アルゴリズム(例えば遺伝的アルゴリズム)を実行する。これにより、直接FEMを使うより100倍以上高速に設計空間をスクリーニングできる。
サンプル点数はどう決めればいいですか?多ければ多いほど良いんですか?
多すぎると構築コストが増大し、少なすぎると精度が出ない。経験則として、設計変数dに対して10d〜20dが初期サンプル数の目安だ。ただし、応答曲面が非常に複雑(多くの局所解があるなど)な場合はもっと必要になる。重要なのは、モデル精度を検証することだ。構築したKrigingモデルに対して、学習に使っていない検証用のサンプル点(例えば全体の20%)を用意し、予測値と実際のCAE結果との誤差(RMSEやR²)を評価する。R²値が0.9を下回るようなら、予測誤差分散が大きい領域を特定して追加サンプリング(Adaptive Sampling)を行うべきだ。
Krigingモデルが「過学習」することはあるんですか?
ある。特にハイパーパラメータ
ソフトウェア比較
主要CAEソフトにおける実装
Krigingを使う場合、どんなソフトウェアが選択肢になりますか?
大きく分けて3種類ある。1. CAEソフトに統合された最適化/DOEモジュール(Ansys DesignXplorer、Siemens HEEDS、Altair HyperStudy)、2. 専門のプロセス統合・設計最適化(PIDO)ツール(modeFRONTIER、Isight)、3. プログラミング言語のライブラリ(Pythonの`scikit-learn`や`GPy`、MATLABのStatistics and Machine Learning Toolbox)。統合型はワークフロー構築が楽だが、PIDOツールはアルゴリズムのカスタマイズ性が高い。
Ansys WorkbenchのDesignXplorerでKrigingを使う場合、どんな設定が必要ですか?
Response Surface Optimizationの設定で、「Kriging」を代理モデルタイプとして選択する。重要な設定は「Theta」の初期値と範囲だ。デフォルトでは「Trend Function」は「Constant」か「Linear」が選べる。複雑な応答には「Linear」を選ぶことが多い。また、相関関数は「Gauss」がデフォルトだ。100サンプル点程度までなら、Workbench上でも問題なく動作するが、それ以上になると最適化計算に時間がかかる場合がある。
Pythonで自分で実装するメリットは何ですか?
柔軟性とコストだ。`scikit-learn`の`GaussianProcessRegressor`は、カーネル(相関関数)を自分で組み合わせられる(例:`RBF()` + `WhiteKernel()`)。また、予測値だけでなく予測分布の分位数も直接計算できるので、信頼性ベース設計最適化(RBDO)に組み込みやすい。商用ソフトのブラックボックスな部分を理解したい場合や、研究開発で新しいアルゴリズム(例えば異方性を考慮した特殊なカーネル)を試したい場合には必須だ。ただし、CAEソフトとのデータ連携や並列計算ジョブの管理は自分で構築する必要がある。
トラブルシューティング
よくある問題と対策
Krigingモデルを構築しようとしたら、「共分散行列が特異である」というエラーが出ました。原因は何ですか?
主に2つの原因が考えられる。1. サンプル点の中に互いに極端に近い点が含まれている。例えば、LHSで生成した点が丸め誤差などで実質的に同じ座標になってしまうと、相関行列
構築したモデルの予測が、サンプル点から離れるとすぐに平均値(トレンド関数)に張り付いてしまいます。これはなぜですか?
これは「相関長」が短すぎる、つまりハイパーパラメータ
CAEのノイズ(数値誤差)が大きい場合、Krigingは使えないんですか?
いや、むしろKrigingはノイズを明示的にモデル化できる「Regression Kriging」という派生形が有効だ。先ほどのモデルに、観測ノイズの分散
関連トピック
なった
詳しく
報告