【问题标题】:Problem with PDDL code using conditional effects使用条件效果的 PDDL 代码问题
【发布时间】:2020-05-04 08:13:45
【问题描述】:

我正在尝试解决一个 Pacman 风格的 PDDL 问题,并且有一个特殊的场景我已经坚持了好几天了。我得到了经典

ff: 目标可以简化为 FALSE。没有计划能解决它

这意味着这个问题是微不足道的和逻辑相关的。但是,我是 PDDL 的新手,似乎无法弄清楚是什么原因造成的。

问题很简单,吃豆人 (P) 必须吃掉食物 (F),但有两个幽灵特工 (G) 挡住了它。为了通过他们,吃豆人需要消耗胶囊(C),使他隐形。

(编辑:我已删除该问题,因为它是作业的一部分。我设法解决了该问题,并将在作业评分后立即发布解决方案。)

【问题讨论】:

  • 尽量避免使用when;许多可用的求解器无法处理它。
  • 我正在使用solver.planning.domains,它普遍允许:conditional-effects(即when)。
  • 它允许它,但这并不意味着它可以工作......
  • 我在作业的其他一些问题中使用了when 子句,似乎效果很好。我愿意接受有关在没有when 的情况下如何应用条件的建议。
  • @OliverMason 正如我所提到的,问题不在于when 子句,而只是动作定义中缺少谓词。然而,PDDL 对何时而不是某个条件谓词可以应用有一定的规则(wheneitherforall 等)。同样可以参考here

标签: pddl


【解决方案1】:

在此线程中:About PDDL in AI planning@haz 提到了一种很好的方法,可以在从初始状态无法到达目标时调试 PDDL 模型。

最好的测试方法是遵循以下策略:(1)写下一个你知道会解决它的计划; (2)从第一个动作开始,以目标为前提; (3) 重复到最后。如果失败,请开始将初始状态更改为您期望在计划执行期间的完整状态。 – haz 5 月 1 日 2:04

我上传了一个能够找到解决方案的新版本(如果幽灵不在食物的路径中):

http://editor.planning.domains/#read_session=c7Vez9nrti

两个主要问题:

  • 您永远不会删除 GhostPos,但它会出现在目标公式中
  • 如果 GhostPos 正在前往 FoodPos 的路上,那么您将永远无法拿到食物,因为移动动作要求不是 Ghost。

【讨论】:

  • 目标是通过幽灵牢房到达食物,而这又需要吃掉胶囊。您的解决方案修改了食物位置,这违背了练习的目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多