우리는 PANDA 제품군의 모든 계획 시스템의 역사, 모든 관련 소프트웨어 프로젝트에 대한 링크, 각 시스템에서 배포한 기술을 설명하는 포인터를 포함한 추가 배경 정보가 포함된 웹사이트를 구성했습니다.
이것은 pandaPI 계획 시스템의 구문 분석 유틸리티입니다. HTN 계획 문제를 분석하도록 설계되었습니다. 주요(그리고 현재 유일한) 입력 언어는 HDDL입니다(다음 문서 참조).
출판된 작업에서 pandaPIparser를 사용하는 경우 인용해 주시기 바랍니다(아래 참조 참조).
파서는 현재 두 가지 다른 출력 형식을 생성할 수 있습니다.
(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의 기본 버전은 꽤 오래되었습니다. 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를 사용하는 경우 MacOSX에서는 정적 컴파일이 작동하지 않으므로 -static
및 -static-libgcc
플래그 없이 파서를 컴파일합니다. 이로 인해 파서 속도가 느려질 수 있지만 심각하지는 않습니다.
디버그 빌드가 필요한 경우(파서가 많은 디버깅 정보를 stdout
으로 출력하게 됨) 대상 make debug
호출할 수 있습니다. 이것이 제대로 작동하려면 전체 재빌드(예: make -Bj debug
수행해야 할 수도 있습니다.
파서는 도메인과 문제 파일이라는 최소한 두 개의 인수를 사용하여 호출됩니다. 둘 다 HDDL로 작성되어야 합니다.
HDDL에서 PANDA의 내부 파일 형식으로의 변환은 pandaPIparser의 기본 동작입니다. 기본적으로 파서는 주어진 인스턴스를 표준 our.pandaPI의 내부 형식으로 출력합니다. 세 번째 파일 이름을 전달하면 pandaPIparser는 대신 인스턴스의 내부 표현을 해당 파일에 출력합니다. 예를 들어 다음과 같이 전화할 수 있습니다.
./pandaPIParser transport.hddl pfile01.hddl transport-pfile01.htn
그러면 기계가 읽을 수 있는 도메인 버전과 pandaPIgrounder가 읽는 문제가 포함된 transport-pfile01.htn
파일이 생성됩니다.
pandaPIparser는 출력을 (J)SHOP2의 입력 형식으로 쓰는 옵션도 제공합니다. 그렇게 하려면 -shop
명령줄 인수 중 하나로 추가하세요(위치는 중요하지 않음). -shop
사용하면 입력 도메인, 입력 문제, 출력 도메인 및 출력 문제 등 최대 4개의 파일을 명령줄 인수로 지정할 수 있습니다. 예를 들어 고려
./pandaPIParser --shop transport.hddl pfile01.hddl shop-transport.lisp shop-pfile01.lisp
참고하세요
__top
대한 메서드로 컴파일하여 (J)SHOP2 도메인으로 이동합니다.call
(J)SHOP2의 키워드이므로 call
이라는 모든 작업의 이름은 _call
로 변경됩니다.forall
문은 완전히 인스턴스화됩니다. pandaPIparser는 (J)SHOP1의 출력도 지원합니다. 이는 밑줄이 마이너스로 대체되고 선행 마이너스 앞에 x
추가된다는 점만 제외하면 본질적으로 (J)SHOP2의 출력과 동일합니다. 이 호환 모드에서 변환기를 호출하려면 명령줄 인수로 --shop
대신 --shop1
사용하십시오.
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}
}
{% 엔드로 %}