● 在使用MATLAB强化学习工具箱时我们主要思考的env和agent两个方面。
● 首先看env,MATLAB提供了几个已经搭建好的,只要
env = rlPredefinedEnv(env名字)
env名字可以选择以下几个
'BasicGridWorld'
简单的网格环境
'CartPole-Discrete'
离散型外力输入值的倒立摆
'CartPole-Continuous'
连续型外力输入值的倒立摆
'DoubleIntegrator-Discrete'
'DoubleIntegrator-Continuous'
一个木块在木板上滑动,就是这样
'SimplePendulumWithImage-Discrete'
'SimplePendulumWithImage-Continuous'
一根摆杆,可以观测到图像
'WaterFallGridWorld-Stochastic'
'WaterFallGridWorld-Deterministic'
一个逆水行舟的网格环境,全局有外力在把agent往回推
其中网格环境是可以从空网格自定义起点终点障碍物的,也可以添加全局外力,甚至跳跃障碍物的特殊功能
还有2个是simulink搭建的环境模型
'SimplePendulumModel-Discrete'
'SimplePendulumModel-Continuous'
'CartPoleSimscapeModel-Discrete'
'CartPoleSimscapeModel-Continuous'
功能上和m语言搭建的一致
除了上面说的用基础网格搭建环境,还可以搭建复杂环境,需要注意的是这样几点
- 初始化,设定环境的输入输出,根据情况选择离散还是连续,维度也要在这里确定
- 执行一步,计算输出,reward,是否结束
- 绘图,重点关注是否绘图,因为训练过程每次都绘图严重降低效率
另外我们还试验成功了调用Python搭建强化学习环境的方法MATLAB调用pygame实现强化学习环境
● 接着就是agent了,可以完全自行编程实现,但这就失去了使用MATLAB的意义,要是整个功能都是在使用m语言基础函数构建,真的不要用MATLAB,隔壁python真香
提供的agent有这样的几个(排名不分先后,以字母序)
rlACAgent | rlDDPGAgent | rlDQNAgent | rlPGAgent | rlQAgent | rlSARSAAgent
其中rlQAgent和rlSARSAAgent只能在输入输出都是离散型而且维度较小时使用
如果在构建agent时需要搭建神经网络,直接编写的话基本上就是一句一层,基础的
卷基层convolution2dLayer,
池化层averagePooling2dLayer,
全连接层fullyConnectedLayer,
一句添加一层
也可以打开Deep Network Designer工具界面操作来搭建网络结构
这个工具的使用和simulink一样,从左边拖拽想要的网络层到中间,在右边设置参数,连接起来就可以导出网络结构了