PDDL中Requirements是非常重要的,一般我们可以从不同版本的PDDL的all Requirements中获取到当前版本PDDL所支持的语法,同时在requirements中添加参数可以判断所使用规划器是否支持某项语法(也可以直接看规划器所对应的论文中提到的requirements入手),可以说requirements是学习每个版本PDDL不可缺少的一步。

PDDL的requirements整理

(上图为PDDL2.2的requirements)

下面是我整理的从PDDL到PDDL3.0所有的requirements以及其简单介绍

Requirements

 

Examples

 

:STRIPS

(:requirements :strips)

允许使用STRIPS中指定的基本添加和删除效果。

Add:

:effect (walls-built ?s)

Delete:

:effect (not (walls-built ?s))

 

:TYPING

(:requirements :typing)

允许使用对象键入。键入类似于面向对象编程中的类和子类

(:types

    site material - object

    bricks cables windows - material

)

:Preferences

(:requirements :preferences)

允许在问题定义(软目标)中使用偏好。

 

 

 

:Constraints

(:requirements :constraints)

允许在域定义中使用约束(必须在每个 state中满足的目标)

(:constraints

    (and

    (forall (?l - lorry ?loc - location) (at-most-once (at ?l ?      loc)))

)

)

:Numeric Fluents

(:requirements :numeric-fluents)

允许包含:function表示域中数字变量的块。

(:functions

    (battery-amount ?r - rover)

)

 

:Durative Actions

(:requirements :durative-actions)

允许durative-action在域定义中使用。持续行动是指具有完成持续时间的行动。

(:durative-action move

    :parameters (<arguments>)

    :duration (= ?duration 5)

    :condition (logical_expression)

    :effect (logical_expression)

)

:Durative Inequalities

(:requirements :durative-inequalities)

允许使用不等式来表示持续时间。我们可以表达一个动作具有使用不等式的持续时间范围,而不是表达动作具有固定的时间长度。

 

:continuous Effects

(:requirements :continuous-effects)

允许在持续行动中对数字使用连续效果。由于持续性操作需要一段时间,因此我们可以将数值中的更改建模为时间函数。实际上支持这种不稳定。线性函数对于规划者来说相对容易,但非线性效应仍然是研究领域。

 

 

 

:Negative Preconditions

(:requirements :negative-preconditions)

允许not在前提条件下使用。一些规划者模仿行动的方式意味着他们无法处理负前提条件。对于每个谓词来说,这是一个严重的设计缺陷,这更加带来不便,因为它们是一个对立的谓词,当它是假的时候是真的。即rover-charged并且rover-not-charged是相互排斥的。在负前提条件不支持的情况下,我们可以引入第二个谓词,它表示我们想要表达负前提条件的谓词的否定。

 

 

 

:derived Predicates

(:requirements :derived-predicates)

允许在域中使用派生谓词

(:derived (train-usable ?t

    (and

    (train-has-guard ?t

    (train-has-driver ?t

    )

)

:Timed Initial Literals

(:requirements :timed-initial-literals)

允许在定义问题时使用Timed Initial Literals

(at 10 (train-not-in-use t1))

:Disjunctive Preconditions

(:requirements :disjunctive-preconditions)

允许使用or目标和前提条件

(or

    (walls-built ?s)

    (windows-fitted ?s)

)

:Equality

(:requirements :equality)

(not (= ?s1 ?s2))

:Existential Preconditions

(:requirements :existential-preconditions)

(exists (?c - crane)

    (crane-is-free ?c)

)

:Universal Preconditions

(:requirements :universal-preconditions)

(forall (?c - crane)

    (crane-is-free ?c)

)

:Quantified Preconditions

(:requirements :quantified-preconditions)

相当于

(:requirements :existential-preconditions :universal-preconditions)

 

 

 

 

:Conditional Effects

(:requirements :conditional-effects)

允许使用when表达动作效果。基本上说如果某些事情是真的,那么也应用这个效果。

(when

    ;Antecedent

    (and (has-hot-chocolate ?p ?c) (has-marshmallows ?c))

    ;Consequence

    (and (person-is-happy ?p))

)

 

:Action Expansions

(:requirements :action-expansions)

允许使用动作扩展。这允许定义变体条件和动作的效果。从本质上讲,我们可以定义一个MOVE动作来描述一个人的运动,但包括不同的扩展来描述飞机,火车,汽车或步行的运动。 这已经变得多余,因为我们只是表达多个动作,如MOVE-BY-PLANE和MOVE-BY-TRAIN。

 

 

:Foreach Expansions

(:requirements :foreach-expansions)

允许使用foreach动作扩展,基本上允许在一种对象或所有对象中应用效果。该要求意味着要求的存在,:action-expansions因此等同于(:requirements :action-expansions :foreach-expansions)

 

 

 

:DAG Expansions

(:requirements :dag-expansions)

允许标记Action Expansions中描述的扩展,以便您可以区分计划程序选择的子操作。例如,如果我们定义了一个move使用不同传输模式的动作,我们可能想要确切地知道标记使用了什么模式。该要求意味着要求的存在,:action-expansions因此等同于(:requirements :action-expansions :dag-expansions)

 

:Domain Axioms

(:requirements :domain-axioms)

允许使用公理。公理本质上是其他谓词隐含的谓词。

参阅PDDL 1.2域参考中的公理部分

 

:subgoals through Axioms

(:requirements :subgoals-through-axioms)

 

 

:Safety Constraints

(:requirements :safety-constraints)

 

:expression Evaluation

(:requirements :expression-evaluation)

 

:Fluents

(:requirements :fluents)

 

 

 

:Open World

(:requirements :open-world)

在计划中,假定所有未知值都是假的。也就是说,如果我们不知道谓词的值,那么我们认为它是假的。这被称为“封闭世界”假设。这个要求改变了计划者做出“开放世界”的假设。也就是说,未知的值不一定是错误的。这在现代规划者中很少得到支持,并且通常是计划执行中的标志,而不是域中的要求。

 

:True Negation

(:requirements :true-negation)

 

:ADL

(:requirements :adl)

 

:UCPOP

(:requirements :ucpop)

 

请注意并不是每个requirements规划器都需要支持的,不同规划器“特长”不同及其支持的语法也各有不同。

更为详细或具体的requirements可以去planning.wiki中查看。

相关文章:

  • 2021-11-20
  • 2022-01-13
  • 2021-04-16
  • 2022-02-09
  • 2021-11-07
  • 2021-07-19
  • 2021-10-09
猜你喜欢
  • 2021-05-28
  • 2022-02-01
  • 2022-12-23
  • 2021-10-20
  • 2022-12-23
  • 2021-10-19
  • 2021-07-18
相关资源
相似解决方案