Main Content

createMDP

マルコフ決定過程モデルの作成

説明

MDP = createMDP(states,actions) は、指定された状態とアクションを使用してマルコフ決定過程モデルを作成します。

すべて折りたたむ

8 つの状態と 2 つの可能なアクションをもつ MDP モデルを作成します。

MDP = createMDP(8,["up";"down"]);

状態遷移とそれに関連する報酬を指定します。

% 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"];

入力引数

すべて折りたたむ

モデルの状態。次のいずれかとして指定します。

  • 正の整数 — モデルの状態の数を指定します。この場合、各状態は既定の名前をもちます (最初の状態は "s1" など)。

  • string ベクトル — 状態名を指定します。この場合、状態の総数はベクトルの長さに等しくなります。

モデルのアクション。次のいずれかとして指定します。

  • 正の整数 — モデルのアクションの数を指定します。この場合、各アクションは既定の名前をもちます (最初のアクションは "a1" など)。

  • string ベクトル — アクション名を指定します。この場合、アクションの総数はベクトルの長さに等しくなります。

出力引数

すべて折りたたむ

MDP モデル。以下のプロパティをもつ GenericMDP オブジェクトとして返されます。

現在の状態の名前。string として指定します。

状態名。状態の数に等しい長さの string ベクトルとして指定します。

アクション名。アクションの数に等しい長さの string ベクトルとして指定します。

状態遷移行列。環境内でエージェントが取り得る動きを決定する 3 次元配列として指定します。状態遷移行列 T は、アクション a を実行することによって、エージェントが現在の状態 s から、考えられる次の状態 s' に移行する可能性を示す確率行列です。T は S×S×A の配列です。ここで、S は状態の数、A はアクションの数です。これは次の式で与えられます。

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

あるアクションに続く非終了状態 s からの遷移確率の和は 1 でなければなりません。したがって、ある状態からのすべての確率的遷移は同時に指定しなければなりません。

たとえば、アクション 4 の後の状態 1 が状態 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];

報酬遷移行列は、環境内でアクションを実行した後にエージェントが受け取る報酬の量を決定する 3 次元配列として指定します。R の形状とサイズは状態遷移行列 T と同じです。アクション a を実行することによる状態 s から状態 s' への移行に対する報酬は、次の式で与えられます。

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

グリッド ワールドでの終了状態名。状態名の string ベクトルとして指定します。

バージョン履歴

R2019a で導入