设计一个机器人来寻找对象在一个领域的位置

问题描述:

这是我的AI项目的一部分。我必须在LXW方格中实现一个占据正方形的bot。如果字段中的正方形为空,则它的值为0,如果它被某个对象占用,则其值为1.连续的值为1的正方形称为对象。设计一个机器人来寻找对象在一个领域的位置

我必须弄清楚所有对象的身份和位置在该领域

我有以下信息:

感():该函数返回我的邻居的占用状态8个平方
举动(x):允许我沿x方向移动到相邻的方格
getId(x):给我在x方向上的对象id和wrt,如果没有对象,返回-1

但是,无论何时我称之为sense或getID函数离子,物体可以以小概率移动到不同的位置

我正在考虑使用BFS来遍历网格。或者,保留一个已经遍历的位置列表并随机移动会更好吗? 我可以用来解决这个问题的一些AI技术是什么?一些规划技术如何?

+0

如果你盲目地碰到一个物体会发生什么? “距离不同”有多远? – LumpN 2011-04-15 10:42:59

我喜欢问题描述!确定性方法可能无效,因为涉及到一些随机性。此外,您可能需要重新访问某些位置,因为物体移动可能会打开新的路径。

因此,加强随机移动是一个好的开始。例如,您可以为每个访问过的单元分配时间戳,并使其更有可能访问未访问/较旧的单元。这与仅使用单一蚂蚁的蚁群优化http://en.wikipedia.org/wiki/Ant_colony_optimization中的信息素类似。

另一种方法可能是选择随机目标细胞(很远),并试图到达那里。你可能会遇到一些物体。在这些对象周围使用幼稚的路径查找,如果这不起作用,就选择另一个目标。

更新

一个抽象的,但强大的方式来创造一个有点聪明的AI是首先考虑刚性事实/属性/注解,你可以分配到你的模型(如访问的位置,时间戳,先验知识等)。然后创建AI可以使用的一组简单操作。您可能还想在其上创建更复杂的操作。

之后,这一切都归结为由AI控制的代理人以非确定性方式给出当前事实时选择适当的操作。即:为这些可能的操作指定分数,并执行轮盘选择http://en.wikipedia.org/wiki/Fitness_proportionate_selection或类似的操作来确定下一个操作。

+0

谢谢!除了时间戳之外,你能否提到一些可以使用的非确定性方法? – Karan 2011-04-18 23:42:00

+0

@Karan:这取决于您如何在算法中混合确定性和非确定性部分。时间戳当然是确定性的,但如果它“更可能”访问新的单元格,那么你得到了非确定性。我会以一个例子来更新我的答案。 – LumpN 2011-04-19 12:08:49

+0

您能否介绍一下我应该如何处理在它们之间只有一个空格的对象?我猜getID()会解决问题(以便我知道填充块属于哪个对象),但这可能会导致对象移动。任何解决方法? – Karan 2011-05-01 14:53:31