Requirements (PDDL 2.1)
Contributors: Adam Green,
Numeric Fluents
Support: High
Usage: High
(:requirements :numeric-fluents)
Allows the inclusion of a :function
block which represent numeric variables in the domain. e.g.
(:functions
(battery-amount ?r - rover)
)
Note that this overrides the definition in PDDL1.2 in most planners.
Durative Actions
Support: High
Usage: High
(:requirements :durative-actions)
Allows the use of durative-action
in the domain definition. Durative actions are actions which have a duration they take to complete.
(:durative-action move
:parameters (<arguments>)
:duration (= ?duration 5)
:condition (logical_expression)
:effect (logical_expression)
)
Note that this does not imply :fluents
Durative Inequalities
Support: High
Usage: High
(:requirements :durative-inequalities)
Allows the use of inequalities to express a duration. Rather than expressing that an action has a fixed length of time we can express that an action has a duration range using an inequality.
Continuous Effects
Support: Medium
Usage: High
(:requirements :continuous-effects)
Allows the use of continuous effects on numerics within durative actions. Because durative actions take a period of time, we could model the change in a numeric value as some function of time. In reality support for this shaky. Linear functions are relatively easy for planners but non-linear effects are still an area of research.
Negative Preconditions
Support: Low
Usage: High
(:requirements :negative-preconditions)
Allows the use of not
in preconditions. The way some planners model actions mean they are not capable of handling negative preconditions. This is more an inconvenience that a serious design flaw as for every predicate their is an opposing predicate which is true when it’s false. I.e.
rover-charged
and rover-not-charged
are mutually exclusive. In the event where negative preconditions are not support we can introduce a second predicate which represents the negation of the predicate we want to express a negative precondition on.