创建MATLAB强化学习的环境
在强化学习场景中,您训练一个代理完成一项任务,环境对与代理交互的外部系统(即世界)进行建模。在控制系统应用中,这种外部系统常被称为这种植物.
如下图所示,环境:
从代理接收操作。
返回对操作的响应的观察。
生成一个奖励来衡量行为对完成任务的贡献程度。
创建环境模型包括定义:
代理用来与环境交互的动作和观察信号。
代理用来衡量其成功的奖励信号。有关更多信息,请参见定义奖励信号.
环境初始条件及其动态行为。
行动及观察信号
在创建环境对象时,必须指定代理用于与环境交互的操作和观察信号。你可以创建离散或连续的行动和观察空间。有关更多信息,请参见rlNumericSpec
而且rlFiniteSetSpec
,分别。
选择什么信号作为操作和观察取决于您的应用程序。例如,对于控制系统应用,误差信号的积分(有时是导数)通常是有用的观察。此外,对于参考跟踪应用,有一个时变的参考信号作为观察是有帮助的。
在定义观察信号时,确保所有环境状态(或它们的估计)都包含在观察向量中。这是一个很好的实践,因为代理通常是一个缺乏内部内存或状态的静态函数,因此它可能无法成功地在内部重构环境状态。
例如,一个摆动的摆的图像观测有位置信息,但它本身没有足够的信息来确定摆的速度。在这种情况下,你可以测量或估计摆速度作为一个额外的入口在观察矢量。
预定义的MATLAB环境
强化学习工具箱™软件提供了一些预定义的MATLAB®已经定义了行动、观察、奖励和动态的环境。您可以使用这些环境来:
学习强化学习的概念。
熟悉强化学习工具箱软件功能。
测试你自己的强化学习剂。
有关更多信息,请参见加载预定义的网格世界环境而且负载预定义控制系统环境.
自定义MATLAB环境
您可以为自己的应用程序创建以下类型的自定义MATLAB环境。
具有特定大小、奖励和障碍的网格世界
使用自定义函数指定动态的环境
通过创建和修改模板环境对象指定的环境
一旦创建了自定义环境对象,就可以以与在预定义环境中相同的方式训练代理。有关培训代理的更多信息,请参见训练强化学习代理.
自定义网格的世界
你可以用你自己的自定义奖励、状态转换和障碍配置创建任意大小的自定义网格世界。要创建一个自定义网格世界环境:
控件创建网格世界模型
createGridWorld
函数。例如,创建一个名为吉瓦
十行九列。9 gw = createGridWorld(10日);
通过修改模型的属性来配置网格世界。例如,指定终端状态作为位置
(7、9)
gw。TerminalStates =“(7、9)”;
网格世界需要包含在马尔可夫决策过程(MDP)环境中。为这个网格世界创建一个MDP环境,代理使用该环境与网格世界模型交互。
env = rlMDPEnv (gw);
有关自定义网格世界的更多信息,请参见创建自定义网格世界环境.
指定自定义函数
对于简单的环境,可以通过创建rlFunctionEnv
对象并指定您自己的自定义重置而且一步功能。
在每个训练集开始时,代理调用reset函数设置环境初始条件。例如,您可以指定已知的初始状态值,或者将环境置于随机的初始状态。
阶梯函数定义了环境的动态,也就是说,作为当前状态和代理动作的函数,状态是如何变化的。在每个训练时间步长中,使用步长函数更新模型的状态。
有关更多信息,请参见使用自定义函数创建MATLAB环境.
创建和修改模板环境
对于更复杂的环境,可以通过创建和修改模板环境来定义自定义环境。使用实例创建自定义环境。
类创建环境模板类
rlCreateEnvTemplate
函数。该任务指导管理员修改模板环境,指定模板环境属性、必备环境功能和可选环境功能。
使用验证您的自定义环境
validateEnvironment
.
有关更多信息,请参见从模板创建自定义MATLAB环境.
另请参阅
rlPredefinedEnv
|rlFunctionEnv
|rlCreateEnvTemplate