This page contains, code, domain challenge problems, and experimental results
for ongoing work on PPLAN, a best-first search planner for planning
with rich user preferences that was developed at the University of Toronto.
PPLAN is a provably optimal best-first search planner for planning with non-Markovian qualitative preferences.
Work on PPLAN was first reported in the paper Specifying and Generating Preferred Plans, by Bienvenu and McIlraith. More recent citations are included below. Contributions include:
PPLAN is an optimal best-first forward-chaining planner that generates a plan that not only achieves a user-defined goal, but that also conforms, where possible, to a user's preferences. PPLAN uses progression to more efficiently evaluate preference formulae.
PPLAN takes as input, an action theory, a specification of
the initial state of the system, a preference formula, and a goal.
To specify preferences for planning, we appeal to a first-order preference language defined in Planning with Qualitative Temporal Preferences. Details of the syntax of the language can be found in this paper.
PPLAN is implemented in Prolog. Users must provide a plan horizon (length bound). PPLAN evaluates partial plans optimistically. As such it uses an admissible evaluation function with best-first search.
You can find code, test cases and experimentals results by clicking on the relevant link that follows.
As an example we provide the dinner domain, specified in the following Prolog (e.g. XSB) files:
PPLAN has been tested on 60 instances of the dinner domain:
We have proved that our algorithm will find the plan that optimizes the user's preferences. To evaluate the effectiveness of our heuristic in pruning search, we compared the number of nodes expanded or considered by PPLAN to the equivalent breadth-first planner. The results are given here:
In these experiments, we used the following implementation of breadth-first search.The principle references for PPLAN are the following:
The closest related work is that of Son and Pontelli:
Code and examples for Son and Pontelli's planner can be found here.