CFD+ML チュートリアル

翼型設計への機械学習の適用

このチュートリアルでは、デザインを実行する方法を紹介します。 最適化 機械学習技術を使用したワークフロー。 具体的には、PCA (主成分分析) 手法を使用して、2D 翼型の一連の CFD シミュレーションを高速化します。 次に、このデータセットを使用してサロゲートを開発します モデル by ガウス過程回帰。 最後に、この代理モデルは、さまざまな制約と目標の下でこの翼形部を迅速に最適化するために使用されます。 このプロセス全体を XNUMX つの段階に分割します。 

最初の段階は、以下の緑色のボックスに示されており、次の内容を含みます。 前処理 翼形状データの次元削減。 元の翼型データは次から取得されます。 UIUC 翼型座標データベース 一方、前処理された翼型データベースは ここに提供 そのため、ユーザーはそれを直接使用してこのプロジェクトを再現できます。 

赤いボックスで示されている第 XNUMX 段階では、サロゲート モデルを構築するための高忠実度のトレーニング サンプルを生成します。 トレーニング サンプルは、PCA ベースの低次数モデル (ROM) によって高速化されます。 十分なトレーニング サンプルを取得したら、サロゲート モデルが構築され、最適化に使用されます。

図 1: データ生成、トレーニング、最適化プロセスの全体的なフロー図。

遷音速翼型最適化ビデオチュートリアル

遷音速翼型最適化ワークフロー チュートリアル

このセクションでは、Rescale プラットフォームで遷音速翼の最適化を加速する機械学習 (主成分分析、PCA) を実行する方法を説明します。 の 計算流体力学 (CFD) 使用した解析ソフトウェアはOpenFOAMです rhoシンプルフォーム 、圧縮性乱流の定常状態ソルバーです。 遷音速翼型の最適化の場合、設計点は Ma=0.7 です。 ここで使用される乱流モデルは k-オメガせん断応力輸送 (SST)。 PCA ライブラリは次からインポートされます。 scikit-学ぶ 次元削減と  ガウス過程回帰 サロゲート モデルとして使用されるメソッド (クリギングとも呼ばれます)。 最適化関連ツールは以下から使用されます。 MDOラボ (ガエタン・ケンウェイほか、2010; ピーター・リューら。 2014年; ピン・ヘ他、2018; ニール・ウー 他、2020)、メッシュ自動生成パッケージを含む pyHyp そしてオプティマイザー pyOptSparse.

図 2: ジョブのワークフロー

このジョブは、まず、低次元空間でサロゲート モデルを構築するためのトレーニング サンプル (1300 サンプル) を生成し、サロゲート モデルをトレーニングし、そのサロゲート モデルを最適化に適用して、最適な設計を見つけます。 

データ生成ステップでは、プロセスを高速化するために 100 段階のアプローチが使用されます。 第 100 段階では、フリーストリーム条件から開始して完全な収束まで 1200 の高忠実度 CFD シミュレーションが実行されます。 これら 1200 回の実行結果を使用して、流れ場を予測するための低次数モデルを準備し、残りの 1300 サンプルのシミュレーションを初期化します。 このステップの第 XNUMX 段階では、自由流条件ではなく、これらの予測された流れ場から開始して、XNUMX の高忠実度シミュレーションが実行されました。 これにより、CFD シミュレーションがはるかに少ない反復回数で最終結果に収束するようになりました。 その結果、後述するように、このアプローチにより、トレーニング データセットの精度を犠牲にすることなく、総所要時間が大幅に短縮され、全体的な計算効率が向上しました。 これら XNUMX 個のトレーニング サンプルを生成した後、第 XNUMX ステップとして実際の代理モデルが構築され、検証されます。 最後に、ジョブの XNUMX 番目のステップでは、サロゲート モデルを使用して、最適化ループで必要な結果を迅速に (たとえば、ほぼリアルタイムで) 予測します。 

「ジョブ設定のインポート」ボタンをクリックしてジョブにアクセスして直接起動するか、下の「ジョブ結果の取得」ボタンをクリックして結果を表示できます。

Input Files

このジョブの入力ファイルは、圧縮ファイル TransonicAirfoilOptimization.zip です。

Software

赤で強調表示されたテキスト ボックス フィールドに「MDAO Framework」と入力し、アイコンをクリックして MDAO フレームワークを選択します。

図 4: ソフトウェアの選択

コマンドフィールドを次のように編集します。

pip install -U scikit-learn

pip install scikit-optimize

./Allrun

ここでは、Scikit-learn から機械学習ライブラリをインストールします。 Rescale プラットフォームは、実行を開始する前に、圧縮アーカイブ TransonicAirfoilOptimization.zip に含まれる他のファイルとともに Allrun スクリプトを自動的に抽出します。 .

Hardware

図 5: ハードウェアの選択

編集するハードウェア設定は XNUMX つあります。 こちら コアのタイプと数。 この場合、コア タイプとしてエメラルド、コア数として 8 を選択します。Rescale はオンデマンドとオンデマンド プロを提供します オプション。 この目的のために、可能な場合は On-Demand を選択してコストを削減し、そうでない場合は On-Demand Pro を選択します。 これらのオプションの詳細については、こちらをご覧ください。 ここから.  

ジョブの最大継続時間は、ウォールタイムを変更することで設定できます。 ここでは3時間を設定します。 ジョブ期間の制限について詳しくは、こちらをご覧ください。 ここから.

[保存] をクリックしてから [次へ] をクリックし (このジョブではオプションの後処理ステップが省略されます)、もう一度 [次へ] をクリックします。 次の図のような概要が表示されるはずです。

図 6: 設定の確認

設定を確認し、[送信] ボタンをクリックしてジョブを開始します。

Status:

ジョブの実行後のステータス ページは以下に表示されます。 2 個のトレーニング サンプルの生成が完了するまでに約 1300 時間かかります。 

図 7: ジョブ実行後のステータス ページ

[ステータス] ページをチェックして、出力ファイルの内容をライブビューでリアルタイムに表示できます。これは、ジョブの進行状況を監視する場合に非常に役立ちます。 この場合、特に重要な出力ファイルは process_output.log です。 

また、Web ページ上の Jupyter ノートブックを介して生成されたすべてのデータセットにアクセスし、ノートブックを作成してデータの後処理と分析を実行することもできます。 

注: ロードされたソフトウェアからすべてのライブラリを jupyter ノートブックにインポートするには、ターミナルで次のコマンドを実行し、ノートブックで使用できる Python-uenv という名前の新しいカーネルを作成します。 

python -m ipykernel install --name ipython --display-name 'Python-uenv' --user

図 8: Jupyter ノートブック環境

ジョブが完了すると、結果ページが表示されます。 このプロセスでは、ジョブによって 1300 個のサンプル フォルダーが生成され、それぞれに OpenFOAM 出力ファイルが含まれます。 設計変数、揚力係数、抗力係数は、という名前のファイルに保存されます。 train_sample.dat  サロゲートモデルのトレーニング用。 ここでは、長時間停止することを避けるために、これらの流れフィールド ファイルを削除することを選択します。 ジョブの実行後の時間。 すべてのサンプルの流れフィールドの結果を保持したい場合は、コードの最後から 3 行目のコメントを解除して DOE_workflow_baseairfoil_stepXNUMX.py を変更し、これらのファイルを削除するのではなく圧縮して保存します。

遷音速翼最適化の結果は次のとおりです。  
下の図では、 デザインスペース.png、灰色の領域は、低次元設計空間からラテン超立方体サンプリング (LHS) によってサンプリングされた 1300 の翼形によって広がる設計空間を示しています。 赤い線はベース翼形、RAE2822 です。

図 9: ベースラインの翼形と設計空間

また, アカウント登録 サロゲートモデルの図を次の図に示します。 サロゲートモデル.png。 以下のプロットは、揚力係数 (CL) と抗力係数 (CD) の予測サンプル (赤点) とテストサンプル (黒点) を比較しています。 平均絶対誤差は CL では 2.e-4、CD では 3e-05 であり、構築された代理モデルの精度が検証されます。 完全にトレーニングされたサロゲート モデルも次のように保存されます。 gpr_cd.sav CD用と gpr_cl.sav CL予想用。

図 10: サロゲート モデルの検証

最適化履歴はファイルに保存されます hisoty_airfoil.hst。 目的 (CD) と制約 (最大厚さおよび CL) の収束履歴を図に示します。 Opt_history.png。 青い線は最適化プロセス全体で評価されたすべてのサンプルを示し、赤い点線は各反復の制約を満たす最適なサンプルを表します。  

図 11: 最適化の履歴
CD (カウント)1 ドラッグ カウント = 0.0001CL
RAE2822990.47
PSO による最適化93.70.466
CFDによる検証94.30.465
表 1: 最適化結果の比較

表 2 は、次の方法で得られた最適化結果を示しています。 粒子群の最適化 (PSO) MDOLab タイルによって提供されます。 RAE2822 の最大厚さは t=12% です。 Mで=0.7、C が付いています。d=0.0099、CL=0.47。 CL=0.47 および最大厚さ=0.12 を維持するという制約の下で、CD=93.7 を持つ最適な形状が見つかりました。 

図 12: ベースラインと最適化された翼形の形状の比較。

要約

このプロジェクトでは、応用機械学習技術を使用して、Rescale プラットフォーム上で CFD シミュレーションと最適化プロセスを 8 倍高速化しました。 まず、PCA を適用して大規模な翼型データベースの次元を削減しました。 次に、PCA ベースの低次数モデルを構築して低忠実度の流れ場予測を生成し、トレーニング データ生成に必要な高忠実度シミュレーションの収束を加速しました。 最後に、この完全に生成されたトレーニング データに基づいて、与えられた制約の下でベースライン翼の抗力を最小限に抑えるための高速最適化ループに使用されるガウス プロセス ベースの代理モデルを構築しました。 

各高忠実度ケースの実行には、初期条件から開始した場合は約 50 秒 (8 コア/サンプル)、予測された流れ場から開始した場合は 4 秒 (8 コア/サンプル) かかります。 トレーニング データが単純に生成される場合、つまり中間サロゲート モデルを使用して中間加速を行わない場合、データセット全体の生成には約 17 時間かかります。 ただし、中間のアクセラレーションを使用して高忠実度シミュレーションの大部分を中間予測で初期化すると、データ生成にかかる時間はわずか 2 時間になります。 サロゲート モデルのトレーニングにかかる​​時間は、トレーニング データの生成に比べて無視できます。 最終的なサロゲート モデルのトレーニングに必要なデータを生成するには、数時間かかります。 しかし、一度トレーニングされると、モデルは十分に正確な予測をそれぞれ XNUMX 秒以内に生成します。 その結果、トレーニング データ生成の前倒しコストは、異なる制約や目的を持つ複数の最適化が含まれる可能性があるその後の最適化スタディ中に大幅に償却されます。    

結論として、高忠実度シミュレーションを支援または置き換えるためにサロゲート モデルを使用すると、設計と最適化の研究が大幅に加速され、研究ごとに高忠実度シミュレーションを繰り返すことなく制約や目的を動的に変更できることが実証されました。