Linux | Mac OS X | Windows |
---|---|---|
このパッケージは、マルコフ決定プロセス (MDP) および部分的に観察可能なマルコフ決定プロセス (POMDP) を操作するためのコア インターフェイスを提供します。 POMDPTools パッケージは、POMDPs.jl インターフェイスの「標準ライブラリ」として機能し、ポリシー、信念アップデータ、ディストリビューション、シミュレータなどの一般的に使用されるコンポーネントの実装を提供します。
私たちの目標は、以下に対する共通のプログラミング語彙を提供することです。
POMDPs.jl は他のエコシステムと統合します。
詳しい紹介については、Julia Academy コースをご覧ください。ヘルプが必要な場合は、GitHub ディスカッション タブに投稿してください。誰からの投稿も歓迎します。貢献については、CONTRIBUTING.md を参照してください。
POMDPs.jl および関連するソルバー パッケージは、Julia のパッケージ マネージャーを使用してインストールできます。たとえば、POMDPs.jl と QMDP ソルバー パッケージをインストールするには、Julia REPL に次のように入力します。
using Pkg; Pkg . add ( " POMDPs " ); Pkg . add ( " QMDP " )
QMDP ソルバーによって作成されたポリシーを使用して、従来の Tiger POMDP の単純なシミュレーションを実行するには、次のコードを使用できます (POMDPs.jl は、このように明示的に定義された分布を伴う離散問題に限定されないことに注意してください)。
using POMDPs, QuickPOMDPs, POMDPTools, QMDP
m = QuickPOMDP (
states = [ " left " , " right " ],
actions = [ " left " , " right " , " listen " ],
observations = [ " left " , " right " ],
initialstate = Uniform ([ " left " , " right " ]),
discount = 0.95 ,
transition = function (s, a)
if a == " listen "
return Deterministic (s) # tiger stays behind the same door
else # a door is opened
return Uniform ([ " left " , " right " ]) # reset
end
end ,
observation = function (s, a, sp)
if a == " listen "
if sp == " left "
return SparseCat ([ " left " , " right " ], [ 0.85 , 0.15 ]) # sparse categorical distribution
else
return SparseCat ([ " right " , " left " ], [ 0.85 , 0.15 ])
end
else
return Uniform ([ " left " , " right " ])
end
end ,
reward = function (s, a)
if a == " listen "
return - 1.0
elseif s == a # the tiger was found
return - 100.0
else # the tiger was escaped
return 10.0
end
end
)
solver = QMDPSolver ()
policy = solve (solver, m)
rsum = 0.0
for (s,b,a,o,r) in stepthrough (m, policy, " s,b,a,o,r " , max_steps = 10 )
println ( " s: $s , b: $([s => pdf (b,s) for s in states (m)]) , a: $a , o: $o " )
global rsum += r
end
println ( " Undiscounted reward was $rsum . " )
その他の例と視覚化を含む例については、ドキュメントの「POMDPs.jl の問題の例とギャラリー」セクションを参照してください。
上記の Julia Academy コースに加えて、詳細なドキュメントと例はここで見つけることができます。
MDP および POMDP ソルバー、サポート ツール、POMDPs.jl インターフェイスの拡張機能など、多くのパッケージが POMDPs.jl インターフェイスを使用します。 POMDPs.jl と JuliaPOMDP プロジェクトのすべてのパッケージは Linux で完全にサポートされています。 OSX と Windows はすべてのネイティブ ソルバー* でサポートされており、ほとんどの非ネイティブ ソルバーは動作しますが、追加の構成が必要になる場合があります。
POMDPs.jl 自体には、問題定義について通信するためのコア インターフェイスのみが含まれています。これらのパッケージには、一般的に使用されるコンポーネントの実装が含まれています。
Package | Build | Coverage |
---|---|---|
POMDPTools (このリポジトリでホストされています) | ||
パーティクルフィルター |
さまざまなプロジェクトで、POMDPs.jl インターフェイスを使用して多くのモデルが実装されています。このリストには、一般的に使用されるモデルがいくつか含まれています。
Package | Build | Coverage |
---|---|---|
POMDPモデル | ||
レーザータグ | ||
ロックサンプル | ||
タグPOMDP問題 | ||
ドローン監視 | ||
コンティニュアムワールド | ||
VDPタグ2 | ||
ルンバPOMDP(ルンバローカリゼーション) |
Package | Build/Coverage | オンライン/ オフライン | 継続的 状態 - アクション | 評価3 |
---|---|---|---|---|
離散値反復 | オフライン | NN | ★★★★★ | |
Local近似値反復 | オフライン | YN | ★★ | |
グローバル近似値反復 | オフライン | YN | ★★ | |
MCTS (モンテカルロ ツリー検索) | オンライン | Y (DPW)-Y (DPW) | ★★★★ |
Package | Build/Coverage | オンライン/ オフライン | 継続的 状態-アクション-観察 | 評価3 |
---|---|---|---|---|
QMDP (次善) | オフライン | NNN | ★★★★★ | |
FIB (次善) | オフライン | NNN | ★★ | |
信念グリッド値反復 | オフライン | NNN | ★★ | |
サーソップ* | オフライン | NNN | ★★★★ | |
ネイティブSARSOP | オフライン | NNN | ★★★★ | |
ParticleFilterTree (SparsePFT、PFT-DPW) | オンライン | YY2 -Y | ★★★ | |
基本POMCP | オンライン | YNN1 | ★★★★ | |
アーデスポット | オンライン | YNN1 | ★★★★ | |
AdaOPS | オンライン | YNY | ★★★★ | |
MCVI | オフライン | YNY | ★★ | |
POMDP解決* | オフライン | NNN | ★★★ | |
増分プルーニング | オフライン | NNN | ★★★ | |
ポンパウ | オンライン | YY2 -Y | ★★★ | |
AEMS | オンライン | NNN | ★★ | |
ポイントベースの値の反復 | オフライン | NNN | ★★ |
1 : 実行しますが、最適解には収束しません。
2 : 実行できますが、最適解への収束は証明されておらず、多次元アクション空間ではうまく機能しない可能性があります。 https://github.com/michaelhlim/VOOTreeSearch.jl も参照してください。
Package | Build/Coverage | 継続的 州 | 継続的 アクション | 評価3 |
---|---|---|---|---|
表形式TD学習 | N | N | ★★ | |
DeepQラーニング | Y1 | N | ★★★ |
1 : POMDP の場合、状態の代わりに観測値をポリシーへの入力として使用します。
3主観的な評価。変更する必要があると思われる場合は、問題を報告してください
Package |
---|
専制君主 |
*これらのパッケージには Julia 以外の依存関係が必要です
POMDP があなたの研究に役立ち、それを認めたい場合は、この論文を引用してください。
@article{egorov2017pomdps,
author = {Maxim Egorov and Zachary N. Sunberg and Edward Balaban and Tim A. Wheeler and Jayesh K. Gupta and Mykel J. Kochenderfer},
title = {{POMDP}s.jl: A Framework for Sequential Decision Making under Uncertainty},
journal = {Journal of Machine Learning Research},
year = {2017},
volume = {18},
number = {26},
pages = {1-5},
url = {http://jmlr.org/papers/v18/16-300.html}
}