强化学习工具箱™软件提供了几个预定义的控制系统环境,其中的动作、观察、奖励和动态已经定义。你可以使用这些环境:
学习强化学习的概念。
熟悉强化学习工具箱软件功能。
测试你自己的强化学习代理。
您可以加载以下预定义的MATLAB®控件控制系统环境rlPredefinedEnv
函数。
环境 | 代理任务 |
---|---|
Cart-pole | 通过使用离散或连续的动作空间对推车施加力来平衡移动推车上的杆。 |
双积分器 | 使用离散或连续动作空间控制二阶动态系统。 |
简单的摆与图像观测 | 使用离散或连续的动作空间摆动并平衡一个简单的钟摆。 |
您还可以加载预定义的MATLAB网格世界环境。有关更多信息,请参见加载预定义网格世界环境.
在预定义的马车杆环境中,代理的目标是通过向马车施加水平力来平衡移动的马车上的马车杆。如果满足以下两个条件,则认为极点平衡成功:
极点角度保持在垂直位置的给定阈值内,其中垂直位置为零弧度。
推车位置的大小保持在给定的阈值以下。
有两种cart-pole环境变体,它们因代理操作空间的不同而不同。
离散- Agent可以施加任意一种力F马克斯或-F马克斯到马车那里去F马克斯是MaxForce
环境的属性。
连续-代理可以在[-]范围内施加任何力F马克斯,F马克斯]。
要创建车杆环境,请使用rlPredefinedEnv
函数。
离散作用空间
环境= rlPredefinedEnv(“CartPole-Discrete”);
连续作用空间
环境= rlPredefinedEnv(“CartPole-Continuous”);
控件可以可视化车杆环境情节
函数。该图将购物车显示为蓝色正方形,杆子显示为红色矩形。
情节(env)
要在训练过程中可视化环境,请调用情节
训练前保持可视化图形打开。
有关如何在车杆环境中训练代理的示例,请参阅以下内容:
财产 | 描述 | 默认的 |
---|---|---|
重力 |
重力加速度,单位是米每秒平方 | 9.8 |
MassCart |
推车的质量(以千克为单位) | 1 |
MassPole |
极点的质量,单位为千克 | 0.1 |
长度 |
杆子长度的一半,以米为单位 | 0.5 |
MaxForce |
最大水平力大小,单位为牛顿 | 10 |
Ts |
采样时间(秒) | 0.02 |
ThetaThresholdRadians |
以弧度为单位的极角阈值 | 0.2094 |
XThreshold |
以米为单位的推车位置阈值 | 2.4 |
RewardForNotFalling |
每走一步杆子就得到平衡的奖励 | 1 |
PenaltyForFalling |
未能平衡杆子的奖励惩罚 | 离散, 连续的, |
状态 |
环境状态,指定为具有以下状态变量的列向量:
|
[0 0 0 0]' |
在推车杆环境中,代理使用单个动作信号与环境交互,即施加在推车上的水平力。环境包含此操作信号的规范对象。为环境提供一个:
离散动作空间,规范是一个rlFiniteSetSpec
对象。
连续动作空间,规范是一个rlNumericSpec
对象。
有关从环境获取操作规范的更多信息,请参见getActionInfo
.
在推车杆系统中,智能体可以观察到系统中所有的环境状态变量env。状态
.对于每个状态变量,环境包含一个rlNumericSpec
观测规范。所有的状态都是连续且无界的。
有关从环境中获取观测规范的详细信息,请参见getObservationInfo
.
这种环境的奖励信号由两部分组成。
杆子平衡的每一个时间步的正向奖励,即推车和杆子都保持在其指定的阈值范围内。这个奖励会在整个训练过程中累积。要控制奖励的大小,请使用RewardForNotFalling
环境的属性。
如果杆子或推车的移动超出了他们的阈值范围,则一次性负处罚。在这一点上,训练插曲停止。要控制此惩罚的大小,请使用PenaltyForFalling
环境的属性。
在预定义的双积分器环境中,代理的目标是通过施加一个力输入来控制一个质量在二阶系统中的位置。具体地说,二阶系统是一个带增益的双积分器。
当发生以下事件之一时,这些环境的训练章节结束:
质量从原点开始超过一个给定的阈值。
状态向量的范数小于给定的阈值。
有两种双积分器环境变体,它们因代理操作空间的不同而不同。
离散- Agent可以施加任意一种力F马克斯或-F马克斯到马车那里去F马克斯是MaxForce
环境的属性。
连续-代理可以在[-]范围内施加任何力F马克斯,F马克斯]。
要创建双积分器环境,请使用rlPredefinedEnv
函数。
离散作用空间
环境= rlPredefinedEnv(“DoubleIntegrator-Discrete”);
连续作用空间
环境= rlPredefinedEnv(“DoubleIntegrator-Continuous”);
方法可以可视化双积分器环境情节
函数。图中将质量显示为红色矩形。
情节(env)
要在训练过程中可视化环境,请调用情节
训练前保持可视化图形打开。
有关如何在双积分器环境中训练代理的示例,请参阅以下内容:
财产 | 描述 | 默认的 |
---|---|---|
获得 |
双积分器的增益 | 1 |
Ts |
采样时间(秒) | 0.1 |
MaxDistance |
距离幅度阈值(以米为单位) | 5 |
GoalThreshold |
状态范数阈值 | 0.01 |
问 |
奖励信号观测分量的权重矩阵 | [10 0;0 1] |
R |
奖励信号的动作分量的权重矩阵 | 0.01 |
MaxForce |
最大输入力,单位为牛顿 | 离散: 连续: |
状态 |
环境状态,指定为具有以下状态变量的列向量:
|
[0 0) ' |
在双积分器环境中,代理与环境相互作用使用一个单一的动作信号,即施加在质量上的力。环境包含此操作信号的规范对象。为环境提供一个:
离散动作空间,规范是一个rlFiniteSetSpec
对象。
连续动作空间,规范是一个rlNumericSpec
对象。
有关从环境获取操作规范的更多信息,请参见getActionInfo
.
在双积分系统中,智能体可以同时观察到系统的两个环境状态变量env。状态
.对于每个状态变量,环境包含一个rlNumericSpec
观测规范。这两个状态都是连续且无界的。
有关从环境中获取观测规范的详细信息,请参见getObservationInfo
.
该环境的奖励信号是以下连续时间奖励的离散等效物,这类似于LQR控制器的代价函数。
在这里:
问
而且R
是环境属性。
x是环境状态向量。
u是输入力。
这个奖励是情节奖励,也就是说,整个训练情节的累积奖励。
这个环境是一个简单的无摩擦摆,最初悬挂在一个向下的位置。训练目标是用最小的控制力使钟摆直立而不倒。
有两种简单的摆环境变体,它们因代理动作空间的不同而不同。
离散-代理可施加扭矩为-2
,-1
,0
,1
,或2
到钟摆上去。
连续-代理可以施加范围内的任何扭矩[-2
,2
]。
若要创建简单的钟摆环境,请使用rlPredefinedEnv
函数。
离散作用空间
环境= rlPredefinedEnv(“SimplePendulumWithImage-Discrete”);
连续作用空间
环境= rlPredefinedEnv(“SimplePendulumWithImage-Continuous”);
有关如何在此环境中训练代理的示例,请参见以下示例:
财产 | 描述 | 默认的 |
---|---|---|
质量 |
钟摆质量 | 1 |
RodLength |
摆的长度 | 1 |
RodInertia |
摆惯性矩 | 0 |
重力 |
重力加速度,单位是米每秒平方 | 9.81 |
DampingRatio |
摆运动阻尼 | 0 |
MaximumTorque |
最大输入扭矩(牛顿) | 2 |
Ts |
采样时间(秒) | 0.05 |
状态 |
环境状态,指定为具有以下状态变量的列向量:
|
[0 0]' |
问 |
奖励信号观测分量的权重矩阵 | [1 0;0 0.1] |
R |
奖励信号的动作分量的权重矩阵 | 1 e - 3 |
在简单的摆环境中,代理使用单个动作信号与环境交互,即施加在摆底部的扭矩。环境包含此操作信号的规范对象。为环境提供一个:
离散动作空间,规范是一个rlFiniteSetSpec
对象。
连续动作空间,规范是一个rlNumericSpec
对象。
有关从环境获取操作规范的更多信息,请参见getActionInfo
.
在简单摆环境下,agent接收到如下观测信号:
50 × 50灰度的摆位置图像
摆角的导数
对于每个观测信号,环境包含一个rlNumericSpec
观测规范。所有的观测都是连续的、无界的。
有关从环境中获取观测规范的详细信息,请参见getObservationInfo
.
这个环境的奖励信号是
在这里:
θt是摆距竖直位置的位移角。
是摆角的导数。
ut - 1是前一个时间步长的控制效果。