10

単純なマルコフ決定プロセスWikipediaの値反復アルゴリズムをPython で実装しました。特定のマルコフ過程の構造 (状態、アクション、遷移、報酬) を保持し、それを反復するために、次のデータ構造を使用しました。

  1. 状態とそれらの状態で使用可能なアクションの辞書:

    SA = { 'state A': {' action 1', 'action 2', ..}, ...}

  2. 遷移確率の辞書:

    T = {('state A', 'action 1'): {'state B': probability}, ...}

  3. 報酬の辞書:

    R = {('state A', 'action 1'): {'state B': reward}, ...}.

私の質問は次のとおりです。これは正しいアプローチですか?MDP に (Python で) 最も適したデータ構造は何ですか?

4

3 に答える 3

10

以前に Python でマルコフ決定プロセスを実装したことがあり、次のコードが役立つことがわかりました。

http://aima.cs.berkeley.edu/python/mdp.html

このコードは、Stuart Russell と Peter Norvig による「Artificial Intelligence: A Modern Approach」から引用されています。

于 2013-01-11T08:43:04.750 に答える
9

データ構造が適切かどうかは、主にデータをどう扱うかによって決まります。プロセスを繰り返したいと述べているので、この目的のためにデータ構造を最適化してください。

マルコフ過程の遷移は、行列の乗算によってモデル化されることがよくあります。遷移確率Pa(s1,s2)と報酬Ra(s1,s2)は、(場合によっては疎な) 行列によって記述され、状態PaによってRaインデックス付けされます。これにはいくつかの利点があると思います。

  • これに numpy 配列を使用すると、おそらく辞書よりも索引付けが高速になります。
  • また、状態遷移は、行列の乗算によって簡単に記述できます。
  • たとえば、ルーレット ホイールの選択によるプロセス シミュレーションは、遷移マトリックスの対応する列を選択するだけでよいため、より速く、より明確に実装されます。
于 2012-12-20T21:09:12.507 に答える