Мы создали веб-сайт с историей всех систем планирования семейства 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) и флекс хотя бы версии 2.6. Ваш компилятор 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, мы компилируем парсер без флагов -static
и -static-libgcc
поскольку статическая компиляция не работает под MacOSX. Это может замедлить работу парсера, но не должно быть существенным.
Если вам требуется отладочная сборка (которая приведет к тому, что синтаксический анализатор будет выводить много отладочной информации на stdout
), вы можете вызвать целевую команду make debug
. Имейте в виду, что для правильной работы вам, возможно, придется выполнить полную пересборку, т. е. make -Bj debug
.
Парсер вызывается как минимум с двумя аргументами: доменом и проблемным файлом. Оба должны быть написаны на HDDL.
Перевод из HDDL во внутренний формат файла PANDA является поведением pandaPIparser по умолчанию. По умолчанию синтаксический анализатор выводит данный экземпляр во внутреннем формате pandaPI в стандартном формате your. Если вы передадите третье имя файла, 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)SHOP2.forall
в предварительных условиях полностью реализуются. pandaPIparser также поддерживает вывод (J)SHOP1. По сути, это то же самое, что и вывод для (J)SHOP2, с той лишь разницей, что символы подчеркивания заменяются минусами, а перед минусами добавляется x
. Чтобы вызвать переводчик в этом режиме совместимости, используйте --shop1
вместо --shop
в качестве аргумента командной строки.
pandaPIparser также предлагает возможность записи вывода в HPDL. Для этого добавьте --hpdl
в качестве одного из аргументов командной строки (позиция не имеет значения). По параметрам --hpdl
работает точно так же, как --shop
Если у вас возникли проблемы с pandaPIparser или есть вопросы, связанные с его использованием, свяжитесь с Грегором Бенке.
Если вы хотите процитировать 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}
}
{% привлечь %}