You must supply a propositional planning domain and problem in the applet below. Then press Plan / Replan to start the planner. This will first attempt to parse the supplied domain and problem. If this causes a parsing problem an error message will be printed in the output field below the buttons. If domain and problem are syntactically correct the planning process will be started. During the planning process a trace of the planners activity will be printed. Press Cancel to abandon the planning process. The planner stops when a plan is found or the search space is exhausted and no further plans can be generated. If there is a plan this will be printed. Press Plan / Replan again to continue the search for the next plan. Finally, press Reset to start planning again.

The planner used is a simple state-space forward searcher. The underlying search algorithm is A*, performing a graph search, i.e. repeated states will be ignored. The heuristic used is simply the number of unachieved goal conditions. The planner will abandon the search after a fixed number of states have been searched. The syntax for the domain and problem are defined in the documentation. The example below the applet illustrates this syntax.

The Applet

Propositional Forward State-Space Planner (requires Java 1.6)

An Example

The planning domain used as an example is a simple version of the Dock Worker Robot domain. In this version there are two locations at one of which is a crane. There is also a robot which can move between the two locations, and a container that can be loaded onto the robot by the crane. The domain specification given below defines the six possible actions in this domain. The propositions used in these action definitions should be self-explanatory.

(define (domain dwr-2l-1r-1c)
  (:action take
    :pre (onground)
    :del (onground)
    :add (holding))
  (:action put
    :pre (holding)
    :del (holding)
    :add (onground))
  (:action load
    :pre (holding at1)
    :del (holding)
    :add (onrobot))
  (:action unload
    :pre (at1 onrobot)
    :del (onrobot)
    :add (holding))
  (:action move1
    :pre (at2)
    :del (at2)
    :add (at1))
  (:action move2
    :pre (at1)
    :del (at1)
    :add (at2)))

The problem specifies the initial state and the goal to be achieved:

(define (problem)
  (:domain dwr-2l-1r-1c)
  (:init at2 onground)
  (:goal at2 onrobot))

The initial state given in the problem and the domain definition together span a search space of reachable world states. This search state is depicted in the figure below. Note that the initial state is s0 in the figure, and the only state satisfying the goal is s5.

Figure 1: Search space for the example planning problem


Mallik Ghallab, Dana Nau and Paolo Traverso: Automated Planning, section 4.2. Morgan Kaufmann, 2004.