使用simulink进行环境的模拟,使用python编写强化学习代码
-
matlab与python之间使用tcp协议进行本地阻塞式通信,matlab接收python端信息后,才能使用simulink进行模拟(目前未解决模拟步长问题)。
尝试将matlab和python分别作为客户端和服务端进行测试。其中,matlab作为客户端模拟100步时间为20s,python作为客户端模拟100步时间为2min。测试代码在这里。
-
使用的是经典的CartPole模型在调bug无果之后,准备先试试这个项目
-
项目缺少'svdutilitieslib' matlab,提示install 'Embedded Coder Support Package for ARM Cortex-A Processors,安装完之后发现无法打开matlab
将中文用户名修改为英文之后,问题解决,打开matlab之后发现所安装的模块没起作用,继续安装其他可能有用的模块
-
找到了两篇很好的博客,一个是如何安装,一个是更好的使用matlab,如果本地用不了的话就准备用服务器上的matlab了
-
分别跑了pytorch版本和tensorflow版本的dqn
- 发现其pytorch版本非常陈旧,准备自己重写
- tensorflow版本的没有问题,出现权限获取失败的错误,准备chmod那个目录,但现在显卡似乎not free,准备待会再跑
- 两者的报错日志记录在这B.T.W,服务器打开matlab 耗时10s,除了操作不方便意外没什么缺点
-
tensorflow 修改目录权限后跑通了,但还是报了Write failed because file could not be opened的下一步准备进行一些修改吧(包括环境和网络)
截图如下:
-
有关rl_attention的一些论文,有时间再去看吧
-
- 代码放置在test文件夹中,初步将其action_space和state_space分别定为3,3。通信的频率和间歇性通信还有待处理。在这之后准备用matlab写的CartPole进行测试
- 发现一个问题: python接受state信息时,simulink会将那段时间所累积的所有state信息发送至python端,而simulink只要接收到python的action信息就会立即采取动作。目前想到的解决方法是:将所有的state信息累计的每个状态求平均值。不过这样也就解决了如何让simulink挂机的问题。
- 测试控制温度的程序已经跑完了,代码在test文件夹中。
- 解决了一些问题:1)可以自行设定通信方式,目前使用的是停等式通信。simulink端设置timeout时长,若python未在超时时长内应答则报错。在等待过程中,simulink是不进行模拟的。2)通过调整Packing option来调整每次step的时间。以此实现了每次通信模拟one step
-
Google之后没有发现使用Pymodelica搭建模型的RL项目,不准备使用modelica入手