PDLStream هو إطار تخطيط يتكون من لغة عمل ومجموعة من الخوارزميات لتخطيط الذكاء الاصطناعي (AI) في ظل وجود إجراءات أخذ العينات. يعمل PDLStream على توسيع لغة تعريف مجال التخطيط (PDDL) من خلال تقديم التدفقات والمواصفات التعريفية لإجراءات أخذ العينات. تعد خوارزميات PDLStream مستقلة عن المجال وتحل مشكلات PDLStream من خلال وصف الصندوق الأسود فقط لكل جهاز أخذ عينات. كان التطبيق المحفز لـ PDLStream هو تخطيط المهام والحركة للروبوت للأغراض العامة (TAMP).
فرع pddlstream الافتراضي (الرئيسي) هو أحدث "إصدار" مستقر لـ pddlstream . فرع pddlstream الهابط هو الإصدار الأحدث والمتقدم من pddlstream ولكنه أيضًا تجريبي إلى حد ما.
كايلان ر. جاريت، توماس لوزانو بيريز، ليزلي بي كيلبلينج. PDLStream: دمج المخططين الرمزيين وأخذ عينات الصندوق الأسود عبر التخطيط التكيفي المتفائل، المؤتمر الدولي للتخطيط والجدولة الآلي (ICAPS)، 2020.
كيلان غاريت: [اسم المستخدم]@csail.mit.edu
PDLStream هو "الإصدار الثالث" من إطار عمل تخطيط PDLStream/STRIPStream، والذي يهدف إلى استبدال الإصدارات السابقة:
يقوم PDLStream بإجراء العديد من التحسينات التمثيلية والخوارزمية على هذه الإصدارات. والجدير بالذكر أنه يلتزم باتفاقيات PDDL وبناء الجملة كلما أمكن ذلك ويحتوي على العديد من الخوارزميات الجديدة.
$ git clone --recursive --branch main [email protected]:caelan/pddlstream.git
$ cd pddlstream
pddlstream$ git submodule update --init --recursive
pddlstream$ ./downward/build.py
إذا لزم الأمر، راجع وثائق FastDownward للحصول على تعليمات التثبيت الأكثر تفصيلاً.
يدعم PDLStream بشكل فعال python2.7 بالإضافة إلى الإصدار الأحدث من python3.
تأكد من تحديث الوحدات الفرعية لـ pddlstream بشكل متكرر عند سحب التزامات جديدة.
pddlstream$ git pull --recurse-submodules
يحتوي هذا المستودع على العديد من أمثلة نطاقات PDLStream الآلية وغير الآلية.
قم بتثبيت PyBullet على نظام التشغيل OS X أو Linux باستخدام:
$ pip install pybullet numpy scipy
أمثلة:
pddlstream$ python -m examples.pybullet.tamp.run
pddlstream$ python -m examples.pybullet.pr2.run
pddlstream$ python -m examples.pybullet.turtlebot_rovers.run
pddlstream$ python -m examples.pybullet.pr2_rovers.run
pddlstream$ python -m examples.pybullet.pr2_belief.run
pddlstream$ python -m examples.pybullet.kuka.run
راجع https://github.com/caelan/pybullet-planning لمزيد من المعلومات حول مكتبة أساسيات التخطيط في PyBullet.
قم بتثبيت numpy وPython TKinter على Linux باستخدام:
$ sudo apt-get install python-tk
$ pip install numpy
أمثلة:
pddlstream$ python -m examples.continuous_tamp.run
pddlstream$ python -m examples.motion.run
pddlstream$ python -m examples.discrete_tamp.run
pddlstream$ python -m examples.discrete_tamp.run
أمثلة بسيطة يمكن تشغيلها بدون تبعيات إضافية:
pddlstream$ python -m examples.blocksworld.run
pddlstream$ python -m examples.blocksworld.run_derived
pddlstream$ python -m examples.kitchen.run
حالات الاختبار أو الوظائف المتقدمة (وغير الموثقة):
pddlstream$ python -m examples.advanced.adl.run
pddlstream$ python -m examples.advanced.defer.run
pddlstream$ python -m examples.advanced.exogenous.run
pddlstream$ python -m examples.advanced.fluent.run
pddlstream$ python -m examples.advanced.satisfy.run
pddlstream$ python -m examples.advanced.wild.run
تم حل أمثلة PDDL IPC غير المعدلة باستخدام مترجم PDLStream المعدل:
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
المشاريع الخارجية التي تستخدم PDLStream:
PDLStream هو إطار تخطيط يتكون من لغة تخطيط واحدة وخوارزميات تخطيط متعددة . تختلف بعض الخوارزميات جذريًا عن غيرها (مثل الخوارزميات التزايدية مقابل التركيز) وبالتالي يمكن أيضًا أن يختلف وقت التخطيط بشكل كبير. عادةً ما يكون أداء الخوارزمية التكيفية أفضل بالنسبة للنطاقات التي تحتوي على العديد من مسارات أخذ العينات المحتملة، مثل مجالات معالجة الروبوت.
يسمح الإجراء التعريفي حل (...) للمستخدم بالتبديل بين الخوارزميات المتاحة باستخدام خوارزمية وسيطة الكلمة الرئيسية = {} .
أوصاف العقار:
تتمتع العديد من خوارزميات pddlstream (ولكن ليس كلها) بمرحلة تخطيط منفصلة يمكن تنفيذها باستخدام أي خوارزمية بحث محدودة لحالة الفضاء، مثل بحث العرض الأول (BFS) والبحث الموحد للتكلفة (UCS). ومع ذلك، نظرًا لأن pddlstream يمتد إلى PDDL، يمكن أيضًا تنفيذ مرحلة التخطيط هذه من خلال خوارزميات التخطيط الكلاسيكية الحديثة، والتي تستفيد من البنية المُعاملة للغات العمل مثل PDDL لتحسين كفاءة التخطيط التجريبي بشكل كبير. تعد خوارزميات البحث الإرشادية الأفضل أولاً، والتي تستمد تلقائيًا الاستدلالات بطريقة مستقلة عن المجال ، أحد الأمثلة على هذه الخوارزميات.
يأتي pddlstream معبأ مسبقًا مع FastDownward، وهي مكتبة غزيرة الإنتاج تحتوي على العديد من خوارزميات تخطيط PDDL للبحث الإرشادي الأفضل. لقد قمت بتكوين عدد صغير من خوارزميات البحث الفعالة والعامة مسبقًا في SEARCH_OPTIONS، والتي يمكن تبديلها باستخدام وسيطة الكلمة الرئيسية مخطط=?. لقد قمت بتصنيفها تقريبًا بالترتيب من الأقل كسولًا (أقل تكلفة) إلى الأكثر كسولًا (أدنى وقت تشغيل):
يختلف وقت تشغيل مرحلة التخطيط المنفصلة اعتمادًا على خوارزمية البحث المحددة. بالنسبة للعديد من المشكلات غير العدائية، ستقوم هذه الخوارزميات إما بحل المشكلة على الفور، أو إذا لم تكن جشعة بدرجة كافية، فلن تنتهي في غضون 10 دقائق. أوصي بالبدء بتكوين أكثر جشعًا والانتقال إلى تكوين أقل جشعًا إذا رغبت في ذلك.
يمكن استخدام أي خوارزمية تخطيط PDDL بدلاً من FastDownward؛ ومع ذلك، هناك تحذير هو أن بعض هذه المخططات يتم تنفيذها فقط لدعم مجموعة محدودة من الميزات التمثيلية (على سبيل المثال، لا توجد تأثيرات شرطية، ولا مسندات مشتقة، وما إلى ذلك)، والتي يمكن أن تجعل كلا من النمذجة أكثر صعوبة وفي النهاية التخطيط أقل كفاءة في العديد من العمليات الحقيقية. -مجالات التخطيط العالمية (غير IPC). على الرغم من أنني أوصي بشدة باستخدام FastDownward، إلا أن بعض مخططات PDDL التي تعاملت معها في الماضي وحققت بعض النجاح تشمل:
المخططون الكلاسيكيون
المخططات الرقمية:
المخططون الزمنيون:
المخططون المتنوعون:
تشير المجلدات "المنتهية الصلاحية" إلى التعليمات البرمجية التي لم تعد مدعومة بشكل مستمر وبالتالي فمن المحتمل أن تكون قديمة.
قم بتثبيت Drake على OS X أو Ubuntu باتباع الإرشادات التالية: http://drake.mit.edu/installation.html.
وبدلاً من ذلك، قم بتثبيت Drake من خلال docker باتباع الإرشادات التالية: http://manipulation.csail.mit.edu/install_drake_docker.html. استخدم البرنامج النصي docker_run_bash المناسب مع علامة docker drake-20181128.
أمثلة:
~/pddlstream$ python -m examples.drake.run
يمكن العثور على أمثلة إضافية لـ PDLStream + Drake على: https://github.com/RobotLocomotion/6-881-examples.