The Application

PlanApp is a Java application that reads a planning domain and problem in (a limited subset of) PDDL. Download the application and double-click it. Alternatively, run the command "java -jar PlanApp.jar" from the command line.

Instructions

When the application is running, you have to specify the URLs of a planning domain and problem in the appropriate text fields. If the domain and problem are on the local file system, use file URLs. Next you need to specify the location of an output file. If a solution to the given planning problem is found, it will be written to this file. Furthermore, if tracing is enabled the trace of the search will be written to this file.

Hit the "Generate Next Plan" button and the planner will begin the search for a plan. Note, however, that this planner is currently very simple and cannot solve complex problems. For such problems it will quickly run out of memory. This can be improved by giving the application more than the default memory, which can be done by running it from the command line.

An Example

The Dock Worker Robots domain is available at:

Some rather trival problems can be found at the following URLs:

These problems involve two locations with two piles each and one robot to move between the locations. There exists only one container in these problems. The first problem is a test case that is solved by the empty plan. The second problem is solved by a plan consisting of two steps. For the third problem the container has to be moved to the other location, requiring 5 actions. Download and modify to create different versions of the problems.

Configuring the Planner

The planner can be configured in a number of ways. Bring up the configuration dialog to see the options.

Search Engine Type

The search engine performs the search through the space of states. The type of search engine used determines the basic starategy for exploring this space, i.e. it determines the order in which nodes are expanded and successors generated. A* (ai.search.informed.AStarSearcherForIntCostFn) is a reasonable first choice here.

Graph Type

The graph type determines whether the search engine checks whether it has encountered a newly generated state before. This costs time and memory. However, if the search space has multiple paths leading to the same node (it is a graph rather than a tree) than the graph option is usually the best choice.

Heuristic and Weight

There is currently only one heuristic available, the defult heuristic. This is far too simple to effectively guide the search as it only counts the number of unachieved goals and divides this by the maximum number of positive effects that can be achieved by a single operator. Giving a higher wieght to this heuristic can make the search more efficient (in theory), but it also renders the h-value non-admissable.

Ordering Bias

If the h-value for two nodes is the same, the search engine still has to pick one node to expand first. The ordering bias determines how this is done. Given the weakness of the default heuristic, this is quite and important setting.

Search Limit

This parameter limits the number of states that the search engine will explore.

References

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