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

问题描述

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

At(?x - type ?l - location)

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

解决方法

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

(at ?x - entity ?l - location)

仔细检查括号的使用。

否则,你做对了。 通过期望 entity 作为 agentobjectrobot 的超类型,您将接受这些子类型中的任何一个。

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

,

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

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

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