Linux | Mac OS X | Windows |
---|---|---|
توفر هذه الحزمة واجهة أساسية للعمل مع عمليات اتخاذ القرار ماركوف (MDPs) وعمليات اتخاذ القرار ماركوف التي يمكن ملاحظتها جزئيًا (POMDPs). تعمل حزمة POMDPTools بمثابة "مكتبة قياسية" لواجهة POMDPs.jl، حيث توفر تطبيقات للمكونات شائعة الاستخدام مثل السياسات ومُحدِّثات المعتقدات والتوزيعات وأجهزة المحاكاة.
هدفنا هو توفير مفردات برمجة مشتركة لـ:
يتكامل POMDPs.jl مع الأنظمة البيئية الأخرى:
للحصول على مقدمة تفصيلية، قم بمراجعة دورة أكاديمية جوليا الخاصة بنا! للحصول على المساعدة، يرجى النشر في علامة تبويب مناقشات GitHub. نحن نرحب بالمساهمات من أي شخص! راجع CONTRIBUTING.md للحصول على معلومات حول المساهمة.
يمكن تثبيت POMDPs.jl وحزم الحلول المرتبطة باستخدام مدير حزم Julia. على سبيل المثال، لتثبيت POMDPs.jl وحزمة حل QMDP، اكتب ما يلي في Julia REPL:
using Pkg; Pkg . add ( " POMDPs " ); Pkg . add ( " QMDP " )
لتشغيل محاكاة بسيطة لـ Tiger POMDP الكلاسيكي باستخدام سياسة تم إنشاؤها بواسطة محلل QMDP، يمكنك استخدام الكود التالي (لاحظ أن 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 في الوثيقة.
بالإضافة إلى دورة أكاديمية جوليا المذكورة أعلاه، يمكن العثور على وثائق وأمثلة مفصلة هنا.
تستخدم العديد من الحزم واجهة POMDPs.jl، بما في ذلك أدوات حل MDP وPOMDP وأدوات الدعم وامتدادات واجهة POMDPs.jl. POMDPs.jl وجميع الحزم في مشروع JuliaPOMDP مدعومة بالكامل على Linux. يتم دعم OSX وWindows لجميع أدوات الحل الأصلية*، ويجب أن تعمل معظم أدوات الحل غير الأصلية، ولكنها قد تتطلب تكوينًا إضافيًا.
يحتوي POMDPs.jl نفسه على الواجهة الأساسية فقط للتواصل حول تعريفات المشكلة؛ تحتوي هذه الحزم على تطبيقات المكونات شائعة الاستخدام:
Package | Build | Coverage |
---|---|---|
POMDPTools (مستضاف في هذا المستودع) | ||
مرشحات الجسيمات |
تم تنفيذ العديد من النماذج باستخدام واجهة POMDPs.jl لمشاريع مختلفة. تحتوي هذه القائمة على بعض النماذج شائعة الاستخدام:
Package | Build | Coverage |
---|---|---|
POMDPModels | ||
علامة الليزر | ||
RockSample | ||
مشكلة العلامةPOMDP | ||
مراقبة الطائرات بدون طيار | ||
عالم الأستمرارية | ||
VDPTag2 | ||
RoombaPOMDPs (تعريب Roomba) |
Package | Build/Coverage | متصل/ غير متصل | مستمر الدول - الإجراءات | التقييم 3 |
---|---|---|---|---|
DiscreteValueIteration | غير متصل | ن.ن | ★★★★★ | |
LocalApproximationValueIteration | غير متصل | YN | ★★ | |
GlobalApproximationValueIteration | غير متصل | YN | ★★ | |
MCTS (بحث شجرة مونت كارلو) | متصل | ص (DPW)-Y (DPW) | ★★★★ |
Package | Build/Coverage | متصل/ غير متصل | مستمر الدول-الإجراءات-الملاحظات | التقييم 3 |
---|---|---|---|---|
QMDP (دون المستوى الأمثل) | غير متصل | نن | ★★★★★ | |
فيب (دون المستوى الأمثل) | غير متصل | نن | ★★ | |
BeliefGridValueIteration | غير متصل | نن | ★★ | |
سارسوب* | غير متصل | نن | ★★★★ | |
NativeSARSOP | غير متصل | نن | ★★★★ | |
أشجار مرشح الجسيمات (SparsePFT، PFT-DPW) | متصل | ص 2 -ص | ★★★ | |
BasicPOMCP | متصل | ين 1 | ★★★★ | |
أرديسبوت | متصل | ين 1 | ★★★★ | |
AdaOPS | متصل | YNY | ★★★★ | |
ماكفي | غير متصل | YNY | ★★ | |
بومدبسولف* | غير متصل | نن | ★★★ | |
التقليم التزايدي | غير متصل | نن | ★★★ | |
بومبكو | متصل | ص 2 -ص | ★★★ | |
AEMS | متصل | نن | ★★ | |
PointBasedValueIteration | غير متصل | نن | ★★ |
1 : سيتم تشغيله، ولكن لن يصل إلى الحل الأمثل
2 : سيتم تشغيله، ولكن لم يتم إثبات التقارب مع الحل الأمثل، ومن المحتمل ألا يعمل بشكل جيد في مساحات العمل متعددة الأبعاد. انظر أيضًا https://github.com/michaelhlim/VOOTreeSearch.jl.
Package | Build/Coverage | مستمر الدول | مستمر الإجراءات | التقييم 3 |
---|---|---|---|---|
تعلم جدولي | ن | ن | ★★ | |
التعلم العميق | ص 1 | ن | ★★★ |
1 : بالنسبة لـ POMDPs، ستستخدم الملاحظة بدلاً من الحالة كمدخل للسياسة.
3 تصنيف شخصي. قم بتقديم مشكلة إذا كنت تعتقد أنه يجب تغييرها
Package |
---|
مستبد |
* تتطلب هذه الحزم تبعيات غير جوليا
إذا كانت POMDPs مفيدة في بحثك وترغب في الاعتراف بها، فيرجى الاستشهاد بهذه الورقة:
@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}
}