【问题标题】:Exploration Algorithm探索算法
【发布时间】:2015-06-30 11:10:00
【问题描述】:

大量编辑此问题以使其更易于理解。

给定一个具有任意尺寸和任意数量障碍物的任意位置的环境,我有一个代理在有限的视线范围内探索环境(障碍物不会阻挡视线)。它可以在 NSEW 的四个基本方向上移动,一次一个单元格,并且图是未加权的(每个步骤的成本为 1)。下面的链接是一张地图,表示代理(黄色人)在规划时对环境的当前信念。代理正在计划时,时间不会在模拟中流逝。

http://imagizer.imageshack.us/a/img913/9274/qRsazT.jpg

在允许重新访问单元的情况下,我可以使用什么探索算法来最大限度地提高公用事业的成本效益?每个单元格都有一个效用值。理想情况下,我会寻求最大化所有看到(未访问)单元格的效用总和除以路径长度,尽管如果这对于任何合适的算法来说太复杂,那么看到的单元格数量就足够了。存在最大路径长度,但通常为数百或更长。 (在我的代理上使用的实际测试环境至少要大 4 倍,虽然理论上可以设置的维度没有上限,因此最大路径长度会相应增加)

我认为 BFS 和 DFS 难以处理,A* 不是最优的,因为缺乏合适的启发式算法,而且 Dijkstra 不适合生成单个完整路径。有没有你能想到的算法?此外,我需要循环检测方面的帮助,因为我以前从未这样做过,因为允许重新访问是我的第一次。

我考虑过的一种方法是将地图缩减为生成树,只不过不是将其定义为连接所有单元格的树,而是将其定义为可以看到所有单元格的树。我的方法将导致以下结果:

http://imagizer.imageshack.us/a/img910/3050/HGu40d.jpg

在结果树中,代理可以从一个节点到任何相邻节点,这些节点在交叉口处 0-1 转开。这是我目前的想法。使用这棵树生成的解决方案可能不是最优的,但它至少应该是接近最优的,算法处理的单元要少得多,所以如果这会使算法更容易处理,那么我想这是可以接受的权衡。但是,我仍然在思考如何准确地为此生成路径。

【问题讨论】:

  • 为什么不使用基于看到的单元格数量的启发式 A*
  • @perreal 你知道 SLAM 的哪些确切算法可以应用于我的问题吗?我的代理能够随时访问地图的尺寸​​并知道自己的确切位置,因此它只需要在可处理的时间和循环检测中生成探索路径。
  • @nkcode 我相信使用看到的单元格数量是用于 A* 的一种较差的启发式效用/成本度量,并且不会给出最佳解决方案
  • 作为参考,请参阅此以了解类似问题。我在上面考虑的生成树方法是一种尝试将我的问题减少到尽可能类似于这个math.stackexchange.com/questions/55221/…

标签: algorithm search artificial-intelligence agent


【解决方案1】:

您的问题非常类似于典型的强化学习 (RL) 问题,即网格世界。我会将其形式化为标准马尔可夫决策过程 (MDP),并使用任何 RL 算法来解决它。

形式化是:

  • 状态 s:您的 NxM 离散网格。
  • 操作a: UP, DOWN, LEFT, RIGHT
  • 奖励r:代理可以从目标单元格s'看到的单元格的值,即r(s,a,s') = sum(value(seen(s'))
  • 转换函数:P(s' | s, a) = 1 如果s' 没有超出边界或黑色单元格,则0 否则。

由于您对平均奖励感兴趣,因此折扣因子为1,您必须将累积奖励按步数归一化。您还说过,每一步都需要花费 1,因此您可以在每个时间步将即时奖励 r 减去 1,但这不会增加任何内容,因为您已经按步数平均了。

由于问题是离散的,因此策略可以是简单的 softmax(或 Gibbs)分布。

作为求解算法,您可以使用 Q-learning,它保证了解决方案的最优性,提供了足够数量的样本。但是,如果您的网格太大(并且您说没有限制),我会建议使用策略搜索算法,例如策略梯度或相对熵(尽管它们只能保证收敛到局部最优)。您基本上可以在 Internet 上随处找到有关 Q-learning 的信息。对于最近的政策搜索调查,我建议this

这些方法很酷的地方在于,它们在策略中对探索进行编码(例如,softmax 策略中的温度、高斯分布中的方差),并将尝试最大化您的 MDP 所描述的累积长期奖励.因此,通常您会通过高度探索(例如,完全随机的策略)来初始化您的策略,并且通过反复试验,算法将使其具有确定性并收敛到最优策略(但是,有时随机策略也是最优的)。 所有 RL 算法之间的主要区别在于它们如何在每次迭代中执行策略更新并管理权衡探索-利用(我应该探索多少 VS 我应该利用多少我已经拥有的信息)。

正如 Demlo 所建议的,您也可以使用遗传算法 (GA),但它们通常速度较慢并且需要更多调整(精英主义、交叉、突变......)。

我还针对您的问题尝试了一些策略搜索算法,它们似乎运行良好,尽管我随机初始化了网格并且不知道确切的最优解。如果您提供一些额外的细节(测试网格、最大步数以及初始位置是固定的还是随机的),我可以更精确地测试它们。

【讨论】:

    猜你喜欢
    • 2011-07-18
    • 1970-01-01
    • 2013-12-08
    • 2015-08-08
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多