CAE用材料モデルを実機から逆算するためにベイズ最適化を使えるか?
ラバードームの実験データを用いた材料モデルパラメータ最適化 w/ Optuna
#CAE
#Optuna
#材料モデル
#ベイズ最適化
#WIP
背景
ラバードームの非線形CAE解析では、ゴム材料の超弾性挙動を精度よく再現するためにOGDENモデルなどの材料構成則を使用する。
しかし、材料パラメータは材料試験データから同定する必要があり、パラメータ数が20個程度と多い場合、効率的な最適化手法が求められる。物性データ構築のための引張試験は材料一種につき100万円以上かかる。
実機とCAE結果を照らして、OGDENモデルの係数を実機に合うように自動で同定する手法を検討する。この問題はOGDENモデルの係数がすべて最適化変数となるため、多変数最適化が必要になる上、CAEの計算コストが高いため試行回数が制限される。
そこで、ベイズ最適化ライブラリであるOptunaを使ってみる。
課題設定
- 目的関数: 実験データとCAEシミュレーション結果の差分(残差二乗和など)
- 設計変数: OGDENモデルの材料係数(約20個)
- 制約条件: 複数の実サンプルデータとの整合性
- 評価コスト: 1回のCAE解析に数十分~1時間かかる
Optunaサンプラーの検討
ベイズ最適化(TPESampler)の特性
- 利点: 評価コストの高い問題に強い、既存評価結果から効率的に探索
- 懸念点: 高次元(20次元)での性能、複数サンプルへの同時フィッティング
代替手法との比較
- CMA-ES: 連続値の最適化に強いが、評価回数が多く必要
- Grid Search: 次元の呪いにより現実的でない
- 勾配法: CAEの微分計算が困難
今後のアプローチ
1. プロトタイプ実装
import optuna
def objective(trial):
# OGDEN係数を提案
params = {f'c{i}': trial.suggest_float(f'c{i}', -10, 10)
for i in range(20)}
# CAE実行 + 実験データとの比較
residual = run_cae_and_compare(params, experimental_data)
return residual
study = optuna.create_study(sampler=optuna.samplers.TPESampler())
study.optimize(objective, n_trials=100)
2. 検証ステップ
- 低次元(2-3パラメータ)での動作確認
- 複数サンプルデータを集約した目的関数の設計
- 並列評価による高速化(複数CAEジョブの同時実行)
3. 懸念事項への対策
- 高次元問題: パラメータの事前スクリーニング、感度解析による次元削減
- 局所解: 複数初期点からのマルチスタート
- 計算コスト: サロゲートモデル(応答曲面)との併用
4. 評価基準
- 収束速度(既存手法との比較)
- 最終的なフィッティング精度
- 必要なCAE評価回数
まとめ
Optunaのベイズ最適化は計算コストの高いCAE問題に適しているが、20次元のパラメータ空間では性能低下の可能性がある。まずは小規模な検証実験でフィージビリティを確認し、必要に応じてパラメータ削減や他のサンプラー(CMA-ES等)との併用を検討する方針で進める。