我們整理了一個網站,其中包含 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。不需要任何庫。您需要最新版本的 bison(已知版本 3.7.2 和 3.5.1 可以工作)和 flex 至少需要版本 2.6。您的 C++ 編譯器需要支援 C++17。
要建立可執行文件,只需在根資料夾中執行make -j
,這將建立一個名為pandaPIparser
可執行文件
如果您使用 MacOSX,則 bison 和 flex 的預設版本都相當舊。您需要透過brew 安裝最新版本的bison 和flex。預設情況下,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,我們將在不使用-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
的方法,將其移至 (J)SHOP2 領域。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}
}
{% 結束繪製 %}