Overview
本記事では、降圧コンバータ―を例に、AI・機械学習をパワーエレクトロニクス分野に適用する方法を検討します。
 機械学習による動的サロゲートモデル作成ツールのAltair romAIを用いて、信号波の電圧を入力として、降圧コンバータ―の出力電圧を予測するモデルを作成しました。
 
 romAIで予測した出力電圧波形(赤)はPSIMで計算した出力電圧波形(青)と良く一致しており、PSIMによる降圧コンバータ―のシミュレーションを機械学習を用いた予測モデルに置き換えれたことがわかります。
 
 ピーク値と定常値に関して、PSIMの値とromAIの値を比較しました。一部の条件にて、2~3%の誤差がありますが、ほぼ1%以下の精度で予測できています。
 ピーク値の比較
 | Signal |  PSIM |  romAI |  error % |  
| 0.1 |  13.70 |  13.26 |  -3.19 |  
| 0.2 |  27.38 |  26.81 |  -2.11 |  
| 0.3 |  41.04 |  40.92 |  -0.29 |  
| 0.4 |  54.66 |  54.63 |  -0.05 |  
| 0.5 |  68.22 |  68.06 |  -0.23 |  
| 0.6 |  81.72 |  81.40 |  -0.39 |  
| 0.7 |  95.13 |  94.66 |  -0.49 |  
| 0.8 |  108.44 |  107.86 |  -0.54 |  
| 0.9 |  121.67 |  121.04 |  -0.51 |  
| 1.0 |  135.09 |  134.27 |  -0.61 |  
定常値の比較
 | Signal |  PSIM |  romAI |  error % |  
| 0.1 |  9.94 |  9.87 |  -0.70 |  
| 0.2 |  19.92 |  19.88 |  -0.21 |  
| 0.3 |  29.93 |  29.89 |  -0.14 |  
| 0.4 |  39.96 |  39.95 |  -0.02 |  
| 0.5 |  50.00 |  49.87 |  -0.27 |  
| 0.6 |  60.04 |  59.94 |  -0.18 |  
| 0.7 |  70.07 |  70.00 |  -0.10 |  
| 0.8 |  80.08 |  80.07 |  -0.01 |  
| 0.9 |  90.06 |  90.14 |  0.09 |  
| 1 |  100.00 |  100.21 |  0.21 |  
電子機器には複数のコンバーターが含まれることがほとんどです。本手法を用いることで、各コンバーターのromAIモデルを作成し、複数のコンバーターを含む電子機器全体のシステムシミュレーションを行うことが可能となります。
Pre-Requisite
以下のソフトウェアを使用します。
 Altair PSIM: PMSMのモーター制御パワーエレクトロニクス
 romAI: 機械学習によるモーターの低次元化モデル(ROM)作成
 Altair Twin Activate: パワーエレクトロニクスとROMの統合システムシミュレーション
 Altair HyperStudy: 機械学習用トレーニングデータ生成
 Altair Compose: 機械学習用トレーニングデータの加工
 また、PSIMとHyperStudy連携のため、PSIM-HyperStudy Connector(近日リリース)を使用します。
  
 本記事で使用したモデル一式は以下よりダウンロードいただけます。
 powerconverter_romAI.zip
  
  
Usage/Installation Instructions
1. モデル
 フォルダ:01_training_model
 Altair PSIMにはたくさんの例題が提供されております。今回はそのうちdc-dcコンバーターのサンプル buck.psimsch を使用しました。
 元モデルには降圧コンバータ―のモデルが2種類格納されているため、片方を削除し、carrier waveを使用する回路のみ残しています。
 また、信号波の電圧違いのデータを生成するため、ampをパラメータ化しました。
 buck_carrierwave_param.psimsch
 
  
 2. トレーニングデータの生成
 フォルダ:02_generate_training_data
 2-1. PSIM-HyperStudy連携によるシミュレーション自動実行
 フォルダ:02_generate_training_data/hst
 PSIMとHyperStudyを連携することで、PSIMのパラメータを変えた計算を自動実行できます。PSIMのパラメータスイープ機能でも同様の計算は可能ですが、HyperStudyを用いると以下のメリットがあります。
 - 入力パラメータの管理
  - 出力応答の設定による入出力関係の分析
  - 実験計画法による実行マトリクス自動作成
  - 応答曲面作成
  - 最適化
  
PSIM-HyperStudy Connector(近日リリース)を用いることで、簡単にPSIMとHyperStudyを連携することができます。
 HyperStudyにPSIMモデルを登録します。
 
 パラメータ化されたPSIMのパラメータが自動で登録されます。今回は1変数ですが、多変数になるとHyperStudyはさらに力を発揮します。
 
 出力応答を定義します。たとえば、過渡状態から定常状態へ移行した後の出力電圧の最大値、最小値、平均値、最大値-最小値の差や、過渡状態の最大電圧などを作成しておきます。
 
 これにより信号波の電圧を変えた場合の出力電圧の平均値、最大値-最小値の差などをHyperStudy上で簡単に確認できます。
 
 DOEを定義します。たとえば、10水準とすることで、信号波の電圧を0.1~1.0まで0.1刻みのマトリクスを生成します。
 
 解析を実行すると、10ケースの計算が自動で行われ、計算結果から出力応答を自動で取得します。
 横軸を信号波の電圧、縦軸を定常後の平均電圧と過渡時の最大電圧でプロットしました。
 信号波の電圧に応じて狙い通りの出力電圧が得られていることがわかります。また、信号波の電圧に応じて、最大電圧も大きくなることがわかります。
 
 定常後の最大電圧と最小電圧の差deltaは信号波の電圧が0.5のときが最大で、0と1のときに小さくなることがわかります。
 
  
 2-2. Composeによるデータ加工
 フォルダ:02_generate_training_data/compose
 PSIMの計算結果はタブ区切りのテキストファイルで出力しています。romAIのトレーニングデータとして使用するにはcsvフォーマットに変更が必要です。
 また、10ケースの結果を1つのcsvにマージする必要があります。
 Altair ComposeはMatlab互換のOpen Matrix Languageを採用した数値処理環境です。これを用いることで簡単にデータの加工が行えます。
  
 stc_txt2csv.oml
 PSIMのテキスト結果ファイルをcsvに変換するスクリプトです。
 6~9行目のパス、ファイル名を変更いただければ、任意のPSIM-HyperStudyの結果に使用できます。
 実行すると、DOEで計算された各フォルダ内に.csvが追加されます。
 
  
 stc_merge_PSIM_results.oml
 DOEで計算された各フォルダ内の.csvをdataフォルダにコピーし、かつマージして一つのファイルmerge.csvを生成するスクリプトです。
 5~8行目のパス、ファイル名を変更いただければ、任意のPSIM-HyperStudyの結果に使用できます。
 
 結果、merge.csvが生成されます。
  
 3. 機械学習romAIによるROMの作成
 フォルダ:03_create_rom
 動的サロゲートモデル作成ツールのromAIで機械学習を用いて、merge.csvから予測モデルを作成します。
 romAIは統合システムシミュレーション環境のTwin Activateに付属しています。
 GUIのromAI DirectorのPre-Processorにmerge.csvを読み込み、電流I(L2)と電圧Vo2に1000Hzと3000Hzのローパスフィルターを適用しました。
 romAIはモデルの低次元化が目的ですので、事前に高周波の振動は取り除き、低周波の波形の予測を試みます。
 Export to Builderでフィルター処理したデータをBuilderへ転送します。
 
 Builderにてモデルの設定を行います。
 入力、出力、状態量は以下の設定としました。状態量を用いた動的なROMとなります。
 入力:amp (信号波の電圧)
 出力:Vo2(出力電圧)
 状態量:Vo2, I(L2)(出力電圧、電流)
 ニューラルネットワークは以下としました。
 Activate Function: relu
 Hidden Layers: 2
 Neurons: 20 x 20
 romAIのトレーニングにはデータの分割(トレーニング・テスト)とハイパーパラメータの初期値に乱数が使用され、実行のたびに結果が変わります。
 romAI Directorには繰り返し計算機能があり、乱数を変えた計算が簡単に行えます。今回は3回としました。
 
 romAI DirectorのPost-Processorでは、作成した複数のROMの結果を比較できます。
 乱数違いで生成した3個のROMのTest Loss値に大きな差異は無かったため、Time Simulationの波形が元データと近くなるものを選択しました。
 
  
 4. ROMを用いた1Dシミュレーション
 フォルダ:04_deploy_test
 Model1.scm
 トレーニングに使用したcsvファイルを読み込み、romAIで出力電圧を予測した後、正解の出力電圧と比較するモデルです。
 読み込むcsvファイルはコンテキストのモデルで指定します。1行目のid=10で10ケース目(信号波の電圧1.0)のデータを参照しています。id=1~10で信号波の電圧0.1~1.0のケースのシミュレーションが行えます。
 
 試しに信号波の電圧を0.1, 0.5, 1.0の3ケースで実施したところ、romAIで予測した出力電圧波形(赤)はPSIMで計算した出力電圧波形(青)と良く一致しており、PSIMによる降圧コンバータ―のシミュレーションを機械学習を用いた予測モデルに置き換えれたことがわかります。
 
  
 5. 繰り返し計算の自動化
 信号波の振幅を変えたcase1~10の10ケースを自動で繰り返し計算し、ピーク値とその誤差、定常値とその誤差をcsvに書き出すスクリプトを追加しました。
 モデルは下記よりダウンロード可能です。
 Model1_measure_value.scm
 ExecOmlScriptブロックを追加し、その中に繰り返しシミュレーションとピーク値、定常値の抽出、csvへの書き出しコマンドを記述しています。
 ExecOmlScriptブロックのExecuteでスクリプトを実行できます。
 
 実行後、peak.csv、ave.csvが出力され、それぞれ、PSIMの値、romAIの値と誤差が記述されています。
 

  
Post-Requisite
使用製品:Altair PSIM, Altair HyperStudy, Altair Twin Activate, Altair Compose, romAI