RedOp
RedOp is (sort of) a domain analysis tool for planning. It finds and
removes redundant operator instances, as described in the paper
"Planning with Reduced Operator Sets" (Haslum & Jonsson, AIPS 2000).
In the process, it also derives some static facts and uses these to
simplify the domain and operators.
Note: RedOp is now (re-)implemented in the pddlcat
tool, included in the HSP* planner
package. The information below refers to the old implementation.
A Brief Manual
After compiling the program redop, it is used as follows:
redop [options] <domain file> <problem file>
The input domain and problem files should be PDDL.
This produces as output the two files reduced.domain.pddl and
reduced.problem.pddl, which contain the instantiated and reduced
domain and problem description, again in PDDL. Interesting options are
- -bound <n>
- Sets the bound on the length of implementing sequences to
<n>.
- -nobound
- Sets the bound on the length of implementing sequences to
infinity.
- -noreduce
- Reduction is not done (only instantiation and simplification).
When this option is used, the output files are named
not_reduced.domain.pddl and not_reduced.problem.pddl.
- -nodelete
- The number of redundant operators found is reported, but no
reduced domain written to file.
- -nouseless
- Useless operators (operators that have no effect) are normally
removed from the domain: the -nouseless option prevents this.
- -graphplan
- The reduced domain and problem files are written in Graphplan
syntax (named reduced.ops and reduced.fac, respectively).
- -nomin
- Disables the simplification part of instantiation. The implementation
of this part contains many implicit assumptions about domain and operator
structure, and is likely not to work if they are violated. If redop
produces inexplicable error messages (or segmentation faults), this is the
first thing to try.
- -dkel
- The problem definition is echoed to standard out, with DKEL annotations:
- If the option -nodelete was given, a :replaceable
item is written for every redundant action.
- Else (i.e. if -nodelete was not given), a :irrelevant
item is written for every deleted action.
- In addition, an :irrelevant item is written for every useless
action, unless -nouseless is given.
Note: redop does not understand any form of DKEL input. Note
also that although reduction is made on a ground instance of the problem, the
echoed problem definition will appear as in the input (i.e. with
objects, etc.)
QP: A Reduction-Based Planner
QP is an optimal planner based on a combination of the ideas of operator
set reduction and the ideas behind the HSP*
planner. It works as follows:
- The domain and problem are reduced, if possible.
- The reduced problem is solved, using essentially the HSP*
Parastar planner. The solution (if one is found) is an upper bound on the
optimal solution.
- The solution is optimized in the non-reduced domain, using branch and
bound search and the derived upper bound.
The QP planner implementation no longer exists :(
Downloading
RedOp is available for download (gzip/tar, 57K).
It requires a C compiler (preferably gcc) and bison/flex. The software is
messy and unstable, and no warranty of any kind is given for anything. Use
it at your own risk.
Please send questions, comments, bug reports, etc. to
one of my email addresses
Publications
- Haslum, P, & Jonsson, P.
Planning with Reduced
Operator Sets. In Proc. 5th International Conference on Artificial
Intelligence Planning and Scheduling, 2000. (c) AAAI Press.
/P@trik Haslum, July 2002