لقد قمنا بتجميع موقع ويب يحتوي على تاريخ جميع أنظمة التخطيط لعائلة PANDA، وروابط لجميع مشاريع البرامج ذات الصلة، ومعلومات أساسية إضافية بما في ذلك مؤشرات تشرح التقنيات التي تستخدمها الأنظمة المعنية.
هذه هي أداة التحليل لنظام التخطيط pandaPI. وهي مصممة لتحليل مشاكل التخطيط HTN. لغة الإدخال الرئيسية (والوحيدة حاليًا) هي HDDL (انظر الورقة التالية).
إذا كنت تستخدم pandaPIparser في أي من أعمالك المنشورة، فنرجو منك أن تستشهد بنا (انظر المرجع أدناه).
يمكن للمحلل حاليًا إنتاج تنسيقين مختلفين للإخراج:
لاحظ أن الترجمة إلى (J)SHOP2 غير مكتملة بالضرورة لأن (J)SHOP2 لا يمكنه التعبير عن أوامر جزئية تعسفية في قيود الطلب الخاصة به. على سبيل المثال، لا يمكن صياغة طريقة تحتوي على المهام الفرعية الخمس (a,b,c,d,e) وقيود الترتيب a < c و a < d و b < d و b < e في (J)SHOP2.
ملاحظة : إن pandaPIparser حاليًا حساس لحالة الأحرف. أي أنه يفسر HDDL في إصدار حساس لحالة الأحرف. يمكن تحويل أداة التحقق من الخطة إلى الوضع المتساهل حيث ستقوم بتفسير خطة معينة بطريقة غير حساسة لحالة الأحرف.
لتجميع pandaPIparser، تحتاج إلى g++ وmake وflex وbison. لا توجد مكتبات مطلوبة. أنت بحاجة إلى إصدار حديث من البيسون (الإصداران 3.7.2 و3.5.1 معروفان بالعمل) ومرن على الأقل في الإصدار 2.6. يحتاج مترجم C++ الخاص بك إلى دعم C++17.
لإنشاء الملف القابل للتنفيذ، ما عليك سوى تشغيل make -j
في المجلد الجذر، والذي سيؤدي إلى إنشاء ملف قابل للتنفيذ يسمى pandaPIparser
إذا كنت تستخدم MacOSX، فإن الإصدارات الافتراضية من bison وflex قديمة جدًا. تحتاج إلى تثبيت إصدار حديث من Bison وFlex عبر Brew. افتراضيًا، يتم تعيين مسار flex وbison على الموقع الأكثر شيوعًا داخل تثبيت الشراب (وهو /opt/homebrew/opt/bison/bin/bison
و /opt/homebrew/opt/flex/bin/flex
). إذا كانت هذه المسارات غير صحيحة لنظامك، فيمكنك تغييرها عن طريق تغيير متغيرات BISON
و FLEX
كما يلي:
BISON=/opt/homebrew/opt/bison/bin/bison FLEX=/opt/homebrew/opt/flex/bin/flex make -j
ملاحظة: إذا كنت تستخدم MacOSX، فإننا نقوم بتجميع المحلل اللغوي بدون العلامتين -static
و -static-libgcc
لأن التجميع الثابت لا يعمل في نظام MacOSX. قد يؤدي هذا إلى إبطاء المحلل اللغوي، لكن لا ينبغي أن يكون مهمًا.
إذا كنت بحاجة إلى بناء تصحيح الأخطاء (مما سيؤدي إلى قيام المحلل بإخراج الكثير من معلومات التصحيح إلى stdout
)، فيمكنك استدعاء الهدف make debug
. انتبه إلى أنه قد يتعين عليك إجراء إعادة إنشاء كاملة حتى يعمل هذا بشكل صحيح، على سبيل المثال، make -Bj debug
.
يتم استدعاء المحلل اللغوي باستخدام وسيطتين على الأقل: المجال وملف المشكلة. يجب كتابة كلاهما في HDDL.
الترجمة من HDDL إلى تنسيق الملف الداخلي لـ PANDA هي السلوك الافتراضي لـ pandaPIparser. افتراضيًا، سيقوم المحلل اللغوي بإخراج المثيل المحدد بالتنسيق الداخلي لـ pandaPI على معيارنا. إذا قمت بتمرير اسم ملف ثالث، فسيقوم pandaPIparser بدلاً من ذلك بإخراج التمثيل الداخلي للمثيل إلى هذا الملف. كمثال يمكنك الاتصال
./pandaPIParser transport.hddl pfile01.hddl transport-pfile01.htn
سيؤدي هذا إلى إنشاء ملف transport-pfile01.htn
الذي يحتوي على نسخة مرفوعة ولكن قابلة للقراءة آليًا للمجال والمشكلة التي تتم قراءتها بواسطة pandaPIgrounder.
يقدم pandaPIparser أيضًا خيار كتابة الإخراج إلى تنسيق الإدخال (J)SHOP2. للقيام بذلك، قم بإضافة -shop
كأحد وسيطات سطر الأوامر (لا يهم الموضع). باستخدام -shop
يمكنك تحديد ما يصل إلى أربعة ملفات كوسيطات لسطر الأوامر: مجال الإدخال، ومشكلة الإدخال، ومجال الإخراج، ومشكلة الإخراج. على سبيل المثال النظر
./pandaPIParser --shop transport.hddl pfile01.hddl shop-transport.lisp shop-pfile01.lisp
لاحظ أن
__top
.call
إلى _call
، حيث أن call
هي الكلمة الأساسية لـ (J)SHOP2.forall
البيانات الحالية في الشروط المسبقة بشكل كامل. يدعم pandaPIparser أيضًا إخراج (J)SHOP1. هذا هو في الأساس نفس مخرجات (J)SHOP2 مع الاختلاف الوحيد الذي سيتم استبدال الشرطات السفلية بالسالبات ويتم إضافة السالبات البادئة بـ x
. لاستدعاء المترجم في وضع التوافق هذا، استخدم --shop1
بدلاً من --shop
كوسيطة لسطر الأوامر.
يقدم pandaPIparser أيضًا خيار كتابة الإخراج إلى HPDL. للقيام بذلك، قم بإضافة --hpdl
كأحد وسيطات سطر الأوامر (لا يهم الموضع). من حيث المعلمات --hpdl
يعمل تمامًا مثل --shop
إذا كانت لديك أية مشكلات مع pandaPIparser - أو كان لديك أي سؤال يتعلق باستخدامه، فيرجى الاتصال بـ Gregor Behnke.
إذا كنت ترغب في الاستشهاد بـ pandaPIparser، فيمكنك القيام بذلك بالإشارة إلى الورقة التالية:
{٪ خام ٪}
@inproceedings { Behnke2020Grounding,
Title = {On Succinct Groundings of {HTN} Planning Problems},
Year = {2020},
Booktitle = {Proceedings of the 34th {AAAI} Conference on Artificial Intelligence ({AAAI} 2020)},
Publisher = {{AAAI Press}},
Author = {Behnke, Gregor and H{"o}ller, Daniel and Schmid, Alexander and Bercher, Pascal and Biundo, Susanne}
}
{% أندراو %}