Linux | Mac OS X | Windows |
---|---|---|
이 패키지는 Markov 결정 프로세스(MDP) 및 부분적으로 관찰 가능한 Markov 결정 프로세스(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 모델 | ||
레이저태그 | ||
록샘플 | ||
태그POMDD문제 | ||
드론감시 | ||
연속체세계 | ||
VDPTag2 | ||
RoombaPOMDP(룸바 현지화) |
Package | Build/Coverage | 온라인/ 오프라인 | 마디 없는 상태 - 작업 | 등급 3 |
---|---|---|---|---|
이산값반복 | 오프라인 | NN | ★★★★★ | |
LocalApproximationValueIteration | 오프라인 | YN | ★★ | |
전역근사값반복 | 오프라인 | YN | ★★ | |
MCTS(몬테카를로 트리 검색) | 온라인 | Y(DPW)-Y(DPW) | ★★★★ |
Package | Build/Coverage | 온라인/ 오프라인 | 마디 없는 상태-작업-관찰 | 등급 3 |
---|---|---|---|---|
QMDP(차선) | 오프라인 | NNN | ★★★★★ | |
FIB(최적화되지 않음) | 오프라인 | NNN | ★★ | |
신념그리드값반복 | 오프라인 | NNN | ★★ | |
사솝* | 오프라인 | NNN | ★★★★ | |
네이티브SARSOP | 오프라인 | NNN | ★★★★ | |
ParticleFilterTrees(SparsePFT, PFT-DPW) | 온라인 | YY 2 -Y | ★★★ | |
기본POMCP | 온라인 | YNN 1 | ★★★★ | |
아르데스팟 | 온라인 | YNN 1 | ★★★★ | |
AdaOPS | 온라인 | YNY | ★★★★ | |
MCVI | 오프라인 | YNY | ★★ | |
POMDP솔브* | 오프라인 | NNN | ★★★ | |
증분 가지치기 | 오프라인 | NNN | ★★★ | |
POMCPOW | 온라인 | YY 2 -Y | ★★★ | |
에엠스 | 온라인 | NNN | ★★ | |
PointBasedValueIteration | 오프라인 | NNN | ★★ |
1 : 실행되지만 최적의 솔루션으로 수렴되지는 않습니다.
2 : 실행되지만 최적의 솔루션으로의 수렴은 입증되지 않았으며 다차원 작업 공간에서는 제대로 작동하지 않을 가능성이 높습니다. https://github.com/michaelhlim/VOOTreeSearch.jl도 참조하세요.
Package | Build/Coverage | 마디 없는 상태 | 마디 없는 행위 | 등급 3 |
---|---|---|---|---|
테이블 형식TD학습 | N | N | ★★ | |
DeepQ학습 | Y 1 | 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}
}