Skip to content

A tutorial to start with PDDL

fiorinoh edited this page Jun 14, 2018 · 69 revisions
  1. What is PDDL?
  2. How to Put the Pieces Together?
  3. What's next?

What is PDDL?

PDDL (Planning Domain Description Language) is a standard encoding language for “classical” planning.

The components of PDDL files are:

  • Requirements: defining levels of abstraction in the language, e.g., "STRIPS", temporal, probabilistic effects etc.
  • Types: sets of the things of interest in the world,
  • Objects: instances of types,
  • Predicates: Facts about objects that can be true or false,
  • Initial state of the world: before starting the planning process,
  • Goal: properties of the world true in goal states and achieved after the planning process,
  • Actions/Operators: ways of changing states of the world and going from the initial state to goal states.

How to Put the Pieces Together?

A planning task in PDDL is specified in two text files:

  1. A domain file for requirements, types, predicates and actions,
  2. A problem file for objects, initial state and goal specification.

Domain Files

Domain files are as follows:

(define (domain <domain name>) 
    <PDDL code for requirements>
    <PDDL code for types>
    <PDDL code for predicates>
    <PDDL code for first action>
    [...]
    <PDDL code for last action>
)

<domain name> is a string that identifies the planning domain.

Examples are available in these repositories: Logistics, Depots, Gripper, Blocksworld, etc.

Problem Files

Problem files are as follows:

(define (problem <problem name>) 
  (:domain <domain name>)
  <PDDL code for objects>
  <PDDL code for initial state> 
  <PDDL code for goal specification>
)

<problem name> is the string that identifies the planning task, e.g. gripper with 4 balls to move. ` is the planning domain name corresponding to problem file.

Examples are available in these repositories: Logistics, Depots, Gripper, Blocksworld, etc.

What's next?

Novices in PDDL should start by doing the Simple Running Example. Advanced readers can go directly to the Industrial Use Case

You can’t perform that action at this time.