具有多种类型的 PDDL 谓词变量

Posted

技术标签:

【中文标题】具有多种类型的 PDDL 谓词变量【英文标题】:PDDL predicate variable with multiple types 【发布时间】:2021-04-22 07:48:36 【问题描述】:

我正在尝试编写一个 PDDL 域。我有4种。 我的问题是,当指定一个谓词时:

At(?x - type ?l - location)

我希望 x 能够接受其中三种类型,但它只允许我做一种。我该怎么办?

【问题讨论】:

您的PDDL域不完整,应该加入错误信息。 【参考方案1】:

syntax of PDDL 期望您的谓词声明如下所示:

(at ?x - entity ?l - location)

仔细检查括号的使用。

否则,你做对了。 如果期望 entityagentobjectrobot 的超类型,您将接受这些子类型中的任何一个。

但是请注意,在许多规划器中,object 类型已经被隐式定义为根类型。我建议你把它重命名为physical_object

【讨论】:

感谢语法文档!问题是我不知道如何声明 supertypes 是否有意义【参考方案2】:

好吧,基本上我所做的是我创建了一个名为 entity 的类型,然后指定我的机器人、代理和对象类型是实体:

        (:types
    entity
    agent - entity
    object - entity
    robot - entity
    location
    )

(:predicates
At(?x - entity, ?l - location)
)

【讨论】:

这不是答案。你应该编辑你的问题。

以上是关于具有多种类型的 PDDL 谓词变量的主要内容,如果未能解决你的问题,请参考以下文章

具有多种返回类型的方法

两种类型的变量

查询具有多种记录类型的 CloudKit 数据库

Java多态(注意事项)

为啥“等待谓词”解决了条件变量的“丢失唤醒”?

在核心数据谓词中为元素名称使用变量