What is Planning?
Planning is the art and practice of thinking before acting. - Patrik Haslum
"Planning" is the name used in AI for computational problems that have to do with choosing a course of action. This may be for the purpose of creating a "plan", e.g., for a pair of robots to assemble a (simulated) IKEA table, for moving a sheet of paper through a printer, or exploiting IT security weaknesses. However, problems like model checking or computing genome edit distance are, in a computational sense, essentially the same.1
Planning Domain Description Language
PDDL was originally developed by Drew McDermott and the 1998 planning competition committee. It was inspired by the need to encourage the empirical comparison of planning systems and the exchange of planning benchmarks within the community. Its development improved the communication of research results and triggered an explosion in performance, expressivity and robustness of planning systems.
PDDL has become a de facto standard language for describing planning domains, not only for the competition but more widely, as it offers an opportunity to carry out empirical evaluation of planning systems on a growing collection of generally adopted standard benchmark domains. The emergence of a language standard will have an impact on the entire field, influencing what is seen as central and what peripheral in the development of planning systems.
- Used by almost all implemented systems for deterministic planning
- Supports a language comparable to what we have defined above (including schematic operators and quantification)
- Syntax inspired by the Lisp programming language: e.g. prefix notation for formulae
Example: Rock Collecting Rover
There are several waypoints on the planet, some of which are connected. A rover can navigate between two waypoints A and B when A and B are connected. Interesting rocks can be found at any waypoint.
The rover can only analyze the rocks of a waypoint when it is at the waypoint. After the rover has analyzed a rock sample, it can transmit the results of this particular analysis to Earth. The transmission of the results of analysed rock samples can only be carried out at certain waypoints where the connection to Earth is good enough.
Each result is to be transferred via an individual action.
All actions have unit costs.
The goal is to analyze all rock samples and transfer the results to Earth.

Domain file
A domain file consists of:2
(define (domain DOMAINNAME)
- a
:requirements
definition (use:strips
:typing
by default) - definitions of types (each parameter has a type)
- definitions of predicates
- definitions of operators (actions)
1 | (define (domain roverdomain) |
Problem file
A problem file consists of:3
(define (problem PROBLEMNAME)
- declaration of which domain is needed for this problem
- definitions of objects belonging to each type
- definition of the initial state (list of state variables initially true)
- definition of goal states (a formula like operator precondition)
1 | (define (problem roverproblem) |
Popular Planners
Fast Downward Planner
Fast Downward4 is a domain-independent classical planning system.
1 | wget https://github.com/aibasel/downward/archive/release-20.06.0.tar.gz |
1 | INFO Running translator. |
PDDL4J
The purpose of PDDL4J5 is to facilitate the development of JAVA tools for Automated Planning based on PDDL language (Planning Domain Description Language). Automated planning and scheduling, in the relevant literature often denoted as simply planning, is a branch of artificial intelligence that concerns the realization of strategies or action sequences, typically for execution by intelligent agents, autonomous robots and unmanned vehicles.[^1]
1 | wget https://github.com/pellierd/pddl4j/releases/download/v3.8.3/PDDL4J-v3.8.3.zip |
-p 0
for HSP (default planner)-p 1
for FF
1 | parsing domain file "domain.pddl" done successfully |
Online Planner
PDDL Editor
editor.planning.domains
is a fully featured PDDL editor. The functionality is continually changing, but currently it boasts features such as syntax highlighting, code folding, PDDL-specific auto-completion, multi-tab support, etc.

You can switch the default satisfactory solver with an optimal solver by simply replacing the Custom Planner URL with http://fd-solver.herokuapp.com
.

If everything goes fine, you can find the plan in a new file on the left panel.

GUI Planner
PDDL4GUI
PDDL4GUI6 is a small application written in Java that provides a graphical interface to the PDDL4J library. PDDL4GUI offers:
- A graphical interface for solving planning problems with the PDDL4J library.
- A graphical interface for solving planning problems through PDDL4J webservice and RESTFull API.
- Anytime behavior for compatible planners.
- The integration of VAL (The plan validation system) which offers the possibility to test the validity of the plans provided by PDDL4J.
After cloning the git repository, simply run java -javaagent:pddl4gui-1.0.jar -server -Xms2048m -Xmx2048m -jar pddl4gui-1.0.jar -LOCAL
or run the provided shell script ./pddl4gui_loc.sh
.
