我们得到一个n * m网格,它在各个点都有障碍,机器人的起始位置和结束位置。任务是从头到尾找到无碰撞路径。此问题将被建模为SAT问题。
请指导我在这种情况下应该做些什么来获得最佳解决方案。
答案 0 :(得分:1)
我认为最优意味着最短。使用我所描述的方法here,您可以执行第一步:
在此阶段,解算器会返回满足所有约束的随机路径。需要记住的一件重要事情 - 您可以定义达到目标所需的步数 k !所以你只需要从 k = 0 开始。是否有可能通过0动作达到目标?可能不会,直到代理人已经达到目标。然后只需增加 k = 1 。现在可以吗?如果没有,增加更多!怎么实现呢?只需将 k 的所有值设置为高于某个限制即可,并在每次迭代时增加此限制。
如果您知道上限,则可以使用二分查找来找到最短路径,这可能更有效。
如果您关心路径的其他属性,则可以使用pseudo-boolean constraints。通过利用这种方法,您可以最小化,例如,一些右转。为所有可能的右转弯创建一个布尔计数器,并通过assumptions限制可用转弯次数。