如何在 PDDL 中存储数学值?

How to store mathematical values in PDDL?

我需要在 PDDL 中创建一个计划来访问 n 个地方的子集,每个地方都有一个分数。我需要最大化效用,它被定义为每个单独分数的总和。我如何在 PDDL 中表示这个域?具体来说,如何存储每个地方的分数?

我假设您熟悉行动成本和计划指标。如果不是,请在评论中说明。

我想最简单的方法是通过行动成本。要解决的问题是,在您的情况下,计划的质量与您在执行计划后访问过的地方相关联,因此它与您执行的操作的成本没有直接关联,但与状态变量相关联你生产的。因此,假设每次执行导致代理访问某个位置的操作时,您都会提高计划的质量,那么您可能会得到错误的计划质量,因为您可以多次访问同一位置。但是,您可以按如下方式解决此问题:

您只需添加以下形式的操作 increase-plan-quality(?location): (1) 在每个位置它只能执行一次 (2) 在每个位置,只有代理当前在该位置时才可执行 (3) 效果通过该位置的分数提高计划的质量

然后,您只需将计划指标设置为最大化即可。

为什么这行得通? (A) 如果您的代理在某个位置,maximize-metric 将导致规划器应用提高质量的操作(由于 (2) 该操作适用) (B) 这些额外的操作不会产生错误的计划质量,因为,由于 (1),每个此类操作在每个位置仅适用一次。唯一可能发生的事情是您已经访问了一个位置,但计划者没有应用提高计划质量的行动(尽管它可以这样做)。但这是计划者的选择,我想这不太可能。

另一种可能性是依赖 so-called state-dependent 行动成本。但这个概念是相当新的(如果我没记错的话大约 2 年),所以我想只有有限数量的计划者可以处理它们,我还假设一个人需要一种不属于标准 PDDL 的专门语法规范.