我需要在PDDL中创建一个计划来访问n个地点的子集,每个地点都有一个分数。我需要最大化效用,它被定义为每个单独分数的总和。如何在PDDL中表示此域?具体来说,我如何存储每个位置的分数?
发布于 2017-02-20 03:43:03
我假设您熟悉行动成本和计划指标。如果没有,请在评论中注明。
我想,最简单的方法是通过行动成本。要解决的问题是,在您的案例中,计划的质量与您在计划执行后访问过的地方相关联,因此它与您执行的操作的成本没有直接关联,而是与您产生的状态变量相关联。因此,假设您在每次执行导致代理访问某个位置的操作时都会提高计划的质量,那么您可能会获得错误的计划质量,因为您可以多次访问同一位置。但是,您可以按如下方式修复此问题:
您只需添加以下形式的操作increase- plan - quality (? location ):(1)在每个位置中,它只能执行一次(2)在每个位置中,只有当代理当前在该位置时才可执行(3)该效果通过该位置的分数增加计划的质量
然后,您只需将计划指标设置为最大化,即可完成任务。
为什么这是可行的?(A)如果您的代理人在某个地点,最大化度量将导致计划员应用提高质量的行动(由于(2)该行动适用) (B)这些额外的行动不能获得错误的计划质量,因为由于(1),每个这样的行动在每个地点只适用一次。唯一可能发生的情况是,您访问了一个位置,但是计划员没有应用提高计划质量的操作(尽管它可以这样做)。但这是计划者的选择,我想这不太可能。
另一种可能性是依靠所谓的国家依赖行动成本。但是这个概念是非常新的(如果我没记错的话,大约有2年),所以我猜只有有限数量的规划器可以处理它们,我还假设一个人需要一个不属于标准PDDL规范的专门语法。
https://stackoverflow.com/questions/42328160
复制相似问题