在强化学习方案中,您可以在其中训练代理完成任务,环境对代理商互动的外部系统(即世界)建模。在控制系统应用中,此外部系统通常称为植物。
如下图所示,环境:
收到代理商的诉讼。
返回对动作的观察结果。
产生奖励,以衡量该动作有助于完成任务的能力。
创建环境模型涉及定义:
代理商用来与环境相互作用的动作和观察信号。
代理商用来衡量其成功的奖励信号。有关更多信息,请参阅定义奖励信号。
环境初始条件及其动态行为。
创建环境对象时,必须指定代理商用于与环境交互的操作和观察信号。您可以同时创建离散的动作和观察空间。有关更多信息,请参阅rlnumericspec
和rlfinitesetspec
, 分别。
您选择的作为操作和观察的信号取决于您的应用程序。例如,对于控制系统应用,误差信号的积分(有时甚至是导数)通常是有用的观察结果。同样,对于参考跟踪应用程序,具有时间变化的参考信号作为观察很有帮助。
当您定义观察信号时,请确保所有环境状态(或其估计)都包含在观测向量中。这是一个很好的做法,因为代理通常是缺乏内部内存或状态的静态函数,因此它可能无法在内部成功重建环境状态。
例如,摇摆摆的图像观察具有位置信息,但没有足够的信息来确定摆速度。在这种情况下,您可以测量或估计摆速度作为观察矢量中的附加条目。
增强学习工具箱™软件提供了一些预定义的MATLAB®动作,观察,奖励和动态的环境已经定义。您可以使用这些环境来:
学习强化学习概念。
熟悉加强学习工具箱软件功能。
测试您自己的加强学习代理。
有关更多信息,请参阅负载预定义的网格世界环境和加载预定义的控制系统环境。
您可以为自己的应用程序创建以下类型的自定义MATLAB环境。
具有指定大小,奖励和障碍的网格世界
使用自定义功能指定的动力学环境
通过创建和修改模板环境对象指定的环境
创建自定义环境对象后,您可以以与预定义环境相同的方式训练代理。有关培训代理的更多信息,请参阅训练加强学习者。
您可以使用自己的自定义奖励,状态过渡和障碍配置创建任何大小的自定义网格世界。创建自定义网格世界环境:
创建网格世界模型CreateGridWorld
功能。例如,创建一个名为的网格世界GW
有十行和九列。
gw = createGridWorld(10,9);
通过修改模型的属性来配置网格世界。例如,将终端状态指定为位置[7,9]
gw.terminalstates =“ [7,9]”;
马尔可夫决策过程(MDP)环境需要将网格世界包括在内。为这个网格世界创建MDP环境,代理商用它与网格世界模型进行交互。
env = rlmdpenv(gw);
有关自定义网格世界的更多信息,请参阅创建自定义网格世界环境。
对于简单的环境,您可以通过创建一个自定义环境对象来定义一个自定义环境对象rlfunctionenv
对象并指定自己的自定义重置和步功能。
在每个训练剧集的开头,代理调用重置功能以设置环境初始条件。例如,您可以指定已知的初始状态值或将环境置于随机的初始状态。
步骤函数定义了环境的动力学,即状态如何按照当前状态和代理操作的函数变化。在每个训练时间步骤中,使用步骤函数更新模型的状态。
有关更多信息,请参阅使用自定义功能创建MATLAB环境。
对于更复杂的环境,您可以通过创建和修改模板环境来定义自定义环境。创建自定义环境:
使用rlcreateenvtemplate
功能。
修改模板环境,指定环境属性,所需的环境功能和可选环境功能。
使用自定义环境使用验证环境
。
有关更多信息,请参阅通过模板创建自定义MATLAB环境。
rlpredefinedenv
|rlfunctionenv
|rlcreateenvtemplate