PDDL1.2语法介绍之域文件介绍

PDDL1.2中的域文件定义了问题的"通用性",也就是说,无论我们试图解决怎样的问题,这些内容都不会改变。
在PDDL1.2中,域中定义的内容主要包括模型中可以存在的对象类型,谓词和动作。

Domain Name(域名)
支持:通用 使用:高

(domain <name>)
域总是从命名开始,在我们打开第一个括号并写下(define后的下一个参数应该是(domain <name>),尽管大多数规划人员从您在命令行中传递给它们的文件中获取域,并且不会费心检查域文件中的域名是否与问题文件中的域名相对应,但有些人会这样做。最好的做法是包含此名称,以防万一。
(domain construction)
当我们扩展域的时候会使用这个名称。

Extends (扩展)
支持:差 用法:稀有/无

:extends参数允许域扩展其“父”域。使用:extends参数时,域从其父域继承以下内容:**

  • requirements
  • types
  • constants
  • actions
  • axioms
  • timeless propositions

Requirements(要求)
支持:通用 用法:高

(:requirements <requirement_name>)
Requirements是类似于编程语言中的import/include语句,由于PDDL是一种声明性的语言,因此为了在某些方面更加方便,我们使用:requirement
:requirements可以通过空格分隔的列表指定多个,例如 (:requirements :strips :adl :typing)

  以下是 1998 年 AIPS 竞赛技术手册规定的Requirements列表,但是,现在有些已经不支持了。

Strips 支持:通用 用法:高
(:requirements :strips)
允许使用 STRIPS指定的基本的添加和删除操作
Add:
:effect (walls-built ?s)
Delete:
:effect (not (walls-built ?s))

Typing 支持:通用 使用:高
(:requirements :typing)
Typing与面向对象编程中的类和子类有点类似,例如
(:types
site material - object
bricks cables windows - material)

Disjunctive Preconditions 支持:高 用法:低
(:requirements :disjunctive-preconditions)
允许使用逻辑词or在goal和precondition中,例如
(or
(walls-built ?s)
(windows-fitted ?s))

Equality 支持:高 使用:低
(:requirements :equality)
允许使用=来对对象作比较,例如例如,如果我们有两个对象?s1?s2作为参数,我们可以比较他们是否相同
(not (= ?s1 ?s2))

Existential Preconditions 支持:高 使用:低
(:requirements :existential-preconditions)
允许使用逻辑词exists在goal和precondition中。exists 实际上是一个额外的参数,除了例如条件的子集之外,我们不需要它。
(exists (?c - crane)
(crane-is-free ?c))
通常,exists不支持仅向action参数添加一个额外的参数

Universal Preconditions 支持:高 使用:低
(:requirements :universal-preconditions)
允许使用逻辑词forall在goal和precondition中。Universal本质上是exists语句的对应部分,它提供了提供一个条件,该条件在一个类型的所有对象上为真,或仅在所有对象上为真。
(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-PLANEMOVE-BY-TRAIN

Foreach Expansions 支持:差/无 使用:稀有/无
(:requirements :foreach-expansions)
允许在action扩展中使用 foreach,本质上允许在对象类型或所有对象上应用效果。这个需求意味着: action-expandations 需求的存在,因此相当于(:requirements :action-expansions :foreach-expansions)

DAG Expansions 支持:差/无 使用:稀有/无
(:requirements :dag-expansions)
允许将action扩展中描述的扩展标记以便你可以区分规划器选择了哪个子动作。例如,如果我们定义了一个move动作,它利用了不同的运输方式,我们可能想确切地知道标签使用了哪种方式。
(:requirements :action-expansions :dag-expansions)

Domain Axioms 支持:中 使用:低
(:requirements :domain-axioms)
允许使用公理,公理本质上是由其他谓词隐含的谓词。

Subgoals Through Axioms 支持:差/无 使用:稀有/无
(:requirements :subgoals-through-axioms)
Subgoals Through Axioms通过显示公理是目标的子集来创建子目标的一种方法。这是多余的,因为规划器可以通过域预处理进行提取。用户不应该告诉规划器它应该使用什么技术来解决问题,因此通过Subgoals Through Axioms在某种程度上与此背道而驰。

Safety Constraints 支持:差/无 使用:稀有/无
(:requirements :safety-constraints)
Safety Constraints是一个谓词,为了使计划被认为是有效的,该谓词必须在计划结束时为真。

Expression Evaluation 支持:差/无 使用:稀有/无
(:requirements :expression-evaluation)
允许在axioms中使用eval,两个谓词相互比较,如果它们相等则eval返回true。
(eval (im-not-true ?a) (im-true ?b)),如果我们假设im-not-true为false,im-true为true,则计算结果为false。
此要求意味着:domain-axioms要求的存在,因此等同于:
(:requirements :domain-axioms :expression-evaluation)

Fluents 支持:意义已经改变 使用:罕见
(:requirements :fluents)
允许使用(fluents t),但 PDDL1.2 中的 fluent 支持与更高版本的 PDDL 模型数值不同。

Open World 支持:差/无 使用:稀有/无
(:requirements :open-world)
在规划中,假设所有未知值都为假。也就是说,如果我们不知道谓词的值,那么我们假设它为假。这被称为“封闭世界”假设。这个要求改变了规划器做出“开放世界”的假设。也就是说,未知的值不一定是错误的。这在更现代的规划器中很少得到支持,并且通常是规划器执行中的标志,而不是域中的要求。

True Negation 支持:差/无 使用:稀有/无
(:requirements :true-negation)
不要将否定视为失败,而是将其视为一阶逻辑。此要求意味着:open-world要求的存在,因此等同于:
(:requirements :open-world :true-negation)

ADL 支持:高 使用:低
(:requirements :adl)
ADL是一个超级需求,它添加了以下需求:
:strips
:typing
:disjunctive-preconditions
:equality
:quantified-preconditions
:condition-effects

UCPOP 支持:差/无 使用:稀有/无
(:requirements :ucpop)
UCPOP是一个超级需求,它添加了以下需求:
:adl
:domain-axioms
:safety-constraints

猜你喜欢

转载自blog.csdn.net/weixin_45877880/article/details/121713540