ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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

目录

  • 1 前言
  • 2 根据类模板创建自定义环境
    • 2.1 创建类模板
    • 2.2 Environment properties(环境特性)
    • 2.3 Required Functions(需要的环境方法)
      • 2.3.1 Constructor function(构造函数)
      • 2.3.2 reset function
      • 2.3.3 step function
    • 2.4 Optional Functions(可选的环境方法)
    • 2.5 Environment Visualization(环境可视化)
  • 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^2Gravity = 9.8% Mass of the cartCartMass = 1.0% Mass of the polePoleMass = 0.1% Half the length of the poleHalfPoleLength = 0.5% Max force the input can applyMaxForce = 10     % Sample timeTs = 0.02% Angle at which to fail the episode (radians)AngleThreshold = 12 * pi/180% Distance at which to fail the episodeDisplacementThreshold = 2.4% Reward each time step the cart-pole is balancedRewardForNotFalling = 1% Penalty when the cart-pole fails to balancePenaltyForFalling = -10 
endproperties% 初始化系统状态 [x,dx,theta,dtheta]'State = zeros(4,1)
endproperties(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
返回列表