機械学習を用いたマス-ばね-ダンパーシステムの低次元化モデリング(ROM)の作成

Tutorial Level: Intermediate romAIを使用して動的システムのROMを作成します。

重要: Available only with romAI extension.

このチュートリアルの前提条件

このチュートリアルにはAltair romAI拡張機能が必要です:これは、ファイル > 拡張子マネージャー > romAI.で有効にできます。

このチュートリアルのファイル

TrainingDataset.csv; mkc_linear.scm

チュートリアルで構築するモデルの完成版と、チュートリアルを完了するために必要なすべてのファイルは、次の場所にあります:<installation_directory>/ tutorial_models/Modeling and Simulation/romAI.
チュートリアルのルートディレクトリは書き込み保護されているため、変更しないでください。

概要

Altair romAIは、多層パーセプトロン(MLP)などの機械学習技術と古典的なシステム理論を使用して、低次元化モデリングl(ROM)の生成とシステム同定を行うコーディング不要のアプリケーションです。romAIは、線形、非線形、静的、動的システムをサポートします。

任意のソフトウェアでモデル化された任意の物理的問題が与えられた場合、romAIの目標は、問題を含むROMブロックに変換することです:

  • 入力および出力
  • 状態変数
  • 特性パラメータ

romAIの技術やその他の使用方法についての詳細情報は、romAIファイル > ヘルプを参照してください。

romAI eラーニングでは、短いビデオでツールの詳細を説明しています。

このチュートリアルで扱うモデルは、下図に示すマス-ばね-ダンパーシステムです。

目標は、シミュレーションデータに基づいて、この動的システムのROMを生成することです。チュートリアルを実行することにより、ブロックは入力、出力、状態によるこのシステムの表現が完成します。

romAI、シミュレーションデータを使ってROMを生成する方法の例です。ワークフローは4つのステップで構成され、複雑なシミュレーションやテストデータにも適用できます:
  1. 前処理
  2. 学習
  3. 評価
  4. 展開

前処理

トレーニングに使用するデータは、romAI Directorにインポートするために、.CSVまたは.MATデータセットファイルとして保存する必要があります。

前処理では、自動プロットだけでなく、Builderタブに表示する変数を選択することもできます。これは、データセットのすべての変数がアルゴリズムのトレーニングに使用されるとは限らないので便利です。

データセットが時系列に基づいている場合、カットオフ周波数を設定することで、各信号にローパスフィルターを適用できます。

  1. モデリング > romAI Directorを開きPre-Processorタブを開きます。
  2. Import Dataset for testingアイコンをクリックし、データセット TrainingDataset.csvを選択します。
  3. Builderで使用する変数を選択します。

学習

Builderタブは学習プロセスを簡素化します。まず、romAIの名前で出力を書き込むディレクトリを選択します。次に、入力、出力、システム状態、および設定パラメータを選択します。

変数はすでにプリプロセッサからエクスポートされているので、ビルダーのパラメータは簡単に設定できます。

  1. 出力ディレクトリを設定します。

    このフォルダーの中にサブフォルダが作成されます。romAI Name欄に名前を入力します。

  2. 入力、出力、状態を定義します。
  3. 物理的な制約を設定します。

    状態変数が存在する場合は、物理的制約を追加できます。ある状態変数を別の状態変数から派生させることは可能であり、romAIアプリケーションはこれを考慮し、より適切なROMを生成することができます。

  4. モデルタイプと学習パラメータを選択します。

    これは線形システムであるため、設定はより単純で、モデルアーキテクチャのパラメータを詳細に指定する必要はありません。

    ここでは、データセットの20%がモデルの検証に、80%が学習に使用されます。

    最適化アルゴリズムは10エポック(反復)実行されます。

  5. Start Trainingアイコンをクリックします。

評価

Post-Processorタブでは、学習したROM を簡単に視覚化し、評価することができます。モデル学習後に自動的に開きます。

最初のプロットはLoss Metricsを示し、これはテスト中に学習されたromAIモデルによるエラーを表す定数値です。損失は固定値で、テスト中に予測する際に学習済みromAIモデルによるエラーを表します。このプロットを分析すると、次のような結論が得られます:
  • 学習誤差が小さいほど、ROMの精度が高いことを示します。
  • 学習とテストの損失が似ていれば、学習は収束しています。
さらに、精度チェックプロットを視覚化することも可能です。選択された出力に対するromAIモデルの予測値がy軸に、同じ出力に対する目標値がx軸に示されています。予測とターゲットの間のアライメントの度合いは、赤いy=x曲線上にある青い点の数で示されます。選択された出力に対するromAIモデルの予測はY軸に表示され、同じ出力に対するターゲットはX軸に表示されます。

動的ROMの生成にromAIを使用する場合、学習済みromAIモデルに、動的挙動の精度を評価するための予備的な時間シミュレーションを簡単に実行できるツールが重要です。

Time Simulationタブは、時間シミュレーションをワンステップで実行するように設計されています。Import Dataset for testingアイコンをクリックして、データセットファイルを選択します。

時間シミュレーションが開始され、成功するとプロットが更新されます。

プロット表示:
  • データセットファイルの入力と初期状態条件に基づいて、romAI モデルが動的結果を生成します(青線)。
  • ターゲットの時刻歴(緑線)。

展開

学習したアルゴリズムをTwin Activate環境で利用可能な状態にします。

  1. パレットブラウザから、romAI > romAIを選択します
  2. このブロックをダイアグラムにドラッグして、ダブルクリックします。
  3. 以前選択したディレクトリを選択すると、選択したromAIモデルに基づいてブロックが自動的に更新されます。

    入出力ポートを使って、romAIブロックを他のブロックに接続します。

    model mkc_linear.scmは、新しいromAIモデルの検証に使用できます。ただし、元のromAIモデルを新しいモデルに置き換える前に、このTwin Activateファイルをローカルに保存し、元のファイルを変更しないようにしてください。

    最後に、新しいromAIを使ってモデルを検証します。