前言:一般还是用python,环境和算法其实都需要改,用matlab不方便实现。

1.创建智能体

simulink搭建环境

但是封装了不好修改;

2.matlab中预定义的环境

单摆

3.程序编写流程

创建环境

创建智能体

训练参数及保存

使用训练好的智能体交互

4.总结

5.利用simulink模型创建强化学习环境

rlSimulinkEnv需要的参数,simulink模型,智能体路径,状态空间和行为空间维度;

环境初始化使用了一个函数句柄,就是函数指针,可以作为参数传递给另一个函数;

问题:

问题1:matlab中sim会自动搜索训练好的模型加载到agent?

问题2:除了自定义的NN网络,matlab是否能实现自定义代理?

回答:可以

https://ww2.mathworks.cn/help/reinforcement-learning/ug/create-custom-agents.html

这里不仅有关于Agent的自定义,还有循环过程的自定义替代train(),此外还有创建策略的方法,就是首先定义一个网络然后转成dlnetwork,然后转成critic或者actor去符合RL的格式;

1.自带agent

2.自定义agent

3.循环过程

4.创建策略和价值函数,可用于agent构建;

问题3:actorNet = getModel(getActor(agent)); 这句话实际上就是net->actor/critic->agent的逆过程?

6.自定义环境

环境模板就是从三个部分开始;

属性;

构造函数,初始化属性中的值;

this = MyEnvironment(); 实例化对象 (C++语法)

step();

reset();

可选功能:

reward作为一个函数

可视化函数

最后实例化函数

还有一个验证函数,验证环境设计是否符合要求;

这其实就跟gym框架一样,能够自定义环境然后去验证;stablebaseline3也提供了一些写好的Agent去直接训练;

7.经典环境创建(实操)

1.通过

rlCreateEnvTemplate("MyEnvironment")

获得一个环境模板,相当于gym的一个environment模板,将会给init,step, reset, render 等函数;

首先就是init函数编写,也相当于构造函数和类的属性的编写;这些变量在实例化对象的时候会自动执行;不过区别的是gym将动作状态空间设置 和 属性都放在了init;

matlab分开了,属性作为一部份,构造函数中将动作和状态空间维度设置作为一部分。

属性

step

reset

8.AC算法实现

之前的内容是自定义环境,现在要自定义Agent,所以整体上来看matlab可以实现和python一样完全自定义。并且在使用起来有自己的优势;

https://jp.mathworks.com/products/reinforcement-learning.html?s_tid=srchtitle_site_search_2_rl+toolbox

训练过程的可视化;

环境建模接入simulink;

以及实际部署,都有其优势;

快速入门指南:

交互范式:

种类:

编写:

1.创建环境

2.创建智能体

3.训练算法

其中有一些参数是用来渲染的,关闭可以加快进程;

4.训练好的模型与环境交互

Logo

更多推荐