Python vs MATLAB:智能体开发实战对比
本文探讨了在MATLAB中实现强化学习的方法与挑战。文章指出,虽然Python更常用,但MATLAB也可实现强化学习功能。主要内容包括:(1)Simulink环境搭建的局限性;(2)MATLAB中预定义的单摆环境使用流程;(3)程序编写流程:创建环境、智能体、训练参数及智能体交互;(4)利用rlSimulinkEnv函数创建环境的参数需求;(5)MATLAB中自定义代理的可行性,包括自带Agent
前言:一般还是用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一样完全自定义。并且在使用起来有自己的优势;
训练过程的可视化;
环境建模接入simulink;
以及实际部署,都有其优势;
快速入门指南:




交互范式:

种类:

编写:

1.创建环境

2.创建智能体



3.训练算法
其中有一些参数是用来渲染的,关闭可以加快进程;
4.训练好的模型与环境交互

更多推荐


所有评论(0)