从零开始学MATLAB强化学习工具箱使用(五):Simulink+强化学习设计器

这篇具有很好参考价值的文章主要介绍了从零开始学MATLAB强化学习工具箱使用(五):Simulink+强化学习设计器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

建立Simulink环境,导入强化学习设计器里,添加代理,进行训练

1. 建立Simulink环境

首先准备好你的Simulink模型,这里还用上节用到的水箱模型。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习

RL Agent模块报错是由于还没有给其绑定代理,后续会在强化学习设计器里配置,暂时不用理会。

下一步,在MATLAB命令行窗口或脚本里为环境指定状态空间和动作空间以及复位函数,然后创建环境。

% 观测空间形状及每个变量取值上下限
obsInfo = rlNumericSpec([3 1],...
    LowerLimit=[-inf -inf 0  ]',...
    UpperLimit=[ inf  inf inf]');
% Name and description are optional and not used by the software
obsInfo.Name = "observations";
obsInfo.Description = "integrated error, error, and measured height";

% Action info
actInfo = rlNumericSpec([1 1]);
actInfo.Name = "flow";
% 创建环境对象
env = rlSimulinkEnv("rlwatertank","rlwatertank/RL Agent",...
    obsInfo,actInfo);
% 指定环境复位函数,这里是自定义函数
env.ResetFcn = @(in)localResetFcn(in);
% 指定仿真时间T f TfTf和代理采样时间T s TsTs,单位是s,这里只是该Simulink模型用到的参数:
Ts = 1.0;
Tf = 200;

新建函数文件localResetFcn.m来提供该复位函数:

function in = localResetFcn(in)

% Randomize reference signal
blk = sprintf("rlwatertank/Desired \nWater Level");
h = 3*randn + 10;
while h <= 0 || h >= 20
    h = 3*randn + 10;
end
in = setBlockParameter(in,blk,Value=num2str(h));

% Randomize initial height
h = 3*randn + 10;
while h <= 0 || h >= 20
    h = 3*randn + 10;
end
blk = "rlwatertank/Water-Tank System/H";
in = setBlockParameter(in,blk,InitialCondition=num2str(h));

end

运行上述代码,使环境对象env出现在工作区。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习

2. 将环境导入RL设计器

命令行运行如下语句打开RL设计器,选择导入环境env。

reinforcementLearningDesigner

matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
导入后如图所示,环境面板增加了环境env。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习

3. 配置代理

为导入的环境配置代理。在Reinforcement Learning标签页点击New,在弹出的窗口里,修改隐藏层神经元数量为50,默认的环境即为导入的环境,选择DDPG算法,点击OK。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
建立好的代理如下图,按需修改参数:
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习

可以查看Actor和Critic的结构,下图是Actor的:
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习

4. 训练并导出训练结果

转到Train选项卡,修改训练参数,然后开始训练。

matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
训练完成后如图所示,点击Accept保存训练结果。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
导出训练结果agent1_Trained。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
成功导出到MATLAB工作区。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习

5. 在Simulink里仿真

在Simulink模块里双击RL Agent模块,为模块绑定训练好的代理。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
点击Simulink运行仿真,仿真结果如图。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
当然,也可以通过MATLAB命令行运行仿真。

rng(1) % 固定随机数种子方便复现结果
simOpts = rlSimulationOptions(MaxSteps=ceil(Tf/Ts),StopOnError="on");
experiences = sim(env,agent1_Trained,simOpts);

当然,不导出训练结果,直接在RL设计器里运行也是可以的。如下:
先配置仿真参数:
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
仿真完成后,会展示每轮奖励以及所有轮奖励均值和标准差。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
点击Inspect Simulation Data查看仿真结果,也可以点击Clear and Inspect Simulation Data预先清除在上一个会话中加载的任何数据。可以在不同的图中选择查看每一轮仿真的不同的数据。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
回到仿真对话窗体,同样点击Accept保存仿真结果,在Results面板自动添加一条experience,双击它可以再次查看上述结果。

matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习
最后,保存会话后退出就可以了,后续可以用RL设计器再次打开此会话。

Tips

本节展示了如何用Simulink模型在RL设计器里进行训练,同样地,可以在RL设计器里建立好代理之后导出需要的内容(可导出的内容如下图所示)到MATLAB工作区,然后通过MATLAB脚本进行训练,省去了在MATLAB脚本建立代理的部分过程,而且可以通过脚本修改更多的参数。
matlab rl agent,MATLAB强化学习工具包使用,matlab,机器学习

当然,综合来看,还是像本节这样直接使用RL设计器更方便更直观,解决一般的问题足够。文章来源地址https://www.toymoban.com/news/detail-845465.html

到了这里,关于从零开始学MATLAB强化学习工具箱使用(五):Simulink+强化学习设计器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于MATLAB的最小二乘法拟合与拟合工具箱使用教程(附完整代码与算法)

    给定一组数据满足某一函数模型,其中a为待定系数向量。 那么,最小二乘曲线拟合的目标就是:求出一组待定系数的值,使得以下表达式子最小: 在MATLAB中格式如下: 由以下MATLAB代码生成一组数据: 该组数据满足y(x),求出待定系数,使得目标函数的值为最小。 解: MATL

    2024年01月17日
    浏览(57)
  • 使用Matlab机器人工具箱完成四元数到旋转矩阵的转换,附程序

    在进行机械臂操作或写论文时,经常需要进行四元数、旋转矩阵、欧拉角等的转换。 此时,我们利用matlab里的机器人工具箱(Peter 开发)内置的函数就可完成,具体程序如下: 环境:Matlab2020b+robotics toolbox(安装方法在前几期文章里有) 此时运行matlab可得以下结果: 重要注

    2024年02月13日
    浏览(56)
  • 从零入门激光SLAM(六)——ROS常用工具箱

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2023年04月16日
    浏览(57)
  • 基于matlab实现生成模糊fis文件,包括模糊隶属函数和模糊规则等,不使用fuzzy工具箱

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB matlab2022a仿真结果如下:          Zadeh创立的模糊数学,对不明确系统的控制有极大的贡献,自七十年代以后,一些实用的模糊控制器的相继出现,使得我们在控制领域中又向前迈进了一大步。模糊逻

    2024年02月12日
    浏览(44)
  • 逐步攻略:使用Matlab音频系统工具箱创建自己的VST插件,让音乐编程在Nashville崭新绽放

    尊敬的读者,欢迎阅读这篇文章。我作为一个热爱音乐和编程的人,十分激动地在这里和大家分享我最近的一次学习经验。正如标题所述,我们将探索一种崭新的方式来创建 VST 插件,即使用 Matlab 音频系统工具箱。这篇文章也许对于那些像我一样在音乐和编程的交叉点上寻找

    2024年02月09日
    浏览(50)
  • Matlab 优化工具箱

    语法:[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,options) f、x、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩阵。 示例1-1 : 语法:[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0,options) f、x、intcon、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩阵。 语法:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub

    2024年02月02日
    浏览(57)
  • (转载)matlab遗传算法工具箱

            以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。         遗传算法(genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法是把问题参数编码为染色体,再利用迭代的方式进行选

    2024年02月07日
    浏览(68)
  • MATLAB cftool工具箱——曲线拟合

        cftool工具箱可以将数据点拟合成曲线或曲面并直观显示出图像。能实现多种类型的线性、非线性曲线/面拟合。     有两种方式打开cftool:(1)在命令行窗口输入\\\"cftool\\\"并回车;(2)在MATLAB的\\\"APP\\\"选项栏中找到\\\"Curve Fitting\\\"程序打开即可。     界面左上部分为数据区域,下拉框中

    2024年02月08日
    浏览(52)
  • 【MATLAB第57期】基于MATLAB的双隐含层BP神经网络回归预测模型(无工具箱版本及工具箱版本对比)

    数据为案例数据 。103行样本,7输入1输出数据。 训练集数据的R2为:0.9022 测试集数据的R2为:0.87266 训练集数据的MAE为:1.8189 测试集数据的MAE为:2.1658 训练集数据的MBE为:-0.00088469 测试集数据的MBE为:0.3059 数据与无工具版本相同,数据顺序也相同。 训练集数据的R2为:1 测试

    2024年02月16日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包