メインコンテンツ

rlNumericSpec

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

説明

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

作成

説明

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

spec = rlNumericSpec(dimension,PropertyName=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既に 1 つ以上のエージェント ブロックを含む Simulink モデルからの環境オブジェクトの作成
rlFunctionEnvリセット関数とステップ関数を使用したカスタム強化学習環境の作成
rlValueFunctionValue function approximator object for reinforcement learning agents
rlQValueFunction Q-Value function approximator with a continuous or discrete action space reinforcement learning agents
rlVectorQValueFunction Vector Q-value function approximator with hybrid or discrete action space 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

すべて折りたたむ

rlNumericSpec オブジェクトは、連続集合に属する信号 (アクションまたは観測値) を伝送する環境チャネルを指定します。対照的に、rlFiniteSetSpec オブジェクトは、有限集合 (有限個の要素のみを含む集合) に属する信号を伝送するチャネルを指定します。

既存の環境がある場合は、getActionInfo関数またはgetObservationInfo関数を使用して、その環境のアクション仕様または観測仕様 (一般に rlNumericSpec オブジェクトと rlFiniteSetSpec オブジェクトから成るベクトル) を抽出できます。代わりに、新しいカスタム環境を作成する必要がある場合、まずその環境のアクション チャネルと観測チャネルを定義しなければなりません。これを行うには、rlNumericSpec または rlFiniteSetSpec を使用します。

この例では、rlNumericSpec または rlFiniteSetSpec の両方を使用して、4 つのチャネル (2 つは連続チャネル、2 つは離散チャネル) から成る観測空間を定義します。観測チャネルを定義するには、それぞれが単一のチャネルを定義する仕様オブジェクトから成るベクトルを使用します。

この例の場合、最初の観測チャネルは 7、9、19、または -2 というラベルの付いた単一の数字を搬送します。2 番目のものは、連続 3 次元空間上のベクトルを搬送します。3 番目のチャネルは、ゼロ行列 (つまり、zeros(2)) または単位行列 (つまり、eye(2)) のいずれかになる 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: [4×1 double]
           Name: [0×0 string]
    Description: [0×0 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"

これらの仕様を使用することで、新しいカスタム環境と、その環境内で動作するエージェント オブジェクトの両方を作成できるようになりました。

この例では、rlNumericSpec を使用して、3 要素ベクトルを伝送する単一のチャネルで構成される観測空間を定義します。次に、rlFiniteSetSpec を使用して、3 つの可能な値のうち 1 つだけをもつ単一のチャネルで構成される行動空間を定義します。次に、これらの観測仕様とアクション仕様を使用して、rlSimplePendulumModel Simulink モデルに依存するカスタム Simulink® 環境を作成します。

モデルは、初期状態で下向きにぶら下がっている摩擦がない単純な振子を表します。モデルを開きます。

mdl = "rlSimplePendulumModel";
open_system(mdl)

rlNumericSpec オブジェクトは、連続集合に属する信号 (アクションまたは観測値) を伝送する環境チャネルを指定します。対照的に、rlFiniteSetSpec オブジェクトは、有限集合 (有限個の要素のみを含む集合) に属する信号を伝送するチャネルを指定します。

既存の環境がある場合は、getActionInfo関数またはgetObservationInfo関数を使用して、その環境のアクション仕様または観測仕様 (一般に rlNumericSpec オブジェクトと rlFiniteSetSpec オブジェクトから成るベクトル) を抽出できます。

この例では、代わりに新しいカスタム環境を作成する必要があります。そのためには、まず、環境のアクション チャネルと観測チャネルを定義しなければなりません。

観測空間を表すチャネルを定義するには、rlNumericSpec を使用します。このチャネルは、3 つの信号 (角度の正弦、余弦、および時間微分) を含むベクトルを伝送します。

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

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

行動空間を表すチャネルを定義するには、rlFiniteSetSpec を使用します。このチャネルはトルクを表すスカラーを伝送し、-2 Nm、0 Nm、2 Nm の 3 つの値のいずれかになります。

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

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

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

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

これらの仕様を使用することで、新しいカスタム環境と、その環境内で動作するエージェント オブジェクトの両方を作成できるようになりました。

カスタム Simulink 環境を作成するには、rlSimulinkEnvを使用します。最初の引数として Simulink モデルを指定し、2 番目の引数としてエージェント ブロックのパスを指定します。さらに、前の手順で作成した観測仕様とアクション仕様を指定します。カスタム Simulink 環境の詳細については、Create Custom Simulink Environmentsを参照してください。

agentBlk = mdl + "/RL Agent";
env = rlSimulinkEnv(mdl,agentBlk,obsInfo,actInfo)
env = 
SimulinkEnvWithAgent with properties:

           Model : rlSimplePendulumModel
      AgentBlock : rlSimplePendulumModel/RL Agent
        ResetFcn : []
  UseFastRestart : on

ドット表記を使用してリセット関数を指定します。この例では、setVariable (Simulink)関数を使用して、モデル ワークスペースの 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

ここで、inSimulink.SimulationInput (Simulink)オブジェクトです。シミュレーションまたは学習の期間中、モデル ワークスペース内の既存の theta0 の値は、指定した theta0 の値でオーバーライドされます。シミュレーションまたは学習が完了すると、theta0 の値は元に戻ります。リセット関数の詳細については、Reset Function for Simulink Environmentsを参照してください。

組み込み関数 train および sim の引数として、(エージェント オブジェクトと組み合わせて) env を使用できるようになりました。これらの関数は、この環境内でエージェントの学習とシミュレーションを行います。

バージョン履歴

R2019a で導入