【緊急】強化学習の際​のmemoryブロッ​クのステップ遅れにつ​いて

6 views (last 30 days)
お世話になっております。
memoryブロックのステップ遅れについて質問があります。
現在、MATLAB/Simulinkを通じて強化学習を行っています。
agentブロックからactionを受け渡す際に以下のようなエラーが発生します。
----------------------------------------------------------------------------------------------------------
エラー: rl.env.SimulinkEnvWithAgent>localHandleSimoutErrors (行 668)
'EAHEs/simulation/Mdl_surf_RF' の入力端子 (1) はループ内にあります。
---------------------------------------------------------------------------------------------------------
このため、例題などを確認すると、actionから環境側に受け渡す際にmemoryブロックが接続されているおり、
同様に接続を行うと解析が流れるようになりました(図)。
ただ、このブロックを使うと、初期値を入力する必要があるため、
agent側が選択した行動と環境側から返答される状態値が1ステップずれてしまうのではないかと考えました。
実際にmemoryブロックの前後でactionをmatファイルで確認したところ、1ステップ分、ずれていました。
※Unit Delayブロックでも同様の現象が発生しました。
上記のような、行動が1ステップ遅れる現象を改善する方法はありますでしょうか。
もし、memoryブロックを使わなくても解析が流せるのであれば、方法をご教授頂きたいです。
可能であれば、お早めに回答いただけると幸いです。何卒宜しくお願い致します。

Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 8 Dec 2021
モデルを見ていないので明確には申し上げられませんが、おそらく代数ループが発生しているのでは、と思います。
強化学習のエージェントブロック(RL Agent)は離散時間で動作していますので、連続時間のモデルと接続する際には遅延要素は必ず必要になります。あるべきモデリングとしては、離散時間と連続時間の間をRate Transitionブロックで繋ぐ方法をおすすめします。
  3 Comments
拓生 香山
拓生 香山 on 8 Dec 2021
ご返信ありがとうございます。
承知しました。私の知識不足のようです。
離散時間システムの制御に関して勉強し、理解を深めた後に、
もう一度考えていきたいと思います。
お時間割いていただきありがとうございました。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!