PDDL 如何为多个谓词分配编号

PDDL How to assign number for many predicates

我有基于图块的地图,代理需要从一个图块转到另一个图块,有些图块有 (占用位置 X-Y),这意味着代理不能踩到这些名为正 X-Y。这部分工作,但我需要让这些瓷砖只在某些回合被占用。我尝试使用 action-cost 并为每个 (occupied pos-X-Y) 添加一个数字,如下所示:(occupied pos-X-Y Z) planning将 Z 数与当前的动作成本进行比较。但是我什至无法将号码分配给占用的瓷砖。

如何为这些已占用的板块分配一个数字以及如何将其与行动成本进行比较?

你试过了吗functionsNumeric Fluents

你的move动作可以增加一个“转弯”功能。

一个(forbidden_turn ?t - tile)函数可以用一个整数值来影响,然后你可以在一个前提条件中使用它。但这需要你的计划者支持负面的前提条件。

否则,您可以使用 allowed turn 函数。

我想通了(在帮助下)。我创建了许多对象而不是使用数字,我将它们称为转弯,然后我设置它,转弯 2 总是在转弯 1 之后,转弯 3 总是在转弯 2 之后等等。我将这些转弯添加为字母 z 在“(占用位置 X-Y Z)”。当演员移动时,我只是根据我之前创建的规则将他的轮到下一个号码。