主要内容

rlFiniteSetSpec

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

描述

一个rlFiniteSetSpec对象指定强化学习环境的离散动作或观察数据规范。

创建

描述

例子

规范= rlFiniteSetSpec (元素创建带有一组离散操作或观察结果的数据规范,将元素财产。

属性

全部展开

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

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

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

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

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

此属性是只读的。

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

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

此属性是只读的。

有关数据类型的信息,以字符串形式指定,例如“替身”“单身”

对象的功能

rlSimulinkEnv 使用动态模型创建强化学习环境动态仿真模块
rlFunctionEnv 使用函数指定自定义强化学习环境动态
rlValueFunction 强化学习代理的值函数逼近对象
rlQValueFunction 强化学习代理的q值函数逼近对象
rlVectorQValueFunction 向量q值函数逼近强化学习代理
rlContinuousDeterministicActor 具有连续动作空间的确定性行为体用于强化学习代理
rlDiscreteCategoricalActor 具有离散动作空间的随机分类actor强化学习代理
rlContinuousGaussianActor 一种具有连续动作空间的随机高斯体强化学习代理

例子

全部折叠

对于本例,考虑rlSimplePendulumModel仿真软件模型。模型是一个简单的无摩擦摆,最初悬挂在一个向下的位置。

打开模型。

mdl =“rlSimplePendulumModel”;open_system (mdl)

创建rlNumericSpec而且rlFiniteSetSpec对象分别用于观察和操作信息。

观测值是一个包含三个信号的向量:角度的正弦、余弦和时间导数。

obsInfo = rlNumericSpec([3 1])
obsInfo = rlNumericSpec with properties: LowerLimit: -Inf UpperLimit: Inf名称:[0×0 string]描述:[0×0 string]维度:[3 1]DataType: "double"

动作是表示扭矩的标量,可以是三个可能值之一,-2海里,0纳米和2Nm。

rlFiniteSetSpec([-2 0 2])
actInfo = rlFiniteSetSpec with properties:元素:[3×1 double]名称:[0×0 string]描述:[0×0 string]维度:[1 1]数据类型:"double"

属性的属性值可以使用点表示法rlNumericSpec而且rlFiniteSetSpec对象。

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

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

agentBlk = [mdl .' / RL代理'];env = rlSimulinkEnv(mdl,agentBlk,obsInfo,actInfo)
env = SimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: [] UseFastRestart: on

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

env。ResetFcn = @(in) setVariable(in,“theta0”randn,“工作区”mdl)
env = SimulinkEnvWithAgent with properties: Model: rlSimplePendulumModel AgentBlock: rlSimplePendulumModel/RL Agent ResetFcn: @(in)setVariable(in,'theta0',randn,'Workspace',mdl) UseFastRestart: 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:元素:{6x1 cell}名称:[0x0 string]描述:[0x0 string]尺寸:[1 2]数据类型:"double"

版本历史

在R2019a中引入

Baidu
map