주요 콘텐츠

createMDP

마르코프 결정 과정 객체 만들기

설명

마르코프 결정 과정(MDP)은 상태와 관측값이 유한한 공간에 속하고 상태 천이가 확률적 규칙을 따르는 이산시간 확률 제어 과정입니다. MDP는 강화 학습을 사용하여 해결된 최적화 문제를 연구하는 데 유용합니다. createMDP 함수를 사용하여 지정된 상태와 천이를 갖는 GenericMDP 객체를 만들 수 있습니다. 그런 다음 객체의 속성 중 일부를 수정하고 이 객체를 rlMDPEnv에 전달하여 에이전트가 상호 작용할 수 있는 환경을 만들 수 있습니다.

MDP = createMDP(states,actions)는 지정된 상태와 행동을 갖는 마르코프 결정 과정 객체를 만듭니다.

예제

예제

모두 축소

8개의 상태와 2개의 가능한 행동을 갖는 GenericMDP 객체를 만듭니다.

MDP = createMDP(8,["up";"down"])
MDP = 
  GenericMDP with properties:

            CurrentState: "s1"
                  States: [8×1 string]
                 Actions: [2×1 string]
                       T: [8×8×2 double]
                       R: [8×8×2 double]
          TerminalStates: [0×1 string]
    ProbabilityTolerance: 8.8818e-16

상태 천이와 관련 보상을 지정합니다.

% State 1 transition and reward
MDP.T(1,2,1) = 1;
MDP.R(1,2,1) = 3;
MDP.T(1,3,2) = 1;
MDP.R(1,3,2) = 1;

% State 2 transition and reward
MDP.T(2,4,1) = 1;
MDP.R(2,4,1) = 2;
MDP.T(2,5,2) = 1;
MDP.R(2,5,2) = 1;

% State 3 transition and reward
MDP.T(3,5,1) = 1;
MDP.R(3,5,1) = 2;
MDP.T(3,6,2) = 1;
MDP.R(3,6,2) = 4;

% State 4 transition and reward
MDP.T(4,7,1) = 1;
MDP.R(4,7,1) = 3;
MDP.T(4,8,2) = 1;
MDP.R(4,8,2) = 2;

% State 5 transition and reward
MDP.T(5,7,1) = 1;
MDP.R(5,7,1) = 1;
MDP.T(5,8,2) = 1;
MDP.R(5,8,2) = 9;

% State 6 transition and reward
MDP.T(6,7,1) = 1;
MDP.R(6,7,1) = 5;
MDP.T(6,8,2) = 1;
MDP.R(6,8,2) = 1;

% State 7 transition and reward
MDP.T(7,7,1) = 1;
MDP.R(7,7,1) = 0;
MDP.T(7,7,2) = 1;
MDP.R(7,7,2) = 0;

% State 8 transition and reward
MDP.T(8,8,1) = 1;
MDP.R(8,8,1) = 0;
MDP.T(8,8,2) = 1;
MDP.R(8,8,2) = 0;

모델의 종료 상태를 지정합니다.

MDP.TerminalStates = ["s7";"s8"];

이제 MDPrlMDPEnv에 전달하여 에이전트를 훈련시키고 시뮬레이션할 수 있는 환경을 만들 수 있습니다.

입력 인수

모두 축소

모델 상태로, 다음 중 하나로 지정됩니다.

  • 양의 정수 — 모델 상태의 개수를 지정합니다. 이 경우 각 상태는 디폴트 이름을 가집니다(예: 첫 번째 상태의 경우 "s1").

  • string형 벡터 — 상태 이름을 지정합니다. 이 경우 총 상태 개수는 벡터의 길이와 같습니다.

모델 행동으로, 다음 중 하나로 지정됩니다.

  • 양의 정수 — 모델 행동의 개수를 지정합니다. 이 경우 각 행동은 디폴트 이름을 가집니다(예: 첫 번째 행동의 경우 "a1").

  • string형 벡터 — 행동 이름을 지정합니다. 이 경우 총 행동 개수는 벡터의 길이와 같습니다.

출력 인수

모두 축소

MDP 모델로, 다음과 같은 속성을 가진 GenericMDP 객체로 반환됩니다.

현재 상태의 이름으로, string형으로 지정됩니다.

예: MDP.CurrentState = "s2";

상태 이름으로, 상태 개수와 같은 길이의 string형 벡터로 지정됩니다.

예: MDP.States = ["America";"Europe";"China"];

행동 이름으로, 행동 개수와 같은 길이의 string형 벡터로 지정됩니다.

예: MDP.Actions = ["GoWest";"GoEast"];

상태 천이 행렬로, 3차원 배열로 지정됩니다. 이는 환경에서 에이전트의 가능한 이동을 결정합니다. 상태 천이 행렬 T는 에이전트가 행동 a를 수행하여 현재 상태 s에서 가능한 다음 상태 s'으로 이동할 가능성을 나타내는 확률 행렬입니다. TS×S×A 배열입니다. 여기서 S는 상태 개수이고 A는 행동 개수입니다. 다음과 같이 표현됩니다.

T(s,s',a) = probability(s'|s,a)

어떤 행동 뒤에 종료가 아닌 상태 s로부터 천이하는 확률은 그 총합이 1 또는 0이어야 합니다. 따라서, 주어진 상태로부터 발생하는 모든 확률적 천이를 동시에 지정해야 합니다.

예를 들어, 상태 1에서 행동 4를 선택하여 상태 2 또는 상태 3으로 이동할 확률이 동일함을 나타내려면 다음 명령을 사용하십시오.

MDP.T(1,[2 3],4) = [0.5 0.5];

또한 어떤 행동 다음에 동일한 상태에 남아 있을 확률을 지정할 수도 있습니다.

MDP.T(1,[1 2 3 4],1) = [0.25 0.25 0.25 0.25];

예: MDP.T(1,[1 2 3],1) = [0.25 0.5 0.25]

보상 천이 행렬로, 3차원 배열로 지정됩니다. 이는 에이전트가 환경에서 행동을 수행한 후에 받는 보상의 양을 결정합니다. R의 크기와 형태는 상태 천이 행렬 T와 동일합니다. 행동 a를 수행하여 상태 s에서 상태 s'으로 이동할 때 얻는 보상은 다음과 같이 표현됩니다.

r = R(s,s',a).

예: MDP.T(1,[1 2 3],1) = [-1 0.5 2]

종료 상태 이름으로, 상태 이름으로 구성된 string형 벡터로 지정됩니다.

예: MDP.TerminalStates = "s3"

버전 내역

R2019a에 개발됨