Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

rlFiniteSetSpec

유한 집합 행동 또는 관측값 채널에 대한 사양 객체 만들기

설명

rlFiniteSetSpec 객체는 유한 집합에 속하는 행동 또는 관측값을 전달하는 채널의 사양을 포함합니다.

생성

설명

예제

spec = rlFiniteSetSpec(elements)Elements 속성을 설정하여 유한 집합 행동 또는 관측값 채널에 대한 데이터 사양 객체를 만듭니다.

spec = rlFiniteSetSpec(elements,Name=Value)는 사양 객체 spec을 만들고 하나 이상의 이름-값 인수를 사용하여 이 객체의 속성을 설정합니다.

속성

모두 확장

환경에 대한 유효한 행동 또는 관측값의 집합으로, 다음 중 하나로 지정됩니다.

  • 벡터 — 단일 행동 또는 단일 관측값에 대한 유효한 숫자형 값을 지정합니다.

  • 셀형 배열 — 둘 이상의 행동 또는 관측값을 갖는 경우 유효한 숫자형 값 조합을 지정합니다. 셀형 배열의 각 요소는 차원이 동일해야 합니다.

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

rlFiniteSetSpec 객체의 이름으로, string형으로 지정됩니다. 이 속성을 사용하여 이 데이터 채널이 전달하는 신호에 의미 있는 이름을 설정합니다. 이 속성은 RL Agent 블록에서 버스 신호를 해당 환경 채널과 일치시키는 데 사용됩니다.

예: Name="Action"

rlFiniteSetSpec 객체에 대한 설명으로, string형으로 지정됩니다. 이 속성을 사용하여 이 환경 채널이 전달하는 신호에 대한 의미 있는 설명을 지정할 수 있습니다.

예: Description="Applied force in N"

읽기 전용 속성입니다.

각 요소의 크기로, 벡터로 지정됩니다.

Elements를 벡터로 지정할 경우 Dimension[1 1]입니다. 셀형 배열을 지정할 경우 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 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

예제

모두 축소

이 예제에서는 Simulink® 모델 rlSimplePendulumModel이 있다고 가정해 보겠습니다. 이 모델은 처음에 아래쪽을 향해 매달려 있는 마찰 없는 단순 진자입니다.

모델을 엽니다.

mdl = "rlSimplePendulumModel";
open_system(mdl)

관측값과 행동 정보에 대해 각각 rlNumericSpecrlFiniteSetSpec 객체를 만듭니다.

관측값은 각도의 사인, 코사인 및 시간 도함수에 해당하는 3개의 신호를 포함하는 벡터입니다.

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

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

행동은 토크를 표현하는 스칼라이며 -2Nm, 0Nm, 2Nm의 3개 값 중 하나일 수 있습니다.

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

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

점 표기법을 사용하여 rlNumericSpecrlFiniteSetSpec 객체에 대한 속성값을 할당할 수 있습니다.

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로 레이블이 지정된 단일 숫자를 전달합니다. 두 번째 채널은 연속적인 3차원 공간 위의 벡터를 전달합니다. 세 번째 채널은 0 또는 단위 행렬일 수 있는 2×2 행렬을 전달합니다. 마지막으로 네 번째 채널은 행 4개와 열 3개를 갖는 연속적인 행렬을 전달합니다.

obsInfo = [  rlFiniteSetSpec([7 9 19 -2])
             rlNumericSpec([3 1])
             rlFiniteSetSpec({zeros(2), eye(2)})
             rlNumericSpec([4 3]) ]
obsInfo=4×1 object
  4x1 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™ 내에서 에이전트는 행동 채널을 하나만 가질 수 있습니다. 하지만 원하는 설계에 여러 개의 이산 행동 채널이 포함된 경우, 이러한 다중 이산 행동 채널을 단일 행동 채널로 변환하고 이 변환된 채널의 요소 개수가 원래 설계의 각 행동 채널 요소 개수의 곱과 같아지도록 할 수 있습니다. 즉, 단일 행동 채널의 각 요소는 원래 설계의 행동 채널에 있는 요소들의 특정 조합에 해당합니다.

예를 들어 2-출력 시스템의 유효한 값이 첫 번째 출력의 경우 [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에 개발됨