如何将数学值存储在PDDL中?

问题描述:

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

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

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

您只需在以下表单的每个位置添加一个动作增加计划质量(?位置): (1)每一个位置,它是如果代理人是目前在该位置仅可执行 (3)影响由该位置的分数增长计划的质量

然后,你只需要设置规划指标达到最大化,你完成了。

为什么这样吗? (A)如果您的代理处于某个位置,则最大化度量会导致规划人员应用提高质量的操作(由于(2)该操作适用)(B)这些其他操作不能产生错误的计划因为(1),每个这样的动作只适用于每个位置一次。唯一可能发生的情况是,您已经访问了一个位置,但是规划人员并未应用提高计划质量的操作(尽管可以这样做)。但是,这是计划者的选择,我猜不太可能。

另一种可能性是依赖所谓的状态依赖行动成本。但是这个概念是相当新的(如果我没有记错的话,大概2年),所以我想只有有限数量的规划人员可以处理它们,而且我还假设需要一个不属于标准PDDL的专用语法规范。

+0

非常感谢。我一直在尝试一段时间,这有助于解决它。 –