How to implement reinforcement learning using code generation
이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
이전 댓글 표시
I want to implement the reinforcement learning block in dSPACE using code generation, while the simulink will pop out the error 'The 'AgentWrapper' class does not suppot code generation'. Is there a way how to solve it?
Or is it possible to extract the neural work of reinforcement learning agent and import it into deep learning toolbox?
Thank you very much. Any suggestions are appreciated.
채택된 답변
Kishen Mahadevan
2021년 3월 1일
As of R2020b, the RL Agent block does not support Code Generation (we are working on it) and is currently only used for training a Reinforcement Learning Agent in Simulink.
However, in R2020b, native Simulink blocks such as 'Image Classifier' and 'Predict' were introduced in Deep Learning Toolbox, and the MATLAB function block was enhanced to model Deep Learning networks in Simulink. These blocks allow using pre-trained networks including Reinforcement Learning policies in Simulink to perform inference.
Also, in R2021a, plain C Code generation for Deep Learning networks is supported (so no dependence on 3p libraries like one-dnn), which enables code generation from the native DL blocks and the enhanced MATLAB function block mentioned above.
Using these features, steps you could follow in R2021a are:
1) Use either Predict or the MATLAB function block to replace the existing RL Agent block, and pull in your trained agent into Simulink
2) Leverage the Plain C Code generation feature to generate code for your Reinforcement Learning Agent


Note:
To create a function that can be used within the 'MATLAB function' block to evaluate the learned policy (pre-trained agent), or to create ‘agentData’ that can be imported into the 'Predict' block, please refer to the 'generatePolicyFunction' API.
댓글 수: 7
Thank you very much. When using the predict block for reinforcement learning, what is the input of the block, as we know that the RL block action is determined by the observations and reward calculation.
The input to the 'Predict' block is your observations as it performs inference on the trained policy uisng the observations. The 'reward' input is not required in this case as that is used only during RL training.
Note: To load the pre-trained RL agent into simulink using the "predict' block, use the 'Load Network from mat file' option in the 'Block Parameters' and select the 'agentData.mat' file created using the 'generatePolicyFunction'.
Thank you for the reply.
- I did exactly as you said while it will pop out the dimension problem, which indicates Invalid setting for input port dimensions due to the total number of input and output elements are not the same. While it worked well with RL block and I just replace the block with Predict block. It seems the output of Predict is the whole elements sets of actions rather than single element, which is the actual output of RL agent.
- As for the other way, I implement the RL agent with the user defined function, while at the end of the simulation, it will pop out the error 'unable to save operating point because the fucntion block contains state variables that are not campatiable with simulation state save and restore'. and the function in the error is actually the interface function you mentioned above.
- And In the code generation, the error is 'saveing the operating point is only supported for models in Normal or Acclerator mode, and for model blocks in Normal or Accelerator mode'. Is this caused by the error in 2?
How should I solve it? Thank you very much for your help.
Hello,
The issue mentioned in point 1 is very similar to this MATLAB Answer. Please refer to it for more information.
Based on that MATLAB Answers post, using the MATLAB Function block in place of the predict block resolved the issue. Since you are facing issues with the MATLAB Function block setup as well, we might need to take a deeper look into the model.
@Kishen Mahadevan are you still working on the code generation support of the RL agent? In that case: only for inference or for the training?
I am facing issue in generating c code , can someone help

This is for an Opal RT based HIL using RL agent
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Reinforcement Learning에 대해 자세히 알아보기
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
