我们整理了一个网站,其中包含 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}
}
{% 结束绘制 %}