赞
踩
本文介绍如何基于MATLAB创建和修改模板环境类,自定义强化学习环境。
Custom Template Environment:
1、实施更为复杂的环境动态;
2、添加自定义可视化;
3、创建以C + +、Java或Python等语言定义的第三方库的接口。
首先创建类模板文件,指定类的名字:
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
在模板的属性部分,指定创建和模拟环境所需的任何参数。这些参数可以包括:
参数 | 描述 |
---|---|
物理常数 | 如重力加速度 |
环境几何属性 | 如物体质量、长度、体积等 |
环境约束 | 如车-杆环境中杆角和车距的阈值约束,以用来检测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
强化学习环境需要定义以下函数:
函数 | 描述 |
---|---|
getObservationInfo | 返回有关环境观测的信息 |
getActionInfo | 返回有关环境行为的信息 |
sim | 使用智能体仿真环境 |
validateEnvironment | 通过调用reset函数对环境进行验证,并使用step对环境进行一个时间步的仿真 |
reset | 初始化环境状态并清理任何可视化 |
step | 施加一个动作,在环境仿真一步,输出观察结果和奖励;同时,标志位指示episode是否结束 |
Constructor function | 与创建类实例的类名相同的函数 |
其中getObservationInfo, getActionInfo, sim,和validateEnvironment函数已在基础抽象类中定义。必须要自定义的函数是constructor, reset, and step。
以车-杆环境为例,其构造函数是:
% 自定义构造函数可以有输入参数
function this = MyEnvironment()
% 初始化观测
ObservationInfo = rlNumericSpec([4 1]);
ObservationInfo.Name = 'Ca
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。