主要内容

rlFiniteSetSpec

为强化学习环境创建离散行动或观察数据规范

描述

rlFiniteSetSpecObject指定用于加强学习环境的离散动作或观察数据规范。

创造

描述

实例

规格=rlFiniteSetSpec(元素)使用一组离散的操作或观察创建数据规范,设置元素所有物

性质

全部展开

环境的一组有效操作或观察结果,指定为以下内容之一:

  • 矢量 - 为单个动作或单个观察指定有效的数值。

  • 单元格数组-当您有多个操作或观察时,请指定有效的数值组合。单元格数组的每个条目必须具有相同的维度。

的名字rlFiniteSetSpec对象,指定为字符串。使用此属性为有限集设置有意义的名称。

描述rlFiniteSetSpec对象,指定为字符串。使用此属性指定有限设置值的有意义描述。

此属性是只读的。

每个元素的大小,指定为向量。

如果您指定元素作为向量,那么[1 1]. 否则,如果指定单元格数组,则指示中项目的大小元素.

此属性是只读的。

有关数据类型的信息,指定为字符串。

目标函数

rl金宝appSimulinkEnv 使用IN实现的动态模型创建强化学习环境金宝app
rlfunctionenv. 使用函数指定自定义强化学习环境动力学
RLD表示法 (不推荐)强化学习代理的模型表示

例子

全部崩溃

对于这个例子,考虑RLSimplePendulmodel金宝appSimulink模型。该模型是一个简单的无摩擦摆,最初悬挂在向下位置。

打开模型。

mdl='rlsimplepeneylummodel';Open_System(MDL)

创建rlNumericSpecrlFiniteSetSpec分别用于观察和动作信息的对象。

ObsInfo = rlnumericspec([3 1])3观察的%载体:SIN(θ),cos(θ),d(θ)/ dt
obsInfo=rlNumericSpec,属性:LowerLimit:-Inf上限:Inf名称:[0x0字符串]说明:[0x0字符串]维度:[3 1]数据类型:“双”
actInfo=rlFiniteSetSpec([-2 0 2])%扭矩的3个可能值:-2 Nm、0 Nm和2 Nm
actInfo=rlFiniteSetSpec,属性为:元素:[3x1双精度]名称:[0x0字符串]说明:[0x0字符串]维度:[1]数据类型:“双精度”

可以使用点表示法为rlNumericSpecrlFiniteSetSpec物体。

obsInfo.Name=“观察”;actInfo.Name=“扭矩”;

分配代理块路径信息,并使用前面步骤中提取的信息为Simulink模型创建强化学习环境。金宝app

AppletBlk = [MDL“/RL代理”];env=rlSim金宝appulinkEnv(mdl、agentBlk、obsInfo、actInfo)
env=Si金宝appmulinkEnvWithAgent,属性为:模型:rlSimplePendulumModel代理程序块:rlSimplePendulumModel/RL代理程序重置FCN:[]使用FastRestart:打开

您还可以使用点表示法包含重置函数θ0在模型工作区中。

env.ResetFcn=@(in)setVariable(in,'theta0',兰登,“工作区”,mdl)
env = 金宝appsimulinkenvwithangent with属性:型号:rlsimplepentulummodel agentblock:rlsimplevepulummodel / rl代理resetfcn:@(in)setVariable(In,'theta0',Randn,'工作区',mdl)usefastrestart:上

如果强化学习代理的参与者有多个输出,每个输出都有一个离散动作空间,则可以使用rlFiniteSetSpec目的。

假设双输出系统的有效值为[1 2]对于第一个输出和[10 20 30]对于第二个输出。为所有可能的输入组合创建离散动作空间规范。

actionSpec=rlFiniteSetSpec({[110],[120],[130],...[2 10],[2 20],[2 30]})
actionSpec=rlFiniteSetSpec,属性为:元素:{6x1 cell}名称:[0x0字符串]说明:[0x0字符串]维度:[1 2]数据类型:“双”
在R2019a中引入