主要内容

rlfunctionenv.

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

描述

采用rlfunctionenv.定义一个自定义的强化学习环境。您提供MATLAB®定义环境的步骤和重置行为的函数。当您想要超出可用的预定义环境时,此对象很有用rlPredefinedEnv

创建

描述

例子

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

输入参数

全部展开

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

动作规范,指定为rlFiniteSetSpec要么rlnumericspec.目的。这些对象定义了诸如动作信号的尺寸,数据类型和名称之类的属性。

属性

全部展开

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

StepFcn是您提供的函数,描述了环境如何从给定的操作前进到下一个状态。使用函数名称或功能句柄时,此功能必须具有两个输入和四个输出,如以下签名所示。

[观察,奖励,ISDONE,LoggedSignals] = MyStepFunction(动作,loggedSignals)

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

步骤功能计算对环境中给定操作的观察和奖励的值。所需的输入和输出参数如下。

  • 行动- 当前操作,必须匹配指定的尺寸和数据类型actInfo

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

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

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

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

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

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

您提供的重置功能必须没有输入和两个输出,如以下签名所示。

[InitialObservation, LoggedSignals] = myResetFunction

使用重置功能使用输入参数,请指定resetfcn.使用匿名功能句柄。

复位功能将环境设置为初始状态,并计算观察信号的初始值。例如,您可以创建一个复位函数,该函数随机化某些状态值,从而从不同的初始条件开始。

sim卡函数调用重置函数在每个模拟开始时重置环境,以及火车函数在每个培训集的开始时调用它。

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

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

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

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

对象的功能

getActionInfo. 从强化学习环境或代理获取动作数据规范
getobservationInfo. 从强化学习环境或代理获得观察数据规范
火车 在指定的环境中训练强化学习代理
sim卡 在指定环境中模拟培训的钢筋学习代理
validateEnvironment 验证自定义强化学习环境

例子

全部收缩

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

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

oinfo = rlNumericSpec([4 1]);oinfo。Name ='cartpole状态';oinfo.description =.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