二维区域搜索和破坏算法

时间:2014-07-17 03:18:25

标签: algorithm search artificial-intelligence area destroy

我正在尝试为AI机器人编写一个算法来搜索2D矩形网格以寻找要破坏的静止物体。机器人受到一定数量的移动的约束,这些移动不允许它到达空间的每个角落。机器人只能感知与其直接相邻的方格中的墙壁和物体(N / S / E / W),但不能对角线。空间的大小是恒定的并且是已知的,但是机器人和物体的起点是未知的。 我想以最有效的方式搜索房间,以增加在多次测试中找到物体的可能性。

到目前为止,我认为机器人直线移动直到它撞到最近的墙壁后退后退并向左转并继续直到撞到另一堵墙。从那里,机器人应该能够退后一步并再次向左转。然后沿着墙壁走,沿着房间的其余部分以Z字形方式向后移动。 (如果对运动的描述需要澄清,请告诉我。)

是否有更有效的方法来移动这个空间来找到对象?

1 个答案:

答案 0 :(得分:0)

你说机器人受到一定数量的移动的约束,这些移动不允许它到达空间的每个角落。在那种情况下,我可能会建议一个" G"图案。

我认为曲折将最终"最终"覆盖每个瓷砖,但它也更有可能重新扫描你开始的前几个瓷砖。由于您没有无限制的移动,因此您扫描的每个额外的图块都会计数。我的意思是" G"模式,是机器人在" G"中间开始,撞到墙壁,沿着墙壁绕着房间走动。我认为这可以最大限度地减少你已经扫描过的瓷砖的机会。在" G"之后如果你有额外的动作扫描,那么也许你可以在内部矩形中划出剩余的空间,你已经完全了解它的大小。

此外,在撞到第三面墙之后,保持程序中房间的长度/宽度,以便知道何时在撞到第四面墙之前提早转动,节省一些动作以退一步。

最后,你应该记录你开始的房间里的位置以及你扫描的初始路径(你可以在扫描完第一个" G"后计算出来)。有了这些信息,如果您可以确定您的初始路径是在您的房间一侧还是更靠近另一侧。如果它离你最近的那边更近,那么G"扫描结束,也许采取另一个" C"在开始锯齿形之前扫描它以到达房间的另一侧,以最小化在移动结束之前重新扫描初始路径的机会。 " C"所需的动作和zig-zag应该是一样的。