当前位置:   article > 正文

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

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

1 前言

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

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

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

2.1 创建类模板

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

rlCreateEnvTemplate("MyEnvironment")
  • 1

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

classdef MyEnvironment < rl.env.MATLABEnvironment
  • 1

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

为了定义环境动态,将文件保存为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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

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
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/127769
推荐阅读
相关标签
  

闽ICP备14008679号