Skip to content

aig-upf/universal-pddl-parser-multiagent

Repository files navigation

Universal PDDL Parser - Multiagent Extension

Build Status DOI

An extension to the Universal PDDL Parser to handle multiagent domains. The parser currently supports [Crosby, Jonsson and Rovatsos, 2014] and [Kovacs, 2012] specifications.

  1. Installation
  2. Multiagent Domains
  3. Compilers from Multiagent to Classical Planning
    1. Compilation by Crosby, Jonsson and Rovatsos (2014)
    2. Compilation by Furelos-Blanco and Jonsson (2019)
  4. References

Installation

Firstly, make sure you have the scons tool installed in your computer. You will need it to compile the software.

Then, you have to either clone or download this repository. To clone it, you can use the following command:

git clone https://github.com/aig-upf/universal-pddl-parser-multiagent.git

This repository references the universal-pddl-parser repository. There are two ways of referencing that repository:

  1. You use the universal-pddl-parser submodule inside this repository.
  2. You use the PDDL_PARSER_PATH environment variable, which should contain the path to the universal-pddl-parser repository.

Finally, to compile the repository tools, run the following command:

cd universal-pddl-parser-multiagent
./script/build.sh

Multiagent Domains

The domains folder contains a variety of multiagent domains. Each domain folder contains two subfolders:

  • domain: It contains domain description(s). Note that there can be more than one if they are written in different specifications.
  • problems: It contains some domain problems. In some cases, you will also find a generator for creating new instances.

The domains are briefly described in their corresponding folders:

Compilations from Multiagent to Classical Planning

In this section, it is described how to run different compilers for converting multiagent planning problems (MAP) into classical planning problems. The resulting classical planning problems can be later solved using an off-the-shelf classical planner, such as Fast Downward in the LAMA-2011 setting.

Compilation by Crosby, Jonsson and Rovatsos (2014)

This compilation is described in [Crosby, Jonsson and Rovatsos, 2014]. Note that only domains following the notation described in this paper will be compiled.

The folder containing the source code is examples/serialize_cn. After compiling the source code, two binaries are created: serialize.bin and compress.bin.

The binary for compiling MAPs into classical problems is serialize.bin. It used as follows:

./serialize.bin <ma-domain> <ma-problem> > <cl-domain> 2> <cl-problem>

where:

  • ma-domain and ma-problem are the paths to the multiagent domain and the multiagent problem respectively.
  • cl-domain and cl-problem are the output paths for the classical domain and the classical problem respectively.

For example, we can use it with the Maze domain as follows:

./serialize.bin ../../domains/maze/domain/maze_dom_cn.pddl ../../domains/maze/problems/maze5_4_1.pddl > dom.pddl 2> ins.pddl

The compress.bin binary can be used to compress the plans given by a classical planner. The compression algorithm is described in the paper, and consists in forming joint actions from the classical plan. It is used as follows:

./compress.bin <cl-plan> <ma-plan>

where cl-plan is the plan given by the classical planner, while ma-plan is the compressed/multiagent plan.

Compilation by Furelos-Blanco and Jonsson (2019)

This compilation is described in [Furelos-Blanco and Jonsson, 2019]. Early descriptions can be found in [Furelos-Blanco, 2017] and [Furelos-Blanco and Jonsson, 2018]. This compiler takes as input domains and problems specified using [Kovacs, 2012] notation.

The folder containing the source code is examples/serialize. After compiling the source code, a serialize.bin binary is created and is used as follows:

./serialize.bin [-h] [-j N] [-o]  <ma-domain> <ma-problem> > <cl-domain> 2> <cl-problem>
  • ma-domain and ma-problem are the paths to the multiagent domain and the multiagent problem respectively.
  • cl-domain and cl-problem are the output paths for the classical domain and the classical problem respectively.
  • -h shows information about how to use the program.
  • -j N forces the output plans to have joint actions composed by at most N atomic actions. For example, if you use -j 2, then the plan generated by a classical planner will not have joint actions formed by 3 or more atomic actions. By default there is not a limit on the size of the actions.
  • -o forces agents to run actions in an specific order (a1 before a2, a2 before a3 and so on).

References