主要内容

rlFunctionEnv

使用函数指定自定义强化学习环境动态

描述

使用rlFunctionEnv定义一个自定义的强化学习环境。您提供MATLAB®定义环境的步骤和重置行为的函数。当您希望自定义预定义环境之外的环境时,此对象非常有用rlPredefinedEnv

创建

描述

例子

env= rlFunctionEnv (obsInfoactInfostepfcnresetfcn使用所提供的观察和行动规范创建强化学习环境,obsInfoactInfo,分别。您还可以设置StepFcnResetFcn属性使用MATLAB函数。

输入参数

全部展开

观察规范,指定为rlFiniteSetSpecrlNumericSpec对象或包含这些对象的混合的数组。这些对象定义了一些属性,比如维度、数据类型和观察信号的名称。

动作规范,指定为rlFiniteSetSpecrlNumericSpec对象。这些对象定义属性,如维度、数据类型和动作信号的名称。

属性

全部展开

环境的步骤行为,指定为函数名、函数句柄或匿名函数。

StepFcn是您提供的一个函数,它描述环境如何从一个给定的动作进展到下一个状态。当使用函数名或函数句柄时,这个函数必须有两个输入和四个输出,如下面的签名所示。

(观察、奖励、结束,LoggedSignals) = myStepFunction(行动,LoggedSignals)

若要使用所需集以外的其他输入参数,请指定StepFcn使用匿名函数句柄。

阶跃函数计算环境中给定动作的观察值和奖励。所需的输入和输出参数如下所示。

  • 行动-当前操作,必须与中指定的维度和数据类型匹配actInfo

  • 观察-返回的观测值,必须与中指定的维度和数据类型匹配obsInfo

  • 奖励-当前步骤的奖励,返回标量值。

  • 结束—是否结束模拟集的逻辑值。您定义的步骤函数可以包含逻辑,以决定是否根据观察、奖励或其他值结束模拟。

  • LoggedSignals—要从一个步骤传递到下一个步骤的任何数据,指定为结构。

有关显示定义step函数的多种方法的示例,请参见使用自定义函数创建MATLAB环境

重置环境的行为,指定为函数、函数句柄或匿名函数句柄。

您提供的reset函数必须没有输入和两个输出,如下面的签名所示。

[InitialObservation, LoggedSignals] = myResetFunction

若要在重置函数中使用输入参数,请指定ResetFcn使用匿名函数句柄。

reset函数将环境设置为初始状态,并计算观测信号的初始值。例如,您可以创建一个重置函数来随机化某些状态值,这样每个训练集都从不同的初始条件开始。

sim卡函数调用reset函数在每次模拟开始时重置环境,而火车函数在每次训练开始时调用它。

InitialObservation的输出必须匹配维度和数据类型obsInfo

要将reset条件中的信息传递到第一步,请在reset函数中指定该信息作为输出结构LoggedSignals

有关显示定义重置函数的多种方法的示例,请参见使用自定义函数创建MATLAB环境

要传递到下一步的信息,指定为结构。当你创建环境时,无论你定义为LoggedSignals的输出ResetFcn初始化这个属性。当一个步骤发生时,软件用要传递到下一个步骤的数据填充这个属性,如StepFcn

对象的功能

getActionInfo 从强化学习环境或代理获取动作数据规范
getObservationInfo 从强化学习环境或agent获取观测数据规范
火车 在指定的环境中训练强化学习代理
sim卡 在指定的环境中模拟训练过的强化学习代理
validateEnvironment 验证自定义强化学习环境

例子

全部折叠

通过在MATLAB®中提供自定义动态函数来创建强化学习环境。使用rlFunctionEnv,您可以创建一个MATLAB强化学习环境,从观察规范,行动规范,和一步重置你定义的函数。

对于本例,创建一个环境,该环境表示用于在杆子上平衡购物车的系统。从环境中观察到的是车的位置、车的速度、摆角和摆角的导数。(有关此环境的更多详细信息,请参见使用自定义函数创建MATLAB环境.)为这些信号创建一个观察规范。

oinfo = rlNumericSpec([4 1]);oinfo。Name =“CartPole州”;oinfo。描述=x dx d '

该环境有一个离散的操作空间,代理可以将两个可能的力值中的一个应用到购物车,-10 N或10 N。

ActionInfo = rlFiniteSetSpec([-10 10]);ActionInfo。Name =“CartPole行动”

接下来,指定自定义一步重置功能。对于本例,请使用提供的函数myResetFunction.mmyStepFunction.m.有关这些函数及其构造方式的详细信息,请参见使用自定义函数创建MATLAB环境

使用已定义的观察规范、操作规范和函数名构造自定义环境。

env = rlFunctionEnv (oinfo ActionInfo,“myStepFunction”“myResetFunction”);

可以为env并在环境中对他们进行培训,就像在其他强化学习环境中一样。

作为使用函数名的替代方法,您可以将函数指定为函数句柄。有关更多细节和示例,请参见使用自定义函数创建MATLAB环境

介绍了R2019a