メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

rlMDPEnv

強化学習のためのマルコフ決定過程環境の作成

説明

マルコフ決定過程 (MDP) は、状態と観測値が有限空間に属し、確率的ルールが状態遷移を制御する離散時間の確率的制御プロセスです。これは、結果が部分的にランダムであり、部分的に判定者の制御下にある状況での判定をモデル化するための数学的なフレームワークを提供します。MDP は、強化学習を使用して解決された最適化問題を研究するのに役立ちます。rlMDPEnv を使用し、MATLAB® で強化学習のためのマルコフ決定過程環境を作成します。

作成

説明

env = rlMDPEnv(MDP) は、指定された MDP モデルを使用して、強化学習環境 env を作成します。

入力引数

すべて展開する

マルコフ決定過程モデル。次のいずれかのオブジェクトとして指定します。

  • createGridWorld 関数を使用して作成された GridWorld オブジェクト

    関数

  • createMDP 関数を使用して作成された GenericMDP オブジェクト

プロパティ

すべて展開する

マルコフ決定過程モデル。GridWorld オブジェクトまたは GenericMDP オブジェクトとして指定します。

例: env.Model=createMDP(3,["left";"right"])

リセット関数。関数ハンドルとして指定します。

例: env.ResetFcn=@() randi(3)

オブジェクト関数

getActionInfoObtain action data specifications from reinforcement learning environment, agent, or experience buffer
getObservationInfoObtain observation data specifications from reinforcement learning environment, agent, or experience buffer
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] (図の赤い円で示した 2 行目の 1 列目) から開始する。

  3. セル [5,5] (青いセル) の終了状態に到達すると、エージェントは報酬 +10 を受け取る。

  4. 環境には、セル [2,4] からセル [4,4] への、+5 の報酬を伴う特別なジャンプが含まれる (青い矢印)。

  5. エージェントは、セル [3,3]、[3,4]、[3,5]、および [4,3] (黒いセル) の障害物によってブロックされる。

  6. 他のすべてのアクションは報酬が -1 される。

Basic five-by-five grid world with agent (indicated by a red circle) positioned on the top left corner, terminal location (indicated by a light blue square) in the bottom right corner, and four obstacle squares, in black, in the middle.

まず、関数 createGridWorld を使用して GridWorld オブジェクトを作成します。

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

                GridSize: [5 5]
            CurrentState: "[1,1]"
                  States: [25×1 string]
                 Actions: [4×1 string]
                       T: [25×25×4 double]
                       R: [25×25×4 double]
          ObstacleStates: [0×1 string]
          TerminalStates: [0×1 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: [1×1 rl.env.GridWorld]
    ResetFcn: []

関数 plot を使用すると、グリッド ワールド環境を可視化できます。

plot(env)

Figure contains an axes object. The hidden axes object contains 7 objects of type line, patch.

getActionInfo関数とgetObservationInfo関数を使用して、環境からアクション仕様オブジェクトと観測仕様オブジェクトを抽出します。

actInfo = getActionInfo(env)
actInfo = 
  rlFiniteSetSpec with properties:

       Elements: [4×1 double]
           Name: "MDP Actions"
    Description: [0×0 string]
      Dimension: [1 1]
       DataType: "double"

obsInfo = getObservationInfo(env)
obsInfo = 
  rlFiniteSetSpec with properties:

       Elements: [25×1 double]
           Name: "MDP Observations"
    Description: [0×0 string]
      Dimension: [1 1]
       DataType: "double"

これで、アクション仕様と観測仕様を使用して環境用のエージェントを作成し、train関数とsim関数を使用して環境内でのエージェントの学習とシミュレーションを行うことができるようになりました。

バージョン履歴

R2019a で導入