. 【実践pythonコード】AIによるCAEサロゲートモデルの作り方
【実践pythonコード】AIによるCAEサロゲートモデルの作り方
【実践pythonコード】AIによるCAEサロゲートモデルの作り方

【実践pythonコード】AIによるCAEサロゲートモデルの作り方

AIとCAEを組み合わせることで、製品開発をより効率よく回す試みが進められています。そのなかでも、CAEソルバを代替するサロゲートモデルが最も注目されています。

今回は、CAE結果からサロゲートモデルを実際に作成してみた手順を紹介します。

目次
  1. サロゲートモデルとは?
  2. サロゲートモデルのメリット
  3. CAE結果を用意する
  4. 機械学習モデルをコーディングする
  5. サロゲートモデルを活用する

サロゲートモデルとは?

AIにCAE結果を学習させることで作る、CAEソルバを代替するモデルをサロゲートモデルと呼びます。

サロゲートモデルを構築するうえで実施するべきは、以下の2つです。

①CAE結果を用意する②機械学習モデルをコーディングする

今回は、流体解析(CFD)の結果と、LightGBMという機械学習モデルを用いて、シンプルなサロゲートモデルを作る手順を紹介します。

サロゲートモデルのメリット

サロゲートモデルを用いるメリットは、主に予測時間の短縮です。

CAEは内部で反復計算を行うため、規模の大きい計算ほど処理時間が長くなります。いくつかの設計案を試すには、その都度、長い時間をかけて計算をする必要があります。

一方、サロゲートモデルは、機械学習モデルを一度構築してしまえば、任意の設計を試す時間は一瞬なので、より効率よく製品開発を行うことができます。

また、サロゲートモデルは複雑なCAEソフトウェアの操作なしで計算結果を得られるため、忙しい設計者の電卓として、CAE専任者が設計者に提供する価値もあると考えます。

CAE結果を用意する

今回は、上のテーブルのような、簡単なCAEモデルの結果をまとめた数値データを用います。(このテーブルデータはここにアップロードしました)

テーブルデータの中身を具体的に説明します。

円筒の中に物体(青)が設置されています。円筒と物体の寸法をfai, L, d, xを様々変えて、この管の内部に発生する圧力差をPを計算しました。今回は、98種類の計算を実施し、テーブルにまとめています。

機械学習モデルをコーディングする

では、サロゲートモデルを作りましょう。

CAE結果データをインプットとして、以下のコードによってlightGBMのサロゲートモデルを作ります。

lightGBMは機械学習の勾配ブースティング手法です。コードの詳しい説明はこちらの記事に記載してありますので参考にどうぞ。

import pandas as pd import numpy as np import lightgbm as lgb import seaborn as sns data_all = pd.read_csv("../input/210718-cae-resultcsv/210718_cae_result.csv") train = data_all[:80] test = data_all[80:] # 学習データ train_x = train[["fai","L","d","x"]] train_y = train[["P"]] # テストデータ test_x = test[["fai","L","d","x"]] test_y = test[["P"]] params = { "objective" : "regression", "metric" : "rmse", "num_leaves" : 40, "learning_rate" : 0.01, "bagging_fraction" : 0.8, "feature_fraction" : 0.4, "bagging_frequency" : 6, "bagging_seed" : 42, "verbosity" : -1, "seed": 42 } train_lgb = lgb.Dataset(train_x, label=train_y) test_lgb = lgb.Dataset(test_x, label=test_y) evals_result = {} model_lgb = lgb.train(params, train_lgb, 10000, valid_sets=[train_lgb, test_lgb], early_stopping_rounds=200, verbose_eval=1000, evals_result=evals_result) pred_lgb = model_lgb.predict(test_x) columns = ["pred_y"] pred_d = pd.DataFrame(data=pred_lgb, columns = columns) test_y_reindex = test_y.reset_index(drop=True) sns.scatterplot(x=test_y_reindex['P'], y=pred_d['pred_y']) sns.scatterplot(x=test_y_reindex['P'], y=test_y_reindex['P']) #perfect fitting line

モデルの精度を確認した結果が出力されます。

サロゲートモデルの予測と、CAEの結果が完全に一致する場合のオレンジの線に対して、青い点は少し誤差があることがわかります。

この誤差が十分に小さければ、CAE計算をすることなく、サロゲートモデルが十分活用可能であると判断できます。

サロゲートモデルを活用する

list_new = [[103,510,24,12],[101,505,22,11]] test_new = pd.DataFrame(list_new) test_new.columns = ["fai","L","d","x"] pred_lgb_new = model_lgb.predict(test_new) test_new["pred"] = pred_lgb_new test_new

サロゲートモデルを活用します。

任意の値について、その寸法で設計した際の圧力差を求めることができます。

やってみるとわかりますが、上記コードを実行するのには1秒もかかりません。CFD計算を回すより圧倒的に早いことがわかります。

コードの中身を少し変えるだけで、ご自身のデータでもモデルを作ることができます。ぜひ一度、試してみてください。

関連記事

サロゲートモデルによるCAEの代替CAEとAIの組み合わせ、という道半ばの課題では、AIはCAEを代替するサロゲートモデルとしての活用が最も効果があると述べた。各論文でも同様の意見が述べられており、実際にサロゲートモデルを構築した例がいくつも挙げられるので紹介したい。複合材のサロゲートモデルの論文この分...hasimoto-soken.com2021.07.10 CAE解析専任者を10年やってみた私が大切にしている考え方私は、メーカーで10年間CAE専任者として働いてきました。10年間で何となく分かってきた、「CAE専任者が仕事を進めるうえで大事にすべき考え方」を紹介したいと思います。初めから複雑な計算をしない計算で物理現象を予測する際、全ての現象を考慮...hasimoto-soken.com2021.08.21 CAE解析に求めれる予測精度と、実は精度向上よりもやるべきことがある、という話CAE解析では、どの程度の予測精度が必要なのでしょうか。10年ほどCAE解析の先任者をやっていると、計算精度の議論は尽きることがありません。もちろん、必要な精度は時と場合によりますが、今回は大きく「製品設計で使う場合」と「先行開発や研究で使う場合」に分けて、経験...hasimoto-soken.com2022.11.08
📎📎📎📎📎📎📎📎📎📎