2D区域搜索与摧毁算法

我正在尝试为一个AI机器人编写一个算法,用于在二维矩形网格中搜索并摧毁一个静止的物体。机器人的移动次数有限,无法到达空间的每个角落。机器人只能感知到它直接相邻的方块(北/南/东/西)中的墙壁和物体,但不能感知对角线方向的。空间的大小是恒定且已知的,但机器人和物体的起始位置是未知的。我希望以最有效的方式搜索房间,以增加在多次测试中找到物体的可能性。

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

有没有更有效的方法来移动并找到这个物体?


回答:

你说机器人的移动次数有限,无法到达空间的每个角落。在这种情况下,我建议使用“G”形模式。

我认为之字形最终会覆盖每个方块,但它也更有可能重新扫描你开始的几个方块。由于你的移动次数有限,每多扫描一个方块都很重要。我所说的“G”形模式是指机器人从“G”的中间开始,碰到墙壁后,沿着房间的墙壁移动。我认为这将最大限度地减少重新扫描已扫描过的方块的几率。在完成“G”形扫描后,如果还有额外的移动次数,你可以对剩余的内矩形空间进行之字形扫描,你已经完全了解它的尺寸大小。

此外,在程序中记录房间的长宽,当机器人碰到第三面墙时,这样它就知道在碰到第四面墙之前提前转向,节省几步后退的移动次数。

最后,你应该记录你在房间中的起始位置以及初始扫描路径(你可以在第一次“G”形扫描完成后计算出来)。有了这些信息,你可以判断你的初始路径是在房间的哪一侧,或者更靠近另一侧。如果它更靠近你开始“G”形扫描的那一侧,也许可以进行另一个“C”形扫描,覆盖房间的另一侧,然后再开始之字形扫描,以最大限度地减少在移动结束前重新扫描初始路径的几率。“C”形和之字形所需的移动次数应该相同。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注