เราได้รวบรวมเว็บไซต์ที่มีประวัติของระบบการวางแผนทั้งหมดของตระกูล PANDA ลิงก์ไปยังโครงการซอฟต์แวร์ที่เกี่ยวข้องทั้งหมด และข้อมูลความเป็นมาเพิ่มเติม รวมถึงตัวชี้ที่อธิบายเทคนิคที่ปรับใช้โดยระบบที่เกี่ยวข้อง
นี่คือยูทิลิตี้การแยกวิเคราะห์ของระบบการวางแผน pandaPI ได้รับการออกแบบมาเพื่อแยกวิเคราะห์ปัญหาการวางแผน HTN ภาษาอินพุตหลัก (และปัจจุบันเท่านั้น) คือ HDDL (ดูเอกสารต่อไปนี้)
หากคุณใช้ pandaPIparser ในผลงานตีพิมพ์ใดๆ ของคุณ เราขอให้คุณอ้างอิงถึงเรา (ดูข้อมูลอ้างอิงด้านล่าง)
ขณะนี้ parser สามารถสร้างรูปแบบเอาต์พุตที่แตกต่างกันได้สองรูปแบบ:
โปรดทราบว่าการแปลเป็น (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 และ bison จะถูกตั้งค่าเป็นตำแหน่งที่พบบ่อยที่สุดภายในการติดตั้ง brew (ซึ่งก็คือ /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 เราจะคอมไพล์ parser โดยไม่มีแฟล็ก -static
และ -static-libgcc
เนื่องจากการคอมไพล์แบบสแตติกไม่ทำงานภายใต้ MacOSX สิ่งนี้อาจทำให้ parser ช้าลง แต่ไม่ควรมีความสำคัญ
หากคุณต้องการบิลด์การดีบัก (ซึ่งจะทำให้ parser ส่งออกข้อมูลการดีบักจำนวนมากไปยัง stdout
) คุณสามารถเรียกเป้าหมาย make debug
ได้ โปรดทราบว่าคุณอาจต้องสร้างใหม่ทั้งหมดเพื่อให้ทำงานได้อย่างถูกต้อง เช่น make -Bj debug
parser ถูกเรียกโดยมีอาร์กิวเมนต์อย่างน้อยสองข้อ: โดเมนและไฟล์ปัญหา ทั้งสองจะต้องเขียนใน HDDL
การแปลจาก HDDL เป็นรูปแบบไฟล์ภายในของ PANDA เป็นพฤติกรรมเริ่มต้นของ pandaPIparser ตามค่าเริ่มต้น parser จะส่งออกอินสแตนซ์ที่กำหนดในรูปแบบภายในของ 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)SHOP2forall
ปัจจุบันในเงื่อนไขเบื้องต้นได้รับการสร้างอินสแตนซ์โดยสมบูรณ์ 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}
}
{% สิ้นสุด %}