Main Content

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

rlFiniteSetSpec

강화 학습 환경에 대한 이산 행동 또는 관측값 데이터 사양 만들기

설명

rlFiniteSetSpec 객체는 강화 학습 환경에 대한 이산 행동 또는 관측값 데이터 사양을 지정합니다.

생성

설명

예제

spec = rlFiniteSetSpec(elements)Elements 속성을 설정하여 행동 또는 관측값의 이산 집합을 갖는 데이터 사양을 만듭니다.

속성

모두 확장

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

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

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

rlFiniteSetSpec 객체의 이름으로, string형으로 지정됩니다. 이 속성을 사용하여 유한 집합에 의미 있는 이름을 설정합니다.

rlFiniteSetSpec 객체에 대한 설명으로, string형으로 지정됩니다. 이 속성을 사용하여 유한 집합 값에 대한 의미 있는 설명을 지정합니다.

이 속성은 읽기 전용입니다.

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

Elements를 벡터로 지정할 경우 Dimension[1 1]입니다. 셀형 배열을 지정할 경우 DimensionElements의 요소의 크기를 나타냅니다.

이 속성은 읽기 전용입니다.

데이터형에 대한 정보로, string형으로 지정됩니다.

객체 함수

rlSimulinkEnvCreate reinforcement learning environment using dynamic model implemented in Simulink
rlFunctionEnv함수를 사용하여 사용자 지정된 강화 학습 환경 동특성 지정
rlRepresentation(Not recommended) Model representation for reinforcement learning agents

예제

모두 축소

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

모델을 엽니다.

mdl = 'rlSimplePendulumModel';
open_system(mdl)

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

obsInfo = rlNumericSpec([3 1]) % vector of 3 observations: sin(theta), cos(theta), d(theta)/dt
obsInfo = 
  rlNumericSpec with properties:

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

actInfo = rlFiniteSetSpec([-2 0 2]) % 3 possible values for torque: -2 Nm, 0 Nm and 2 Nm
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

강화 학습 에이전트의 액터에 각각의 이산 행동 공간을 갖는 여러 개의 출력이 있는 경우 rlFiniteSetSpec 객체를 사용하여 가능한 이산 행동 조합을 지정할 수 있습니다.

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에 개발됨