我正在尝试编写一个 PDDL 域。我有4种。我的问题是,当指定一个谓词时:
At(?x - type ?l - location)
我希望 x 能够采用其中三种类型,但它只允许我做一种。我应该怎么办?
我正在尝试编写一个 PDDL 域。我有4种。我的问题是,当指定一个谓词时:
At(?x - type ?l - location)
我希望 x 能够采用其中三种类型,但它只允许我做一种。我应该怎么办?
PDDL的语法要求您的谓词声明如下所示:
(at ?x - entity ?l - location)
仔细检查括号的使用。
否则,你做对了。通过期望,和entity
的超类型, 您将接受这些子类型中的任何一个。agent
object
robot
但是请注意,在许多规划器中,该类型object
已被隐式定义为根类型。我建议您将其重命名为physical_object
.
好吧,基本上我所做的是我创建了一个名为 entity 的类型,然后指定我的机器人、代理和对象类型是实体:
(:types
entity
agent - entity
object - entity
robot - entity
location
)
(:predicates
At(?x - entity, ?l - location)
)