Main Content

rlMDPEnv

강화 학습을 위한 마르코프 결정 과정 환경 만들기

설명

마르코프 결정 과정(MDP)은 이산시간 확률 제어 과정입니다. MDP는 결과가 어느 정도는 무작위적이고 어느 정도는 의사 결정자가 제어할 수 있는 상황에서 의사 결정을 모델링할 수 있는 수학적 프레임워크를 제공합니다. MDP는 강화 학습을 사용하여 해결된 최적화 문제를 연구하는 데 유용합니다. rlMDPEnv를 사용하여 MATLAB®에서 강화 학습을 위한 마르코프 결정 과정 환경을 만듭니다.

생성

설명

예제

env = rlMDPEnv(MDP)는 지정된 MDP 모델을 갖는 강화 학습 환경 env를 만듭니다.

입력 인수

모두 확장

마르코프 결정 과정 모델로, 다음 중 하나로 지정됩니다.

속성

모두 확장

마르코프 결정 과정 모델로, GridWorld 객체 또는 GenericMDP 객체로 지정됩니다.

재설정 함수로, 함수 핸들로 지정됩니다.

객체 함수

getActionInfo강화 학습 환경, 에이전트 또는 경험 버퍼에서 행동 데이터 사양 가져오기
getObservationInfo강화 학습 환경, 에이전트 또는 경험 버퍼에서 관측값 데이터 사양 가져오기
simSimulate trained reinforcement learning agents within specified environment
trainTrain reinforcement learning agents within a specified environment
validateEnvironmentValidate custom reinforcement learning environment

예제

모두 축소

이 예제에서는 다음 규칙을 갖는 5×5 그리드 월드가 있다고 가정해 보겠습니다.

  1. 테두리로 경계가 지어진 5×5 그리드 월드는 4가지 가능한 행동(북쪽 = 1, 남쪽 = 2, 동쪽 = 3, 서쪽 = 4)을 가집니다.

  2. 에이전트는 셀 [2,1](두 번째 행, 첫 번째 열)부터 시작합니다.

  3. 에이전트가 셀 [5,5](파란색)의 종료 상태에 도달하면 보상으로 +10을 받습니다.

  4. 환경에는 셀 [2,4]에서 셀 [4,4]로의 특별한 점프가 포함되어 있으며, 보상으로 +5가 주어집니다.

  5. 에이전트는 셀 [3,3], [3,4], [3,5] 및 [4,3](검은색 셀)에서 장애물로 막혀 있습니다.

  6. 다른 모든 행동에서는 보상으로 -1이 주어집니다.

먼저, createGridWorld 함수를 사용하여 GridWorld 객체를 만듭니다.

GW = createGridWorld(5,5)
GW = 
  GridWorld with properties:

                GridSize: [5 5]
            CurrentState: "[1,1]"
                  States: [25x1 string]
                 Actions: [4x1 string]
                       T: [25x25x4 double]
                       R: [25x25x4 double]
          ObstacleStates: [0x1 string]
          TerminalStates: [0x1 string]
    ProbabilityTolerance: 8.8818e-16

이제 초기 상태, 종료 상태, 장애물 상태를 설정합니다.

GW.CurrentState = '[2,1]';
GW.TerminalStates = '[5,5]';
GW.ObstacleStates = ["[3,3]";"[3,4]";"[3,5]";"[4,3]"];

장애물 상태에 대한 상태 천이 행렬을 업데이트하고, 장애물 상태에 대해 점프 규칙을 설정합니다.

updateStateTranstionForObstacles(GW)
GW.T(state2idx(GW,"[2,4]"),:,:) = 0;
GW.T(state2idx(GW,"[2,4]"),state2idx(GW,"[4,4]"),:) = 1;

그런 다음, 보상 천이 행렬로 보상을 정의합니다.

nS = numel(GW.States);
nA = numel(GW.Actions);
GW.R = -1*ones(nS,nS,nA);
GW.R(state2idx(GW,"[2,4]"),state2idx(GW,"[4,4]"),:) = 5;
GW.R(:,state2idx(GW,GW.TerminalStates),:) = 10;

이제 rlMDPEnvGridWorld 객체 GW를 사용하여 그리드 월드 환경을 만듭니다.

env = rlMDPEnv(GW)
env = 
  rlMDPEnv with properties:

       Model: [1x1 rl.env.GridWorld]
    ResetFcn: []

plot 함수를 사용하여 그리드 월드 환경을 시각화할 수 있습니다.

plot(env)

버전 내역

R2019a에 개발됨