私たちは、PANDA ファミリーのすべての計画システムの歴史、すべての関連ソフトウェア プロジェクトへのリンク、およびそれぞれのシステムで導入されているテクニックを説明するポインタを含む詳細な背景情報をまとめた Web サイトを作成しました。
これは、pandaPI 計画システムの解析ユーティリティです。 HTN 計画の問題を解析するように設計されています。その主な (そして現在唯一の) 入力言語は HDDL です (次の論文を参照)。
出版された作品のいずれかで pandaPIparser を使用している場合は、引用していただくようお願いいたします (下記の参考文献を参照)。
現在、パーサーは 2 つの異なる出力形式を生成できます。
(J)SHOP2 は順序制約で任意の部分順序を表現できないため、(J)SHOP2 への変換は必然的に不完全になることに注意してください。たとえば、5 つのサブタスク (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 が動作することが確認されています) と、少なくともバージョン 2.6 の flex が必要です。 C++ コンパイラは C++17 をサポートする必要があります。
実行可能ファイルを作成するには、ルート フォルダーでmake -j
を実行するだけです。これによりpandaPIparser
という実行可能ファイルが作成されます。
MacOSX を使用している場合、bison と flex のデフォルト バージョンはかなり古いものです。 Bison と flex の最新バージョンを brew 経由でインストールする必要があります。デフォルトでは、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 を使用している場合、静的コンパイルは MacOSX では機能しないため、フラグ-static
および-static-libgcc
使用せずにパーサーをコンパイルします。これによりパーサーの速度が低下する可能性がありますが、重大な問題ではありません。
デバッグ ビルドが必要な場合 (これにより、パーサーは多くのデバッグ情報をstdout
に出力します)、ターゲットのmake debug
呼び出すことができます。これを正しく動作させるには、完全な再ビルド ( make -Bj debug
など) が必要になる場合があることに注意してください。
パーサーは、ドメインと問題ファイルという少なくとも 2 つの引数を指定して呼び出されます。どちらも HDDL で記述する必要があります。
HDDL から PANDA の内部ファイル形式への変換は、pandaPIparser のデフォルトの動作です。デフォルトでは、パーサーは指定されたインスタンスを標準の pandaPI の内部形式で出力します。 3 番目のファイル名を渡すと、pandaPIparser は代わりにインスタンスの内部表現をそのファイルに出力します。例として、次のように呼び出すことができます
./pandaPIParser transport.hddl pfile01.hddl transport-pfile01.htn
これにより、リフトされたマシン可読バージョンのドメインと、pandaPIgrounder によって読み取られる問題が含まれるファイルtransport-pfile01.htn
が生成されます。
pandaPIparser は、出力を (J)SHOP2 の入力形式に書き込むオプションも提供します。これを行うには、コマンドライン引数の 1 つとして-shop
を追加します (位置は重要ではありません)。 -shop
使用すると、コマンド ライン引数として最大 4 つのファイル (入力ドメイン、入力問題、出力ドメイン、および出力問題) を指定できます。例として考えてみましょう
./pandaPIParser --shop transport.hddl pfile01.hddl shop-transport.lisp shop-pfile01.lisp
ご了承ください
__top
のメソッドにコンパイルすることによって、HDDL 問題の初期タスク ネットワークを (J)SHOP2 ドメインに移動します。call
(J)SHOP2 のキーワードであるため、 call
という名前のアクションはすべて_call
に名前が変更されます。forall
ステートメントは完全にインスタンス化されます。pandaPIparser は (J)SHOP1 の出力もサポートしています。これは基本的に (J)SHOP2 の出力と同じですが、アンダースコアがマイナスに置き換えられ、先頭のマイナスの先頭にx
が付加される点のみが異なります。この互換モードでトランスレータを呼び出すには、コマンド ライン引数として--shop
代わりに--shop1
使用します。
pandaPIparser は、出力を HPDL に書き込むオプションも提供します。これを行うには、コマンドライン引数の 1 つとして--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}
}
{% エンドドロー %}