Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

rlFiniteSetSpec

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

説明

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

作成

説明

spec = rlFiniteSetSpec(elements) は、有限集合アクションまたは観測チャネル用のデータ仕様オブジェクトを作成し、Elements プロパティを設定します。

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

プロパティ

すべて展開する

環境のための有効なアクションまたは観測値のセット。次のいずれかとして指定します。

  • ベクトル — 単一のアクションまたは単一の観測値に対して有効な数値を指定します。

  • cell 配列 — 複数のアクションまたは観測値がある場合は、有効な数値の組み合わせを指定します。cell 配列の各エントリは同じ次元でなければなりません。

例: Elements=[-2 -1 0 1 2]

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

例: Name="Action"

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

例: Description="Applied force in N"

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

各要素のサイズ。ベクトルとして指定します。

Elements をベクトルとして指定した場合、Dimension[1 1] になります。そうでない場合、cell 配列を指定すると、DimensionElements のエントリのサイズを示します。このプロパティは、任意の環境で動作するエージェントおよび関数近似器オブジェクトを作成するために不可欠です。

例: Dimension=[1 1]

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

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

例: DataType="single"

オブジェクト関数

rlSimulinkEnv既にエージェントと環境を含む 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

すべて折りたたむ

この例では、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"

Reinforcement Learning Toolbox™ ソフトウェア内でエージェントがもつことができるアクション チャネルは 1 つだけです。しかし、目的の設計に複数の離散行動チャネルが含まれる場合は、元の設計における各アクション チャネルの要素数の積に等しい要素数をもつ単一のアクション チャネルに変換できます。具体的には、単一アクション チャネルの各要素は、元の設計におけるアクション チャネル内要素の特定の組み合わせに対応します。

たとえば、2 出力システムの有効な値が、最初の出力で [1 2]、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 で導入