createGridWorld
強化学習用の 2 次元グリッド ワールドの作成
説明
例
グリッド ワールド環境の作成
この例では、以下のルールをもつ 5 行 5 列のグリッド ワールドについて考えます。
境界線で囲まれた 5 行 5 列のグリッド ワールド。4 つのアクション (北 = 1、南 = 2、東 = 3、西 = 4) が可能。
エージェントはセル [2,1] (2 行目の 1 列目) から開始する。
セル [5,5] (青) の終了状態に到達すると、エージェントは報酬 +10 を受け取る。
環境には、セル [2,4] からセル [4,4] への、+5 の報酬を伴う特別なジャンプが含まれる。
エージェントは、セル [3,3]、[3,4]、[3,5]、および [4,3] (黒いセル) の障害物によってブロックされる。
他のすべてのアクションは報酬が -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;
次に、rlMDPEnv
を使用し、GridWorld
オブジェクト GW
を使用してグリッド ワールド環境を作成します。
env = rlMDPEnv(GW)
env = rlMDPEnv with properties: Model: [1x1 rl.env.GridWorld] ResetFcn: []
関数 plot
を使用すると、グリッド ワールド環境を可視化できます。
plot(env)
入力引数
m
— グリッド ワールドの行数
スカラー
グリッド ワールドの行数。スカラーとして指定します。
n
— グリッド ワールドの列数
スカラー
グリッド ワールドの列数。スカラーとして指定します。
moves
— アクション名
'Standard'
(既定値) | 'Kings'
アクション名。'Standard'
または 'Kings'
のいずれかとして指定します。moves
の設定によって、以下のようになります。
'Standard'
の場合、アクションは['N';'S';'E';'W']
。'Kings'
の場合、アクションは['N';'S';'E';'W';'NE';'NW';'SE';'SW']
。
出力引数
GW
— 2 次元グリッド ワールド
GridWorld
オブジェクト
2 次元グリッド ワールド。以下にリストされているプロパティをもつ GridWorld
オブジェクトとして返されます。詳細については、Create Custom Grid World Environmentsを参照してください。
GridSize
— グリッド ワールドのサイズ
[m,n]
ベクトル
グリッド ワールドのサイズ。[m,n]
ベクトルとして指定します。
CurrentState
— 現在の状態の名前
string
現在の状態の名前。string として指定します。
Actions
— アクション名
string ベクトル
アクション名。string ベクトルとして指定します。Actions
ベクトルの長さは、引数 moves
によって決まります。
Actions
は次の長さの string ベクトルです。
4 (
moves
が'Standard'
として指定されている場合)。8 (
moves
が'Kings'
として指定されている場合)。
T
— 状態遷移行列
3 次元配列
状態遷移行列。環境内でエージェントが取り得る動きを決定する 3 次元配列として指定します。状態遷移行列 T
は、アクション a
を実行することによって、エージェントが現在の状態 s
から、考えられる次の状態 s'
に移行する可能性を示す確率行列です。T
は、次で与えられます。
T
は次のようになります。
K
×K
×4 の配列 (moves
が'Standard'
として指定されている場合)。ここで、K
=m
*n
。K
×K
×8 の配列 (moves
が'Kings'
として指定されている場合)。
R
— 報酬遷移行列
3 次元配列
報酬遷移行列は 3 次元配列として指定され、環境内でアクションを実行した後にエージェントが受け取る報酬の量を決定します。R
の形状とサイズは状態遷移行列 T
と同じです。報酬遷移行列 R
は、次で与えられます。
R
は次のようになります。
K
×K
×4 の配列 (moves
が'Standard'
として指定されている場合)。ここで、K
=m
*n
。K
×K
×8 の配列 (moves
が'Kings'
として指定されている場合)。
ObstacleStates
— グリッド ワールド内で到達できない状態名
string ベクトル
グリッド ワールド内で到達できない状態名。string ベクトルとして指定します。
TerminalStates
— グリッド ワールドでの終了状態名
string ベクトル
グリッド ワールドでの終了状態名。string ベクトルとして指定します。
バージョン履歴
R2019a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)