Main Content

rlNumericSpec

数値アクションまたは観測チャネルのための仕様オブジェクトの作成

説明

rlNumericSpec オブジェクトには、連続 (無限) 集合に属するアクションまたは観測値を搬送するチャネルの仕様が含まれます。

作成

説明

spec = rlNumericSpec(dimension) は、連続行動または観測チャネル用のデータ仕様オブジェクトを作成し、Dimension プロパティを設定します。

spec = rlNumericSpec(dimension,Name=Value) は仕様オブジェクト spec を作成し、名前と値の引数を 1 つ以上使用して、そのプロパティを設定します。

プロパティ

すべて展開する

データ空間の下限。データ空間と同じサイズのスカラーまたは行列として指定します。LowerLimit がスカラーとして指定されている場合、rlNumericSpec はそれをデータ空間内のすべてのエントリに適用します。DDPG、TD3、および SAC エージェントは、このプロパティを使用して、アクションに対して下限を適用します。他のエージェントを使用してアクションに制約を適用する必要がある場合、環境内でそれを行わなければなりません。

例: LowerLimit=-1

データ空間の上限。データ空間と同じサイズのスカラーまたは行列として指定します。UpperLimit がスカラーとして指定されている場合、rlNumericSpec はそれをデータ空間内のすべてのエントリに適用します。DDPG、TD3、および SAC エージェントは、このプロパティを使用して、アクションに対して上限を適用します。他のエージェントを使用してアクションに制約を適用する必要がある場合、環境内でそれを行わなければなりません。

例: UpperLimit=1

rlNumericSpec オブジェクトの名前。string として指定します。このプロパティを使用して、このデータ チャネルによって搬送される信号に、意味のある名前を設定します。このプロパティは、バス信号要素と対応する環境チャネルを照合するために RL Agent ブロックによって使用されます。

例: Name="Observation"

rlNumericSpec オブジェクトの説明。string として指定します。このプロパティを使用して、この環境チャネルによって搬送される信号に、意味のある説明を指定できます。

例: Description="Measured Cart Velocity in m/s"

この プロパティ は読み取り専用です。

チャネルの次元。ベクトルとして指定します。このプロパティは、環境からエージェントにデータを搬送するチャネルによって搬送される要素のサイズであり、任意の環境で動作するエージェントおよび関数近似器オブジェクトを作成するために不可欠です。

例: Dimension=[3 1]

この プロパティ は読み取り専用です。

データ型に関する情報。"double""single" などの string として指定します。ソフトウェアはこのプロパティを使用して、観測値とアクションのデータ型の整合性を確保します。

例: DataType="double"

オブジェクト関数

rlSimulinkEnv既にエージェントと環境を含む Simulink モデルからの環境オブジェクトの作成
rlFunctionEnvリセット関数とステップ関数を使用したカスタム強化学習環境の作成
rlValueFunctionValue function approximator object for reinforcement learning agents
rlQValueFunction Q-Value function approximator object for reinforcement learning agents
rlVectorQValueFunction Vector Q-value function approximator for reinforcement learning agents
rlContinuousDeterministicActor Deterministic actor with a continuous action space for reinforcement learning agents
rlDiscreteCategoricalActorStochastic categorical actor with a discrete action space for reinforcement learning agents
rlContinuousGaussianActorStochastic Gaussian actor with a continuous action space for reinforcement learning agents

すべて折りたたむ

この例では、rlSimplePendulumModel Simulink® モデルを検討します。モデルは、初期状態で下向きにぶら下がっている摩擦がない単純な振子です。

モデルを開きます。

mdl = "rlSimplePendulumModel";
open_system(mdl)

観測仕様とアクション仕様にそれぞれ rlNumericSpec オブジェクトと rlFiniteSetSpec オブジェクトを作成します。

観測値は、角度の正弦、余弦、時間微分の 3 つの信号を含むベクトルです。

obsInfo = rlNumericSpec([3 1]) 
obsInfo = 
  rlNumericSpec with properties:

     LowerLimit: -Inf
     UpperLimit: Inf
           Name: [0x0 string]
    Description: [0x0 string]
      Dimension: [3 1]
       DataType: "double"

アクションはトルクを表すスカラーであり、-2 Nm、0 Nm、2 Nm の 3 つの値のいずれかになります。

actInfo = rlFiniteSetSpec([-2 0 2])
actInfo = 
  rlFiniteSetSpec with properties:

       Elements: [3x1 double]
           Name: [0x0 string]
    Description: [0x0 string]
      Dimension: [1 1]
       DataType: "double"

ドット表記を使用して、rlNumericSpec オブジェクトと rlFiniteSetSpec オブジェクトのプロパティ値を割り当てることができます。

obsInfo.Name = "observations";
actInfo.Name = "torque";

エージェント ブロックのパス情報を割り当て、前の手順で抽出した情報を使用して Simulink モデルの強化学習環境を作成します。

agentBlk = mdl + "/RL Agent";
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,"Workspace",mdl)
env = 
SimulinkEnvWithAgent with properties:

           Model : rlSimplePendulumModel
      AgentBlock : rlSimplePendulumModel/RL Agent
        ResetFcn : @(in)setVariable(in,"theta0",randn,"Workspace",mdl)
  UseFastRestart : on

環境が複数のチャネル (一部は連続、一部は離散) で構成される観測空間をもつ場合は、仕様オブジェクトのベクトル (それぞれが単一のチャネルを定義する) を使用して観測空間を定義します。

たとえば、観測空間を 4 つのチャネルで構成されるものとして定義します。最初のものは、7、9、19、または -2 というラベルの付いた単一の数字を搬送します。2 番目のものは、連続 3 次元空間上のベクトルを搬送します。3 番目のチャネルは、ゼロまたは単位行列のいずれかになる 2 行 2 列の行列を搬送します。最後に、4 番目のチャネルは、4 行 3 列の連続行列を搬送します。

obsInfo = [  rlFiniteSetSpec([7 9 19 -2])
             rlNumericSpec([3 1])
             rlFiniteSetSpec({zeros(2), eye(2)})
             rlNumericSpec([4 3]) ]
obsInfo=4×1 heterogeneous RLDataSpec (rlFiniteSetSpec, rlNumericSpec) array with properties:
    Name
    Description
    Dimension
    DataType

各チャネル仕様には、ドット表記を使用してアクセスできます。

obsInfo(1)
ans = 
  rlFiniteSetSpec with properties:

       Elements: [4x1 double]
           Name: [0x0 string]
    Description: [0x0 string]
      Dimension: [1 1]
       DataType: "double"

obsInfo(2).Name = "Velocity";
obsInfo(2).Description = "Velocity vector in m/s in body reference frame";
obsInfo(2)
ans = 
  rlNumericSpec with properties:

     LowerLimit: -Inf
     UpperLimit: Inf
           Name: "Velocity"
    Description: "Velocity vector in m/s in body reference frame"
      Dimension: [3 1]
       DataType: "double"

バージョン履歴

R2019a で導入