PDDL: Language features and planner categories
In my (re)exploration of PDDL I've understood better not only how different language features drive the decision of what planner to use, but also one more dimension that makes planners different: satisfiability versus optimality.
Numeric and temporal domains
Beyond classical planning based on predicates (using :predicates
and :actions
in PDDL), it is possible to plan based on numeric quantities (:functions
) and actions with a duration (:durative-action
s). The two domains can be mixed, for example by expressing durations as functions rather than fixed numbers. Both require the use of a metric (:metric
), which can be any numeric function (or just total-time
for temporal domains) to be minimized or maximized.
Some planners like LPG-td can cover both domains, but more often than not planners specialize in one of the two (and not many planners cover the temporal domain).
Satisficing vs optimal planners
A planner can not only cover just some construct of PDDL (say, numeric fluents but not durative actions), but also be limited to find solutions that satisfy the domain (satisficing planners) without necessarily be optimal (a task for optimal planners). Some planners such as ENHSP can even do both, but it's necessary to always make sure of the capabilities of a planner with respect to the problem to solve.