强化学习入门(Matlab2021b)-创建环境【3】

1 前言

本文介绍如何基于MATLAB创建和修改模板环境类,自定义强化学习环境。

Custom Template Environment:
1、实施更为复杂的环境动态;
2、添加自定义可视化;
3、创建以C + +、Java或Python等语言定义的第三方库的接口。

2 根据类模板创建自定义环境

2.1 创建类模板

首先创建类模板文件,指定类的名字:

rlCreateEnvTemplate("MyEnvironment")

函数rlCreateEnvTemplate创建并打开类模板文件。类模板是rl.env.MATLABEnvironment抽象类的一个子类。该抽象类与其他MATLAB强化学习环境对象使用的抽象类相同。

classdef MyEnvironment < rl.env.MATLABEnvironment

默认情况下,模板类实现了一个简单的车-杆平衡模型。

为了定义环境动态,将文件保存为MyEnvironment.m。然后对模板类的以下内容进行修改:

1、Environment properties
2、Required environment methods
3、Optional environment methods

2.2 Environment properties(环境特性)

在模板的属性部分,指定创建和模拟环境所需的任何参数。这些参数可以包括:

参数 描述
物理常数 如重力加速度
环境几何属性 如物体质量、长度、体积等
环境约束 如车-杆环境中杆角和车距的阈值约束,以用来检测episode结束条件
评估环境所需的变量 如车-杆环境中定义的状态向量( State )和指示episode结束的标志( IsDone )
定义动作或观察空间的常量 如车-杆环境中定义的动作空间最大力( MaxForce )
计算奖赏信号的常数 如车-杆环境中定义的常数RewardForNotFalling和PenaltyForFalling
properties
    % 指定并初始化环境的必要属性 
    % Acceleration due to gravity in m/s^2
    Gravity = 9.8
    % Mass of the cart
    CartMass = 1.0
    % Mass of the pole
    PoleMass = 0.1
    % Half the length of the pole
    HalfPoleLength = 0.5
    % Max force the input can apply
    MaxForce = 10     
    % Sample time
    Ts = 0.02
    % Angle at which to fail the episode (radians)
    AngleThreshold = 12 * pi/180
    % Distance at which to fail the episode
    DisplacementThreshold = 2.4
    % Reward each time step the cart-pole is balanced
    RewardForNotFalling = 1
    % Penalty when the cart-pole fails to balance
    PenaltyForFalling = -10 
end
    
properties
    % 初始化系统状态 [x,dx,theta,dtheta]'
    State = zeros(4,1)
end

properties(Access = protected)
    % 初始化指示episode终止的内部标志,
    IsDone = false        
end

2.3 Required Functions(需要的环境方法)

强化学习环境需要定义以下函数:

函数 描述
getObservationInfo 返回有关环境观测的信息
getActionInfo 返回有关环境行为的信息
sim 使用智能体仿真环境
validateEnvironment 通过调用reset函数对环境进行验证,并使用step对环境进行一个时间步的仿真
reset 初始化环境状态并清理任何可视化
step 施加一个动作,在环境仿真一步,输出观察结果和奖励;同时,标志位指示episode是否结束
Constructor function 与创建类实例的类名相同的函数

其中getObservationInfo, getActionInfo, sim,和validateEnvironment函数已在基础抽象类中定义。必须要自定义的函数是constructor, reset, and step。

2.3.1 Constructor function(构造函数)

以车-杆环境为例,其构造函数是:

  1. 定义动作和观测规范。
  2. 调用基抽象类的构造函数。
% 自定义构造函数可以有输入参数
function this = MyEnvironment()
    % 初始化观测
    ObservationInfo = rlNumericSpec([4 1]);
    ObservationInfo.Name = 'Ca
  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Matlab 2021b是MathWorks公司推出的最新一版Matlab软件,是一款面向科学计算和工程应用的计算机软件,广泛应用于学术研究和工业设计开发领域。该版本进行了针对性的优化和改进,增加了许多新的功能和工具,更加方便用户操作和提高了计算效率。 TDMinGW-gcc-64是Matlab常用的C语言编译器,是基于MinGW-w64开发的Windows上的GCC工具链。它能够支持C、C++和Fortran等多种语言的编译,并且生成高效的可执行文件。由于Matlab支持C语言接口,所以TDMinGW-gcc-64被广泛用于Matlab中的MEX文件的编译过程中,以达到增加功能和优化程序效率的目的。 因此,对于需要进行科学计算和工程设计开发的用户而言,安装Matlab 2021b和TDMinGW-gcc-64编译器是非常有必要的,它们能够满足用户的需求并且提高工作效率,是不可或缺的工具。同时,随着科技的不断进步和需求的增加,Matlab和TDMinGW-gcc-64也会继续升级和优化,为用户带来更加完善的体验和应用。 ### 回答2: Matlab 2021b TDM-GCC-64版本是一款非常实用的软件工具,主要用于数值计算、数据分析以及绘图等方面,特别适用于工程学科领域的各个分支。这个版本结合了Matlab的强大功能和TDM-GCC-64编译器的高速计算性能,能够有效提高研究人员和工程师在科学计算和模型建立方面的工作效率。 Matlab 2021b TDM-GCC-64版本的主要功能有以下几个方面: 1. 高效的C++编译器:TDM-GCC-64编译器具有高效的计算速度和较高的性能,使得Matlab能够更加快速地处理大规模数据和运算计算,提高了Matlab的运行效率和工作效率。此外,TDM-GCC-64编译器还支持多线程并行计算,能够进一步优化Matlab的计算性能。 2. 数值计算和数据分析:Matlab 2021b TDM-GCC-64版本内置有丰富的数学计算、统计分析和数据可视化工具,能够快速高效地处理各种数学模型和数据集,支持从数据采集到分析、可视化和报告输出的整个过程。 3. 功能强大的编程环境Matlab 2021b TDM-GCC-64版本提供了一套完整的编程环境,包括强大的脚本编辑器、可视化编程工具和调试器,可以让用户快速有效地进行算法设计和开发。 4. 插件拓展和应用:Matlab 2021b TDM-GCC-64版本还支持各种插件拓展和应用,包括各种工具箱、函数库和第三方应用程序,能够为用户提供更加多样化和丰富的使用体验和功能支持。 总之,Matlab 2021b TDM-GCC-64版本是一款非常实用和强大的软件工具,对于各个研究领域和工程学科都具有广泛的适用性和价值,可以帮助用户更好地完成科学计算、数据分析和模型建立等方面的工作。 ### 回答3: MATLAB 2021b是MATLAB的最新版本,具有许多新功能和改进的性能。其中,支持的编译器之一是TDM-GCC-64版本。 TDM-GCC-64是一个基于MinGW-w64构建的完全免费的C/C++编译器。它可用于Windows 64位操作系统,支持x86和x86_64架构,是使用GCC(GNU Compiler Collection)的一种选择。 与早期版本的TDM-GCC在MATLAB中集成不同,MATLAB 2021b自带TDM-GCC-64编译器。这意味着MATLAB用户无需另外下载和安装此编译器即可使用它来支持C/C++编程。在MATLAB中,用户可以通过编写mex函数(MATLAB执行文件)来调用C/C++代码来扩展MATLAB的功能。 TDM-GCC-64还支持许多其他的C/C++库和工具,如OpenMP,这可以在使用MATLAB进行并行计算时提高性能。另外,TDM-GCC-64对新的C++标准(例如C++14和C++17)的支持也更好。 总之,MATLAB 2021b中集成的TDM-GCC-64版本是一个强大的编译器,提供了许多有用的功能和性能改进。对于MATLAB用户,这可以使C/C++编程更加简单和方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余加木

想喝蜜雪冰城柠檬水(≧≦)/

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值