Kami telah menyusun sebuah situs web dengan sejarah semua sistem perencanaan keluarga PANDA, tautan ke semua proyek perangkat lunak yang relevan, dan informasi latar belakang lebih lanjut termasuk petunjuk yang menjelaskan teknik yang diterapkan oleh masing-masing sistem.
Ini adalah utilitas penguraian sistem perencanaan pandaPI. Hal ini dirancang untuk mengurai masalah perencanaan HTN. Bahasa input utamanya (dan saat ini satu-satunya) adalah HDDL (lihat makalah berikut).
Jika Anda menggunakan pandaPIparser di salah satu karya Anda yang diterbitkan, kami dengan hormat meminta Anda untuk mengutip kami (lihat Referensi di bawah).
Parser saat ini dapat menghasilkan dua format keluaran berbeda:
Perhatikan bahwa terjemahan ke dalam (J)SHOP2 tentu tidak lengkap karena (J)SHOP2 tidak dapat menyatakan pesanan parsial yang sewenang-wenang dalam batasan pemesanannya. Misalnya metode dengan lima subtugas (a,b,c,d,e) dan batasan pengurutan a < c, a < d, b < d, dan b < e tidak dapat dirumuskan dalam (J)SHOP2.
Catatan : PandaPIparser saat ini peka huruf besar-kecil. Yaitu menafsirkan HDDL dalam versi case sensitif. Pemverifikasi rencana dapat dialihkan ke mode lunak yang mana ia akan menafsirkan rencana tertentu dengan cara yang tidak membedakan huruf besar dan kecil.
Untuk mengkompilasi pandaPIparser Anda memerlukan g++, make, flex, dan bison. Tidak diperlukan perpustakaan. Anda memerlukan bison versi terbaru (versi 3.7.2 dan 3.5.1 diketahui berfungsi) dan fleksibel setidaknya di versi 2.6. Kompiler C++ Anda harus mendukung C++17.
Untuk membuat executable, cukup jalankan make -j
di folder root, yang akan membuat executable bernama pandaPIparser
Jika Anda menggunakan MacOSX, versi default bison dan flex sudah cukup lama. Anda perlu menginstal bison dan flex versi terbaru melalui brew. Secara default, jalur untuk flex dan bison diatur ke lokasi paling umum dalam instalasi brew (yaitu /opt/homebrew/opt/bison/bin/bison
dan /opt/homebrew/opt/flex/bin/flex
). Jika jalur ini tidak tepat untuk sistem Anda, Anda dapat mengubahnya dengan mengubah variabel BISON
dan FLEX
sebagai berikut:
BISON=/opt/homebrew/opt/bison/bin/bison FLEX=/opt/homebrew/opt/flex/bin/flex make -j
Catatan Jika Anda menggunakan MacOSX, kami mengkompilasi parser tanpa flag -static
dan -static-libgcc
karena kompilasi statis tidak berfungsi pada MacOSX. Hal ini mungkin memperlambat parser, namun tidak terlalu signifikan.
Jika Anda memerlukan build debug (yang akan menyebabkan parser mengeluarkan banyak informasi debug ke stdout
), Anda dapat memanggil target make debug
. Sadarilah bahwa Anda mungkin harus melakukan pembangunan ulang secara penuh agar ini berfungsi dengan baik, yaitu make -Bj debug
.
Parser dipanggil dengan setidaknya dua argumen: domain dan file masalah. Keduanya harus ditulis dalam HDDL.
Terjemahan dari HDDL ke format file internal PANDA adalah perilaku default pandaPIparser. Secara default, parser akan menampilkan instance tertentu dalam format internal pandaPI sesuai standar kami. Jika Anda memberikan nama file ketiga, pandaPIparser akan menampilkan representasi internal instance ke file tersebut. Sebagai contoh, Anda dapat menelepon
./pandaPIParser transport.hddl pfile01.hddl transport-pfile01.htn
Ini akan menghasilkan file transport-pfile01.htn
yang berisi versi domain dan masalah yang diangkat namun dapat dibaca mesin yang dibaca oleh pandaPIgrounder.
pandaPIparser juga menawarkan opsi untuk menulis output ke format input (J)SHOP2. Untuk melakukannya tambahkan -shop
sebagai salah satu argumen baris perintah (posisi tidak menjadi masalah). Dengan -shop
Anda dapat menentukan hingga empat file sebagai argumen baris perintah: domain masukan, masalah masukan, domain keluaran, dan masalah keluaran. Sebagai contoh, pertimbangkan
./pandaPIParser --shop transport.hddl pfile01.hddl shop-transport.lisp shop-pfile01.lisp
Perhatikan itu
__top
.call
akan diubah namanya menjadi _call
, karena call
adalah kata kunci untuk (J)SHOP2.forall
saat ini dalam prasyarat sepenuhnya dipakai. pandaPIparser juga mendukung keluaran (J)SHOP1. Ini pada dasarnya sama dengan output untuk (J)SHOP2 dengan satu-satunya perbedaan bahwa garis bawah akan diganti dengan tanda minus dan tanda minus di awal diawali dengan x
. Untuk memanggil penerjemah dalam mode kompatibilitas ini, gunakan --shop1
alih-alih --shop
sebagai argumen baris perintah.
pandaPIparser juga menawarkan opsi untuk menulis output ke HPDL. Untuk melakukannya, tambahkan --hpdl
sebagai salah satu argumen baris perintah (posisi tidak menjadi masalah). Dari segi parameter --hpdl
berfungsi persis seperti --shop
Jika Anda memiliki masalah dengan pandaPIparser -- atau memiliki pertanyaan terkait penggunaannya, silakan hubungi Gregor Behnke.
Jika Anda ingin mengutip pandaPIparser, Anda dapat melakukannya dengan mengacu pada makalah berikut:
{% mentah %}
@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}
}
{% menggambar %}