Linux | Mac OS X | Windows |
---|---|---|
該套件提供了一個用於處理馬可夫決策過程(MDP)和部分可觀察馬可夫決策過程(POMDP)的核心介面。 POMDPTools 套件可作為 POMDPs.jl 介面的“標準庫”,提供常用元件(例如策略、信賴更新器、發行版和模擬器)的實作。
我們的目標是為以下方面提供通用的程式設計詞彙:
POMDPs.jl 與其他生態系整合:
如需詳細介紹,請查看我們的 Julia Academy 課程!如需協助,請在 GitHub 討論標籤中發佈。我們歡迎任何人的貢獻!有關貢獻的信息,請參閱 CONTRIBUTING.md。
可以使用 Julia 的套件管理器安裝 POMDPs.jl 和關聯的求解器套件。例如,要安裝 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 課程之外,還可以在此處找到詳細的文件和範例。
許多軟體包使用 POMDPs.jl 接口,包括 MDP 和 POMDP 求解器、支援工具以及 POMDPs.jl 接口的擴展。 POMDPs.jl 和 JuliaPOMDP 專案中的所有套件在 Linux 上都完全支援。所有本機求解器*都支援 OSX 和 Windows,大多數非本機求解器應該可以工作,但可能需要額外的配置。
POMDPs.jl 本身僅包含用於溝通問題定義的核心介面;這些包包含常用元件的實作:
Package | Build | Coverage |
---|---|---|
POMDPTools(託管在此儲存庫中) | ||
粒子過濾器 |
許多模型已使用 POMDPs.jl 介面在各種專案中實作。這個列表包含了一些常用的模型:
Package | Build | Coverage |
---|---|---|
POMDP模型 | ||
雷射標籤 | ||
岩樣 | ||
標籤POMDP問題 | ||
無人機監控 | ||
連續世界 | ||
VDP標籤2 | ||
RoombaPOMDP(Roomba 在地化) |
Package | Build/Coverage | 在線的/ 離線 | 連續的 狀態 - 行動 | 評級3 |
---|---|---|---|---|
離散值迭代 | 離線 | 神經網路 | ★★★★★ | |
局部近似值迭代 | 離線 | 延尼 | ★★ | |
全域近似值迭代 | 離線 | 延尼 | ★★ | |
MCTS(蒙特卡羅樹搜尋) | 在線的 | Y (DPW)-Y (DPW) | ★★★★ |
Package | Build/Coverage | 在線的/ 離線 | 連續的 狀態-行動-觀察 | 評級3 |
---|---|---|---|---|
QMDP(次優) | 離線 | 神經網路 | ★★★★★ | |
FIB(次優) | 離線 | 神經網路 | ★★ | |
信念網格值迭代 | 離線 | 神經網路 | ★★ | |
SARSOP* | 離線 | 神經網路 | ★★★★ | |
本地SARSOP | 離線 | 神經網路 | ★★★★ | |
粒子過濾樹(SparsePFT、PFT-DPW) | 在線的 | YY 2 -Y | ★★★ | |
基礎POMCP | 在線的 | 延尼1號 | ★★★★ | |
阿德斯波特 | 在線的 | 延尼1號 | ★★★★ | |
阿達OPS | 在線的 | 元年 | ★★★★ | |
MCVI | 離線 | 元年 | ★★ | |
POMDP 求解* | 離線 | 神經網路 | ★★★ | |
增量剪枝 | 離線 | 神經網路 | ★★★ | |
聚甲基丙烯酸甲酯 | 在線的 | YY 2 -Y | ★★★ | |
原子能電磁系統 | 在線的 | 神經網路 | ★★ | |
基於點的值迭代 | 離線 | 神經網路 | ★★ |
1 :將運行,但不會收斂到最優解
2 :將運行,但尚未證明收斂到最佳解決方案,並且它可能在多維動作空間上效果不佳。另請參閱 https://github.com/michaelhlim/VOOTreeSearch.jl。
Package | Build/Coverage | 連續的 州 | 連續的 行動 | 評級3 |
---|---|---|---|---|
表格TD學習 | 氮 | 氮 | ★★ | |
深度學習 | Y 1 | 氮 | ★★★ |
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}
}