主要内容

rlFiniteSetSpec

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

描述

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

创建

描述

例子

规格= rlFiniteSetSpec (元素使用一组离散的操作或观察创建数据规范,设置元素财产。

属性

全部展开

对环境的有效行动或观察的集合,指定为下列之一:

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

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

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

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

此属性是只读的。

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

如果您指定元素作为一个向量[1].否则,如果指定单元格数组,则中表项的大小元素

此属性是只读的。

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

对象的功能

rl万博1manbetxSimulinkEnv 使用动态模型创建强化学习环境万博1manbetx
rlfunctionenv. 使用函数指定自定义强化学习环境动态
rlRepresentation (不推荐)强化学习代理的模型表示

例子

全部折叠

对于本例,考虑rlSimplePendulumModel万博1manbetxSimulink模型。该模型是一个简单的无摩擦摆,最初悬挂在向下位置。

打开模型。

mdl ='rlsimplepentulummodel';Open_System(MDL)

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

Obsinfo = rlnumericspec([3 1])3观察的%载体:Sin(θ),cos(θ),d(θ)/ dt
obsInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf Name: [0x0 string] Description: [0x0 string] Dimension: [3 1] DataType: "double"
actInfo = rlFiniteSetSpec([-2 0 2])% 3扭矩的可能值:-2 Nm, 0 Nm和2 Nm
actInfo = rlFiniteSetSpec with properties: Elements: [3x1 double] Name: [0x0 string] Description: [0x0 string] Dimension: [1 1] DataType: "double"

属性的属性值可以使用点表示法rlNumericSpecrlFiniteSetSpec对象。

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

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

AppletBlk = [MDL' / RL代理'];env = rl万博1manbetxSimulinkEnv (mdl agentBlk、obsInfo actInfo)
env = 万博1manbetxSimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: [] UseFastRestart: on . env = SimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel

您还可以使用点表示法包含一个reset函数。对于本例,随机初始化theta0在模型工作区中。

env。ResetFcn = @(in) setVariable(in,'theta0'randn,“工作区”,mdl)
env = 万博1manbetxsimulinkenvwithagent with properties:型号:rlsimplepentulummodel agentblock:rlsimplendepulummodel / rl代理resetfcn:@(in)setVariable(In,'theta0',Randn,'workspace',mdl)UseFastrest:On

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

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

actionSpec = rlFiniteSetSpec({[1 10],[1 20],[1 30],...[2 10],[2 20],[2 30]})
actionSpec = rlFiniteSetSpec with properties: Elements: {6x1 cell} Name: [0x0 string] Description: [0x0 string] Dimension: [1 2] DataType: "double"
介绍了R2019a