The multiagent extension for the PDDL parser
Clone or download
Latest commit b8eeb72 Aug 29, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
domains boxpushing domains Aug 29, 2018
examples tabs to spaces May 2, 2018
multiagent parse unfactored privacy requirement Apr 13, 2018
script travis integration Apr 16, 2018
tests tests refactor Apr 16, 2018
.gitignore README update and generator moved Nov 27, 2017
.travis.yml travis Apr 16, 2018
LICENSE Create LICENSE May 23, 2018
README.md Update README.md May 22, 2018
SConstruct Temporary workaround: on mac, when creating the shared library, don't… Mar 7, 2017

README.md

Universal PDDL Parser - Multiagent Extension Build Status

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
    1. Universal PDDL Parser
    2. Multiagent Extension
    3. Examples Compilation
  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 (2018)
  4. References

Installation

In this section, the steps for compiling the diverse tools in the repository are described.

Universal PDDL Parser

As this repository extends the Universal PDDL Parser, we need to install it first. You can clone the Universal PDDL Parser repository with the following command:

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

Afterwards, you should compile it using scons:

cd universal-pddl-parser
scons

Multiagent Extension

Firstly, 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 previously cloned and compiled. There are two ways for referencing that repository:

  1. You have the universal-pddl-parser and the universal-pddl-parser-multiagent repositories next to each other (i.e., in the same folder).
  2. You use the PDDL_PARSER_PATH environment variable, which should contain the path to the universal-pddl-parser repository.

Then, to compile the extension you only have to open the folder and run the scons command:

cd universal-pddl-parser-multiagent
scons

Examples Compilation

The examples folder contains different functionalities that use the multiagent extension of the Universal PDDL Parser. To compile them, you just have to run the following command from the universal-pddl-parser-multiagent folder:

cd universal-pddl-parser-multiagent
scons examples

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 (2018)

This compilation is described 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