16.412J/6.834 Intelligent Embedded Systems


FF (Fast-Forward) Planning Software

Course Software

FF is a forward-search algorithm that begins with the initial state and expands a search tree until it reaches the goal state. To decide which branch of the search tree to pursue first, FF uses a heuristic estimate. This estimate is based on a plan graph, similar to the one used in Graphplan. The difference is that the FF plan graph has an important additional relaxation: operators do not add delete effects to subsequent levels. Therefore, facts grow monotonically until a level where all the goal facts are present is reached. This is used as the estimate.

Source code, along with instructions for building and running an executable are provided here. The source code is in C, and a Makefile is provided. Building and running the executable should work on any Unix system with C. Example problems (fact and operator files) are included as well.

More details on FF can be found at the FF home web site . An excellent reference paper is:
J. Hoffmann, B. Nebel, "The FF Planning System: Fast Plan Generation Through Heuristic Search", in: Journal of Artificial Intelligence Research, Vol. 14, 2001, Pages 253-302.



Building the Executable

First, download the source .
This is a .tar.gz file. To unzip, on a Unix system, do:

gunzip FF-v2.3.tgz

(this produces FF-v2.3.tar). Now do:

tar -xvf FF-v2.3.tar

(this extracts the sources and puts them into the FF-v2.3 sub-directory). Go to this subdirectory and do:


(this makes the executable). The make file (Makefile) is relatively straightforward (you may want to take a quick look at it). It assumes gcc is the C compiler, but you can modify this to refer to a different compiler.


Running FF

To run the executable, do ff, and follow the instructions.

For convenience, here is an example domain and fact file for the tire changing domain:
tyreworld_facts1 ,
tyreworld_domain.pddl .

To run this, do:
ff -o tyreworld_domain.pddl -f tyreworld_facts1


Home | Announcements | Class-Readings | Final Project